使用可相加的指標,從貢獻度分析模型取得資料洞察

在本教學課程中,您將使用貢獻度分析模型,分析愛荷華州酒類銷售資料集中 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.

如要根據預測用量估算費用,請使用 Pricing Calculator

初次使用 Google Cloud 的使用者可能符合免費試用期資格。

如要進一步瞭解 BigQuery 定價,請參閱 BigQuery 說明文件中的「BigQuery 定價」一文。

事前準備

  1. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色

    前往專案選取器

  2. 確認專案已啟用計費功能 Google Cloud

  3. 啟用 BigQuery API。

    啟用 API 時所需的角色

    如要啟用 API,您需要服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    啟用 API

建立資料集

建立 BigQuery 資料集來儲存機器學習模型。

控制台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery 頁面

  2. 在「Explorer」窗格中,按一下專案名稱。

  3. 依序點按 「View actions」(查看動作) >「Create dataset」(建立資料集)

  4. 在「建立資料集」頁面中,執行下列操作:

    • 在「Dataset ID」(資料集 ID) 中輸入 bqml_tutorial

    • 針對「位置類型」選取「多區域」,然後選取「美國」

    • 其餘設定請保留預設狀態,然後按一下「建立資料集」

bq

如要建立新的資料集,請使用 bq mk --dataset 指令

  1. 建立名為 bqml_tutorial 的資料集,並將資料位置設為 US

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. 確認資料集已建立完成:

    bq ls

API

請呼叫 datasets.insert 方法,搭配已定義的資料集資源

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

建立輸入資料表

建立包含測試和控制項資料的資料表,以供分析。測試資料表包含 2021 年的酒類資料,控制組資料表則包含 2020 年的酒類資料。下列查詢會將測試和控制組資料合併為單一輸入資料表:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往「BigQuery」

  2. 在查詢編輯器中執行下列陳述式:

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

建立模型

建立貢獻分析模型:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往「BigQuery」

  2. 在查詢編輯器中執行下列陳述式:

    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 函式,取得貢獻度分析模型產生的洞察資料。

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往「BigQuery」

  2. 在查詢編輯器中,執行下列陳述式,從可加總指標貢獻度分析模型輸出內容中選取資料欄:

    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為 $11,491,923,unexpected_difference表示這個資料區隔的成長率比整體資料的成長率高出 28%,如 relative_unexpected_difference 欄所示。詳情請參閱「可加總的指標輸出資料欄」。

清除所用資源

  1. 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。