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

本页面提供了有关使用 Retail API 从零售数据导出到 BigQuery 的预测,帮助您从 Vertex AI 获取预测结果。我们提供了多种 SQL 代码块,可帮助您将零售商品和用户事件数据转换为 Vertex AI 可以使用的格式。接着,这些代码块执行 Vertex AI 控制台创建数据集、训练模型,然后生成预测的过程。

须知事项

使用零售数据生成销售预测之前,您必须:

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

  • 将您的零售数据从 Retail API 导出到 BigQuery。这样就能在 BigQuery 中找到产品表和用户事件表,您可以按照以下过程来使用它们。如需了解详情,请参阅将数据导出到 BigQuery

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

  • 请确保您已获得 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。格式为 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,除非您想要覆盖它。格式为 project_id.dataset_id.table_id

  2. 复制 SQL 代码示例。

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

    转到 BigQuery 页面

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

  5. Editor 窗格中,粘贴 SQL 代码示例。

  6. 点击 运行并等待查询完成运行。

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

处理商品表格

此部分中的 SQL 代码针对您导出到 BigQuery 的商品表执行操作,移除重复和结构体字段,并将 price_info 字段嵌套到其子字段中。必须执行此操作,因为 Vertex AI 不接受列表或嵌套结构。结果是已处理的商品表。

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

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

    • rdm_product_table。您导出到 BigQuery 的产品表的项目、数据集和表 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. Editor 窗格中,粘贴 SQL 代码示例。

  6. 点击 运行并等待查询完成运行。

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

创建事件预测表

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

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

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

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

    • rdm_user_event_table。您导出到 BigQuery 的用户事件表的项目、数据集和表 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。格式为 project_id.dataset_id.table_id

    • future_length。模型要预测的用户事件表中的最后一周(即未来几周)内的数据。

  2. 复制 SQL 代码示例。

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

    转到 BigQuery 页面

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

  5. Editor 窗格中,粘贴 SQL 代码示例。

  6. 点击 运行并等待查询完成运行。

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

创建 Vertex AI 训练表

此部分中的 SQL 代码将汇总销售表与已处理产品表相联接。其结果是 Vertex AI 训练表,Vertex AI 使用该表进行模型训练。

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

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

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

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

    • processed_product_table。在 BigQuery 中为您在处理产品表中创建的已处理产品表的项目、数据集和表 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. Editor 窗格中,粘贴 SQL 代码示例。

  6. 点击 运行并等待查询完成运行。

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

创建 Vertex AI 预测表

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

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

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

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

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

    • processed_product_table。在 BigQuery 中为您在处理产品表中创建的已处理产品表的项目、数据集和表 ID。

    • events_prediction_table。您在 BigQuery 中为事件预测表创建的项目、数据集和表 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. Editor 窗格中,粘贴 SQL 代码示例。

  6. 点击 运行并等待查询完成运行。

您的新 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。格式为 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. 目标列列表中选择 quantity (INTEGER)

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

    5. 输入您的上下文时段预测范围

      预测范围决定了模型预测每一行预测数据的目标值可以提前多久。预测范围数据粒度单位指定。

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

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

    6. 点击继续

  3. 训练选项页面中,进行如下配置。请注意,如果 下拉箭头为灰色,或没有下拉箭头,则无法更改该值。

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

      • 如果 BigQuery 类型的值是浮点数整数数字,请将转换值设置为数字

      • 如果 BigQuery 类型的值为字符串布尔值,请将转换的值设置为分类

      • 如果 BigQuery 类型值为日期,请将转换值设置为时间戳

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

      • 对于 add_to_cart_quantitycategory_page_view_quantitydetail_page_view_quantitysearch_quantity,将特征类型值设置为 Covariate

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

    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。格式为 project_id.dataset_id.table_id

    5. 批量预测输出下:

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

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

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

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