混同行列を使った評価指標の計算方法と覚え方
機械学習モデルの評価には混同行列(Confusion Matrix)を用いた指標が重要ですが、正解率(Accuracy)、適合率(Precision)、再現率(Recall)、F1スコア(F1-score)の計算方法が覚えづらいと感じます。日頃から使用していないと、ど忘れしますよね。
この記事では、これらの指標を整理し、計算方法をわかりやすく解説してみます。
1. 混同行列とは?
分類問題では、モデルの予測結果を以下のような 混同行列(Confusion Matrix) に整理できます。
実際の値 \ 予測値 | 予測ポジティブ | 予測ネガティブ |
---|---|---|
実際ポジティブ(P) | TP(真陽性) | FN(偽陰性) |
実際ネガティブ(N) | FP(偽陽性) | TN(真陰性) |
- TP(True Positive):正しくポジティブと予測
- FP(False Positive):誤ってポジティブと予測(偽陽性)
- FN(False Negative):誤ってネガティブと予測(偽陰性)
- TN(True Negative):正しくネガティブと予測
これを基に、各評価指標を求めます。
2. 評価指標の計算式
(1) 正解率(Accuracy)
全体の正しく予測できた割合
$$
Accuracy = \frac{TP + TN}{TP + TN + FP + FN}
$$
- 全データのうち、どれくらい正しく分類できたかを示します
- 正解を正解/不正解を不正解として正しく予測できたかの割合と思えましょう
- クラス不均衡がある場合は注意(例:極端にポジティブが少ない場合、すべてネガティブと予測してもAccuracyは高くなりがち)
(2) 適合率(Precision)
ポジティブと予測したもののうち、本当にポジティブ(に適合する)だった割合
$$
Precision = \frac{TP}{TP + FP}
$$
- 「陽性」と判断したものの正確性を示す
- FPが多いとPrecisionが低下(偽陽性を減らすことが重要)
- 覚え方:「陽性」と予測したもの内、実際に「陽性」である割合です。実際の「陽性」の適合である
- 例:スパムフィルターでは、スパムと判定したメールのうち、本当にスパムだった割合
(3) 再現率(Recall, Sensitivity)
実際にポジティブなもののうち、どれだけ正しくポジティブと予測(再現)できたか
$$
Recall = \frac{TP}{TP + FN}
$$
- 本来検出すべきポジティブをどれだけ取り逃さずに取れているか
- FNが多いとRecallが低下(偽陰性を減らすことが重要)
- 覚え方:実際に「陽性」であるもの内、「陽性」と予想した割合です
- 例:スパムフィルターでは、本来スパムのメールのうち、どれくらいスパムとして正しく分類できたか
(4) F1スコア(F1-score)
PrecisionとRecallのバランスを取る指標
$$
F1 = \frac{2 \times Precision \times Recall}{Precision + Recall}
$$
- PrecisionとRecallの調和平均
- 一方だけが高くてもF1スコアは上がらない
- バランスよく予測性能を評価するのに適している
3. 覚え方のコツ
① TP を基準に考える
-
Precision(適合率):「ポジティブ」と予測したものの正確さ
→ 分母に FP(誤予測のポジティブ)を含む -
Recall(再現率):本来ポジティブのうち、どれだけ予測できたか
→ 分母に FN(取りこぼしたポジティブ)を含む
② 「PR」の順番を意識
- Precision(P) は「ポジティブと予測したものの中の正解率」
- Recall(R) は「本来ポジティブの中での検出率」
- F1 は P と R のバランス
③ 日常例でイメージ
-
Precision(適合率):「スパムだ」と判定したメールが本当にスパムか?
- Precisionが低い → スパム以外もスパム判定(誤検出が多い)
-
Recall(再現率):本来スパムのメールをどれだけスパムと判定できたか?
- Recallが低い → 本当のスパムを見逃す
- F1スコア:Precision(正確性)とRecall(取りこぼしの少なさ)のバランス
4. 計算例(ガン診断)
問題設定
ある病院で、新しいAIを使ってガンの診断を行いました。
100人の患者に適用し、以下の結果が得られました:
実際の状態 \ 予測 | ガンあり(陽性) | ガンなし(陰性) |
---|---|---|
実際にガンあり(P) | 40(TP) | 10(FN) |
実際にガンなし(N) | 15(FP) | 35(TN) |
評価指標の計算
-
正解率(Accuracy)
$$
Accuracy = \frac{40 + 35}{40 + 35 + 15 + 10} = 0.75
$$ -
適合率(Precision)
$$
Precision = \frac{40}{40 + 15} \approx 0.727
$$ -
再現率(Recall)
$$
Recall = \frac{40}{40 + 10} = 0.8
$$ -
F1スコア
$$
F1 = \frac{2 \times 0.727 \times 0.8}{0.727 + 0.8} \approx 0.762
$$
指標 | 計算結果 | 意味 |
---|---|---|
Accuracy(正解率) | 75.0% | 全体の正解率。クラス不均衡があると信用しづらい |
Precision(適合率) | 72.7% | 「ガンあり」と診断された中で、本当にガンだった割合 |
Recall(再現率) | 80.0% | 本当のガン患者をどれだけ正しく見つけられたか |
F1-score | 76.2% | PrecisionとRecallのバランスを取った指標 |
5. どの指標を重視すべきか?
状況によって重要な指標が異なる
-
Precision重視(FPを減らしたい)
- 例:ガン診断で誤診(FP)を減らし、不必要な治療を防ぎたい場合
- 対策:閾値を上げる(より厳しく「ガンあり」と判定)
-
Recall重視(FNを減らしたい)
- 例:ガンの見逃し(FN)を減らし、患者を確実に救いたい場合
- 対策:閾値を下げる(「ガンなし」と誤診しないようにする)
-
F1-score重視
- PrecisionとRecallのバランスが重要な場合(例:スパムフィルター)
まとめ
- Accuracy = 正しく分類できた割合
- Precision = 「ポジティブ」と予測した中での正解率(FPを抑えたい)
- Recall = 実際のポジティブをどれだけ捉えたか(FNを抑えたい)
- F1-score = PrecisionとRecallのバランス
これで、混同行列を使った評価指標が、明確になったはずです。
あとは業務なりで日常的に使用していけば、覚えられそうですね。