ML.ROC_CURVE
関数
ロジスティック回帰特有の指標を評価するには、ML.ROC_CURVE
関数を使用します。ML.ROC_CURVE
は、ロジスティック回帰モデルのみを評価します。
出力の ML.ROC_CURVE
関数には複数の行が含まれ、各行にはモデルのさまざまなしきい値の指標が含まれています。指標には次のものがあります。
- threshold
- recall
- false_positive_rate
- true_positives
- false_positives
- true_negatives
- false_negatives
ML.ROC_CURVE
の制限
ML.ROC_CURVE
関数には、次の制限があります。
- 多項ロジスティック回帰モデルはサポートされていません。
- インポートした TensorFlow モデルはサポートされていません。
ML.ROC_CURVE
の構文
ML.ROC_CURVE(MODEL model_name [, {TABLE table_name | (query_statement)}] [, GENERATE_ARRAY(thresholds)])
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.ROC_CURVE
は次のように roc 曲線の結果を計算します。
- トレーニング中にデータを分割する場合、分割評価データを使用して roc 曲線の結果を計算します。
- データをトレーニング中に分割しない場合、トレーニング入力全体を使用して roc 曲線の結果を計算します。
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.ROC_CURVE
は次のように roc 曲線の結果を計算します。
- トレーニング中にデータを分割する場合、分割評価データを使用して roc 曲線の結果を計算します。
- データをトレーニング中に分割しない場合、トレーニング入力全体を使用して roc 曲線の結果を計算します。
thresholds
(省略可)thresholds
は、GENERATE_ARRAY
関数を介して提供される予測出力のパーセンタイル値です。DOUBLE
型の値を指定する必要があります。
使用するしきい値を指定しない場合、100 個の近似値を使用して予測出力の値に基づいて自動的に選択されます(APPROX_QUANTILES(predicted_label, 100)
)。
ML.ROC_CURVE
の例
次の例では、デフォルト プロジェクトにモデルと入力テーブルがあることを前提にしています。
ロジスティック回帰モデルの ROC 曲線を評価する
次のクエリは、threshold
、recall
、false_positive_rate
、true_positives
、false_positives
、true_negatives
、false_negatives
列を返します。ROC 曲線では、再現率と偽陽性率をグラフ化できます。返されるしきい値は、予測出力のパーセンタイル値に基づいて選択されます。
SELECT * FROM ML.ROC_CURVE(MODEL `mydataset.mymodel`, TABLE `mydataset.mytable`)
カスタムしきい値で ROC 曲線を評価する
次のクエリは前の例と同じ列を返します。返されるしきい値は、GENERATE_ARRAY
関数の出力に基づいて選択されます。
SELECT * FROM ML.ROC_CURVE(MODEL `mydataset.mymodel`, TABLE `mydataset.mytable`, GENERATE_ARRAY(0.4,0.6,0.01))
適合率 / 再現率曲線を評価する
次のクエリでは、ROC 曲線(再現対偽陽性率)を取得する代わりに、真陽性数と偽陽性数の精度を使用して適合率 / 再現率曲線を計算します。
SELECT recall, true_positives / (true_positives + false_positives) AS precision FROM ML.ROC_CURVE(MODEL `mydataset.mymodel`, TABLE `mydataset.mytable`)