根据电子商务数据生成销售预测

该页面提供了有关如何根据导出到 BigQuery 的零售数据从 Vertex AI 获取预测的指南。 我们提供了多个 SQL 代码块,可帮助您将零售商品和用户事件数据转换为 Vertex AI 可用的格式。这些代码块后面是有关如何使用 Vertex AI 控制台创建数据集、训练模型,然后生成预测的步骤。

准备工作

您必须先执行以下操作,然后才能使用零售数据生成销售预测:

  • 使用 Vertex AI Search 商务解决方案上传零售数据。如需了解详情,请参阅:

  • 将零售数据从 Vertex AI Search 商务解决方案导出到 BigQuery。这样,您就可以在 BigQuery 中获得一个商品表和一个用户事件表,并可在后续过程中使用这两个表。如需了解详情,请参阅将数据导出到 BigQuery

    或者,如果您的商品和用户事件数据已采用 Vertex AI Search for Commerce 格式存储在 BigQuery 中,您可以使用这些数据根据零售数据生成销售预测。在这种情况下,您无需上传零售数据并将其导出到 BigQuery。如需详细了解此格式,请参阅产品架构关于用户事件

  • 确保您已获得 roles/aiplatform.user IAM 角色,以便您可以使用 Vertex AI 控制台执行相关程序。

创建汇总销售表

本部分中的 SQL 代码将用户事件表转换为汇总的销售表。这意味着,对于用户事件表中至少售出一次的每种产品,该产品的销售数量会按周进行汇总。此外,SQL 代码还会执行以下操作:

  • 对于用户事件表中的任何商品,如果该商品在表中的首次销售与表中任何商品的最后一次销售之间缺少任何时间戳,则每个缺失的时间戳都会通过一个销售额为零的新行进行回填。这是为了消除销售历史记录中的空白。

  • 如果用户事件表中没有至少一个具有至少 20 个时间戳的产品,系统会从该表中随机选择一个产品,并使用足够的行(每行的销售额均为零)进行回填,以达到 20 个时间戳。这是为了满足 Vertex AI 在训练模型时要求至少有 20 个时间戳的要求。

如需创建汇总销售表,请执行以下操作:

  1. 将以下 SQL 示例代码中的变量替换为以下值:

    • starting_day_of_week. 一周的起始日期。有效值:MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

    • rdm_user_event_table. 您导出到 BigQuery 的用户事件表的项目 ID、数据集 ID 和表 ID。格式为 project_id.dataset_id.table_id

    • rdm_product_table。您导出到 BigQuery 的商品表的项目、数据集和表 ID。格式为 project_id.dataset_id.table_id

    • aggregated_sales_table。BigQuery 中新汇总销售额表的项目 ID、数据集 ID 和表 ID。使用与商品和用户事件表相同的项目 ID。使用现有数据集的 ID。指定一个表 ID,但除非您想覆盖现有表,否则请勿使用现有表的 ID。格式为 project_id.dataset_id.table_id

  2. 复制 SQL 代码示例。

  3. 在 Google Cloud 控制台中打开 BigQuery 页面。

    转到 BigQuery 页面

  4. 如果尚未选择,请选择包含您的商品和用户事件表的项目。

  5. 编辑器窗格中,粘贴 SQL 代码示例。

  6. 点击 Run(运行),然后等待查询完成运行。

新的汇总销售额表会写入您使用 aggregated_sales_table 变量在 BigQuery 中设置的位置。

处理商品表

此部分中的 SQL 代码可处理您导出到 BigQuery 的商品表,移除重复字段和结构字段,并将 price_info 字段取消嵌套到其子字段中。这是必需操作,因为 Vertex AI 不接受列表或嵌套结构。结果是处理后的商品表。

处理商品表:

  1. 将以下 SQL 示例代码中的变量替换为以下值:

    • rdm_product_table。您导出到 BigQuery 的商品表的项目 ID、数据集 ID 和表 ID。格式为 project_id.dataset_id.table_id

    • processed_product_table。BigQuery 中新处理后的商品表的项目、数据集和表 ID。使用与商品和用户事件表相同的项目 ID。使用现有数据集的 ID。指定一个表 ID,但除非您想覆盖现有表,否则请勿使用现有表的 ID。格式为 project_id.dataset_id.table_id

    CREATE OR REPLACE TABLE `PROCESSED_PRODUCT_TABLE` AS
    SELECT * EXCEPT (id, attributes, price_info, rating, expire_time,
    available_time, fulfillment_info, images, audience, color_info, promotions,
    publish_time, retrievable_fields, categories, brands, conditions, sizes,
    collection_member_ids, tags, materials, patterns),
    id as sku,
    price_info.price as price_info_price,
    price_info.currency_code as price_info_currency_code,
    price_info.cost as price_info_cost,
    FROM `RDM_PRODUCT_TABLE`
  2. 复制 SQL 代码示例。

  3. 在 Google Cloud 控制台中打开 BigQuery 页面。

    转到 BigQuery 页面

  4. 如果尚未选择,请选择包含您的商品和用户事件表的项目。

  5. 编辑器窗格中,粘贴 SQL 代码示例。

  6. 点击 Run(运行),然后等待查询完成运行。

