PREDICT (SQL)
構文
PREDICT( model-name)
PREDICT( model-name USE trained-model-name )
PREDICT( model-name WITH feature-columns-clause )
PREDICT( model-name USE trained-model-name \
WITH feature-columns-clause )
説明
PREDICT は、トレーニングされた機械学習モデルを指定されたクエリに適用した結果を返します。これは、行単位で実行されます。
USE
トレーニングされたモデルに、USE によって明示的に名前が付けられていない場合、PREDICT は指定されたモデル定義の既定のトレーニング済みモデルを使用します。
例えば、複数のモデルをトレーニングする場合は、次のようになります。
CREATE MODEL MyModel PREDICTING( label ) FROM data
TRAIN MODEL MyModel AS FirstModel
TRAIN MODEL MyModel AS SecondModel NOT DEFAULT
FirstModel は、MyModel の既定のモデルです。つまり、PREDICT クエリは予測に FirstModel を使用します。SecondModel を使用するよう指定する場合は、次のようになります。
PREDICT( MyModel USE SecondModel)
WITH
FROM 節を使用してデータセットを指定する際、PREDICT 関数は、暗黙的に、指定したデータセットの特徴列を、モデル内の特徴列にマップします。WITH 節を使用することにより、以下のいずれかを行うことができます。
-
データセットとモデル間の列のマッピングを指定します。以下に例を示します。
SELECT PREDICT(Trained_Model WITH age = year) FROM dataset
このクエリは、Trained_Model の age 列を dataset の year 列に合わせます。
中括弧を使用して、複数の列をマップできます。
SELECT PREDICT(Trained_Model WITH {age = year, income = salary}) FROM dataset
WITH 節内でのこれらの列の順序は重要ではなく、欠落している列名は FROM 節から取得されます。
-
予測を行うための引数のリストを指定します。この形式の WITH を使用する場合、FROM 節は指定しません。以下に例を示します。
SELECT PREDICT(Flower_Model WITH (5.1, 3.5, 1.4, 0.2, 'setosa'))
このクエリは、式 (5.1, 3.5, 1.4, 0.2, 'setosa') に対して Flower_Model を使用して予測を行います。
引数は、CREATE MODEL 文で指定したとおりの順序にする必要があります。欠落している引数は、空のコンマで指定できます。以下に例を示します。
SELECT PREDICT(Flower_Model WITH (5.1, , 1.4, , 'setosa'))
中括弧を使用して、複数の引数セットを指定できます。
SELECT PREDICT(Flower_Model WITH ({5.1, 3.5, 1.4, 0.2, 'setosa'}, {6.4, 3.2, 4.3, 1.2, 'versicolor'}))
必要なセキュリティ特権
PREDICT を呼び出すには、%USE_MODEL 特権が必要です。ない場合、SQLCODE –99 エラーになります (特権違反)。%USE_MODEL 特権を割り当てるには、GRANT コマンドを使用します。
引数
model-name
モデルの名前。
USE trained-model-name
既定でないトレーニング済みモデルの名前を指定する引数 (オプション)。上記の説明を参照してください。
WITH feature-columns-clause
オプションの引数です。トレーニングされたモデルの入力として提供する特定の列。上記の説明を参照してください。
例
CREATE MODEL HousePriceModel PREDICTING( HousePrice ) FROM housing_data_2019
TRAIN MODEL HousePriceModel
SELECT * FROM housing_data_2020 WHERE PREDICT( HousePriceModel ) > 500000
CREATE MODEL PatientReadmission PREDICTING ( IsReadmitted ) FROM patient_data
TRAIN MODEL PatientReadmission
SELECT *, PREDICT( PatientReadmission ) FROM new_patient_data