ML.EVALUATE 関数

ML.EVALUATE 関数

ML.EVALUATE 関数を使用して、モデルの指標を評価します。ML.EVALUATE 関数は、線形回帰、ロジスティック回帰、K 平均法モデルで使用できます。ロジスティック回帰モデルの評価には ML.ROC_CURVE 関数も使用できますが、ML.ROC_CURVE はマルチクラス モデルではサポートされていません。

ML.EVALUATE 関数は、提供されたモデルタイプに適用可能な共通指標を含む単一行を出力します。

ML.EVALUATE は、ロジスティックまたはマルチクラス回帰モデルに対して次の列を返します。

  • precision
  • recall
  • accuracy
  • f1_score
  • log_loss
  • roc_auc

線形回帰モデルの場合、ML.EVALUATE は次の列を返します。

  • mean_absolute_error
  • mean_squared_error
  • mean_squared_log_error
  • median_absolute_error
  • r2_score
  • explained_variance

K 平均法モデルの場合、ML.EVALUATE は次の列を返します。

ML.EVALUATE の制限

ML.EVALUATE 関数には、次の制限があります。

ML.EVALUATE の構文

ML.EVALUATE(MODEL model_name
           [, {TABLE table_name | (query_statement)}]
           [, STRUCT(<T> AS threshold)])

model_name

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

table_name

(省略可)table_name は、評価データを含む入力テーブルの名前です。デフォルト プロジェクトを構成していない場合は、`[PROJECT_ID].[DATASET].[TABLE]`(バッククォートを含む)の形式でプロジェクト ID をテーブル名の前に追加します(例: `myproject.mydataset.mytable`)。

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

table_namequery_statement も指定しない場合、ML.EVALUATE は次のように評価結果を計算します。

  • トレーニング中にデータを分割する場合、分割評価データを使用して評価結果を計算します。
  • トレーニング中にデータを分割しない場合、トレーニング入力全体を使用して評価結果を計算します。

query_statement

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

query_statement が指定されている場合、クエリからの入力列名はモデルの列名と一致する必要があります。また、型は BigQuery の暗黙の強制型変換ルールに従って互換性がある必要があります。入力には、トレーニング中に提供されたラベル列名と一致する列が必要です。この値は、input_label_cols オプションで指定します。input_label_cols が未指定の場合は、トレーニング データで「label」という名前の列が使用されます。

table_namequery_statement も指定しない場合、ML.EVALUATE は次のように評価結果を計算します。

  • トレーニング中にデータを分割する場合、分割評価データを使用して評価結果を計算します。
  • トレーニング中にデータを分割しない場合、トレーニング入力全体を使用して評価結果を計算します。K 平均法モデルではデータ分割ができないため、query_statementtable_name を指定せずに K 平均法モデルで ML.EVALUATE を呼び出すことで、トレーニング入力全体の結果を計算します。

threshold

(省略可)threshold は、評価に使用するロジスティック回帰モデルのカスタムしきい値です。デフォルト値は 0.5 です。STRUCT 型のしきい値を指定する必要があります。

適合率/再現率の値がゼロの場合、選択したしきい値は真陽性のラベルを生成していません。適合率の値が NaN の場合、選択したしきい値は陽性ラベル(真陽性と偽陽性)を生成していません。

table_namequery_statement の両方が指定されていない場合、しきい値は使用できません。また、threshold は多項ロジスティック回帰モデルでは使用できません。

ML.EVALUATE の例

入力データが指定されていない ML.EVALUATE

入力データが指定されていないモデルを評価するには、次のクエリを使用します。

SELECT
  *
FROM
  ML.EVALUATE(MODEL `mydataset.mymodel`)

カスタムしきい値と入力データを伴う ML.EVALUATE

次のクエリは、入力データとカスタムしきい値 0.55 を指定してモデルを評価します。

SELECT
  *
FROM
  ML.EVALUATE(MODEL `mydataset.mymodel`,
    (
    SELECT
      custom_label,
      column1,
      column2
    FROM
      `mydataset.mytable`),
    STRUCT(0.55 AS threshold))
このページは役立ちましたか?評価をお願いいたします。

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

BigQuery ML のドキュメント