检查点
Create a new dataset
/ 20
Create a model and specify model options
/ 20
Evaluate classification model performance
/ 15
Improve model performance with Feature Engineering(Create second model)
/ 15
Improve model performance with Feature Engineering(Better predictive power)
/ 15
Predict which new visitors will come back and purchase
/ 15
在 BigQuery ML 中使用分类模型预测访问者购买情况
GSP229
概览
BigQuery 是 Google 推出的全托管式、无需运维、费用低廉的分析数据库。借助 BigQuery,您可以查询 TB 级的数据,而不必管理任何基础设施,也无需数据库管理员。BigQuery 使用 SQL,并且支持随用随付模式。有了 BigQuery,您就可以专心分析数据,从中发掘有意义的数据洞见。
BigQuery ML 是 BigQuery 中的一项功能。借助这项功能,数据分析师只需编写极少的代码,即可创建、训练和评估机器学习模型,并使用这些模型进行预测。
在本实验中,您将使用一个特殊的电子商务数据集,其中包含 Google Merchandise Store 的上百万条 Google Analytics 记录,这些记录已加载到 BigQuery 中。您将使用这些数据在 BigQuery ML 中创建一个分类(逻辑回归)模型,用来预测客户的购物习惯。
学习内容
在本实验中,您将学习如何执行以下任务:
- 使用 BigQuery 查找公开数据集
- 查询和探索此电子商务数据集
- 创建用于批量预测的训练和评估数据集
- 在 BigQuery ML 中创建分类(逻辑回归)模型
- 评估和提升您的机器学习模型的性能
- 预测访问者购物的可能性并对其进行排序
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
打开 BigQuery 控制台
- 在 Google Cloud 控制台中,选择导航菜单 > BigQuery。
您会看到欢迎在 Cloud 控制台中使用 BigQuery 消息框,其中提供了指向快速入门指南和版本说明的链接。
- 点击完成。
BigQuery 控制台即会打开。
访问课程数据集
- 在探索器窗格中,点击 + 添加。
添加数据
窗格即会打开。
-
在“其他来源”下方,点击按名称为项目加星标。
-
输入
data-to-insights
,并点击加星标。
点击下面的直接链接可查看 data-to-insights 公共项目:
您可以点击此处查看 data-to-insights 电子商务数据集的字段定义。请在新标签页中打开该链接进行参考。
点击查询标签页,然后选择在新标签页中打开查询编辑器。
任务 1. 探索电子商务数据
场景:您的数据分析团队已将某个电子商务网站的 Google Analytics 日志导出到 BigQuery,并新建了包含所有电子商务访问者会话原始数据的表供您探索。您需要使用这些数据尝试回答几个问题。
问题:在访问我们网站的所有访问者中,有百分之多少购买了商品?
- 请复制以下查询并将其粘贴到 BigQuery 编辑器中:
- 点击运行。
结果:2.69%
问题:哪 5 种商品最畅销?
- 清除之前的查询,然后在编辑器中添加以下查询:
- 点击运行
结果:
Row |
v2ProductName |
v2ProductCategory |
units_sold |
revenue |
1 |
Nest® Learning Thermostat 3rd Gen-USA - Stainless Steel |
Nest-USA |
17651 |
870976.95 |
2 |
Nest® Cam Outdoor Security Camera - USA |
Nest-USA |
16930 |
684034.55 |
3 |
Nest® Cam Indoor Security Camera - USA |
Nest-USA |
14155 |
548104.47 |
4 |
Nest® Protect Smoke + CO White Wired Alarm-USA |
Nest-USA |
6394 |
178937.6 |
5 |
Nest® Protect Smoke + CO White Battery Alarm-USA |
Nest-USA |
6340 |
178572.4 |
问题:有多少访问者后来再访问网站时购物了?
- 清除之前的查询,然后在编辑器中添加以下查询:
- 点击运行。
结果:
Row |
total_visitors |
will_buy_on_return_visit |
1 |
729848 |
0 |
2 |
11873 |
1 |
对结果进行分析后发现,(11873 / 741721) = 1.6% 的访问者会再次访问网站并购物。这包括在首次访问期间即购买了商品并且在日后访问网站时再次购物的那部分访问者。
问题:典型的电子商务客户最初只看不买,要等到以后再次访问时才会购买,原因有哪些?
回答:虽然这个问题没有准确答案,但一个常见的原因是,在最终做出购买决定之前,客户会在不同的电子商务网站之间货比三家。这种现象在购买奢侈品时极为常见,客户需要进行大量的前期调查和对比才能做出决定(想一想买车的情形),此网站上的商品(T 恤、配饰等)也符合这一规律,只是程度较低。
在线上营销领域,根据首次访问的特征识别潜在客户并针对其进行营销,可以提升转化率并减少流失到竞争网站的情况。
任务 2. 确定目标
现在,您将在 BigQuery 中创建机器学习模型,来预测某位新用户将来是否可能购物。通过识别这些高价值用户,可以帮助您的营销团队向其定向投放特殊促销和广告系列,确保他们即便来回访问,货比三家,最终也能在您的电商网站上实现转化。
任务 3. 选择特征并创建您的训练数据集
Google Analytics 会捕获有关用户访问此电子商务网站的众多维度和测量指标。请在 [UA] BigQuery Export 架构文档中浏览字段的完整列表,然后预览演示数据集以找到有用的特征,这些特征将帮助机器学习模型了解访问者首次访问网站的数据与该访问者是否会再次访问并购物之间的关系。
您的团队决定测试这两个字段是否适合作为分类模型的输入:
-
totals.bounces
(访问者是否立即离开网站) -
totals.timeOnSite
(访问者浏览我们网站的时长)
问题:仅使用上述两个字段有哪些风险?
回答:机器学习模型的准确性基本取决于向其馈送的训练数据。如果没有足够的信息让模型确定并学习您的输入特征和标签(在本例中,即访问者将来是否购物)之间的关系,您就不会得到准确的模型。虽然仅针对这两个字段训练模型只是一个开始,但您将看到它们是否足以产生准确的模型。
- 在 BigQuery 编辑器中,运行以下查询:
结果:
Row |
bounces |
time_on_site |
will_buy_on_return_visit |
1 |
0 |
15047 |
0 |
2 |
0 |
12136 |
0 |
3 |
0 |
11201 |
0 |
4 |
0 |
10046 |
0 |
5 |
0 |
9974 |
0 |
6 |
0 |
9564 |
0 |
7 |
0 |
9520 |
0 |
8 |
0 |
9275 |
1 |
9 |
0 |
9138 |
0 |
10 |
0 |
8872 |
0 |
问题:哪些字段是输入特征,哪些字段是标签?
回答:bounces 和 time_on_site 是输入。will_buy_on_return_visit 是标签。
问题:访问者首次访问后,可以获知哪两个字段?
回答:访问者首次访问后,可以获知 bounces 和 time_on_site。
问题:哪个字段是后来获知的?
回答:will_buy_on_return_visit 在首次访问后是未知的。再次强调,您要预测的是再次访问网站并购物的那部分用户。由于您在预测时并不能真正看到未来,因此您无法确定某位新访问者是否会再次访问并购物。构建机器学习模型的价值在于根据收集到的有关访问者首次访问的数据,来推算出他们将来购物的可能性。
问题:看一下初始数据结果,您认为 time_on_site 和 bounces 是否适合作为判定用户是否再次访问并购物的指标?
答案:在训练和评估模型之前下结论通常为时过早,但粗略一看,time_on_site
排在前 10 的访问者中,只有 1 名客户再次访问并购物,这说明结果并不理想。让我们来看看模型的效果吧。
任务 4. 创建 BigQuery 数据集来存储模型
接下来,创建新的 BigQuery 数据集,它也将存储您的机器学习模型。
- 在左侧窗格中的探索器部分,点击项目名称(以
qwiklabs-gcp-...
开头)旁边的查看操作图标,然后点击创建数据集。
- 在创建数据集对话框中执行以下操作:
- 在数据集 ID 中,输入“ecommerce”。
- 将其他值保留为默认值。
- 点击创建数据集。
点击检查我的进度以验证是否完成了以下目标:
任务 5. 选择 BigQuery ML 模型类型并指定选项
现在,您已选择初始特征,可以在 BigQuery 中创建您的首个机器学习模型了。
有两个模型类型可供选择:
模型 |
模型类型 |
标签数据类型 |
示例 |
预测 |
linear_reg |
数值(一般是整数或浮点值) |
根据历史销售数据预测下一年的销售额: |
分类 |
logistic_reg |
0 或 1,用于二元分类 |
根据上下文将电子邮件归类为垃圾邮件或非垃圾邮件。 |
您应该选择哪一个模型类型?
由于您要将访问者分为“将来会购买”或“将来不会购买”两类,请在分类模型中使用 logistic_reg
。
以下查询会创建一个模型,并指定模型选项。
- 运行下面的查询来训练模型:
- 等待模型完成训练(5 - 10 分钟)。
点击检查我的进度以验证是否完成了以下目标:
模型训练完成后,您将看到消息“此语句创建了名为‘qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_model’的新模型”。
-
点击转到模型。
-
查看此电子商务数据集内部,并确认现在显示了 classification_model。
接下来,您将评估模型针对未曾见过的评估数据的性能。
任务 6. 评估分类模型性能
选择您的性能标准
对于机器学习中的分类问题,您需要尽量减小假正例率(预测用户将再次访问并购物,而该用户实际并未再次访问并购物),并尽量增大真正例率(预测用户将再次访问并购物,且该用户确实再次访问并购物)。
我们通过如下所示的 ROC(受试者工作特征)曲线来直观表示这种关系,您要尽量增大曲线下方区域面积(即 AUC):
在 BigQuery ML 中,roc_auc 只是评估经训练的机器学习模型时可查询的一个字段。
- 现在训练已完成,您可以运行下面的查询,使用
ML.EVALUATE
评估模型的性能:
您应该会看到以下结果:
Row |
roc_auc |
model_quality |
1 |
0.7238561438561438 |
decent |
经评估,您的模型 roc_auc 为 0.72,表示该模型的预测能力可以接受,但不是很好。由于目标是使曲线下方区域面积尽量接近 1.0,因此该模型尚有改进空间。
点击检查我的进度以验证是否完成了以下目标:
任务 7. 通过特征工程改进模型性能
正如先前提示的,数据集中还有其他很多特征,可能有助于模型更好地理解访问者的首次访问情况与其在后续访问中购物的可能性之间的关系。
- 添加一些新特征,并创建名为
classification_model_2
的第二个机器学习模型:
- 访问者首次访问时在结账流程中进行到了哪一步
- 访问者的来源(流量来源:自然搜索、引荐网站等)
- 设备类别(移动设备、平板电脑、桌面设备)
- 地理位置信息(国家/地区)
- 通过点击“+”(编写新查询)图标创建第二个模型:
添加到训练数据集查询的关键新特征是每个访问者在结账流程中最多进行到了哪一步,此信息记录在 hits.eCommerceAction.action_type
字段中。如果在字段定义中搜索该字段,您将看到字段映射 6 = Completed Purchase(6 = 完成交易)。
- 等待新模型完成训练(5-10 分钟)。
点击检查我的进度以验证是否完成了以下目标:
- 评估这个新模型,看看它的预测能力是否更好:
输出如下:
Row |
roc_auc |
model_quality |
1 |
0.9094875124875125 |
good |
通过这一新模型,您现在获得了 0.91 的 roc_auc,较第一个模型有显著改善。
现在,您有了经训练的模型,可以进行预测了。
点击检查我的进度以验证是否完成了以下目标:
任务 8. 预测哪些新访问者会再次访问并购物
接下来,您将编写查询来预测哪些新访问者会再次访问并购物。
- 下面的预测查询使用改进后的分类模型来预测 Google Merchandise Store 初访者在后续访问中购物的可能性:
预测针对数据集(12 个月中)最后一个月的数据进行。
点击检查我的进度以验证是否完成了以下目标:
您的模型现在会输出对 2017 年 7 月电子商务访问者的预测结果。您可以看到三个新添加的字段:
- predicted_will_buy_on_return_visit:模型认为访问者以后是否会购物(1 = 是)
- predicted_will_buy_on_return_visit_probs.label:是/否的二元分类器
- predicted_will_buy_on_return_visit.probs.prob:模型对其预测结果的置信度 (1 = 100%)
任务 9. 分析结果和其他信息
结果
- 排名前 6% 的初访者(按预测可能性降序排列)中,超过 6% 在后续访问中购物。
- 这些用户占在后续访问中购物的所有初访者的近 50%。
- 总体而言,只有 0.7% 的初访者会在后续访问中购物。
- 与针对所有初访者进行营销相比,针对前 6% 的初访者进行营销可使营销 ROI 提升 9 倍!
更多信息
提示:如果您要使用新数据重新训练现有模型,请向模型选项中添加 warm_start = true
来缩短训练时间。请注意,您不能更改特征列(这需要新的模型)。
roc_auc 只是模型评估期间可用的性能指标之一,您还可使用准确率、精确率和召回率。了解应依赖哪个性能指标,在很大程度上取决于您具体的总体目标。
其他可探索的数据集
如果您想了解使用其他数据集建模的情况(例如预测出租车行程费用),则可以使用 bigquery-public-data 项目。
- 要打开 bigquery-public-data 数据集,请点击 +添加。在“其他来源”下方,点击按名称为项目加星标。
- 然后输入名称
bigquery-public-data
。 - 点击加星标。
“探索器”部分会显示 bigquery-public-data
项目。
任务 10. 知识测验
参加我们的测验,检验您对 Google Cloud Platform 知识的掌握情况。
恭喜!
您已成功使用 BigQuery ML 构建机器学习模型,以对电子商务访问者进行分类并预测他们的购买习惯。
后续步骤/了解详情
- 已拥有 Google Analytics 账号,想要在 BigQuery 中查询您自己的数据集?在 Analytics 帮助页面中,按照设置 BigQuery Export 指南操作。
- 如需了解创建查询的资源,请参阅 BigQuery 页面中的查询语法参考文档。
- 请查看以下实验:使用 BigQuery ML 预测模型来预测出租车费
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 2 月 7 日
上次测试实验的时间:2023 年 10 月 9 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。