使用可求和指标从贡献分析模型中获取数据洞见

在本教程中,您将使用贡献分析模型来分析 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.

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

如需详细了解 BigQuery 价格,请参阅 BigQuery 文档中的 BigQuery 价格

准备工作

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery API.

    Enable the API

创建数据集

创建 BigQuery 数据集以存储您的机器学习模型:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery 页面

  2. 探索器窗格中,点击您的项目名称。

  3. 点击 查看操作 > 创建数据集

    创建数据集。

  4. 创建数据集页面上,执行以下操作:

    • 数据集 ID 部分,输入 bqml_tutorial

    • 位置类型部分,选择多区域,然后选择 US (multiple regions in United States)(美国[美国的多个区域])。

      公共数据集存储在 US 多区域中。为简单起见,请将数据集存储在同一位置。

    • 保持其余默认设置不变,然后点击创建数据集

      创建数据集页面。

创建输入数据表

创建一个包含要分析的测试数据和对照组数据的表。以下查询会创建两个中间表,一个包含 2012 年出租车数据的测试表,另一个包含 2011 年出租车数据的对照表,然后对中间表执行联合操作,以创建一个包含测试行和对照行以及同一组列的表。

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下语句:

    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
    );

创建模型

创建贡献分析模型:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下语句:

    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 函数获取贡献分析模型生成的数据洞见。

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下语句:

    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 |
    +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    

    由于您对可求和指标执行了贡献分析,因此结果包含可求和指标输出列

清理

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.