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

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

准备工作

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

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

  • 将 Vertex AI Search 零售解决方案中的零售数据导出到 BigQuery。然后您会看到一个商品表格和一个用户 事件表,可用于后续 过程。有关详情,请参阅将数据导出到 BigQuery

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

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

创建汇总销售表

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

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

  • 如果用户事件表中没有至少一个具有至少 20 个时间戳,系统会随机选择表中的商品并进行回填 有足够的行(每行的销售额都为 0)来达到 20 个时间戳。这是为了 满足至少有 20 个时间戳的 Vertex AI 要求 会非常有帮助。

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

  1. 替换以下 SQL 示例代码中的变量,如下所示:

    • starting_day_of_week。一周开始的那一天。有效值: MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

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

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

    • aggregated_sales_table。项目、数据集和表的 ID 用于新的汇总销售表的 BigQuery。请使用与产品和用户事件表相同的项目 ID。使用现有 ID 数据集。指定表 ID,但不使用现有表的 ID 除非您要覆盖它格式为 project_id.dataset_id.table_id

  2. 复制 SQL 代码示例。

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

    转到 BigQuery 页面

  4. 请选择包含您产品的项目(如果尚未选择) 和用户事件表

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

  6. 点击 运行,然后等待 以完成运行。

系统会将新的汇总销售表写入您使用 aggregated_sales_table 变量设置的 BigQuery 位置。

处理商品表

本部分中的 SQL 代码作用于您导出到的产品表 BigQuery,移除重复字段和结构体字段并解除嵌套 price_info 字段复制到其子字段中。这是必填字段,因为 Vertex AI 不接受列表或嵌套结构。其结果是 “已处理的商品”表中

如需处理产品表,请执行以下操作:

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

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

    • processed_product_table。项目、数据集和表的 ID 用于新处理后的商品表的 BigQuery。使用相同的 项目 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. 点击 运行,然后等待 以完成运行。

系统会将新的处理过的商品表写入您使用 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. 点击 运行,然后等待 以完成运行。

您的新事件预测表将写入到位于 使用 events_prediction_table 设置的 BigQuery 变量。

创建 Vertex AI 训练表

本部分中的 SQL 代码会将汇总的销售表与处理过的商品表联接起来。生成了一个 Vertex AI 训练表, Vertex AI 用于模型训练。

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

  1. 替换以下 SQL 示例代码中的变量,如下所示:

    • vertex_ai_training_table.项目、数据集和表的 ID 使用 BigQuery 使用新的 Vertex AI 训练表。使用 项目 ID 与产品事件表和用户事件表相同。使用现有数据集的 ID。请指定表格 ID,但不使用现有表格的 ID 除非您要覆盖它格式为 project_id.dataset_id.table_id

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

    • 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. 点击 运行,然后等待 以完成运行。

新的 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。项目、数据集和表的 ID 使用 BigQuery(您创建的已处理商品表) 处理商品表部分。

    • events_prediction_table 执行操作。项目、数据集和表的 ID 使用 BigQuery(您创建的事件预测表) 请参阅创建事件预测表

    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 训练表的项目、数据集和表 ID 您在创建 Vertex AI 训练 表格。格式为 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 类型的值为浮点数整数数值,请将转换值设置为 数值

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

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

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

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

      • 对于其余列,对于可以更改的列,将 将地图项类型更改为属性

    3. 列中的列选择预测时可用值 type 列表:

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

      • 对于其余可更改的列,请将地图项类型值设置为可用

    4. 点击继续

  4. 计算和价格页面中,输入 您期望用于训练模型的目标。此设置可帮助您对训练设定上限 费用。实际所用的时间可能超过此值,因为创建新模型涉及其他操作。有关 训练高质量模型所需的时间,请参阅训练一个 模型

  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 文档中的检索批量预测结果解读预测结果