使用可求和指标从贡献分析模型中获取数据洞见
在本教程中,您将使用贡献分析模型来分析 2011 年至 2012 年纽约市出租车费率的变化。本教程将指导您完成以下任务:
- 根据公开的出租车数据创建输入表。
- 创建使用可求和指标的贡献分析模型。此类模型会针对数据中一个或多个维度的组合汇总给定指标,以确定这些维度对指标值的贡献。
- 使用
ML.GET_INSIGHTS
函数从模型中获取指标数据分析。
在开始本教程之前,您应该熟悉贡献分析用例。
所需权限
如需创建数据集,您需要拥有
bigquery.datasets.create
Identity and Access Management (IAM) 权限。如需创建模型,您需要以下权限:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
如需运行推理,您需要以下权限:
bigquery.models.getData
bigquery.jobs.create
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
您可使用价格计算器根据您的预计使用情况来估算费用。
如需详细了解 BigQuery 价格,请参阅 BigQuery 文档中的 BigQuery 价格。
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
创建数据集
创建 BigQuery 数据集以存储您的机器学习模型:
在 Google Cloud 控制台中,转到 BigQuery 页面。
在探索器窗格中,点击您的项目名称。
点击
查看操作 > 创建数据集。在创建数据集页面上,执行以下操作:
在数据集 ID 部分,输入
bqml_tutorial
。在位置类型部分,选择多区域,然后选择 US (multiple regions in United States)(美国[美国的多个区域])。
公共数据集存储在
US
多区域中。为简单起见,请将数据集存储在同一位置。保持其余默认设置不变,然后点击创建数据集。
创建输入数据表
创建一个包含要分析的测试数据和对照组数据的表。以下查询会创建两个中间表,一个包含 2012 年出租车数据的测试表,另一个包含 2011 年出租车数据的对照表,然后对中间表执行联合操作,以创建一个包含测试行和对照行以及同一组列的表。
在 Google Cloud 控制台中,转到 BigQuery 页面。
在查询编辑器中,运行以下语句:
CREATE OR REPLACE TABLE bqml_tutorial.taxi_control_and_test AS ( SELECT vendor_id, passenger_count, payment_type, pickup_location_id, EXTRACT(MONTH FROM pickup_datetime) AS month, AVG(total_amount) AS avg_total_fare, FALSE AS is_test FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2011` WHERE total_amount > 0 GROUP BY vendor_id, passenger_count, payment_type, pickup_location_id, month, is_test ) UNION ALL ( SELECT vendor_id, passenger_count, payment_type, pickup_location_id, EXTRACT(MONTH FROM pickup_datetime) AS month, AVG(total_amount) AS avg_total_fare, TRUE AS is_test FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2012` WHERE total_amount > 0 GROUP BY vendor_id, passenger_count, payment_type, pickup_location_id, month, is_test );
创建模型
创建贡献分析模型:
在 Google Cloud 控制台中,转到 BigQuery 页面。
在查询编辑器中,运行以下语句:
CREATE OR REPLACE MODEL `bqml_tutorial.taxi_contribution_analysis_model` OPTIONS ( MODEL_TYPE = 'CONTRIBUTION_ANALYSIS', CONTRIBUTION_METRIC = 'SUM(avg_total_fare)', DIMENSION_ID_COLS = ['vendor_id', 'passenger_count', 'pickup_location_id', 'payment_type', 'month'], IS_TEST_COL = 'is_test', MIN_APRIORI_SUPPORT = 0.05) AS SELECT * FROM bqml_tutorial.taxi_control_and_test;
查询大约需要 20 秒才能完成,之后模型 taxi_contribution_analysis_model
会显示在探索器窗格的 bqml_tutorial
数据集中。由于查询使用 CREATE MODEL
语句来创建模型,因此没有查询结果。
从模型中获取数据洞见
使用 ML.GET_INSIGHTS
函数获取贡献分析模型生成的数据洞见。
在 Google Cloud 控制台中,转到 BigQuery 页面。
在查询编辑器中,运行以下语句:
SELECT * FROM ML.GET_INSIGHTS( MODEL `bqml_tutorial.taxi_contribution_analysis_model`) ORDER BY unexpected_difference DESC;
输出的前几行应类似于以下内容:
+----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+ | contributors | vendor_id | passenger_count | payment_type | pickup_location_id | month | metric_test | metric_control | difference | relative_difference | unexpected_difference | relative_unexpected_difference | apriori_support | +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+ | ["all"] | NULL | NULL | NULL | NULL | NULL | 1305121.630946658 | 983978.603443601 | 321143.027503057 | 0.326371962 | 321143.027503057 | 0.326371962 | 1 | | ["payment_type=5","vendor_id=2"] | 2 | NULL | 5 | NULL | NULL | 82996.99307095 | 0 | 82996.99307095 | NULL | 82996.99307095 | NULL | 0.063593301 | | ["payment_type=5"] | NULL | NULL | 5 | NULL | NULL | 82996.99307095 | 138.26 | 82858.73307095 | 599.296492629 | 82825.246757081 | 482.253417818 | 0.063593301 | | ["payment_type=3","vendor_id=1"] | 1 | NULL | 3 | NULL | NULL | 82167.169133767 | 0 | 82167.169133767 | NULL | 82167.169133767 | NULL | 0.06295748 | | ["payment_type=3"] | NULL | NULL | 3 | NULL | NULL | 82167.169133767 | 0 | 82167.169133767 | NULL | 82167.169133767 | NULL | 0.06295748 | | ["payment_type=4","vendor_id=1"] | 1 | NULL | 4 | NULL | NULL | 67418.589902631 | 0 | 67418.589902631 | NULL | 67418.589902631 | NULL | 0.05165694 | +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
由于您对可求和指标执行了贡献分析,因此结果包含可求和指标输出列。
清理
- 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.