这是与 Recommendations AI、Retail Search 和新的 Retail 控制台相关的文档。如需在受限 GA 阶段使用 Retail Search,请与 Cloud 销售人员联系

如果您仅使用 Recommendations AI,请保留在 Recommendations 控制台上并参阅 Recommendations AI 文档

创建个性化影片推荐

在本教程中,我们将使用 Movielens 数据集演示如何将商品清单和用户事件上传到 Retail API 并训练个性化商品推荐模型。Movielens 数据集包含电影(商品)清单和用户电影评分(用户事件)。

我们将每个正面电影评分(评分 >= 4)视为商品页面浏览事件。我们将训练一个“其他您可能喜欢的电影”类型推荐模型,该模型会根据数据集中的任何用户或种子电影进行电影推荐。

预计时间:

  • 训练该模型的初始步骤:大约 1.5 小时。
  • 等待模型训练:大约 2 天。
  • 评估模型预测和清理:大约 30 分钟。

目标

  • 了解如何将产品和用户事件数据从 BigQuery 导入 Retail API。
  • 训练和评估推荐模型。

费用

本教程使用 Google Cloud 的以下收费组件:

  • Cloud Storage
  • BigQuery
  • 零售

如需详细了解 Cloud Storage 费用,请参阅 Cloud Storage 价格页面。

如需详细了解 BigQuery 费用,请参阅 BigQuery 价格页面。

如需详细了解 Retail 费用,请参阅 Retail 价格页面。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  5. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

准备数据集

打开 Cloud Console,选择您的 Google Cloud 项目,然后点击控制台顶部的激活 Cloud Shell 按钮。

Cloud Shell

一个 Cloud Shell 会话随即会在 Cloud Console 底部的新框内打开,并显示命令行提示符。

导入数据集

  1. 使用 Cloud Shell,下载并解压缩源数据集:

    wget http://files.grouplens.org/datasets/movielens/ml-latest.zip
    unzip ml-latest.zip
    
  2. 创建一个 Cloud Storage 存储桶并将数据上传到该存储桶中:

    gsutil mb gs://PROJECT_ID-movielens-data
    gsutil cp ml-latest/movies.csv ml-latest/ratings.csv \
      gs://PROJECT_ID-movielens-data
    
  3. 创建 BigQuery 数据集:

    bq mk movielens
    
  4. movies.csv 加载到新的电影 BigQuery 表中:

    bq load --skip_leading_rows=1 movielens.movies \
      gs://PROJECT_ID-movielens-data/movies.csv \
      movieId:integer,title,genres
    
  5. ratings.csv 加载到新的评分 BigQuery 表中:

    bq load --skip_leading_rows=1 movielens.ratings \
      gs://PROJECT_ID-movielens-data/ratings.csv \
      userId:integer,movieId:integer,rating:float,time:timestamp
    

创建 BigQuery 视图

  1. 创建一个将电影表格转换为零售商品清单架构的视图:

    bq mk --project_id=PROJECT_ID \
     --use_legacy_sql=false \
     --view '
     SELECT
       CAST(movieId AS string) AS id,
       SUBSTR(title, 0, 128) AS title,
       SPLIT(genres, "|") AS categories
     FROM PROJECT_ID.movielens.movies' \
    movielens.products
    

    现在,新视图具有零售 API 预期的架构。

    商品视图

  2. 现在,我们将电影评分转换为用户事件。我们将:

    • 忽略负面电影评分 (<4)
    • 将每个正面评分视为商品网页浏览事件 (detail-page-view)
    • 将 Movielens 时间轴重新调整为过去 90 天。这样做的原因有两个:
      • Retail API 要求用户事件不早于 2015。Movielens 评分回到 1995 年。
      • Retail API 使用过去 90 天的用户事件处理用户预测请求。当我们为任何用户提供预测时,所有用户都将看到最近的事件。

    创建 BigQuery 视图。以下命令使用符合上述 Retail API 转换要求的 SQL 查询。

    bq mk --project_id=PROJECT_ID \
     --use_legacy_sql=false \
     --view '
     WITH t AS (
       SELECT
         MIN(UNIX_SECONDS(time)) AS old_start,
         MAX(UNIX_SECONDS(time)) AS old_end,
         UNIX_SECONDS(TIMESTAMP_SUB(
           CURRENT_TIMESTAMP(), INTERVAL 90 DAY)) AS new_start,
         UNIX_SECONDS(CURRENT_TIMESTAMP()) AS new_end
       FROM `PROJECT_ID.movielens.ratings`)
     SELECT
       CAST(userId AS STRING) AS visitorId,
       "detail-page-view" AS eventType,
       FORMAT_TIMESTAMP(
         "%Y-%m-%dT%X%Ez",
         TIMESTAMP_SECONDS(CAST(
           (t.new_start + (UNIX_SECONDS(time) - t.old_start) *
             (t.new_end - t.new_start) / (t.old_end - t.old_start))
         AS int64))) AS eventTime,
       [STRUCT(STRUCT(movieId AS id) AS product)] AS productDetails,
     FROM `PROJECT_ID.movielens.ratings`, t
     WHERE rating >= 4' \
    movielens.user_events
    

