这是仅与 Recommendations AI 相关的文档。如需在受限 GA 阶段试用 Retail Search 和统一 Retail 控制台,请与 Cloud 销售人员联系如果您不打算使用 Retail Search,请保留在 Recommendations 控制台上,直到收到进一步的通知。

如果您使用的是 v1beta 版 Recommendations AI,请迁移到 Retail API 版本

创建个性化影片推荐

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

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

预计时间:

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

目标

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

费用

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

  • Cloud Storage
  • BigQuery
  • Recommendations AI

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

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

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

准备工作

  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 会话随即会在控制台底部的新框内打开,并显示命令行提示符。

导入数据集

  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

    启用 API

  2. 点击开始使用

    开始

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

    数据

  4. 点击导入

    数据导入

导入商品目录

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

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

    导入商品

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

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

    商品导入活动

导入用户事件

  1. 导入 user_events BigQuery 视图:

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

    导入事件

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

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

    事件导入活动

训练和评估推荐模型

创建推荐模型

  1. 转到 Google Cloud Console 中的 Recommendations AI 模型页面。
    转到 Recommendations AI 模型页面

    模型

  2. 点击创建模型

  3. 为模型命名。

  4. 选择您可能喜欢的其他商品作为模型类型。

  5. 选择点击率 (CTR) 作为业务目标。

  6. 点击创建

    创建模型

    新模型开始训练。

    模型创建时间

创建展示位置

  1. 转到 Google Cloud Console 中的“Recommendations AI 展示位置”页面。
    转到“Recommendations AI 展示位置”页面

  2. 点击创建展示位置

    展示位置

  3. 选择您创建的模型,为展示位置命名,然后点击创建

    创建展示位置

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

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

如需查看状态,请打开已创建的展示位置:

已创建展示位置

可供查询字段指示过程何时完成。

可供查询

预览推荐

准备好查询模型后:

  1. 打开展示位置详情页面。
  2. 点击添加项
  3. 输入种子电影 ID,例如 4993 代表“The Lord of the Rings: The Fellowship of the Ring (2001)”。

    输入 ID

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

    预测预览

清除数据

为避免因本教程中使用的资源导致您的 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/
    

后续步骤