合計可能な指標を使用して貢献度分析モデルからデータ分析情報を取得する
このチュートリアルでは、貢献度分析モデルを使用して、ニューヨーク市における 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.
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
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.
データセットを作成する
ML モデルを保存する BigQuery データセットを作成します。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] ペインで、プロジェクト名をクリックします。
[アクションを表示] > [データセットを作成] をクリックします。
[データセットの作成] ページで、次の操作を行います。
[データセット ID] に「
bqml_tutorial
」と入力します。[ロケーション タイプ] で [マルチリージョン] を選択してから、[US (米国の複数のリージョン)] を選択します。
一般公開データセットは
US
マルチリージョンに保存されています。わかりやすくするため、データセットを同じロケーションに保存します。- 残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。
bq
新しいデータセットを作成するには、--location
フラグを指定した bq mk
コマンドを使用します。使用可能なパラメータの一覧については、bq mk --dataset
コマンドのリファレンスをご覧ください。
データのロケーションを
US
、説明をBigQuery ML tutorial dataset
に設定して、bqml_tutorial
という名前のデータセットを作成します。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" } }
入力データのテーブルを作成する
分析するテストデータとコントロール データを含むテーブルを作成します。次のクエリは、2012 年のタクシーデータを含むテストテーブルと 2011 年のタクシーデータを含むコントロール テーブルの 2 つの中間テーブルを作成し、中間テーブルの結合を実行して、テスト行とコントロール行の両方、および同じ列のセットを含むテーブルを作成します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで、次のステートメントを実行します。
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 );
モデルを作成する
貢献度分析モデルを作成します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで、次のステートメントを実行します。
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
関数を使用して、貢献度分析モデルによって生成された分析情報を取得します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで、次のステートメントを実行します。
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 | +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
合計可能な指標で貢献度分析を行ったため、結果には合計可能な指標の出力列が含まれます。
クリーンアップ
- 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.