将商品清单和用户事件导入 Retail API

现在,我们可以将商品清单和用户事件数据导入 Retail API。

  1. 为您的 Google Cloud 项目启用 Retail API。

    启用 RETAIL API

  2. 点击开始使用

  3. 转到 Google Cloud Console 中的“Retail 数据”页面。

    转到“数据”页面

  4. 点击导入

导入商品目录

  1. 填写表单,从您之前创建的 BigQuery 视图中导入商品:

    • 选择导入类型:商品清单
    • 选择默认分支名称。
    • 选择数据源:BigQuery
    • 选择数据架构:零售商品架构
    • 输入您之前创建的商品 BigQuery 视图的名称。
  2. 点击导入

  3. 等待导入所有产品,这可能需要 5-10 分钟。

    您可以查看导入活动以获取导入操作的状态。导入完成后,导入操作状态会更改为成功

    商品导入活动

导入用户事件

  1. 导入 user_events BigQuery 视图:

    • 选择导入类型:用户事件
    • 选择数据源:BigQuery
    • 选择数据架构:零售用户事件架构
    • 输入您之前创建的 user_events BigQuery 视图的名称。
  2. 点击导入

  3. 等待导入至少一百万个事件后再继续下一步,以便满足训练新模型的数据要求。

    您可以查看导入活动以获取操作状态。该过程大约需要一个小时才能完成。

    事件导入活动

训练和评估推荐模型

创建推荐模型

  1. 转到 Google Cloud Console 中的“Retail 模型”页面。

    转到“模型”页面

  2. 点击创建模型

    • 为模型命名。
    • 选择您可能喜欢的其他商品作为模型类型。
    • 选择点击率 (CTR) 作为业务目标。
  3. 点击创建

    创建模型

    新模型开始训练。

    模型创建时间

创建投放配置

  1. 转到 Google Cloud Console 中的“Retail 投放配置”页面。

    转到“投放配置”页面

  2. 点击创建投放配置

    • 选择建议
    • 为投放配置命名。
    • 选择您已创建的模型。
  3. 点击创建

等待模型变为“可供查询”

训练模型并使其可供查询大约需要两天时间。

如需查看状态,请点击 [“投放配置”页面][https://console.cloud.google.com/ai/retail/catalogs/default_catalog/configs/] 上的创建投放配置。

该过程完成后,模型准备就绪,可供查询 (Model ready to query) 字段会显示

预览推荐

准备好查询模型后:

  1. 转到 Google Cloud Console 中的“Retail 投放配置”页面。

    转到“投放配置”页面
  2. 点击投放配置名称以转至其详情页面。
  3. 点击 *“评估”标签页。
  4. 输入种子电影 ID,例如 4993 代表“The Lord of the Rings: The Fellowship of the Ring (2001)”。

    输入 ID

  5. 点击预测预览版,即可在页面右侧查看推荐商品列表。

清除数据

为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除各个资源

  1. 转到投放配置页面,然后删除您创建的投放配置。

  2. 转到模型页面并删除模型。

  3. 删除 Cloud Shell 中的 BigQuery 数据集:

    bq rm --recursive --dataset movielens
    
  4. 删除 Cloud Storage 存储桶:

    gsutil rm gs://PROJECT_ID-movielens-data/movies.csv
    gsutil rm gs://PROJECT_ID-movielens-data/ratings.csv
    gsutil rb gs://PROJECT_ID-movielens-data/
    

后续步骤