混同行列
機械学習のモデル性能を評価するにあたって、正しく予測した場合の数と間違って予測した場合の数を定量化する必要がある。この定量化には、混同行列が用いられている。陽性・陰性のラベルが既知のデータを機械学習のモデルに予測させ、陽性を正しく陽性と予測した場合の数 (TP)、陽性を間違って陰性と予測した場合の数 (FP)、陰性を正しく陰性と予測した場合の数 (TN)、陰性を間違って陽性と予測した場合の数 (FN) をまとめると、次のような 2 × 2 の行列にまとめることができる。
予測結果 | |||
陽性 | 陰性 | ||
事実(ラベル) | 陽性 | TP; true positive 正しく (true) 陽性 (positive) に予測した |
FN; false negative 間違って (false) 陰性 (negative) に予測した |
陰性 | FP; false positive 間違って (false) 陽性 (positive) に予測した |
TN; true negative 正しく (true) 陰性 (negative) に予測した |
機械学習モデルの評価指標
機械学習モデルを評価する指標は以下のように多くの種類がある。どの指標を重視すべきかは、実際に解決しようとする問題によって決める。例えば、機械学習によるがん診断などで、正常者をがん患者と間違って予測してても、がん患者を見逃ししたくなければ、感度や適合率に着目すればいい。
感度 sensitivity / 検出率 recall
感度 sensitivity は、陽性のデータを正しく陽性と予測した割合である。検出率 recall または True positive rate (TPR) ともいう。感度の計算には、陰性データの予測結果が含まれていない。そのため、すべてのデータを陽性と判定すれば(FN = 0)、感度を 100% にすることができる。
\[ TPR = \frac{TP}{TP + FN} \]特異度 specificity
特異度 specificity は、陰性のデータを正しく陰性と予測した割合である。True negative rate (TNR) ともいう。特異度の計算には、陽性データの予測結果が含まれていない。そのため、全てのデータを陰性と判定すれば(FP = 0)、特異度を 100% にすることができる。
\[ TNR = \frac{TN}{TN + FP} \]感度は陽性データの予測結果からのみ計算され、特異度は陰性データの予測結果からのみ計算される。そのため、機械学習モデルを評価するさいに、両方の指標を同時に利用する必要がある。
精度 accuracy
精度 accuracy は、データを正しく予測できた割合である。感度と特異度とは異なり、陽性と陰性のデータに限定せずに、すべてのデータに対して計算される正答率である。
\[ ACC = \frac{TP + TN}{TP + FN + FP + TN} \]偽陽性 false positive rate
偽陽性は、陰性データを間違って陽性と予測した割合である。偽陽性の値が大きくなることによって、オオカミ少年のようなモデルとなってしまう。
\[ FPR = \frac{FP}{TN + FP} \]適合率 precision
適合率 precision は、陽性と予測したデータのち、本当に陽性データである割合である。
\[ precision = \frac{TP}{TP+FP} \]F1 値
F1 値は、感度と適合率を利用して計算された値である。すべてのデータを陽性と予測すれば、感度は大きくなるが、適合度が小さくなる。逆に、すべてのデータを陰性と予測すれば、適合度は大きくなるが、感度が小さくなる。このように、感度と適合度の間に、トレードオフの関係がある。F1 値は、感度と適合度の調和平均として計算される。そのため、F1 は両者を同時に評価できる指標として用いられている。
\[ F1 = 2\frac{sensitivity \times precision}{sensitivity + precision} \]BER
間違った予測は FP と FN の 2 ケースがある。Balance error rate (BER) は、この 2 ケースの平均を評価指標として利用されている。
\[ BER = \left( 1 - \frac{1}{2}\left(\frac{TP}{TP+FN} + \frac{TN}{TN+FP}\right) \right) \]偽発見率 false discovery rate / 偽陽性
偽発見率 false discovery rate (FDR) は、陽性と予測したデータのち、本当は陰性データである割合である。
\[ FDR = \frac{FP}{TP+FP} \]日本語では、false positive rate (FPR) と false discovery rate (FDR) はともに偽陽性と訳されている場合がある。そのため、日本語で偽陽性と書かれている場合は、FPR と FDR のどちらを表しているのかを文脈で判断する必要がある。
ROC 曲線
ROC 曲線は、positive と判断するスコアの閾値を動かして、TPR と FPR を計算し、縦軸に TPR、横軸に FPR を取ったときに描かれる線グラフである。ROC 曲線の下の部分の面積を AUC として計算することができ、AUC が 1 に近づくほどモデルの性能が良いとされる。
PR 曲線
PR 曲線は、ROC 曲線と同様に、positive と判断するスコアの閾値を動かして、precision と recall を計算し、縦軸に precision、横軸に recall を取ったときに描かれる線グラフである。PR 曲線の下の部分の面積を AUC として計算することができ、AUC が 1 に近づくほどモデルの性能が良いとされる。PR 曲線は precision と recall を使用しているため、TP の予測がスコア表の最初の方ないと AUC は増えない。そのため、PR 曲線は、positive データと negative データのサンプル数に偏りがある場合に有効である。
多クラス予測の評価指標
多クラス予測モデルの評価を行う場合、各クラスに対して TP、TN、FP、FN を計算し、それらの値から評価指標の平均値を計算する。平均の計算方法に応じて、マイクロ平均またはマクロ平均とがあり、目的によって使い分ける。
k クラスの分類問題におけるマイクロ平均とマクロ平均の計算方法を示す。いずれの方法でも、はじめに各クラスに対する TP、TN、FP、FN を計算する。例えば、クラス 1 を positive サンプルとし、それ以外のクラスを negative サンプルとして、TP1、TN1、FP1、FN1 を計算する。続けて、クラス 2、クラス 3、・・・、クラス k についても同様に TPk、TNk、FPk、FNk を計算する。
このとき、マイクロ平均は TPk、TNk、FPk、FNk (k = 1, 2, 3, ...) の値を一括に使って指標を計算する。例えば、マイクロ適合率(precision)は、次のように計算される。マイクロ平均は個々のデータを公平に扱って計算される平均である。しかし、データ 1 件、1 件を公平に扱っているために、各クラスのサンプル数に偏りがあると、サンプル数の少ないクラスに対する評価指標は全体に反映されないというデメリットがある。 \[ precision_{micro} = \frac{\sum_{i}^{k}TP_{i}}{\sum_{i}^{k}(TP_{i} + FP_{i})} \]
これに対して、マクロ平均適合率は、各クラスに対してまず適合率 precision1、precision2、・・・、precisionk を計算し、次にこれらの precision の平均を計算する。マクロ平均は各クラスの評価指標の平均を計算しているため、個々のデータではなく、個々のクラスを公平に扱った評価指標である。各クラスのサンプル数に偏りがあり、サンプル数の極端に少ないクラスも、サンプル数の極端に多いクラスと同じように扱われる。
\[ precision_{macro} = \frac{\sum_{i}^{k}precision_{k}}{k} \]