使用可求和指标从贡献分析模型中获取数据洞见
在本教程中,您将使用贡献分析模型来分析爱荷华州酒类销售数据集中 2020 年至 2021 年之间的销售变化。本教程将指导您完成以下任务:
- 根据公开的爱荷华州酒类数据创建输入表。
- 创建使用可求和指标的贡献分析模型。此类模型会针对数据中一个或多个维度的组合汇总给定指标,以确定这些维度对指标值的贡献。
- 使用
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)(美国[美国的多个区域])。
保持其余默认设置不变,然后点击创建数据集。
bq
如需创建新数据集,请使用带有 --location
标志的 bq mk
命令。 如需查看完整的潜在参数列表,请参阅 bq mk --dataset
命令参考文档。
创建一个名为
bqml_tutorial
的数据集,并将数据位置设置为US
,说明为BigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
该命令使用的不是
--dataset
标志,而是-d
快捷方式。如果省略-d
和--dataset
,该命令会默认创建一个数据集。确认已创建数据集:
bq ls
API
使用已定义的数据集资源调用 datasets.insert
方法。
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
创建输入数据表
创建一个包含要分析的测试数据和对照组数据的表。测试表包含 2021 年的白酒数据,而对照表包含 2020 年的白酒数据。以下查询会将测试数据和对照组数据合并到单个输入表中:
在 Google Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,运行以下语句:
CREATE OR REPLACE TABLE bqml_tutorial.iowa_liquor_sales_sum_data AS ( (SELECT store_name, city, vendor_name, category_name, item_description, SUM(sale_dollars) AS total_sales, FALSE AS is_test FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE EXTRACT(YEAR from date) = 2020 GROUP BY store_name, city, vendor_name, category_name, item_description, is_test) UNION ALL (SELECT store_name, city, vendor_name, category_name, item_description, SUM(sale_dollars) AS total_sales, TRUE AS is_test FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE EXTRACT (YEAR FROM date) = 2021 GROUP BY store_name, city, vendor_name, category_name, item_description, is_test) );
创建模型
创建贡献分析模型:
在 Google Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,运行以下语句:
CREATE OR REPLACE MODEL bqml_tutorial.iowa_liquor_sales_sum_model OPTIONS( model_type='CONTRIBUTION_ANALYSIS', contribution_metric = 'sum(total_sales)', dimension_id_cols = ['store_name', 'city', 'vendor_name', 'category_name', 'item_description'], is_test_col = 'is_test', min_apriori_support=0.05 ) AS SELECT * FROM bqml_tutorial.iowa_liquor_sales_sum_data;
查询大约需要 60 秒才能完成,之后模型 iowa_liquor_sales_sum_model
会显示在探索器窗格的 bqml_tutorial
数据集中。由于查询使用 CREATE MODEL
语句来创建模型,因此没有查询结果。
从模型中获取数据洞见
使用 ML.GET_INSIGHTS
函数获取贡献分析模型生成的数据洞见。
在 Google Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,运行以下语句,从可汇总指标贡献分析模型的输出中选择列:
SELECT contributors, metric_test, metric_control, difference, relative_difference, unexpected_difference, relative_unexpected_difference, apriori_support, contribution FROM ML.GET_INSIGHTS( MODEL `bqml_tutorial.iowa_liquor_sales_sum_model`);
输出的前几行应如下所示。为提高可读性,值已截断。
贡献者 | metric_test | metric_control | 差异 | relative_difference | unexpected_difference | relative_unexpected_difference | apriori_support | 贡献 |
---|---|---|---|---|---|---|---|---|
全部 | 428068179 | 396472956 | 31595222 | 0.079 | 31595222 | 0.079 | 1.0 | 31595222 |
vendor_name=SAZERAC COMPANY INC | 52327307 | 38864734 | 13462573 | 0.346 | 11491923 | 0.281 | 0.122 | 13462573 |
city=DES MOINES | 49521322 | 41746773 | 7774549 | 0.186 | 4971158 | 0.111 | 0.115 | 7774549 |
vendor_name=DIAGEO AMERICAS | 84681073 | 77259259 | 7421814 | 0.096 | 1571126 | 0.018 | 0.197 | 7421814 |
category_name=100% AGAVE TEQUILA | 23915100 | 17252174 | 6662926 | 0.386 | 5528662 | 0.3 | 0.055 | 6662926 |
系统会自动按贡献度(即 ABS(difference)
)从高到低对输出进行排序。在 all
行中,difference
列显示 2020 年至 2021 年总销售额增加了 31,595,222 美元,relative_difference
列显示增幅为 7.9%。在第二行(vendor_name=SAZERAC COMPANY INC
)中,unexpected_difference
为 11,491,923 美元,这意味着,与整体数据的增长率相比,这部分数据的增长率高出 28%,如 relative_unexpected_difference
列所示。如需了解详情,请参阅可求和指标输出列。
清理
- 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.