モデリング●●●●●

適合率・再現率とROC曲線

Precision, Recall and ROC Curveてきごうりつさいげんりつとろっくきょくせん

分類モデルの当たり外れを混同行列から多面的に測る評価指標の体系

概要

適合率・再現率とROC曲線は、「陽性か陰性か」を判定する分類モデルの性能を多面的に測るための評価指標の体系です。病気の診断、迷惑メールの判定、不正取引の検知 — 世の中の予測タスクの多くは二値分類であり、そのモデルが「使い物になるか」を判断する場面で必ず登場します。

出発点は、予測と正解の組み合わせを4マスに整理した「混同行列」です。正しく陽性と当てた数(真陽性)、正しく陰性と当てた数(真陰性)、陰性なのに陽性と誤った数(偽陽性)、陽性なのに見逃した数(偽陰性)— この4つの数字から、適合率(陽性と予測したうちどれだけ本当に陽性か)、再現率(実際の陽性のうちどれだけ拾えたか)など、目的の異なる複数の指標が導かれます。

重要なのは、「正解率が高い=良いモデル」とは限らないという点です。たとえば陽性が全体の1%しかいないデータなら、全員を陰性と予測するだけで正解率99%が出てしまいます。だからこそ、何をどう間違えたかを分解して測る指標の体系が必要になるのです。

なぜ生まれたか

分類の評価が一つの数字で済まないのは、2種類の誤りの重みがタスクごとに違うからです。がん検診で病気を見逃す誤り(偽陰性)と、健康な人を精密検査に回す誤り(偽陽性)は、どちらも「間違い」ですが深刻さがまったく異なります。この構図は仮説検定における第一種の過誤と第二種の過誤と同じで、片方の誤りを減らそうとすればもう片方が増えるというトレードオフを、単一の正解率は覆い隠してしまいます。情報検索の分野では「検索結果のうち関連文書の割合(適合率)」と「関連文書のうち拾えた割合(再現率)」として、この2軸の評価が早くから定式化されました。

ROC曲線の起源はさらに古く、第二次世界大戦中のレーダー研究です。レーダー手が敵機の反応と雑音を区別する能力を測るために、「検出のしきい値を動かしたとき、真陽性率と偽陽性率がどう変わるか」を曲線として描く手法(Receiver Operating Characteristic=受信者操作特性)が考案されました。これが信号検出理論を経て医療診断や機械学習に輸入され、「しきい値の選び方に依存しない、判別能力そのものの評価」として定着しました。

詳細

混同行列 — すべての指標の源泉

ロジスティック回帰のような分類モデルは、多くの場合「陽性である確率」を出力し、それをしきい値(例: 0.5)で切って陽性/陰性の判定に変換します。その判定結果と正解を突き合わせた4マスの表が混同行列です。これはクロス集計の一種で、予測×正解という2つの軸で件数を整理したものと考えられます。

予測: 陽性予測: 陰性実際: 陽性実際: 陰性真陽性 TP正しく検出偽陰性 FN見逃し偽陽性 FP誤検出真陰性 TN正しく除外適合率 = TP ÷ 予測陽性の列陽性と言った中の的中率再現率 =TP ÷ 実際陽性の行陽性をどれだけ拾えたか
混同行列と主要指標 — 適合率は「予測陽性の列」を、再現率は「実際陽性の行」を分母に取る

適合率と再現率のトレードオフ

適合率(precision)は「陽性と予測した中で、本当に陽性だった割合」、再現率(recall)は「実際の陽性の中で、陽性と予測できた割合」です。同じTPを分子に持ちながら、分母が「予測の列」か「実際の行」かで視点が異なります。これは条件付き確率として読むと明快で、適合率は「陽性と予測した条件のもとで実際に陽性である確率」、再現率は「実際に陽性である条件のもとで陽性と予測される確率」です。条件の向きが逆なので、両者は一般に一致しません。

この2つはしきい値を介してトレードオフの関係にあります。しきい値を下げて広めに陽性と判定すれば、見逃しが減って再現率は上がりますが、誤検出が増えて適合率は下がります。逆にしきい値を上げれば適合率は上がり、再現率は下がります。どちらを優先すべきかはタスクの誤りコストで決まります。がんのスクリーニング検査なら見逃しが致命的なので再現率重視、スパム判定なら正常なメールを誤って捨てる方が痛いので適合率重視、という具合です。両者のバランスを1つの数字にまとめたいときは、調和平均をとったF値(F1スコア)がよく使われます。

ROC曲線とAUC — しきい値に依存しない評価

しきい値を1つに固定した評価には、「しきい値の選び方しだいで指標が変わる」という弱点があります。そこで、しきい値を連続的に動かし、各点での偽陽性率(実際陰性のうち誤って陽性と判定した割合)を横軸、真陽性率(=再現率)を縦軸にプロットした軌跡がROC曲線です。左上の角に近いほど「偽陽性を抑えたまま陽性を拾えている」ことを意味し、対角線は「コイン投げと同じでたらめな判定」に相当します。

偽陽性率(実際陰性を誤って陽性とした割合)真陽性率(再現率)011ランダム判定の線AUC = 0.5しきい値 高め誤検出は少ないが見逃しありしきい値 低め — ほぼ全部拾うが誤検出増曲線の下の面積 = AUC1に近いほど判別能力が高い
ROC曲線 — しきい値を動かしたときの偽陽性率と真陽性率の軌跡。左上に膨らむほど判別能力が高い

しきい値を実際に動かすと、混同行列の配分が変わりながらROC曲線の上を点が滑っていく様子を確かめられます。

⚡ 体験: しきい値を動かしてROC曲線をなぞる
モデルの判別能力
モデルの出すスコアの分布しきい値より右を「陽性」と判定するしきい値実際は陰性(150件)実際は陽性(50件)TP 38FP 8FN 12TN 142適合率 0.83 / 再現率 0.77 / F1 0.80ROC曲線(AUC 0.95偽陽性率 0.05真陽性率 0.77

しきい値を動かすと、同じモデルのままTP/FP/FN/TNの配分だけが変わります。その軌跡を描いたものがROC曲線です。判別能力を「高」にすると曲線ごと左上に膨らみます。

このROC曲線の下側の面積がAUC(Area Under the Curve)で、1に近いほど良く、0.5ならでたらめと同等です。AUCには「ランダムに選んだ陽性の1件と陰性の1件を並べたとき、モデルが陽性の方に高いスコアを付ける確率」という直感的な解釈があり、しきい値の選択やクラスの比率に左右されにくい「判別能力そのもの」の指標として広く使われます。

不均衡データでの落とし穴と指標の選び方

ただしAUCにも弱点があります。陽性が極端に少ない不均衡データでは、偽陽性率の分母(実際陰性の総数)が巨大なため、誤検出が大量にあっても偽陽性率は小さく見え、ROC曲線は楽観的な印象を与えがちです。不正検知や希少疾患の検出のようなタスクでは、横軸を再現率、縦軸を適合率にしたPR曲線(Precision-Recall曲線)の方が、モデルの実用上の苦しさを正直に映します。

実務での指標選びは、結局「どの誤りが高くつくか」の言語化から始まります。正解率だけで報告されたモデルを見たら、まず陽性の比率と混同行列を確認する。しきい値込みの運用を評価するなら適合率・再現率・F値、しきい値をこれから決める段階やモデル同士の比較ならAUCやPR曲線、と使い分けるのが定石です。また、これらの指標はどれもテストデータ上の推定値なので、評価が過学習データリークで汚染されていないか、交差検証を含む評価手順の設計とセットで確かめる必要があります。