AutoML Tables モデルのトレーニングの CREATE MODEL ステートメント

AutoML Tables を使用すると、構造化データを使用して最新の機械学習モデルの構築をさらに高速かつ大規模に自動化できます。モデルタイプの詳細については、AutoML Tables のドキュメントをご覧ください。

AutoML Tables モデルの CREATE MODEL ステートメント

BigQuery 内で AutoML Tables モデルをトレーニングするには、いずれかの AutoML Tables モデルタイプを指定して BigQuery ML CREATE MODEL ステートメントを使用します。

CREATE MODEL の構文

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
model_name
OPTIONS(MODEL_TYPE = { 'AUTOML_REGRESSOR' | 'AUTOML_CLASSIFIER' }
         , BUDGET_HOURS = float64_value)
        [, INPUT_LABEL_COLS = string_array ]
        [, DATA_SPLIT_COL = string ]
[AS query_statement];

CREATE MODEL

指定したデータセットに新しい BigQuery ML モデルを作成します。AutoML Tables モデルの場合、BigQuery ML は AutoML Tables モデルをトレーニングして圧縮し、BigQuery ML モデルに変換します。モデル名が存在する場合、CREATE MODEL はエラーを返します。

CREATE MODEL IF NOT EXISTS

指定したデータセットにモデルが現在存在しない場合にのみ、新しいモデルを作成します。

CREATE OR REPLACE MODEL

新しいモデルを作成し、データセット内の同じ名前を持つ既存のモデルを置き換えます。

モデル オプション

BigQuery ML では現在、自動データ分割やデフォルトの最適化機能などの AutoML Tables のトレーニング オプションにデフォルト値を使用しています。

model_name

model_name は、作成または置き換える BigQuery ML モデルの名前です。モデル名は、データセットごとに一意である必要があります。他のモデルやテーブルに同じ名前を付けることはできません。モデル名は、BigQuery テーブルと同じ命名規則に従う必要があります。モデル名に使用できるものは次のとおりです。

  • 1,024 文字まで
  • 大文字、数字、アンダースコアのいずれかの文字

model_name では、大文字と小文字は区別されません。

デフォルトのプロジェクトを構成していない場合は、バッククォートを含め、次の形式でプロジェクト ID をモデル名の前に追加します。

`[PROJECT_ID].[DATASET].[MODEL]`

次に例を示します。

`myproject.mydataset.mymodel`

CREATE MODEL は、次のオプションをサポートします。

MODEL_TYPE

構文

MODEL_TYPE = { 'AUTOML_REGRESSOR' | 'AUTOML_CLASSIFIER' }

説明

モデルタイプを指定します。このオプションは必須です。回帰モデルの場合、型は AUTOML_REGRESSOR、ラベル列の型は数値にする必要があります。分類モデルの場合、型は AUTOML_CLASSIFIER で、ラベル列は文字列または数値のいずれかです。

BUDGET_HOURS

構文

BUDGET_HOURS = float64_value

説明

AutoML Tables トレーニングのトレーニング予算を時間単位で設定します。デフォルトは 1.0 で、1.0~72.0 の範囲で指定する必要があります。このオプションは、MODEL_TYPEAUTOML_REGRESSOR または AUTOML_CLASSIFIER の場合にのみ使用できます。

AutoML Tables モデルのトレーニング後、BigQuery ML はインポートに適したサイズになるまでモデルを圧縮します。この圧縮にかかる時間がトレーニング全体の 50% に達することがあります。モデルの圧縮時間はトレーニング予算時間に含まれません。

引数

float64_valueFLOAT64 です。

OPTIMIZATION_OBJECTIVE

構文

OPTIMIZATION_OBJECTIVE = string_value

説明

AutoML Tables のトレーニングに使用する最適化目標関数を設定します。回帰の場合、許可される値は MINIMIZE_RMSE(デフォルト)、MINIMIZE_MAE、MINIMIZE_RMSLE です。バイナリ分類の場合、許可される値は MAXIMIZE_AU_ROC(デフォルト)、MINIMIZE_LOG_LOSS、MAXIMIZE_AU_PRC です。マルチクラス分類の場合、許可される値は MINIMIZE_LOG_LOSS のみです。

最適化目標関数の詳細については、AutoML Tables のドキュメントをご覧ください。

引数

string_value は、MAXIMIZE_AU_ROC、MINIMIZE_LOG_LOSS、MAXIMIZE_AU_PRC、MINIMIZE_RMSE、MINIMIZE_MAE、MINIMIZE_RMSLE のいずれかになります。

