分類モデルの評価で必出、混同行列とPrecision/Recall/F1スコア。計算問題対策の核。
正答率(Accuracy)だけじゃダメなの?
不均衡データだとAccuracyは頼りにならないのよ。 例えば99%が陰性のとき、全部『陰性』と予測すればAccuracyは99%になるけれど、肝心の陽性が1つも検出できていないでしょう?
そこで使うのが混同行列と派生指標。 まず混同行列は4マスで、TP=真陽性、FP=偽陽性、FN=偽陰性、TN=真陰性 を集計する。
頭文字、覚えにくいですぅ…
TP=正しく陽性と判定、FN=陽性なのに陰性と判定(見逃し)、FP=陰性なのに陽性と判定(誤検出)、TN=正しく陰性と判定。 『TF=正誤、PN=予測』と分解して読めばいい。
Precisionと Recallって何が違うの?
Precision(適合率)= TP / (TP + FP) = 『陽性と予測したもののうち本当に陽性の割合』。 Recall(再現率)= TP / (TP + FN) = 『本当に陽性のもののうち検出できた割合』。
Precisionは『間違った陽性判定が少ない方が良い時』(例: スパム判定で誤って正規メールを排除しない)。 Recallは『本物の陽性を見逃さない方が良い時』(例: 病気の見逃し回避)。
F1スコアは?
Precision と Recall の{kw('調和平均')} = 2·P·R/(P+R)。 両者のバランスを1つの数字で見たいときに使う。
Precision と Recall ってトレードオフあるんだよね?
そうなのよ。
閾値を厳しくすればPrecisionは上がるけどRecallは下がる、緩めればその逆ね。 これを可視化したのがPR曲線よ。
DS検定で頻出: 混同行列から各指標を計算する問題、トレードオフを問う問題。 公式とトレードオフの方向はしっかり押さえておこう。
暗記しますぅ♪
病気判定の混同行列(100人):
予測:陽性 予測:陰性
実際:陽性 (10人) 8 (TP) 2 (FN)
実際:陰性 (90人) 5 (FP) 85 (TN)
Accuracy = (TP+TN)/100 = (8+85)/100 = 93%
Precision = TP/(TP+FP) = 8/(8+5) = 8/13 ≈ 0.615
Recall = TP/(TP+FN) = 8/(8+2) = 0.80
F1 = 2·P·R/(P+R) = 2·0.615·0.80 / (0.615+0.80) ≈ 0.696
確認クイズ
TP=20, FP=5, FN=10, TN=65 のとき、Precision はいくらか。
- 0.667
- 0.80
- 0.85
- 0.20
こたえを見る
正解: 2. 0.80
0.80。 Precision = TP/(TP+FP) = 20/(20+5) = 20/25 = 0.80。 これは『陽性と予測したものの80%が本当に陽性だった』ことを意味します。