根据零售数据生成销售预测

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

准备工作

您必须先满足以下条件,然后才能使用零售数据生成销售预测:

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

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

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

  • 确保您已被授予 roles/aiplatform.user IAM 角色,以便您可以使用 Vertex AI 控制台执行相应操作。

创建汇总销售表

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

  • 对于用户事件表中的任何商品,如果表中商品的首次销售和最后一次销售之间缺少任何时间戳,则系统会使用销售次数为零的新行回填每个缺失的时间戳。这样做是为了消除销售历史记录中的空白。

  • 如果用户事件表中没有至少 1 个商品具有至少 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、数据集 ID 和表 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。指定表 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。指定表 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. 新 Vertex AI 训练表在 BigQuery 中的项目 ID、数据集 ID 和表 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. 新 Vertex AI 预测表在 BigQuery 中的项目 ID、数据集 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。

    • 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. “目标”列列表中选择数量(整数)

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

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

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

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

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

    6. 点击继续

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

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

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

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

      • 如果 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. 在 BigQuery 中输入您在创建 Vertex AI 预测表中创建的 Vertex AI 预测表的项目 ID、数据集 ID 和表 ID。格式为 project_id.dataset_id.table_id

    5. 批量预测输出下:

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

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

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

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