新的处理后商品表会写入您使用 processed_product_table 变量在 BigQuery 中设置的位置。

创建活动预测表

此部分中的 SQL 代码会提取用户事件表中至少售出一次的每个 SKU。该代码会创建一个事件预测表,其中包含未来所有时间戳的所有提取的 SKU。未来的时间戳是一个连续的每周时间戳数组,从用户事件表中的最后一周 + 1 周开始,到用户事件表中的最后一周 + future_length 周结束。您可以将 future_length 值设置为您希望模型预测的未来周数。事件预测表中的每一行都可以通过 SKU 和时间戳来唯一标识。

如需创建活动预测表,请执行以下操作:

  1. 将以下 SQL 示例代码中的变量替换为以下值:

    • starting_day_of_week. 一周的起始日期。有效值:MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

    • rdm_user_event_table. 您导出到 BigQuery 的用户事件表的项目 ID、数据集 ID 和表 ID。格式为 project_id.dataset_id.table_id

    • events_prediction_table。BigQuery 中新事件预测表的项目、数据集和表 ID。使用与商品和用户事件表相同的项目 ID。使用现有数据集的 ID。指定一个表 ID,但除非您想覆盖现有表,否则请勿使用现有表的 ID。格式为 project_id.dataset_id.table_id

    • rdm_product_table。您导出到 BigQuery 的商品表的项目 ID、数据集 ID 和表 ID。格式为 project_id.dataset_id.table_id

    • future_length。在用户事件表中的最后一周之后,模型将预测未来多少周。

  2. 复制 SQL 代码示例。

  3. 在 Google Cloud 控制台中打开 BigQuery 页面。

    转到 BigQuery 页面

  4. 如果尚未选择,请选择包含您的商品和用户事件表的项目。

  5. 编辑器窗格中,粘贴 SQL 代码示例。

  6. 点击 Run(运行),然后等待查询完成运行。

新的活动预测表会写入您使用 events_prediction_table 变量在 BigQuery 中设置的位置。

创建 Vertex AI 训练表

此部分中的 SQL 代码将汇总的销售表与处理后的商品表联接起来。结果是一个 Vertex AI 训练表,Vertex AI 会使用该表进行模型训练。

如需创建 Vertex AI 训练表,请执行以下操作:

  1. 将以下 SQL 示例代码中的变量替换为以下值:

    • vertex_ai_training_table. BigQuery 中新 Vertex AI 训练表的项目、数据集和表 ID。使用与商品和用户事件表相同的项目 ID。使用现有数据集的 ID。指定一个表 ID,但除非您想覆盖现有表,否则请勿使用现有表的 ID。格式为 project_id.dataset_id.table_id

    • aggregated_sales_table。您在创建汇总销售表格中创建的汇总销售表格在 BigQuery 中的项目 ID、数据集 ID 和表格 ID。

    • processed_product_table。BigQuery 中已处理商品表的项目 ID、数据集 ID 和表 ID,该表是在处理商品表中创建的。

    CREATE OR REPLACE TABLE `VERTEX_AI_TRAINING_TABLE` AS
    SELECT t1.*, t2.* EXCEPT(sku) FROM `AGGREGATED_SALES_TABLE` AS t1
    LEFT
    JOIN `PROCESSED_PRODUCT_TABLE` AS t2 ON t1.sku = t2.sku
  2. 复制 SQL 代码示例。

  3. 在 Google Cloud 控制台中打开 BigQuery 页面。

    转到 BigQuery 页面

  4. 如果尚未选择,请选择包含您的商品和用户事件表的项目。

  5. 编辑器窗格中,粘贴 SQL 代码示例。

  6. 点击 Run(运行),然后等待查询完成运行。

新的 Vertex AI 训练表会写入您使用 vertex_ai_training_table 变量在 BigQuery 中设置的位置。

