評価指標まとめ(分類編)

モデルの精度を知るための評価指標には様々なものがある。分類問題ではF値が有名だが他にもPrecisionやRecallといったものがあり、自分の求めるモデルに合わせた評価指標を選択することが必要になってくる。

まずこれらの評価指標を語る上で欠かせないのが混同行列だ。実際に起こったか否か、モデルの予測はありと判断したのか否かに基づき、以下の4つに分類する。

・真陽性(正と予測したものが実際も正)= TP
・偽陰性(負と予測したが実際は正)= FN
・偽陽性(正と予測したが実際は負)= FP
・真陰性(負と予測したものが実際も負)= TN

コードで書くと以下のようになる。

# 必要なライブラリ
from sklearn.metrics import confusion_matrix

# 混同行列の表示
confmat = confusion_matrix(y_pred=y_pred, y_true=y_test)
confmat

・正解率(Accuracy)
正しく正解できている割合を表す。
ACC = (TP+TN) / (TP+TN+FP+FN)

・真陽性率(TPR)= Recall
実際に正なもののうち、誤っている予測がどれくらい含まれるのかを測る指標。
1に近いほど良い。
TPR = TP / (TP + FN)

・偽陽性率(FPR)
実際に負なもののうち、誤っている予測がどれくらい含まれるかを測る指標。
1に近いほど良い。
FPR = FP / (FP + TN)

・Precision
正と予測したものが、実際どのくらい当たっているのかを測る指標。
Precision = TP / (TP + FP)

そしてRecallとPrecisionを合わせた指標としてF値がある。
F値 = 2{(Precision * Recall) / (Precision + Recall)}

代表的な評価指標についてはこんなところである。

例えば、台風が上陸するか否かのモデル(A、B)を作成したとする。両者のモデルともAccuracyは同じだが、モデルAはFN > FP、モデルBは FN < FPだったとする。どっちのモデルの方がいいモデルと言えるだろうか?

文章にしてみると理解しやすい。
ここで、FNとは台風が上陸しないと予測しているのに実際に上陸した数を表す。
FPとは台風が上陸すると予測しているのに実際には上陸しなかった数を表す。

おそらく台風が来ないと予想しているのに実際に上陸した場合は何の対策も取ることができないので、被害が甚大になると想定される。一方で台風が来ると予想しているのに実際に来なかった場合は、対策費用はかかるものの、被災による損失額に比べればはるかに抑えることができる。何より自分の命を守ることにつながる。つまりこの場合においてはFNの数が少ないモデルBを使うことが望ましいと考えられる。

このように時と場合によってモデルに必要になるポイントが変わってくるので、どんなモデルにする必要があるのか見通しを立てた上で行っていく必要がある。