面白いデータを探して

適当に書く。間違えていたら教えてください。

機械学習の指標いろいろ(1) 〜ROC曲線とAUC〜

機械学習の学習済みモデルの精度には色々あります。
自分でもよくわかっていない指標がときどきあるので、調べたものをまとめます。
今回はROC曲線とAUC。

2値分類問題

ROC曲線とAUCは2値分類問題に使用する指標です。
2値分類問題とはその名の通り、入力データに対してYes/No問題として解決できるような問題です。
例えば、「この患者は病気にかかっている?」「このメールはスパムメール?」と言った問題です。
このような問題を考える場合には実際の正解とモデルの予測に応じて、次のような4つに分けることができます。

正解 予測 分類
Yes Yes True Positive (TP)
Yes No False Negative (FN)
No Yes False Positive (FP)
No No True Negative (TN)


True/Falseは正解/不正解を表し、Positive/Negativeは予測がYes/Noを表します。
また、True Positive Rateを「正解がYesのもののうちどれだけをYesと予測できたか」とし、下のように表します。

 \displaystyle True Positive Rate = \frac{TP}{TP + FN}

さらに、False Positive Rateを「正解がNoのもののうちどれだけをYesと予測してしまったか」とし、下のように表します。

 \displaystyle False Positive Rate = \frac{FP}{TN + FP}

True Positive Rateはできるだけ大きい方がよく、False Positive Rateはできるだけ小さいほうが良いことがわかります。
また、割合ですので 0 \leq True Positive Rate, False Positive Rate \leq 1です。
ここまでが準備です。

ROC曲線

Yes/No問題の場合、モデルの出力はある実数値として、その値がある値(しきい値)よりも大きい場合はYes、小さい場合はNoと設計するのが自然です。
ここで、しきい値の値によっては次のようになることが予想されます。

  • しきい値の値が大きい場合 : 多くのものをNoと予測するので、True Positive Rate、False Positive Rateがともに小さい値になる。
  • しきい値の値が小さい場合 : 多くのものをYesと予測するので、True Positive Rate、False Positive Rateがともに大きい値になる。

このように、True Positive RateとFalse Positive Rateがトレードオフの関係になるため、色々なしきい値に対してこれらの値を調べる必要があります。
このとき、しきい値の値を変えながら、横軸にFalse Positive Rateを、縦軸にTrue Positive Rateをプロットし、線でつないだものをROC曲線と呼びます。

下はROC曲線の例です。


f:id:netres:20181116175514p:plain

AUC

ROC曲線の下側部分の面積をAUC(Aria Under the Curve)と呼びます。
AUCが何を表すかを考えていきます。

先ほど述べたように、True Positive Rateは大きく、False Positive Rateは小さいほうが良いです。
したがって、上のグラフの中だと、横軸のFalse Positive Rateの値が小さいうちから、縦軸のTrue Negative Rateが大きくなっているものが良いです。
そのようなものは基本的にAUCの値は大きくなります。
したがって、AUCの値が大きいほど、よい分類器であることがわかります。