混同行列からPrecision/Recall/F1/AUCを計算する演習。電卓なしで素早く解くテクニック。
混同行列の計算問題、いっつも公式忘れちゃうんだよね…
4つだけ覚えればOKよ。
Accuracy・Precision・Recall・F1の式と意味を、体に染み込ませていきましょう。
■ 混同行列(分類の評価)
予測:陽性 予測:陰性
実際:陽性 TP FN
実際:陰性 FP TN
■ 公式(暗記必須)
Accuracy = (TP + TN) / 全数
Precision = TP / (TP + FP) [予測陽性のうち本物]
Recall = TP / (TP + FN) [本物のうち検出]
F1 = 2·P·R / (P + R) [P と R の調和平均]
■ 例題1: 混同行列 TP=40, FP=10, FN=20, TN=130
Accuracy = (40+130) / 200 = 170/200 = 0.85
Precision = 40 / (40+10) = 40/50 = 0.80
Recall = 40 / (40+20) = 40/60 ≈ 0.667
F1 = 2 · 0.80 · 0.667 / (0.80 + 0.667)
= 1.067 / 1.467 ≈ 0.727
■ 例題2: クラス不均衡データ
TP=2, FP=3, FN=18, TN=977 (実陽性20件、実陰性980件)
Accuracy = (2+977) / 1000 = 0.979 ← 高い!
Precision = 2 / (2+3) = 0.40
Recall = 2 / (2+18) = 0.10 ← 低い!
F1 = 2·0.40·0.10/(0.40+0.10) = 0.08/0.50 = 0.16
→ 不均衡データだと Accuracy が高くても、Recall や F1 が低い
→ 不均衡データには Accuracy ではなく F1/AUC を見る
■ AUC(参考)
ROC曲線の下の面積、0.5=ランダム、1.0=完璧
実用的に 0.7以上、0.9以上で優秀
例題2が衝撃ですぅ…Accuracyが97.9%もあるのに、ほとんど検出できてないんですねぇ。
そう、これが不均衡データの典型例ですね。
補足すると、病気判定・詐欺検知・異常検出では、AccuracyではなくRecallやF1を主指標にするのが鉄則です。
計算ミスを防ぐコツってある?
3つあるわ。
(1)P+Rで分母、2PRで分子、と機械的に覚える、(2)分数のまま計算する、(3)公式の意味を確認する(P=分母にFP・FN無、R=分母にFP無)、ということね。
DS検定★では混同行列の計算が必出です。
30秒以内に4指標すべてを計算できる速度を目指しましょう。
確認クイズ
混同行列 TP=80, FP=20, FN=10, TN=90 のときF1スコアはいくらか(小数第二位まで)。
- 0.80
- 0.84
- 0.89
- 0.95
こたえを見る
正解: 2. 0.84
0.84。 Precision=80/100=0.80、 Recall=80/90≈0.889、 F1=2×0.80×0.889/(0.80+0.889)=1.422/1.689≈0.842。 計算は分数のまま進めると正確です。