ML.CONFUSION_MATRIX
関数
ML.CONFUSION_MATRIX
関数を使用して、所定のロジスティック回帰モデルと入力データの混同行列を返します。ML.CONFUSION_MATRIX
関数は、ロジスティック回帰モデルと多項ロジスティック回帰モデルの両方で使用できます。ML.CONFUSION_MATRIX
は、線形回帰モデルをサポートしていません。
ML.CONFUSION_MATRIX
関数の出力列はモデルによって異なります。最初の出力列は常に expected_label
です。トレーニング済みモデルの各クラスに 1 つずつ、N
個の列が追加されます。追加の列の名前は、モデルのトレーニングに使用したクラスラベルによって異なります。
トレーニング クラスのラベルがすべて BigQuery の列の命名規則に準拠している場合、ラベルが列名として使用されます。命名規則に準拠していない列は、列の命名規則に準拠して一意になるように変更されます。たとえばラベルが 0
と 1
の場合、出力列名は _0
と _1
になります。
列は、クラスラベルに基づいて昇順に並べられます。評価データのラベルがトレーニング データのラベルと一致する場合、真陽性は左上から右下の対角線上に表示されます。予測される(または実際の)ラベルは行ごとに 1 つずつ表示され、列ごとに 1 つずつ表示されます。
expected_label
列の値は、評価データのラベル列の ML.CONFUSION_MATRIX
に渡される正確な値と型です。これは、トレーニング中に使用される値や型と完全には一致しない場合でも当てはまります。
ML.CONFUSION_MATRIX
の構文
ML.CONFUSION_MATRIX(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_name
も query_statement
も指定しない場合、ML.CONFUSION_MATRIX
は次のように混同行列の結果を計算します。
- トレーニング中にデータを分割する場合、分割評価データを使用して混同行列の結果を計算します。
- トレーニング中にデータを分割しない場合、トレーニング入力全体を使用して混同行列の結果を計算します。
query_statement
(省略可)query_statement
句は、評価データの生成に使用する標準 SQL クエリを指定します。query_statement
句でサポートされる SQL 構文については、標準 SQL クエリ構文ページをご覧ください。
query_statement
が指定されている場合、クエリからの入力列名はモデルの列名と一致する必要があります。また、型は BigQuery の暗黙の強制型変換ルールに従って互換性がある必要があります。入力には、トレーニング中に提供されたラベル列名と一致する列が必要です。この値は、input_label_cols
オプションで指定します。input_label_cols
が未指定の場合は、トレーニング データで「label」という名前の列が使用されます。追加の列は無視されます。
model_name
を作成した CREATE MODEL
ステートメントに TRANSFORM
句が含まれている場合、TRANSFORM
句に含まれている入力列のみが query_statement
に表示される必要があります。
table_name
も query_statement
も指定しない場合、ML.CONFUSION_MATRIX
は次のように混同行列の結果を計算します。
- トレーニング中にデータを分割する場合、分割評価データを使用して混同行列の結果を計算します。
- トレーニング中にデータを分割しない場合、トレーニング入力全体を使用して混同行列の結果を計算します。
threshold
(省略可)threshold
は、評価に使用するロジスティック回帰モデルのカスタムしきい値です。デフォルト値は 0.5 です。STRUCT
型のしきい値を指定する必要があります。
適合率 / 再現率の値がゼロの場合、選択したしきい値は真陽性のラベルを生成していません。適合率の値が NaN の場合、選択したしきい値は陽性ラベル(真陽性と偽陽性)を生成していません。
ML.CONFUSION_MATRIX
の例
次の例では、デフォルト プロジェクトにモデルと入力テーブルがあることを前提としています。
ロジスティック回帰モデルの混同行列を返すには、次のクエリを使用します。
SELECT * FROM ML.CONFUSION_MATRIX(MODEL `mydataset.mymodel`, ( SELECT * FROM `mydataset.mytable`))
ML.CONFUSION_MATRIX
の制限
ML.CONFUSION_MATRIX
関数には、次の制限があります。
ML.CONFUSION_MATRIX
は、インポートした TensorFlow モデルをサポートしていません。