混同行列の理解と応用
混同行列(Confusion Matrix)は、分類モデルのパフォーマンスを評価するために使用される基本的なツールです。この行列を使用することで、モデルがどの程度の正確さで正しい分類を行ったのかを分析できます。混同行列は通常、二値分類問題に適用されますが、マルチクラス分類にも対応可能です。
混同行列の構造
混同行列は、以下のような形式で表されます:
予測クラス: Positive | 予測クラス: Negative | |
---|---|---|
実際のクラス: Positive | True Positive (TP) | False Negative (FN) |
実際のクラス: Negative | False Positive (FP) | True Negative (TN) |
それぞれの項目の意味は以下の通りです:
- True Positive (TP): 実際のクラスがPositiveで、モデルもPositiveと予測した場合
- True Negative (TN): 実際のクラスがNegativeで、モデルもNegativeと予測した場合
- False Positive (FP): 実際のクラスがNegativeで、モデルがPositiveと予測した場合
- False Negative (FN): 実際のクラスがPositiveで、モデルがNegativeと予測した場合
Pythonでの混同行列の実装
PythonのScikit-learnを使って、混同行列を実装してみましょう。
from sklearn.metrics import confusion_matrix
import numpy as np
# 仮のラベルデータ
y_true = [1, 0, 1, 1, 0, 1, 0, 0] # 実際のクラス
y_pred = [1, 0, 0, 1, 0, 1, 1, 0] # 予測したクラス
# 混同行列を計算
cm = confusion_matrix(y_true, y_pred)
print(cm)
上記のコードでは、`y_true`が実際のクラスラベル、`y_pred`が予測されたクラスラベルです。`confusion_matrix`関数を使うことで、簡単に混同行列を生成できます。
[[2 1]
[1 4]]
この結果は、次のような混同行列を示しています:
予測クラス: Positive | 予測クラス: Negative | |
---|---|---|
実際のクラス: Positive | 4 (TP) | 1 (FN) |
実際のクラス: Negative | 1 (FP) | 2 (TN) |
混同行列の応用
混同行列を基に、様々な評価指標が計算されます。これによりモデルの性能をより詳細に評価することが可能です。以下は、代表的な指標です:
- 精度 (Accuracy): 全体の中で、正しく分類されたサンプルの割合
- 再現率 (Recall): 実際のPositiveサンプルの中で、正しくPositiveと予測された割合
- F1スコア: 精度と再現率の調和平均
精度の計算
accuracy = (TP + TN) / (TP + TN + FP + FN)
再現率の計算
recall = TP / (TP + FN)
F1スコアの計算
f1_score = 2 * (precision * recall) / (precision + recall)
まとめ
混同行列は、分類モデルの性能を評価するための基本的なツールです。この行列を使って、モデルがどの程度正しく分類を行ったかを分析し、さらに精度や再現率、F1スコアなどの評価指標を計算することで、モデルの改善に役立てることができます。