はじめに
機械学習モデルの「精度(Accuracy)」だけを見ていると、本当に使えるモデルかどうかわかりません。問題の種類・データの特性に合わせて適切な評価指標を選ぶことが重要です。DS検定・E資格でも評価指標は頻出テーマです。
分類問題の評価指標
混同行列(Confusion Matrix)
from sklearn.metrics import confusion_matrix, classification_report
import seaborn as sns
import matplotlib.pyplot as plt
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]
cm = confusion_matrix(y_true, y_pred)
plt.figure(figsize=(6, 5))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=['陰性(負)', '陽性(正)'],
yticklabels=['陰性(負)', '陽性(正)'])
plt.xlabel('予測')
plt.ylabel('実際')
plt.title('混同行列')
plt.show()
print(classification_report(y_true, y_pred))
各指標の計算と意味
from sklearn.metrics import (
accuracy_score, precision_score, recall_score, f1_score, roc_auc_score
)
print(f'Accuracy(精度) : {accuracy_score(y_true, y_pred):.3f}')
print(f' → 全体の正解率。不均衡データでは使えない')
print(f'Precision(適合率): {precision_score(y_true, y_pred):.3f}')
print(f' → 陽性と予測したうち本当に陽性の割合。誤検知を減らしたい時に重視')
print(f'Recall(再現率) : {recall_score(y_true, y_pred):.3f}')
print(f' → 本当の陽性のうち正しく検出できた割合。見逃しを減らしたい時に重視')
print(f'F1 Score : {f1_score(y_true, y_pred):.3f}')
print(f' → PrecisionとRecallの調和平均。不均衡データに有効')
y_proba = [0.9, 0.1, 0.8, 0.4, 0.2, 0.7, 0.6, 0.3, 0.85, 0.15]
print(f'AUC-ROC : {roc_auc_score(y_true, y_proba):.3f}')
print(f' → 閾値に依存しない評価。不均衡データに有効')
どの指標を使うか
不良品検出(見逃しが致命的)の場合はRecall(再現率)を重視します。スパムフィルタ(誤検知が問題)の場合はPrecision(適合率)を重視します。不均衡データ全般にはF1スコアまたはAUCを使います。PrecisionとRecallはトレードオフの関係にあり、両方を高くするにはF1スコアを使います。
回帰問題の評価指標
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
import numpy as np
y_true_reg = [100, 150, 120, 200, 180]
y_pred_reg = [95, 160, 115, 210, 175]
mae = mean_absolute_error(y_true_reg, y_pred_reg)
rmse = np.sqrt(mean_squared_error(y_true_reg, y_pred_reg))
r2 = r2_score(y_true_reg, y_pred_reg)
print(f'MAE : {mae:.2f} → 平均絶対誤差。外れ値に強い')
print(f'RMSE : {rmse:.2f} → 二乗平均平方根誤差。大きな誤差にペナルティ')
print(f'R² : {r2:.3f} → 決定係数。1に近いほど良い(0.7以上が目安)')
まとめ
評価指標は問題の性質に合わせて選びましょう。不均衡データにはAccuracyを使わない、見逃しが重大ならRecallを重視、AUCは閾値を決める前の汎用的な指標として活用できる、という3点を押さえておきましょう。DS検定・E資格の試験でも必ず出題される重要テーマです。
📌 プログラミング・AI学習のおすすめスクール
- 資格と仕事に強い個人レッスン → 【Winスクール】プログラミング・AI講座

※本記事にはアフィリエイトリンクが含まれます。


コメント