创建 Vertex AI 预测表

本部分中的 SQL 代码会将事件预测表附加到汇总的销售额表中,然后将其与处理后的商品表联接。结果是 Vertex AI 预测表,用于创建预测

如需创建 Vertex AI 预测表,请执行以下操作:

  1. 将以下 SQL 示例代码中的变量替换为以下值:

    • vertex_ai_prediction_table. BigQuery 中新 Vertex AI 预测表的项目、数据集和表 ID。使用与商品和用户事件表相同的项目 ID 和数据集 ID。除非您想覆盖现有表,否则请勿使用现有表的 ID。格式为 project_id.dataset_id.table_id

    • aggregated_sales_table。在 BigQuery 中,汇总销售额表的项目 ID、数据集 ID 和表 ID(您在创建汇总销售额表中创建的)。

    • processed_product_table。BigQuery 中已处理商品表的项目 ID、数据集 ID 和表 ID,该表是在处理商品表中创建的。

    • events_prediction_table。您在创建事件预测表中创建的事件预测表在 BigQuery 中的项目 ID、数据集 ID 和表 ID。

    CREATE OR REPLACE TABLE `VERTEX_AI_PREDICTION_TABLE` AS
    WITH append_predict_to_history AS (
      SELECT add_to_cart_quantity, category_page_view_quantity,
      detail_page_view_quantity, last_day_of_week, quantity, search_quantity, sku
      FROM `AGGREGATED_SALES_TABLE` UNION ALL SELECT NULL AS
      add_to_cart_quantity, NULL AS category_page_view_quantity, NULL AS
      detail_page_view_quantity, last_day_of_week, NULL AS quantity, NULL AS
      search_quantity, sku FROM `EVENTS_PREDICTION_TABLE`
    )
    SELECT t1.*, t2.* EXCEPT(sku) FROM append_predict_to_history AS t1 LEFT JOIN
    `PROCESSED_PRODUCT_TABLE` AS t2 ON t1.sku = t2.sku
  2. 复制 SQL 代码示例。

  3. 在 Google Cloud 控制台中打开 BigQuery 页面。

    转到 BigQuery 页面

  4. 如果尚未选择,请选择包含您的商品和用户事件表的项目。

  5. 编辑器窗格中,粘贴 SQL 代码示例。

  6. 点击 Run(运行),然后等待查询完成运行。

新的 Vertex AI 预测表会写入您使用 vertex_ai_prediction_table 变量在 BigQuery 中设置的位置。

创建 Vertex AI 数据集

本部分将介绍如何创建可用于训练预测模型的 Vertex AI 数据集。如需了解详情,请参阅 Vertex AI 文档中的为训练预测模型创建数据集

如需创建 Vertex AI 数据集,请执行以下操作:

  1. 在 Google Cloud 控制台的 Vertex AI 部分中,前往数据集页面。

    转到“数据集”页面

  2. 点击创建以打开创建数据集页面。

  3. 数据集名称字段中,输入新数据集的名称。

  4. 选择表格标签页。

  5. 选择趋势预测目标。

  6. 区域列表中,选择您在创建数据集时使用的区域,以便将零售数据导出到 BigQuery。如果您在创建 BigQuery 数据集时选择了 us,则可以选择美国境内的任何区域。同样,如果您在创建 BigQuery 数据集时选择了 eu,则可以选择欧盟中的任何区域。如需了解详情,请参阅将数据导出到 BigQuery

  7. 点击创建以创建空数据集,然后转到来源标签页。

  8. 选择从 BigQuery 中选择表或视图

  9. 从 BigQuery 中选择表格或视图下,输入您在创建 Vertex AI 训练表中创建的 Vertex AI 训练表的项目 ID、数据集 ID 和表 ID。格式为 project_id.dataset_id.table_id

  10. 点击继续

    您的数据源已与您的数据集关联。

  11. 分析标签页上,从序列标识符列列表中选择 sku,并从时间戳列列表中选择 last_day_of_week

  12. 点击训练新模型,前往训练新模型页面。如需有关训练模型的说明,请参阅训练预测模型

训练预测模型

本部分将介绍如何使用您在创建 Vertex AI 数据集中创建的数据集来训练预测模型。如需了解详情,请参阅 Vertex AI 文档中的训练预测模型

准备工作

在训练预测模型之前,您必须先创建 Vertex AI 数据集

