はじめに
機械学習で分類問題を扱うとき、
「モデルの精度ってどうやって測るの?」
と疑問に思ったことはありませんか?
単に「正しく分類できた割合(精度)」を見るだけでは、本当に良いモデルかどうか判断できない場合があります。
この記事では、
- 混同行列(Confusion Matrix)
- 精度(Accuracy)
- 再現率(Recall)
- 適合率(Precision)
- F1スコア
これら分類モデルの評価指標について、わかりやすく解説します!
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ
混同行列とは?
混同行列とは、モデルが出した予測と実際の正解を比較して、
どのパターンがどれだけあったかをまとめた表のことです。
2クラス分類の例
| 実際Positive | 実際Negative | |
|---|---|---|
| 予測Positive | True Positive (TP) | False Positive (FP) |
| 予測Negative | False Negative (FN) | True Negative (TN) |
用語まとめ
- True Positive (TP):正しくポジティブを予測
- False Positive (FP):ネガティブなのにポジティブと予測(偽陽性)
- False Negative (FN):ポジティブなのにネガティブと予測(偽陰性)
- True Negative (TN):正しくネガティブを予測
この4つの数をもとに、さまざまな評価指標が計算されます。
精度(Accuracy)
精度は、正しく予測できた割合を表します。
計算式
Accuracy = (TP+TN)/(TP + FP + FN + TN)
要するに、
- 全体の中で正しく当てた割合 です。
注意点
精度が高くても、データが極端に偏っている(例:99%がネガティブ)場合、
本当に良いモデルとは言えないことがあるので注意!
適合率(Precision)
適合率は、「ポジティブ」と予測した中で、実際に正しかった割合を表します。
計算式
Precision = TP/(TP + FP)
- モデルが「ポジティブ」と判断したものが、どれだけ本当にポジティブだったかを見る指標です。
再現率(Recall)
再現率は、実際にポジティブだった中で、どれだけ正しく予測できたかを表します。
計算式
Recall = TP/(TP + FP)
- 見逃しが少ないか(ポジティブをちゃんと見つけられたか)を見る指標です。
F1スコア(F1 Score)
F1スコアは、適合率と再現率のバランスを取った指標です。
計算式
F1 = 2×(Precision × Recall)/(Precision + Recall)
- 適合率と再現率のどちらかが極端に低いと、F1スコアも低くなります。
- 特にクラスの不均衡がある場合には、精度よりF1スコアが重要になります。
4. 多クラス分類の場合
- 混同行列はクラス数がNの場合、N×Nの表になります。
- 各クラスごとにTP/FP/FN/TNを計算し、マクロ平均やマイクロ平均などで全体の指標を算出します。
まとめイメージ表
| 指標 | 意味 | 重要な場面 |
|---|---|---|
| 精度 (Accuracy) | 全体でどれだけ正しく分類できたか | データバランスが良いとき |
| 適合率 (Precision) | ポジティブ予測の正確さ | 誤検出を減らしたいとき |
| 再現率 (Recall) | ポジティブをどれだけ見逃さなかったか | 取りこぼしを防ぎたいとき |
| F1スコア | PrecisionとRecallのバランス | クラス不均衡のとき |
Pythonで混同行列と指標を求める例
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score
# 仮の予測と正解ラベル
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]
# 混同行列
print("混同行列:\n", confusion_matrix(y_true, y_pred))
# 各指標
print("精度:", accuracy_score(y_true, y_pred))
print("適合率:", precision_score(y_true, y_pred))
print("再現率:", recall_score(y_true, y_pred))
print("F1スコア:", f1_score(y_true, y_pred))
まとめ
分類問題では、「精度」だけを見て判断するのは危険です。
特に、クラスの偏りがある場合は、
適合率・再現率・F1スコアも合わせて評価することが重要です。
これらを理解することで、より正確にモデルの性能を判断できるようになります!
✅ 次回は、分類モデルのさらに深い問題である「過学習とバイアス・バリアンス問題」について学んでいきましょう!
【あわせて読みたい】
🔹 次におすすめの記事
🔹 関連記事
▶「正規分布とは?現実世界と機械学習での使われ方・特徴をやさしく解説」
▶正規性の検定とは?データの標準化・正規化もまとめてわかりやすく解説
▶「基本統計量をマスター!平均・中央値・最頻値・分散・標準偏差を実例でわかりやすく解説」
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ
外部参考リンク:

コメント