arrow_back

BigQuery ML のハイパーパラメータ調整を使用してモデルのパフォーマンスを向上

ログイン 参加
700 以上のラボとコースにアクセス

BigQuery ML のハイパーパラメータ調整を使用してモデルのパフォーマンスを向上

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 上級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

概要

このラボでは、データ アナリストの方を対象に 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 モデルと ML.PREDICT 関数を使用して予測を行う

設定と要件

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. Qwiklabs にシークレット ウィンドウでログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

BigQuery API を有効にする

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[API とサービス] > [ライブラリ] をクリックします。
  2. [BigQuery API] を検索し、まだ有効になっていない場合は [有効にする] をクリックします。

タスク 1. トレーニング データセットを作成する

まず、トレーニング データと ML モデルを格納する BigQuery データセットを作成します。データセットを作成するには、次の操作を行います。

  1. [BigQuery] ページの [エクスプローラ] パネルで、プロジェクト ID の横にある「アクションを表示」アイコン(「アクションを表示」アイコン)をクリックし、[データセットを作成] を選択します。
  2. [データセット ID] に bqml_tutorial と入力し、[データのロケーション] で米国(US)を選択します。
    現在、一般公開データセットは米国の複数のリージョン ロケーションに保存されています。わかりやすくするため、データセットを同じロケーションに配置します。
  3. 残りの設定はデフォルトのままにして、[データセットを作成] をクリックします。

タスク 2. トレーニング入力テーブルを作成する

このタスクでは、10 万行のトレーニング入力テーブルを実体化します。

  1. ソーステーブル tlc_yellow_trips_2018 のスキーマを表示します(このリンクを新しいタブで開きます)。

  2. [クエリを新規作成] をクリックして、次のクエリをクエリ エディタのテキスト領域に貼り付けて、トレーニング用の入力データテーブルを作成します。

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
  1. [実行] をクリックします。

タスク 3. モデルを作成する

  • 次に、BigQuery の tlc_yellow_trips_2018 サンプル テーブルを使用して、ハイパーパラメータを調整した線形回帰モデルを作成します。

ハイパーパラメータを調整したモデルの作成には、次の標準 SQL クエリを使用します。

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 クエリを実行するには、次の操作を行います。

  1. Cloud Console で、[クエリを新規作成] をクリックします。

  2. クエリ エディタのテキスト領域に標準 SQL クエリ(上記)を入力します。

  3. [実行] をクリックします。 クエリの完了には、約 17 分かかります。

  4. 調整の進捗状況は、[実行の詳細] の [ステージ] から確認できます。 [ステージ] カテゴリが含まれている [実行の詳細] タブのページ。

タスク 4. トライアル情報を取得する

  • ハイパーパラメータ、目標、ステータス、最適なトライアルなど、すべてのトライアルの概要を表示するには、ML.TRIAL_INFO 関数を使用します。SQL の実行後に Cloud コンソールに結果が表示されます。
SELECT * FROM ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`)

この SQL クエリは、1 つのトライアルの完了後すぐに実行できます。調整が途中で停止している場合でも、すでに終了しているトライアルはすべて使用できます。

タスク 5. モデルを評価する

モデルの作成後、ML.EVALUATE 関数または Google Cloud コンソールを使用して、すべてのトライアルの評価指標を表示できます。

  1. ML.EVALUATE を実行します。
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`)

この SQL は、TEST データから計算されたトライアルすべての評価指標を取得します。

  1. ML.TRIAL_INFO 目標と ML.EVALUATE 評価指標の違いについては、データ分割セクションをご覧ください。

また、独自のデータを指定して特定のトライアルを評価することもできます。詳しくは、ML.EVALUATE をご覧ください。

Google Cloud コンソールで評価指標を確認する

評価指標は、[モデル] の [評価] タブを表示して確認することもできます。 すべてのトライアルの概要に関するデータが 12 行で表示されている [評価] タブのページ。

タスク 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 をご覧ください。

タスク 7. クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

データセットを削除する

プロジェクトを削除すると、プロジェクト内のデータセットとテーブルがすべて削除されます。プロジェクトを再利用する場合は、このチュートリアルで作成したデータセットを削除します。

  1. 必要に応じて、Google Cloud コンソールで BigQuery ページを開きます。
  2. [エクスプローラ] パネルで、データセットの横にある [アクションを表示](「アクションを表示」アイコン)をクリックして、[削除] をクリックします。
  3. [データセット削除の確認] ダイアログで、削除コマンドを確定するために delete と入力し、[削除] をクリックします。

お疲れさまでした

BigQuery ML を使用して以下を行う方法を学びました。

  • num_trials を 20 に設定した CREATE MODEL ステートメントを使用して線形回帰モデルを作成する
  • ML.TRIAL_INFO 関数を使用して 20 回のトライアルすべての概要を確認する
  • ML.EVALUATE 関数を使用して ML モデルを評価する
  • ML モデルと ML.PREDICT 関数を使用して予測を行う

ラボを終了する

ラボでの学習が完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Qwiklabs から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバック、ご提案、修正が必要な箇所については、[サポート] タブからお知らせください。

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。