使用可求和比率指标从贡献分析模型中获取数据洞见
在本教程中,您将使用贡献分析模型来分析爱荷华州酒类销售数据集中销售成本比的贡献。本教程将指导您完成以下任务:
- 根据公开提供的爱荷华州酒类数据创建输入表。
- 创建使用可求和比率指标的贡献分析模型。此类模型会汇总两个数值列的值,并确定控制数据集和测试数据集在每个数据段中的比率差异。
- 使用
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.
-
Verify 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" } }
BigQuery DataFrame
在尝试此示例之前,请按照《BigQuery 快速入门:使用 BigQuery DataFrames》中的 BigQuery DataFrames 设置说明进行操作。如需了解详情,请参阅 BigQuery DataFrames 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置 ADC。
创建输入数据表
创建一个包含要分析的测试数据和控制数据的表。以下查询会创建两个中间表:一个包含 2021 年酒类数据的测试表,以及一个包含 2020 年酒类数据的控制表,然后对这两个中间表执行并集运算,以创建一个同时包含测试行和控制行且具有相同列集的表。
在 Google Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,运行以下语句:
CREATE OR REPLACE TABLE bqml_tutorial.iowa_liquor_sales_data AS (SELECT store_name, city, vendor_name, category_name, item_description, SUM(sale_dollars) AS total_sales, SUM(state_bottle_cost) AS total_bottle_cost, 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, SUM(state_bottle_cost) AS total_bottle_cost, 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.liquor_sales_model OPTIONS( model_type = 'CONTRIBUTION_ANALYSIS', contribution_metric = 'sum(total_bottle_cost)/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_data;
查询需要大约 35 秒钟才能完成,之后 liquor_sales_model
模型会显示在探索器窗格的 bqml_tutorial
数据集中。由于查询使用 CREATE MODEL
语句来创建模型,因此没有查询结果。
从模型中获取数据洞见
使用 ML.GET_INSIGHTS
函数获取贡献分析模型生成的数据洞见。
在 Google Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,运行以下语句,从可求和比率指标贡献分析模型的输出中选择列:
SELECT contributors, metric_test, metric_control, metric_test_over_metric_control, metric_test_over_complement, metric_control_over_complement, aumann_shapley_attribution, apriori_support contribution FROM ML.GET_INSIGHTS( MODEL `bqml_tutorial.liquor_sales_model`) ORDER BY aumann_shapley_attribution DESC;
输出结果的前几行应类似于以下内容。 为了提高可读性,系统会截断值。
贡献者 | metric_test | metric_control | metric_test_over_metric_control | metric_test_over_complement | metric_control_over_complement | aumann_shapley_attribution | 先验支持度 | 贡献 |
---|---|---|---|---|---|---|---|---|
全部 | 0.069 | 0.071 | 0.969 | null | null | -0.00219 | 1.0 | 0.00219 |
city=DES MOINES | 0.048 | 0.054 | 0.88 | 0.67 | 0.747 | -0.00108 | 0.08 | 0.00108 |
vendor_name=DIAGEO AMERICAS | 0.064 | 0.068 | 0.937 | 0.917 | 0.956 | -0.0009 | 0.184 | 0.0009 |
vendor_name=BACARDI USA INC | 0.071 | 0.082 | 0.857 | 1.025 | 1.167 | -0.00054 | 0.057 | 0.00054 |
vendor_name=PERNOD RICARD USA | 0.068 | 0.077 | 0.89 | 0.988 | 1.082 | -0.0005 | 0.061 | 0.0005 |
在输出中,您可以看到数据细分受众群 city=DES MOINES
对销售比率变化的贡献最大。您还可以从 metric_test
和 metric_control
列中看出这一差异,这两列显示了测试数据中的比率与对照数据相比有所下降。其他指标(例如 metric_test_over_metric_control
、metric_test_over_complement
和 metric_control_over_complement
)会计算额外的统计信息,用于描述控制组比率与测试组比率之间的关系,以及它们与总体之间的关系。如需了解详情,请参阅可求和的比率指标贡献分析模型的输出。
清理
- 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.