モデルの評価指標をマスターしよう【分類編】

モデルの評価指標をマスターしよう【分類編】
はじめに
前編では、回帰モデルにおける評価指標を紹介しました。続く本編では、分類モデル(真か偽かを予測するモデル)における評価指標を紹介したいと思います。
混同行列
分類タスクの予測結果は、真陽性(True Positive)、真陰性(True Negative)、偽陽性(False Positive)、偽陰性(False Negative)の4種類に分類できます。
それぞれの言葉を病気の検査を例に見てみます。ここでは、病気がある状態を陽性と表しています。
- 真陽性 (TP):病気の患者を病気と正しく予測
- 真陰性 (TN):健康な人を健康と正しく予測
- 偽陽性 (FP):健康な人を誤って病気と予測
- 偽陰性 (FN):病気の患者を誤って健康と予測
次に、混同行列を用いた4つの評価指標について、説明します。以下の3つは似て非なるものですので、言葉の定義をしっかりと理解することが大切です。
1.正解率(Accuracy)
正解率(Accuracy)とは全ての予測のうち、正しく分類された割合のことです。
正解率は、2つのクラスのバランスが均等な場合には有効ですが、クラスの不均衡がある場合には適切な指標ではありません。例えば、有病率1%の病気の検査をするとします。このとき、検査をした全ての人を「陰性」と判断してしまえば、正解率は99%となりますが、これでは検査の意味がありません。
2.適合率(Precision)
適合率は、モデルが陽性と予測したサンプルのうち、実際に陽性である割合を示します。
適合率は偽陽性(False Positive)を最小限に抑えたい場合に用いられます。病気の検査の例では、「健康な人を病気と間違って診断することを避けたい場合」に使われます。
3.再現率(Recall)
再現率は、実際に陽性であるサンプルのうち、モデルが正しく陽性と予測できた割合を示します。再現率は偽陰性(False Negative)を最小限に抑えたい場合に用いられます。例えば、「病気の患者を見逃したくない」という場合です。病気の人を健康と判断してしまうリスクが、健康な人を病気とした場合の追加の検査のコストを上回るときなどに用いられます。
「正解率」「適合率」「再現率」と直感的には分かりにくく、混乱しやすい名称ですが、それぞれの計算方法を頭に入れることで、違いを抑えておきましょう。
しかしながら、これらの3つの指標は、クラスに偏りがある場合は有効ではありません。次に紹介するF1スコアは、クラスに偏りがある場合でも用いられる指標になります。
4.F1スコア
F1スコアとは、以下のような式で表されるもので、適合率と再現率の調和平均を計算しています。モデルがどれだけ多くの正解を得るか(適合率)、かつ、実際の正解をどれだけ多く特定できるか(再現率)の両方考慮しています。そのため、クラスに偏りがある場合でも有用な指標です。
F1スコアは0から1の間の値をとり、1に近いほどモデルの性能が良いことを示します。
以上、モデルが予測した結果と実際のクラスの分類結果4種類をもとにした、指標を紹介しました。
Log Loss
Log Loss(対数損失)とは、次のような式で計算されるものです。別名「クロスエントロピー」とも言われます。この値が小さいほどモデルの予測が正確であることを示します。
Log Lossの特徴としては、予測の確率を反映していることがあります。
例えば、0.7の確率で「陽性(クラス1)」と予測されたサンプルAと、0.9の確率で「陽性(クラス1)」と予測されたサンプルBがあります。どちらも「正解率」などの指標ではクラス1という分類結果のみが計上されますが、Log Loss(対数損失)を用いることで、0.7、0.9といった確率も反映させることができます。

評価指標≠損失関数
最後に、「評価関数」と「損失関数」はどちらも機械学習モデルによく使われるものですが、同じものではありません。
損失関数は、モデルの訓練時に使用されるものです。モデルが学習中に最小化しようとする関数であり、モデルの予測と実際の値の誤差を評価します。損失関数の最小化を通じて、モデルは最適なパラメータを見つけ、予測の精度を向上させます。
次に、評価関数は、モデルの性能を評価するための指標です。訓練が終了した後に、モデルの性能を評価するために使用されます。
回帰モデルにおける平均二乗誤差(MSE)や分類問題における対数損失(Log Loss)のように、評価関数としても損失関数としても使われる関数もありますが、使用する場面によって名前が異なります。正解率(Accuracy)、適合率(Precision)などは、評価関数であって、損失関数ではありません。損失関数が最小化されるようにモデルが学習し、その後、評価関数によってモデルの性能が評価されます。