モデル評価指標 | モデルの評価と改善 | Pythonによる機械学習を学ぶ

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

モデル評価指標(精度、再現率、F1スコア)

機械学習モデルのパフォーマンスを評価する際、適切な指標を選ぶことは非常に重要です。分類モデルの場合、モデルの正確性を測定するために様々な指標がありますが、精度、再現率、F1スコアは代表的なものです。これらの指標を理解し、実際にPythonを使って計算する方法を学びます。

精度(Accuracy)

精度は、正しく分類されたサンプルの割合を表します。つまり、全体の中で何パーセントが正しく予測されたかを示す指標です。精度は以下のように定義されます:

精度 = (True Positives + True Negatives) / (Total Samples)

精度は分かりやすい指標ですが、データのクラス分布が不均衡な場合には、あまり適していないことがあります。

再現率(Recall)

再現率は、実際に正例であるデータの中で、モデルが正しく予測できた割合を表します。特に、データのクラスが偏っている場合に重要な指標となります。再現率は次のように計算されます:

再現率 = True Positives / (True Positives + False Negatives)

再現率は、すべての正例を見つけることを重視する場合に重要です。例えば、病気の検出においては再現率が高いモデルが望ましいです。

F1スコア

F1スコアは、精度と再現率のバランスを取った指標です。精度と再現率の調和平均を取り、全体的なモデルのパフォーマンスを評価します。以下のように定義されます:

F1スコア = 2 * (精度 * 再現率) / (精度 + 再現率)

F1スコアは、特に精度と再現率のどちらも重要な場合に適しています。精度が高いが再現率が低い、またはその逆の場合に、F1スコアがモデルのパフォーマンスを適切に反映します。

混同行列

分類モデルのパフォーマンスを視覚的に理解するために、混同行列(Confusion Matrix)を使います。混同行列は、モデルが予測した結果と実際の結果を表にしたもので、次のような形をとります。

予測: Positive 予測: Negative
実際: Positive True Positive (TP) False Negative (FN)
実際: Negative False Positive (FP) True Negative (TN)

この表を元に、精度、再現率、F1スコアを計算します。

Pythonでの実装例

from sklearn.metrics import accuracy_score, precision_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(f"Confusion Matrix:\n{conf_matrix}")

上記のコードでは、Irisデータセットを使ってランダムフォレストモデルを訓練し、精度、再現率、F1スコアを計算しています。また、混同行列を表示して、モデルがどのように予測したかを視覚的に確認しています。

指標の使い分け

機械学習モデルの評価には、状況に応じた指標の選択が重要です。

  • 精度(Accuracy): データのクラス分布がバランスしている場合には有効な指標ですが、クラス不均衡が大きい場合には注意が必要です。
  • 再現率(Recall): 特に正例(True Positive)の検出が重要な場合に使います。病気の診断など、見逃しが許されないシナリオで役立ちます。
  • F1スコア: 精度と再現率のバランスを重視したい場合に使用します。クラス不均衡がある場合にも適しています。

まとめ

機械学習モデルの評価には、精度、再現率、F1スコアなどの評価指標を使用します。データの特性や目的に応じて、適切な指標を選択することが重要です。また、混同行列を利用して、モデルがどのような誤りをしているかを可視化することも有効です。これらの指標を使いこなして、モデルのパフォーマンスを向上させましょう。