このチュートリアルでは、データ アナリストの方を対象に BigQuery ML を紹介します。BigQuery ML を使用すると、BigQuery で SQL クエリを使用して機械学習モデルを作成して実行できます。このチュートリアルでは、num_trials
トレーニング オプションを指定することによるハイパーパラメータ調整を紹介します。
このチュートリアルでは、tlc_yellow_trips_2018
サンプル テーブルを使用して、タクシー移動のチップ代を予測するモデルを作成します。ハイパーパラメータ調整を使用することで、パフォーマンス(r2_score)が約 40% 改善されることがわかります。
目標
このチュートリアルでは、次のものを使用します。
- BigQuery ML。
num_trials
を 20 に設定したCREATE MODEL
ステートメントを使用して線形回帰モデルを作成します。 ML.TRIAL_INFO
関数。20 回のトライアルすべての概要を確認します。ML.EVALUATE
関数。ML モデルを評価します。ML.PREDICT
関数。ML モデルを使用して予測を行います。
料金
このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。
- BigQuery
- BigQuery ML
BigQuery の費用の詳細については、BigQuery の料金ページをご覧ください。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、
BigQuery API を有効にします。
にアクセスします。
ステップ 1: トレーニング データセットを作成する
ML モデルを格納する BigQuery データセットを作成します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
[エクスプローラ] ペインでプロジェクト名をクリックします。
[アクションを表示] > [データセットの作成] をクリックします。
[データセットの作成] ページで、次の操作を行います。
[データセット ID] に
bqml_tutorial
を入力します。[ロケーション タイプ] で [マルチリージョン] を選択してから、[US(米国の複数のリージョン)] を選択します。
一般公開データセットは
US
マルチリージョンに保存されています。わかりやすくするため、データセットを同じロケーションに保存します。残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。
ステップ 2: トレーニングの入力テーブルを作成する
このステップでは、10 万行のトレーニング入力テーブルを実体化します。
ソーステーブル
tlc_yellow_trips_2018
のスキーマを表示します。トレーニングの入力データテーブルを作成します。
CREATE TABLE `bqml_tutorial.taxi_tip_input` AS SELECT * EXCEPT(tip_amount), tip_amount AS label FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018` WHERE tip_amount IS NOT NULL LIMIT 100000
ステップ 3: モデルを作成する
次に、BigQuery の tlc_yellow_trips_2018
サンプル テーブルを使用して、ハイパーパラメータを調整した線形回帰モデルを作成します。ハイパーパラメータを調整したモデルの作成には、次の GoogleSQL クエリを使用します。
CREATE MODEL `bqml_tutorial.hp_taxi_tip_model` OPTIONS (model_type='linear_reg', num_trials=20, max_parallel_trials=2) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`
クエリの詳細
LINEAR_REG
モデルには、調整できるハイパーパラメータが 2 つ(l1_reg
および l2_reg
)あります。上のクエリはデフォルトの検索空間を使用しています。検索スペースは、明示的に指定することもできます。
OPTIONS (... l1_reg=hparam_range(0, 20), l2_reg=hparam_candidates([0, 0.1, 1, 10]))
また、次のハイパーパラメータ調整トレーニング オプションもデフォルト値を使用します。
hparam_tuning_algorithm:
"VIZIER_DEFAULT"
hparam_tuning_objectives:
["r2_score"]
max_parallel_trials
を 2 に設定して、調整プロセスを高速化します。常に 2 つのトライアルを同時に実行するため、調整全体にかかる時間が、20 回ではなく 10 回のトレーニング ジョブを連続で行う場合と同程度になります。ただし、2 つのトライアルを同時に実行する場合、互いのトレーニング結果からの恩恵は得られません。
CREATE MODEL
クエリを実行する
モデルを作成してトレーニングする CREATE MODEL
クエリを実行するには:
Google Cloud コンソールで、[クエリを新規作成] ボタンをクリックします。
[クエリエディタ] のテキスト領域に、前述の GoogleSQL クエリを入力します。
[実行] をクリックします。
クエリの完了には、約 17 分かかります。調整の進捗状況は、[実行の詳細] の [ステージ] から確認できます。
ステップ 4: トライアル情報を取得する
ハイパーパラメータ、目標、ステータス、最適なトライアルなど、すべてのトライアルの概要を表示するには、ML.TRIAL_INFO
関数を使用します。SQL の実行後に Google Cloud コンソールに結果が表示されます。
SELECT * FROM ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`)
この SQL クエリは、1 つのトライアルの完了後すぐに実行できます。調整が途中で停止している場合でも、すでに終了しているトライアルはすべて使用できます。
ステップ 5: モデルを評価する
モデルの作成後、ML.EVALUATE
関数または Google Cloud Console を使用して、すべてのトライアルの評価指標を取得できます。
実行 ML.EVALUATE
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`)
この SQL は、TEST データから計算されたトライアルすべての評価指標を取得します。ML.TRIAL_INFO
目標と ML.EVALUATE
評価指標の違いについては、データ分割セクションをご覧ください。
また、独自のデータを指定して特定のトライアルを評価することもできます。詳しくは、ML.EVALUATE
をご確認ください。
Google Cloud コンソールで評価指標を確認する
評価指標は、[EVALUATION
] タブを選択して確認することもできます。
ステップ 6: モデルを使用してタクシーのチップ代を予測する
モデルを評価したので、そのモデルを使用してタクシーのチップ代を予測します。
チップ代の予測に使用するクエリは次のとおりです。
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 10))
クエリの詳細
先頭の SELECT
ステートメントは、predicted_label
列を含むすべての列を取得します。この列は、ML.PREDICT
関数によって生成されます。ML.PREDICT
関数を使用すると、モデルの出力列名は predicted_label_column_name
になります。
デフォルトでは、最適なトライアルに対して予測が行われます。他のトライアルは、trial_id
パラメータを指定することで選択できます。
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 10), STRUCT(3 AS trial_id))
モデルがサポートする関数の詳細な使用方法については、ML.PREDICT
をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
- 作成したプロジェクトを削除する。
- または、プロジェクトを保存して、データセットを削除する。
データセットを削除する
プロジェクトを削除すると、プロジェクト内のデータセットとテーブルがすべて削除されます。プロジェクトを再利用する場合は、このチュートリアルで作成したデータセットを削除できます。
必要に応じて、Google Cloud コンソールで [BigQuery] ページを開きます。
ナビゲーション パネルで、作成した bqml_tutorial データセットをクリックします。
ウィンドウの右側の [データセットを削除] をクリックします。この操作を行うと、データセット、テーブル、すべてのデータが削除されます。
[データセットの削除] ダイアログ ボックスでデータセットの名前(
bqml_tutorial
)を入力し、[削除] をクリックして確定します。
プロジェクトを削除する
プロジェクトを削除するには:
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
- 機械学習集中講座で機械学習について学習する。
- BigQuery ML の概要で BigQuery ML の概要を確認する。
- Google Cloud コンソールの使用で、Google Cloud コンソールの詳細を確認する。