本教程介绍如何通过指定 NUM_TRIALS
训练选项来启用一组模型训练试验,从而在 BigQuery ML 中使用超参数调节。
在本教程中,您将使用 tlc_yellow_trips_2018
示例表创建一个模型,用于预测出租车行程的小费。使用超参数调节后,在 R2_SCORE
超参数调节目标中,模型性能提高了约 40%。
目标
在本教程中,您将需要:
- BigQuery ML,用于使用
CREATE MODEL
语句创建线性回归模型,并将NUM_TRIALS
设置为 20。 ML.TRIAL_INFO
函数,用于查看所有 20 个试验的概况ML.EVALUATE
函数,用于评估机器学习模型ML.PREDICT
函数,用于通过机器学习模型进行预测
费用
本教程使用 Google Cloud 的如下计费组件:
- BigQuery
- BigQuery ML
如需详细了解 BigQuery 费用,请参阅 BigQuery 价格页面。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- 新项目会自动启用 BigQuery。如需在现有项目中激活 BigQuery,请转到
Enable the BigQuery API.
第一步:创建训练数据集
创建 BigQuery 数据集以存储您的机器学习模型:
在 Google Cloud 控制台中,转到 BigQuery 页面。
在探索器窗格中,点击您的项目名称。
点击
查看操作 > 创建数据集。在创建数据集页面上,执行以下操作:
在数据集 ID 部分,输入
bqml_tutorial
。在位置类型部分,选择多区域,然后选择 US (multiple regions in United States)(美国[美国的多个区域])。
公共数据集存储在
US
多区域中。为简单起见,请将数据集存储在同一位置。保持其余默认设置不变,然后点击创建数据集。
第二步:创建训练输入表
在此步骤中,您将具体化具有 10 万行的训练输入表。
查看源表
tlc_yellow_trips_2018
的架构。创建训练输入数据表。
CREATE TABLE `bqml_tutorial.taxi_tip_input` AS SELECT * EXCEPT(tip_amount), tip_amount AS label FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018` WHERE tip_amount IS NOT NULL LIMIT 100000
第三步:创建模型
接下来,使用 BigQuery 中的 tlc_yellow_trips_2018
示例表创建具有超参数调节的线性回归模型。以下 GoogleSQL 查询用于创建具有超参数调节功能的模型。
CREATE MODEL `bqml_tutorial.hp_taxi_tip_model` OPTIONS (MODEL_TYPE='LINEAR_REG', NUM_TRIALS=20, MAX_PARALLEL_TRIALS=2) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`
查询详情
LINEAR_REG
模型有两个可调超参数:l1_reg
和 l2_reg
。以上查询使用默认搜索空间。您也可以明确指定搜索空间:
OPTIONS (... L1_REG=HPARAM_RANGE(0, 20), L2_REG=HPARAM_CANDIDATES([0, 0.1, 1, 10]))
此外,以下其他超参数调节训练选项也使用其默认值:
- HPARAM_TUNING_ALGORITHM:
"VIZIER_DEFAULT"
- HPARAM_TUNING_OBJECTIVES:
["r2_score"]
MAX_PARALLEL_TRIALS
设置为 2,以加速调节过程。由于任意时刻都有 2 个试验在运行,整个调节过程应该只需要大约 10 个序列训练作业(而不是 20 个)的时间。但请注意,两个并发试验无法从彼此的训练结果中受益。
运行 CREATE MODEL
查询
要运行 CREATE MODEL
查询来创建和训练模型,请执行以下操作:
在 Google Cloud 控制台中,点击编写新查询按钮。
在查询编辑器文本区域中输入上面的 GoogleSQL 查询。
点击运行。
查询大约需要 17 分钟才能完成。您可以在“阶段”下跟踪调节进度的执行详情:
第四步:获取试验信息
如需查看所有试验的概况,包括其超参数、目标、状态和最佳试验,您可以使用 ML.TRIAL_INFO
函数。运行 SQL 后,您可以在 Google Cloud 控制台中查看结果。
SELECT * FROM ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`)
一个试验完成后,您可以立即运行此 SQL 查询。如果调节中途停止,所有已完成的试验将仍然可用。
第五步:评估模型
创建模型后,您可以使用 ML.EVALUATE
函数或通过 Google Cloud 控制台获取所有试验的评估指标。
运行:ML.EVALUATE
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`)
此 SQL 会提取根据测试数据计算的所有试验的评估指标。查看数据拆分部分,了解 ML.TRIAL_INFO
目标与 ML.EVALUATE
评估指标之间的区别。
您还可以通过提供自己的数据来评估特定试验。如需了解详情,请参阅 ML.EVALUATE
。
通过 Google Cloud 控制台查看评估指标
您还可以通过选择 EVALUATION
标签页来查看评估指标。
第六步:使用模型预测出租车小费
您已对模型进行了评估,下一步是使用模型来预测出租车小费。
用于预测小费的查询如下所示:
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 10))
查询详情
最顶层的 SELECT
语句检索所有列,包括 predicted_label
列。该列由 ML.PREDICT
函数生成。
当您使用 ML.PREDICT
函数时,模型的输出列名称为 predicted_label_column_name
。
默认情况下,系统会根据最佳试验进行预测。您可以通过指定 trial_id
参数来选择其他试验。
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 10), STRUCT(3 AS trial_id))
如需详细了解如何使用模型服务函数,请参阅 ML.PREDICT
。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
- 删除您在教程中创建的项目。
- 或者,保留项目但删除数据集。
删除数据集
删除项目也将删除项目中的所有数据集和所有表。如果您希望重复使用该项目,则可以删除在本教程中创建的数据集:
如有必要,请在 Google Cloud 控制台中打开 BigQuery 页面。
在导航面板中,点击您创建的 bqml_tutorial 数据集。
点击窗口右侧的删除数据集。此操作会删除相关数据集、表和所有数据。
在删除数据集对话框中,输入您的数据集的名称 (
bqml_tutorial
),然后点击删除以确认删除命令。
删除项目
要删除项目,请执行以下操作:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
后续步骤
- 要详细了解机器学习,请参阅机器学习速成课程。
- 如需大致了解 BigQuery ML,请参阅 BigQuery ML 简介。
- 如需详细了解 Google Cloud 控制台,请参阅使用 Google Cloud 控制台。