TensorFlowを用いた機械学習モデルの評価とチューニングにおいて、「混同行列(Confusion Matrix)」「ROC曲線(Receiver Operating Characteristic Curve)」「AUC(Area Under the Curve)」は、分類モデルの性能を測定するために非常に重要な指標です。それぞれについて詳しく説明します。
1. 混同行列(Confusion Matrix)
混同行列は、分類モデルが予測したラベルと実際のラベルの対応関係を表形式で示すもので、主に2クラス(バイナリ)分類で利用されます。
| 実際Positive | 実際Negative | |
|---|---|---|
| 予測Positive | True Positive (TP) | False Positive (FP) |
| 予測Negative | False Negative (FN) | True Negative (TN) |
この表から以下のような指標を導出できます:
-
Accuracy(正解率):
(TP + TN) / (TP + FP + FN + TN) -
Precision(適合率):
TP / (TP + FP)
→ 正と予測したうち、どれだけ正しかったか -
Recall(再現率):
TP / (TP + FN)
→ 実際に正であるものをどれだけ見逃さずに予測できたか -
F1スコア:
2 * (Precision * Recall) / (Precision + Recall)
→ PrecisionとRecallの調和平均
TensorFlowでは、tf.math.confusion_matrix() や scikit-learnの confusion_matrix() を使って計算できます。
2. ROC曲線(Receiver Operating Characteristic Curve)
ROC曲線は、分類器の閾値(しきい値)を変化させたときの性能を視覚的に評価するための曲線です。
横軸:False Positive Rate(FPR)
FPR = FP / (FP + TN)
縦軸:True Positive Rate(TPR)
TPR = Recall = TP / (TP + FN)
モデルが予測の閾値を0〜1の間で変化させたときに、FPRとTPRのペアをプロットした曲線がROC曲線です。
-
完全な分類器は、左上(FPR=0, TPR=1)の点を通ります。
-
ランダム分類器は、対角線(FPR = TPR)のラインになります。
TensorFlowでは、tf.metrics.Recall と tf.metrics.FalsePositives などを組み合わせたり、scikit-learnの roc_curve() を使ってプロットできます。
3. AUC(Area Under the Curve)
AUCとは、「ROC曲線の下の面積(Area Under Curve)」の略で、ROC曲線全体の性能を一つのスカラー値で表したものです。
-
値の範囲は 0.0〜1.0。
-
1.0:完全に正しい分類
-
0.5:ランダムな分類(無意味)
-
0.0〜0.5未満:逆の予測をしている(性能が悪い)
-
AUCは、モデルがランダムな2つのサンプル(1つはPositive、1つはNegative)を選んだとき、正しくランク付けできる確率とも言えます。
TensorFlowでは以下のように記述します:
学習後、model.evaluate() でAUCを含む各指標を確認できます。
実際の評価・チューニングの流れ
-
混同行列の可視化で分類ミスの傾向を分析
-
ROC曲線とAUCの確認で閾値の調整が有効かどうか確認
-
Precision-Recallのバランス調整(特に不均衡データの場合)
-
しきい値調整や モデル再学習によって改善を図る
まとめ
| 指標 | 用途・意味 |
|---|---|
| 混同行列 | モデルの予測結果をカテゴリ別に分析 |
| ROC曲線 | 閾値を変化させたときの性能曲線 |
| AUC | ROC曲線の性能をスカラーで評価(0.0〜1.0) |
これらの指標は、単に「正解率が高いかどうか」ではなく、分類のバランスやリスク評価に基づいた精緻なチューニングに不可欠です。特に医療診断や不正検知のような分野では、AUCやRecallの重視が重要になります。
生成日:2025/05/22