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

本页面提供了有关如何根据导出到 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 个时间戳。这是为了 满足至少有 20 个时间戳的 Vertex AI 要求 会非常有帮助。

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

  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。项目、数据集和表的 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。新处理的商品表在 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. 点击 运行,然后等待 以完成运行。

系统会将新的处理过的商品表写入您使用 processed_product_table 变量设置的 BigQuery 位置。

创建事件预测表

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

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

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

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

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

    • events_prediction_table。项目、数据集和表的 ID 用于新事件预测表的 BigQuery。使用相同的 项目 ID 用作产品和用户事件表。使用现有 ID 数据集。指定表 ID,但请勿使用现有表的 ID,除非您要覆盖该表。格式为 project_id.dataset_id.table_id

    • rdm_product_table。产品的项目、数据集和表 ID 导出到 BigQuery 中。格式为 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。项目、数据集和表的 ID 使用 BigQuery(您创建的已处理商品表) 处理商品表部分。

    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。项目、数据集和表的 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, 可以选择美国境内的任何区域同样,如果您选择 eu 在创建 BigQuery 数据集时,您可以选择任意 欧盟区域如需了解详情,请参阅将数据导出到 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 类型的值是 String布尔值,请将 Transformation 值设置为 Categorical

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

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

      • 对于 add_to_cart_quantitycategory_page_view_quantity detail_page_view_quantitysearch_quantity特征类型值设置为 Covariate

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

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

      • 对于 add_to_cart_quantitycategory_page_view_quantity detail_page_view_quantitysearch_quantity预测时的可用性值设置为不可用

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

    4. 点击继续

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

  5. 点击开始训练

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

监控训练进度

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

    前往“训练”页面

  2. 选择训练流水线标签页(如果尚未选择该标签页)。您正在训练的模型应显示在列表中。当状态从训练更改为已完成时,表示训练已完成。

创建预测

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

准备工作

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

向模型发出批量预测请求

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

    前往“批量预测”页面

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

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

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

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

    4. 选择来源下:

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

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

    5. 批量预测输出下:

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

      2. 在 BigQuery 中输入批次的项目和数据集 ID 预测输出表。使用相同的项目 ID 以及用于产品事件表和用户事件表的数据集 ID。格式为 project_id.dataset_id.

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

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