ML.PREDICT 関数

dynamic setvar launch_stage beta dynamic endsetvar dynamic setvar launch_type product dynamic endsetvar dynamic setvar launch_name BigQuery ML dynamic endsetvar dynamic include /docs/includes/___info_launch_stage_disclaimer

ML.PREDICT 関数

ML.PREDICT 関数は、モデルを使用した結果を予測する場合に使用できます。予測は、モデルの作成中や作成後に実行できます。また、少なくとも 1 回の繰り返しが終了していれば、失敗後に行うこともできます。ML.PREDICT は常に、最後に成功した繰り返しからモデルの重み付けを取得します。

ML.PREDICT 関数の出力には入力テーブルと同数の行があり、入力テーブルのすべての列とモデルのすべての出力列が含まれます。モデルの出力列名は predicted_<label_column_name>predicted_<label_column_name>_probs(ロジスティック回帰モデルの場合)です。両方の列で、label_column_name はトレーニング中に使用された入力ラベル列の名前です。

ロジスティック回帰モデルの場合、predicted_label_probs[<label, prob>] タイプの構造体配列で、各ラベルの予測確率が含まれます。 predicted_label は、予測可能性が高いラベルに応じて、2 つの入力値のいずれかになります。

線形回帰モデルの場合、predicted_label はラベルの予測値です。

ML.PREDICT の構文

ML.PREDICT(MODEL model_name,
          {TABLE table_name | (query_statement)})

model_name

model_name は、評価するモデルの名前です。デフォルト プロジェクトを構成していない場合は、`[PROJECT_ID].[DATASET].[MODEL]`(バッククォートを含む)の形式で指定する必要があります(例: `myproject.mydataset.mymodel`)。

table_name

table_name は、評価データを含む入力テーブルの名前です。デフォルト プロジェクトを構成していない場合は、`[PROJECT_ID].[DATASET].[TABLE]`(バッククォートを含む)の形式で指定する必要があります(例: `myproject.mydataset.mytable`)。

モデルの入力列名とデータ型は、テーブルの列名とデータ型と一致する必要があります。入力には、トレーニング中に提供されたラベル列名と一致する列が必要です。この値は、input_label_cols オプションで指定します。input_label_cols が未指定の場合は、トレーニング データで「label」という名前の列が使用されます。

query_statement

query_statement 句には、評価データの生成に使用する標準 SQL クエリを指定します。query_statement 句でサポートされる SQL 構文については、標準 SQL クエリ構文ページをご覧ください。

query_statement で参照されているすべての列がモデルへの入力として使用されます。

ML.PREDICT の例

次の例では、デフォルト プロジェクトにモデルと入力テーブルがあることを前提にしています。

結果を予測する

次のクエリは、ML.PREDICT 関数を使用して結果を予測します。クエリは次の列を返します。

  • predicted_label
  • label
  • column1
  • column2
SELECT
  *
FROM
  ML.PREDICT(MODEL `mydataset.mymodel`,
    (
    SELECT
      label,
      column1,
      column2
    FROM
      `mydataset.mytable`))

2 つの異なるモデルの予測を比較する

この例では、次のクエリを使用して最初のモデルを作成します。

CREATE MODEL
  `mydataset.mymodel1`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['label'],
  ) AS
SELECT
  label,
  input_column1
FROM
  `mydataset.mytable`

次のクエリで 2 番目のモデルを作成します。

CREATE MODEL
  `mydataset.mymodel2`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['label'],
  ) AS
SELECT
  label,
  input_column2
FROM
  `mydataset.mytable`

次のクエリは、ML.PREDICT 関数を使用して 2 つのモデルの出力を比較します。

SELECT
  label,
  predicted_label1,
  predicted_label AS predicted_label2
FROM
  ML.PREDICT(MODEL `mydataset.mymodel2`,
    (
    SELECT
      * REPLACE (predicted_label AS predicted_label1)
    FROM
      ML.PREDICT(MODEL `mydataset.mymodel1`,
        TABLE `mydataset.mytable`)))
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。