INPUT_LABEL_COLS

構文

INPUT_LABEL_COLS = string_array

説明

トレーニング データのラベル列名。デフォルトは label です。

引数

string_arraySTRINGARRAY です。AutoML Tables モデルタイプは、1 つの要素を含む string_array 値のみをサポートします。

DATA_SPLIT_COL

構文

DATA_SPLIT_COL = string_value

説明

トレーニング データの分割列名。デフォルトは自動分割です。

引数

string_value はトレーニング データの列の 1 つであり、タイムスタンプ列または文字列列にする必要があります。この列は AutoML Tables に直接渡されます。文字列列で、TRAINVALIDATETESTUNASSIGNED の値を使用して、トレーニング、検証、テストに使用する行を指定します。こうした値の使用方法の詳細については、AutoML Tables のデータ分割列をご覧ください。 タイムスタンプは、AutoML Tables の時間列として扱われます。

サポートされている入力

CREATE MODEL ステートメントは、入力ラベル列とデータ分割列について次のデータ型をサポートしています。

入力ラベル列でサポートされているデータ型

BigQuery ML は、モデルタイプに応じてさまざまな標準 SQL データ型をサポートします。input_label_cols でサポートされているデータ型は次のとおりです。

Model type Supported label types
automl_regressor INT64
NUMERIC
FLOAT64
automl_classifier 任意の Groupable(グループ分け可能)データ型

他の列でサポートされているデータ型

ラベル列以外の列では、groupable データ型がサポートされます。BigQuery の列タイプは、AutoML Tables の特徴列タイプを判別するために使用されます。

BigQuery type AutoML type
INT64
NUMERIC
FLOAT64
NUMERIC または TIMESTAMP(UNIX タイムスタンプであると AutoML Tables が判断した場合)
BOOL CATEGORICAL
STRING
BYTES
CATEGORICAL または TEXT が AutoML Tables によって自動的に選択される。
TIMESTAMP
DATETIME
TIME
DATE
TIMESTAMPCATEGORICALTEXT のいずれかが AutoML Tables によって自動的に選択される。

数値列を強制的にカテゴリとして扱うには、BigQuery 文字列に型変換します。

制限事項

AutoML Tables モデルの CREATE MODEL ステートメントを使用する場合は、次のルールに従う必要があります。

  • AutoML Tables への入力データは 1, 000~1 億行で、100 GB 未満にする必要があります。
  • BigQuery ML で AutoML Tables モデルをトレーニングする場合、配列入力はサポートされていません。
  • 現時点で、AXT と CMEK はサポートされていません。
  • モデルは AutoML Tables UI には表示されず、AutoML Tables のバッチ予測やオンライン予測にも使用できません。

CREATE MODEL の例

次の例では、デフォルト プロジェクトにある mydataset 内に mymodel という名前のモデルを作成します。これは、BigQuery で利用可能な一般公開の 'nyc-tlc.yellow.trips' タクシー乗車データを使用します。ジョブの完了まで約 3 時間かかります。この間にトレーニング、モデルの圧縮、AutoML への一時的なデータ移動、設定タスクなどを行います。

モデルを作成する

CREATE OR REPLACE MODEL project_id.mydataset.mymodel
       OPTIONS(model_type='AUTOML_REGRESSOR',
               input_label_cols=['fare_amount'],
               budget_hours=1.0)
AS SELECT
  (tolls_amount + fare_amount) AS fare_amount,
  pickup_longitude,
  pickup_latitude,
  dropoff_longitude,
  dropoff_latitude,
  passenger_count
FROM `nyc-tlc.yellow.trips`
WHERE ABS(MOD(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING)), 100000)) = 1
AND
  trip_distance > 0
  AND fare_amount >= 2.5 AND fare_amount <= 100.0
  AND pickup_longitude > -78
  AND pickup_longitude < -70
  AND dropoff_longitude > -78
  AND dropoff_longitude < -70
  AND pickup_latitude > 37
  AND pickup_latitude < 45
  AND dropoff_latitude > 37
  AND dropoff_latitude < 45
  AND passenger_count > 0

予測を実行する

SELECT * FROM ML.PREDICT(MODEL project_id.mydataset.mymodel, (
    SELECT * FROM `nyc-tlc.yellow.trips` LIMIT 100))

サポートされるリージョン

AutoML Tables モデルのトレーニングは、すべての BigQuery ML リージョンでサポートされているわけではありません。サポートされているリージョンとマルチリージョンの一覧については、ロケーションのページをご覧ください。