训练模型

  1. 训练方法页面中,选择模型训练方法。如需了解训练方法,请参阅 Vertex AI 文档中的训练模型

    点击继续

  2. 模型详情页面中,按如下方式配置:

    1. 选择训练新模型(如果尚未选择)。

    2. 为新模型输入名称。

    3. 目标列列表中选择数量 (INTEGER)

    4. 数据粒度列表中选择每周

    5. 输入您的上下文窗口预测范围

      预测范围确定模型预测每行预测数据的目标值的未来时间。预测范围数据粒度为单位指定。

      上下文窗口设置模型在训练期间的回溯时间(用于预测)。换句话说,对于每个训练数据点,上下文窗口会确定模型查找回溯模式的时间。如果您未指定上下文窗口,则其默认为预测范围设置的值。上下文窗口数据粒度为单位指定。

      如需了解详情,请参阅 Vertex AI 文档中的设置上下文窗口和预测范围的注意事项

    6. 点击继续

  3. 训练选项页面中,按如下方式配置。请注意,当 下拉箭头为灰色或没有下拉箭头时,该值无法更改。

    1. 列名称列表中的列选择转换值,如下所示:

      • 如果 BigQuery 类型值为 FloatIntegerNumeric,请将转换值设置为 Numeric

      • 如果 BigQuery 类型值为 StringBoolean,请将转换值设置为 Categorical

      • 如果 BigQuery 类型值为 Date,请将转换值设置为 Timestamp

    2. 列名称列表中的列选择特征类型值,如下所示:

      • 对于 add_to_cart_quantitycategory_page_view_quantitydetail_page_view_quantitysearch_quantity,请将特征类型值设置为协变量

      • 在剩余的列中,对于可以更改的列,将特征类型设置为属性

    3. 列类型列表中的列选择一个预测时可用值,如下所示:

      • 对于 add_to_cart_quantitycategory_page_view_quantitydetail_page_view_quantitysearch_quantity,请将预测时的可用性值设置为不可用

      • 在其余列中,对于可以更改的列,将功能类型值设置为可用

    4. 点击继续

  4. 计算和价格页面中,输入模型训练小时数的上限。此设置有助于限制训练费用。实际所用的时间可能超过此值,因为创建新模型涉及其他操作。如需了解训练高质量模型可能需要的时间,请参阅 Vertex AI 文档中的训练模型

  5. 点击开始训练

    模型训练可能需要几个小时,具体取决于数据的大小和复杂性,以及训练预算(如果指定)。您可以关闭此标签页,稍后再返回。模型完成训练后,您会收到电子邮件。如果您想监控模型训练的进度,请参阅监控训练进度

监控训练进度

  1. 在 Google Cloud 控制台的 Vertex AI 部分中,前往训练页面。

    前往“训练”页面

  2. 如果尚未选择,请选择训练流水线标签页。您正在训练的模型应位于列表中。当状态从训练中变为已完成时,表示训练已完成。

生成预测

本页介绍了如何使用您在训练预测模型中训练的预测模型来创建预测。

准备工作

在创建预测之前,您必须先训练预测模型

向模型发出批量预测请求

  1. 在 Google Cloud 控制台的 Vertex AI 部分下,前往批量预测页面。

    前往“批量预测”页面

  2. 点击创建以打开新建批量预测窗口,然后完成以下步骤:

    1. 输入批量预测的名称。

    2. 模型名称列表中,选择您在训练预测模型中训练的模型。

    3. 版本列表中,选择模型的版本。

    4. 选择来源下:

      1. 选择 BigQuery 表(如果尚未选择)。

      2. 创建 Vertex AI 预测表中,输入您创建的 Vertex AI 预测表在 BigQuery 中的项目 ID、数据集 ID 和表 ID。格式为 project_id.dataset_id.table_id

    5. 批量预测输出下:

      1. 输出格式列表中,选择 BigQuery 表

      2. 在 BigQuery 中输入您要创建的批量预测输出表的项目 ID 和数据集 ID。使用您为商品和用户事件表使用的同一项目 ID 和数据集 ID。格式为 project_id.dataset_id.

    6. 点击创建。系统随即会显示批量预测页面。

      当状态从 Pending 更改为 Finished 时,预测完成。批量预测完成后,您还会收到一封电子邮件。批量预测请求的输出将在指定的 BigQuery 项目的数据集中返回。新输出表的名称是“predictions_”,并附加了预测作业开始的时间戳。如需详细了解如何检索和解读预测结果,请参阅 Vertex AI 文档中的检索批量预测结果解读预测结果