混同行列・F1スコアとは?分類問題の評価指標をわかりやすく解説|統計自主学習⑫

はじめに

機械学習で分類問題を扱うとき、
「モデルの精度ってどうやって測るの?」
と疑問に思ったことはありませんか?

単に「正しく分類できた割合(精度)」を見るだけでは、本当に良いモデルかどうか判断できない場合があります。

この記事では、

  • 混同行列(Confusion Matrix)
  • 精度(Accuracy)
  • 再現率(Recall)
  • 適合率(Precision)
  • F1スコア

これら分類モデルの評価指標について、わかりやすく解説します!

🔹 統計自主学習シリーズまとめページはこちら
【初心者向け】統計自主学習シリーズまとめ


混同行列とは?

混同行列とは、モデルが出した予測と実際の正解を比較して、
どのパターンがどれだけあったかをまとめた表のことです。

2クラス分類の例

実際Positive実際Negative
予測PositiveTrue Positive (TP)False Positive (FP)
予測NegativeFalse 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スコアも合わせて評価することが重要です。

これらを理解することで、より正確にモデルの性能を判断できるようになります!

✅ 次回は、分類モデルのさらに深い問題である「過学習とバイアス・バリアンス問題」について学んでいきましょう!

【あわせて読みたい】

🔹 次におすすめの記事

過学習とバイアス・バリアンス問題をやさしく解説

🔹 関連記事
「正規分布とは?現実世界と機械学習での使われ方・特徴をやさしく解説」

正規性の検定とは?データの標準化・正規化もまとめてわかりやすく解説

「基本統計量をマスター!平均・中央値・最頻値・散・標準偏差を実例でわかりやすく解説」

データの広がりを一目で把握!箱ひげ図の読み方と使い方

🔹 統計自主学習シリーズまとめページはこちら
【初心者向け】統計自主学習シリーズまとめ

外部参考リンク:

コメント

タイトルとURLをコピーしました