モデル評価指標(正解率、再現率、F1スコア)
機械学習モデルの性能を評価する際には、適切な評価指標を選ぶことが重要です。分類問題では、単純な正解率(Accuracy)だけでなく、再現率(Recall)やF1スコアなどもよく使用されます。特にクラスの偏りがあるデータでは、複数の指標を組み合わせて評価することが重要です。
モデル評価指標を図で理解する

正解率(Accuracy)
正解率は、全体の予測のうち正しく分類できた割合を表します。
正解率 = (TP + TN) / (TP + TN + FP + FN)
ここで、TPは真陽性(True Positive)、TNは真陰性(True Negative)、FPは偽陽性(False Positive)、FNは偽陰性(False Negative)を表します。
正解率は理解しやすい指標ですが、クラスの偏りが大きいデータでは実際の性能を正しく表せない場合があります。
再現率(Recall)
再現率は、実際に正例であるデータのうち、モデルが正しく正例と予測できた割合を表します。
再現率 = TP / (TP + FN)
再現率は「見逃しをどれだけ防げたか」を示す指標です。
例えば病気の診断や不正検知のように、本来検出すべきものを見逃したくない場合に重視されます。
F1スコア
F1スコアは、適合率(Precision)と再現率(Recall)のバランスを評価する指標です。
F1スコア = 2 × (適合率 × 再現率) / (適合率 + 再現率)
適合率は、正例と予測したデータのうち実際に正例だった割合を表します。
適合率 = TP / (TP + FP)
F1スコアは、適合率と再現率のどちらか一方だけが高い場合には高くならないため、バランスの取れた評価ができます。
混同行列(Confusion Matrix)
分類モデルの予測結果を整理するために、混同行列を使用します。
| 予測:Positive | 予測:Negative | |
|---|---|---|
| 実際:Positive | TP(真陽性) | FN(偽陰性) |
| 実際:Negative | FP(偽陽性) | TN(真陰性) |
正解率・再現率・適合率・F1スコアは、すべてこの混同行列から計算されます。
Pythonでの実装例
以下は、ランダムフォレストを使用して分類モデルを作成し、各評価指標を算出する例です。
from sklearn.metrics import accuracy_score, recall_score, f1_score
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
# データセットの読み込み
data = load_iris()
X, y = data.data, data.target
# データの分割
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
# ランダムフォレストモデルの訓練
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
# テストデータで予測
y_pred = model.predict(X_test)
# 評価指標の計算
accuracy = accuracy_score(y_test, y_pred)
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')
# 混同行列
conf_matrix = confusion_matrix(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1 Score: {f1:.2f}")
print(conf_matrix)
このコードでは、Irisデータセットを用いて分類モデルを作成し、正解率・再現率・F1スコアを計算しています。また、混同行列を表示することで、どのクラスで誤分類が発生しているかを確認できます。
評価指標の使い分け
| 指標 | 特徴 | 向いている場面 |
|---|---|---|
| 正解率 | 全体の正解割合を評価 | クラス数が均衡しているデータ |
| 再現率 | 見逃しの少なさを評価 | 病気診断、不正検知など |
| F1スコア | 適合率と再現率のバランスを評価 | クラス不均衡があるデータ |
評価指標を選ぶポイント
- 正解率: データの偏りが少ない場合に有効です。
- 再現率: 正例の見逃しを減らしたい場合に重視します。
- F1スコア: 適合率と再現率の両方を考慮したい場合に利用します。
まとめ
分類モデルの評価では、正解率だけでなく再現率やF1スコアも重要です。特にクラス不均衡のあるデータでは、複数の指標を組み合わせて評価することで、モデルの性能をより正確に把握できます。