TRAIN MODEL (SQL)
構文
TRAIN MODEL model-name
[ AS preferred-name ]
[ NOT DEFAULT]
[ FOR label-column ]
[ WITH feature-column-clause ]
[ FROM model-source ]
[ USING json-object ]
引数
model-name | トレーニングする機械学習モデルの名前。 |
AS preferred-name | オプション — トレーニングされたモデルを保存する代替名。この後の説明を参照してください。 |
NOT DEFAULT | オプション — 既定のトレーニング済みモデルとして設定せずにモデルをトレーニングするための節。この後の説明を参照してください。 |
FOR label-column | オプション — 予測される列名 (ラベル列)。この後の説明を参照してください。 |
WITH feature-column-clause | オプション — 列名として、または列名のコンマ区切りリストとしての、モデル (特徴列) への入力。 |
FROM model-source | モデルの構築元にするテーブルまたはビュー。テーブル、ビュー、または結合の結果です。この後の説明を参照してください。 |
USING json-object-string | オプション — 1 つ以上のキーと値のペアを指定する JSON 文字列。この後の説明を参照してください。 |
説明
TRAIN MODEL 文はプロバイダに、指定したモデル定義を使用してモデルをトレーニングするよう伝えます。プロバイダは、ML 構成によって指定されます。
FROM
FROM 節は、モデルをトレーニングするためのデータを提供します。
-
CREATE MODEL 文で FROM 節を指定しなかった場合、この節は必須です。
-
CREATE MODEL 文で FROM 節を指定した場合、この節はオプションです。
FROM の許容される使用と省略を示す例
TRAIN MODEL の FROM
CREATE MODEL model_b PREDICTING ( label ) WITH ( column_1, column_2, column_3)
TRAIN MODEL model_b FROM table
CREATE MODEL の FROM
CREATE MODEL model_a PREDICTING ( label ) FROM table
TRAIN MODEL model_a
TRAIN MODEL 文から FROM を省略する場合は、CREATE MODEL から既定のクエリを使用します。
WITH
WITH を使用すると、データの特徴列をモデル定義のスキーマに明示的に合わせることができます。各列は、標準の識別子です。
FOR
FOR を使用すると、データのラベル列をモデル定義のスキーマに明示的に合わせることができます。例えば、モデル定義のラベル列には column_a という名前が付けられているが、トレーニング・データでは column_b という名前が付けられている場合、次のように列を合わせることができます。
CREATE MODEL model_a PREDICTING ( column_a ) FROM table_a
TRAIN MODEL model_a FOR column_b FROM table_b
名前付け
AS を使用すると、トレーニングされたモデルに明示的に名前を付けることができます。
モデル定義とトレーニングされたモデルは、同じスキーマに存在しています。トレーニングされたモデルに AS を使用して明示的に名前が付けられていない場合、名前はモデル定義名に実行中の整数が付加されたものになります。INFORMATION_SCHEMA.ML_TRAINED_MODELS テーブルをクエリして、その違いを確認できます。
CREATE MODEL TitanicModel PREDICTING (Survived binary) FROM IntegratedML_dataset_titanic.passenger
TRAIN MODEL TitanicModel
TRAIN MODEL TitanicModel
TRAIN MODEL TitanicModel
TRAIN MODEL TitanicModel AS TrainedTitanic
SELECT MODEL_NAME, TRAINED_MODEL_NAME FROM INFORMATION_SCHEMA.ML_TRAINED_MODELS
MODEL_NAME | TRAINED_MODEL_NAME |
---|---|
TitanicModel | TitanicModel_t1 |
TitanicModel | TitanicModel_t2 |
TitanicModel | TitanicModel_t3 |
TitanicModel | TrainedTitanic |
NOT DEFAULT
各モデル定義には、既定のトレーニング済みモデルがあります。ユーザが指定しない場合、最後にトレーニングされたモデルが既定になります。NOT DEFAULT 節を使用すると、新しいモデルをトレーニングし、それを既定のトレーニング済みモデルにしないことができます。
CREATE MODEL TitanicModel PREDICTING (Survived) FROM IntegratedML_dataset_titanic.passenger
TRAIN MODEL TitanicModel As FirstModel
TRAIN MODEL TitanicModel As SecondModel NOT DEFAULT
SELECT MODEL_NAME, DEFAULT_TRAINED_MODEL_NAME FROM INFORMATION_SCHEMA.ML_MODELS
MODEL_NAME | DEFAULT_TRAINED_MODEL_NAME |
---|---|
TitanicModel | FirstModel |
NOT DEFAULT を使用しない場合、DEFAULT_TRAINED_MODEL フィールドは別の方法で “SecondModel” を読み取ります。
USING 節の考慮事項
トレーニング実行をよりカスタマイズするために、USING 節でプロバイダ固有のパラメータを渡すことができます。この節は、1 つ以上のキーと値のペアで構成される JSON 文字列を受け入れます。使用できるパラメータのリストは、プロバイダによって異なります。
例えば、AutoML をプロバイダとして使用してトレーニングする場合、ランダム・シードを変更できます。
TRAIN MODEL IsSpam USING {"seed": 3}
各プロバイダに渡すことができるパラメータの詳細は、"プロバイダ" を参照してください。
NULL 値を渡す方法
TRAIN MODEL 文のラベル列で NULL 値のデータを渡すと、トレーニングされたモデルの動作が不定になります。このため、データ準備プロセスの一環として、NULL 値がないかどうかを注意深く調べる必要があります。
必要なセキュリティ特権
TRAIN MODEL を呼び出すには、%MANAGE_MODEL 特権が必要です。ない場合、SQLCODE –99 エラーになります (特権違反)。%MANAGE_MODEL 特権を割り当てるには、GRANT コマンドを使用します。
例
TRAIN MODEL EmailFilter
TRAIN MODEL model_5 AS MyModel USING {"seed": 3}
TRAIN MODEL LoanDefault FROM LoanData