機械学習の分類モデルの評価する際には、評価指標として混同行列をはじめ、PrecisionやRecall、F1値など様々な概念が登場します。
機械学習や深層学習系の多くの論文や、データサイエンスの結果をまとめるのに、これらの評価指標は利用される、非常に登場頻度の高い概念です。
一方で、パッと見だと複雑な形をしていることや、TP, TN, FP ,FN といった概念も登場し、非常にややこしく、初心者の人は混同すること間違いないと思います。
今回は、機械学習の分類機器の評価指標である混同行列やTP, TN, FP, FNといった概念について整理してまとめます。
また実際の論文で機械学習モデルを評価する際に必ずと言ってもいいほど使われる評価指標である、Accuracy、Recall、Precison、F1値についても分かりやすく解説していきます。
ポジテイブとネガティブについて
まず、論文などで頻繁に目にするPrecisionやRecall、F1値などに入り前に、分類機におけるポジティブ・ネガティブという用語についてまとめます。
まず機械学習の分類モデルを考えるとき、注目しているクラスがポジティブクラスになり、それ以外のクラスがネガティブクラスになります。
例えばセンサーデータの異常検知などを考える場合、異常がポジティブクラスになり、正常がネガティブクラスになります。この辺りはかなり直感に反していると思いますが、どのクラスに注目しているかによって、動的・相対的に決まるので、このことはよく覚えておくと良いでしょう。

イメージとしては、このような感じです。
上の図の例では、例えば今機械学習によりセンサーデータの異常検知を行おうとしている場合には、異常クラスがポジティブになり、正常がネガティブになります。
分類モデルにおける混合行列
機械学習の分類モデルの勉強をしていると、次のような混合行列を何度か見たことがあると思います。
そして毎回覚えることができず挫折している人も多いと思いますが…。

これが混合行列(confusion matrix)になります。機械学習の分類器に対して、サイズ$N$のデータ$\bm{X}$をテストした時、$N$の分類結果全てに対して、この予測値のラベル付ができるわけです。
混合行列の具体例
混合行列によって、機械学習の分類器の予測結果が、TP(True Positive)、FN(False Nagative)、FP(False Positive)、TN(True Negative)のどこに割り当てられるかが分かりました。
これを具体的なユースケースでイメージできるように、1つ具体例を出します。
今100枚の猫の画像があり、この画像を機械学習モデルで予測した結果は、必ず次のように混合行列に当てはめることができます。

ここで、混合行列は単純な4つの項目があるマトリックスではなく、データを分析した結果、TP, FP, FN, TNの何処かにデータが割り当てられることを意識してください。
つまり、混合行列は、実際にそれぞれTP, FP, FN, TN割り当てられたデータの数とセットであることを意識してください。このそれぞれのデータの個数が、実際に機械学習の具体的な評価指標である、正解率(Accuracy)や適合率(Precison)、再現率(Recall)、F1値(F1-score)などの導出に使うからです。
これらの評価指標については、次でまとめていきます。
機械学習の評価手法
先ほども述べたように、主に解率(Accuracy)や適合率(Precison)、再現率(Recall)、F1値(F1-score)の評価手法について紹介します。
以降では、上の混合行列(confision matrix)で登場したTP, FN, FP, TNという表現を使いますが、これらはそれぞれの領域に分類されたデータの個数を表現していることに注意してください。つまり、TPと書いているのは、実際にはTPに分類されたデータの数、$len(TP)$のイメージで理解してください。
正解率(Accuracy)
まず最初に正解率について解説していきます。正解率は次の数式で表現できます。
\operatorname{Accuracy} = \frac{TP + TN}{TP + FP + FN + TN}
正解率が意味するのは、モデルが正しく予測できた確率を示しています。
適合率(Precision)
適合率は、機械学習モデルがポジティブクラスと判断したデータのうち、どれだけ正解があったかを示す値です。例えば異常検知モデルを考えた際には、モデルが異常だと判断したケースのうち、何割が本物の異常であったかを示します。
\operatorname{Precision} = \frac{TP}{TP + FP}
適合率は、モデルが誤分類をしてしまうとリスクが起こるようなケースで重視されます。例えば、異常検知の例では、機械学習モデルが異常と判断すると、100人の警備員が来るようなケースを考えると、モデルが誤分類を起こすと、警備費がたくさんかかってしまい、大変ですよね。このように、誤分類を起こしてしまうとリスクが高いようなケースに、Precisonが重視されます。
再現率(Recall)
再現率は、実際の異常のケースにおいて、何割機械学習モデルが捉えることができたかを示すモデルです。モデルが実際にはポジティブだったものを見逃しているケースが多くなると、再現率は低くなります。再現率の定義は次のようになっています。
\operatorname{Recall} = \frac{TP}{TP + FN}
F値(F1-score)
F値は適合率と再現率の調和平均で、次の定義式で表現されます。
\operatorname{F1} = 2 \times \frac{\operatorname{Recall} \times \operatorname{Precision} }{\operatorname{Recall} + \operatorname{Precision} }
F1の定義式を見ると明らかですが、再現率と適合率が両方含まれており、この両方を評価したい際などに利用されることが多いです。