我们将每个正面电影评分(评分 >= 4)视为商品页面浏览事件。我们将训练“其他您可能喜欢”类型的推荐模型,该模型会根据我们的数据集中的任意用户或种子影片推荐电影。
预计时间:
- 训练该模型的初始步骤:大约 1.5 小时。
- 等待模型训练:大约 2 天。
- 评估模型预测和清理:大约 30 分钟。
目标
- 了解如何将产品和用户事件数据从 BigQuery 导入 Retail API。
- 训练和评估推荐模型。
费用
本教程使用 Google Cloud 的以下收费组件:- Cloud Storage
- BigQuery
- 零售
如需详细了解 Cloud Storage 费用,请参阅 Cloud Storage 价格页面。
如需详细了解 BigQuery 费用,请参阅 BigQuery 价格页面。
如需详细了解 Retail 费用,请参阅 Retail 价格页面。
准备工作
- 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
准备数据集
打开 Google Cloud 控制台,选择您的 Google Cloud 项目。记下信息中心页面上的项目信息卡片中的项目 ID。您需要项目 ID 才能执行以下步骤。接下来,点击控制台顶部的激活 Cloud Shell 按钮。
Cloud Shell 会话随即会在 Google Cloud 控制台底部的新框内打开,并显示命令行提示符。
导入数据集
使用 Cloud Shell,下载并解压缩源数据集:
wget https://files.grouplens.org/datasets/movielens/ml-latest.zip unzip ml-latest.zip
创建一个 Cloud Storage 存储桶并将数据上传到该存储桶中:
gsutil mb gs://PROJECT_ID-movielens-data gsutil cp ml-latest/movies.csv ml-latest/ratings.csv \ gs://PROJECT_ID-movielens-data
创建 BigQuery 数据集:
bq mk movielens
将
movies.csv
加载到新的电影 BigQuery 表中:bq load --skip_leading_rows=1 movielens.movies \ gs://PROJECT_ID-movielens-data/movies.csv \ movieId:integer,title,genres
将
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 视图
创建一个将电影表格转换为零售商品清单架构的视图:
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 预期的架构。 然后,选择左侧边栏中的
BIG DATA -> BigQuery
。然后,从左侧的资源管理器栏中展开项目名称,并选择movielens -> products
以打开此视图的查询页面。现在,我们将电影评分转换为用户事件。我们将:
- 忽略负面电影评分 (<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。
为您的 Google Cloud 项目启用 Retail API。
点击开始使用。
转到 Google Cloud 控制台中的“零售数据”页面。
转到“数据”页面点击导入。
导入商品目录
填写表单,从您之前创建的 BigQuery 视图中导入商品:
- 选择导入类型:商品清单。
- 选择默认分支名称。
- 选择数据源:BigQuery。
- 选择数据架构:零售商品架构。
输入您在上面创建的 BigQuery 视图 (
PROJECT_ID.movielens.products
) 的名称。
点击导入。
等待导入所有产品,这可能需要 5-10 分钟。
您可以查看导入活动以获取导入操作的状态。导入完成后,导入操作状态会更改为成功。
导入用户事件
导入 user_events BigQuery 视图:
- 选择导入类型:用户事件。
- 选择数据源:BigQuery。
- 选择数据架构:零售用户事件架构。
- 输入您之前创建的
user_events
BigQuery 视图的名称。
点击导入。
等待导入至少一百万个事件后再继续下一步,以便满足训练新模型的数据要求。
您可以查看导入活动以获取操作状态。该过程大约需要一个小时才能完成。
训练和评估推荐模型
创建推荐模型
转到 Google Cloud 控制台中的“零售模型”页面。
转到“模型”页面点击创建模型。
- 为模型命名。
- 选择您可能喜欢的其他商品作为模型类型。
- 选择点击率 (CTR) 作为业务目标。
点击创建。
新模型开始训练。
创建服务配置
转到 Google Cloud 控制台中的 Retail Serving Configs 页面。
转到“投放配置”页面点击创建投放配置:
- 选择建议。
- 为服务配置命名。
- 选择您已创建的模型。
点击创建。
等待模型变为“可供查询”
训练模型并使其可供查询大约需要两天时间。
如需查看状态,请在服务配置页面上点击已创建的服务配置。
该过程完成后,模型准备就绪,可供查询 (Model ready to query) 字段会显示是。
预览推荐
准备好查询模型后:
-
转到 Google Cloud 控制台中的 Retail Serving Configs 页面。
转到“投放配置”页面 - 点击服务配置名称以转到其详情页面。
- 点击 *“评估”标签页。
输入种子电影 ID,例如
4993
代表“The Lord of the Rings: The Fellowship of the Ring (2001)”。点击预测预览版,即可在页面右侧查看推荐商品列表。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- 在 Google Cloud 控制台中,转到管理资源页面:
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
删除各个资源
转到服务配置页面,然后删除您创建的服务配置。
转到模型页面并删除模型。
删除 Cloud Shell 中的 BigQuery 数据集:
bq rm --recursive --dataset movielens
删除 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/