貢献度分析モデルからデータ分析情報を取得する

このチュートリアルでは、貢献度分析モデルを使用して、ニューヨーク市における 2011 年から 2012 年のタクシー運賃の変化を分析します。このチュートリアルでは、次のタスクの実行について説明します。

  • 一般公開されているタクシーデータに基づいて入力テーブルを作成する。
  • 合計可能な指標を使用する貢献度分析モデルを作成する。このタイプのモデルは、データ内の 1 つ以上のディメンションの組み合わせについて特定の指標を要約し、それらのディメンションが指標値にどのように貢献しているかを判断します。
  • 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

データセットを作成する

ML モデルを保存する BigQuery データセットを作成します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] ページに移動

  2. [エクスプローラ] ペインで、プロジェクト名をクリックします。

  3. 「アクションを表示」> [データセットを作成] をクリックします。

    データセットを作成する。

  4. [データセットを作成する] ページで、次の操作を行います。

    • [データセット ID] に「bqml_tutorial」と入力します。

    • [ロケーション タイプ] で [マルチリージョン] を選択してから、[US (米国の複数のリージョン)] を選択します。

      一般公開データセットは US マルチリージョンに保存されています。わかりやすくするため、データセットを同じロケーションに保存します。

    • 残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。

      データセットの作成ページ。

入力データのテーブルを作成する

分析するテストデータとコントロール データを含むテーブルを作成します。次のクエリは、2012 年のタクシーデータを含むテストテーブルと 2011 年のタクシーデータを含むコントロール テーブルの 2 つの中間テーブルを作成し、中間テーブルの結合を実行して、テスト行とコントロール行の両方、および同じ列のセットを含むテーブルを作成します。

  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
      contributors,
      metric_test,
      metric_control,
      difference,
      relative_difference,
      unexpected_difference,
      relative_unexpected_difference,
      apriori_support
    FROM
      ML.GET_INSIGHTS(
        MODEL `bqml_tutorial.taxi_contribution_analysis_model`)
    WHERE relative_difference IS NOT NULL
    ORDER BY unexpected_difference DESC;

    WHERE 句は、テストセットには存在するものの、コントロール セットには存在しないコントリビューターの結果を除外します。

    関数の SELECT ステートメントで列を指定する代わりに SELECT * を使用した場合、出力には CREATE MODEL ステートメントの DIMENSION_ID_COLS オプションで指定されたディメンション列も含まれます。

    出力の最初の数行は次のようになります。

    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    |                        contributors                         |   metric_test    |  metric_control  |    difference    | relative_difference | unexpected_difference | relative_unexpected_difference | apriori_support |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["payment_type=5"]                                          |   82996.99307095 |           138.26 |   82858.73307095 |       599.296492629 |       82825.246757081 |                  482.253417818 |     0.063593301 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["vendor_id=1"]                                             | 651674.026105812 | 475749.798118647 | 175924.227987165 |         0.369783085 |        39985.82041025 |                    0.065369611 |     0.499320531 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["passenger_count=1"]                                       | 304615.252142054 | 214839.058249037 |  89776.193893017 |         0.417876501 |       25149.907437652 |                     0.08999294 |     0.233399895 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["passenger_count=6"]                                       | 106980.236314059 | 64751.247894565  |  42228.988419494 |          0.65217258 |       22582.018639759 |                    0.267565108 |     0.081969553 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["vendor_id=1","passenger_count=1"]                         |     169184.64374 | 114583.997774386 |  54600.645965614 |         0.476511965 |       19471.037967023 |                    0.130055237 |     0.129631323 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    

    合計可能な指標で貢献度分析を行ったため、結果には合計可能な指標の出力列が含まれます。

クリーンアップ

  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.