ハイパーパラメータ チューニングでモデル性能を強化する


このチュートリアルでは、NUM_TRIALS トレーニング オプションを指定して一連のモデル トレーニング トライアルを有効にすることで、BigQuery ML でハイパーパラメータ チューニングを使用する方法を説明します。

このチュートリアルでは、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 の料金ページをご覧ください。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、

    BigQuery API を有効にします。

    API を有効にする

    に移動します。

ステップ 1: トレーニング データセットを作成する

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

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

    [BigQuery] ページに移動

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

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

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

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

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

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

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

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

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

ステップ 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

ステップ 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 クエリを実行するには:

  1. Google Cloud コンソールで、[クエリを新規作成] ボタンをクリックします。

  2. [クエリエディタ] のテキスト領域に、前述の GoogleSQL クエリを入力します。

  3. [実行] をクリックします。

    クエリの完了には、約 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 評価指標の違いについて詳しくは、モデル提供関数をご覧ください。

また、独自のデータを指定して特定のトライアルを評価することもできます。詳細については、モデル提供関数をご覧ください。

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

モデル提供関数の使用方法の詳細については、モデル提供関数をご覧ください。

クリーンアップ

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

  • 作成したプロジェクトを削除する。
  • または、プロジェクトを保存して、データセットを削除する。

データセットを削除する

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

  1. 必要に応じて、Google Cloud コンソールで [BigQuery] ページを開きます。

    [BigQuery] ページに移動

  2. ナビゲーション パネルで、作成した bqml_tutorial データセットをクリックします。

  3. ウィンドウの右側の [データセットを削除] をクリックします。この操作を行うと、データセット、テーブル、すべてのデータが削除されます。

  4. [データセットの削除] ダイアログ ボックスでデータセットの名前(bqml_tutorial)を入力して、[削除] をクリックします。

プロジェクトを削除する

プロジェクトを削除するには:

  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.

次のステップ