minminの備忘録

フルスタックになりたいエンジニアの備忘録 → https://zuminblog.com/ へ引越し中

ROC曲線とAUCについて

分類問題の評価をするときにROC曲線をよく使うと思うんですが、それの縦軸ってなんだっけ?とかなってしまいがちなので、備忘録としてROC曲線について紹介していきます
ROC曲線を評価する指標としてAUCというのもあるので、それも合わせてまとめていきます

ROC曲線とは

そもそもROC曲線とはなんぞやって話をしていきます

ROC曲線とはざっくり言うと、
分類の閾値を変化させていったときに、精度がどのように変化していくか
を可視化したものになります

ROC曲線の例

言葉だけだと理解しづらいので、ここからは図を用いて解説していきます

ROC曲線の例を以下に示します

f:id:minmin_21:20190331121433p:plain
ROC_example

縦軸、横軸は以下の計算式で算出されたものです

  • False Positive Rate(横軸): FP/(FP+TN)
    • 実際の負例の中で予測が間違っていたもの、低いほど良い
  • True Positive Rate(縦軸): TP/(TP+FN)
    • 実際の正例の中で予測が合っていたもの、高いほど良い

※参考

f:id:minmin_21:20190323151512p:plain
confusion_matrix

TP,FPとかの詳しい説明は、以下を参考にしてくださいhttps://minmin-21.hatenablog.com/entry/2019/03/23/152216


分類の閾値を変化させていったとき、False Positive Rate(以下FPR)とTrue Positive Rate(以下TPR)をプロットしたものがROC曲線になります

FPRとTPRのトレードオフについて

FPRとTPRはトレードオフの関係にあります

つまり、FPRが低いとき(間違えた真の負例が少ない)ときは、TPRも低くなってしまいます

また、逆にFPRが高い時はTPRも高くなります


ここは自分でもこんがらがってしまうので、もう少し詳しく説明します

例えば閾値を0.01にした場合を考えます

  • 正例の確率が0.02と低いものでも正例と判定されるためFP(間違って正例と判定されたもの)が大きくなる
    → FPRが高くなる
  • ほとんどのものが正例と判定されるためTP(正例と予測された実際の正例)は大きくなる
    → TPRも高くなる

逆に閾値を0.99にした場合を考えます

  • ほとんどのものが負例と判定されるためFPが小さくなる
    → FPRが低くなる
  • 逆に正例の確率が0.98とほぼほぼ正例であると思われるものも負例と判定されてしまうため、TPは小さくなる
    →TPRも低くなる


グラフ上で確認すると、先ほどのグラフだと閾値が0.58のときにTPRが0.92,FPRが0.19となっています
閾値を0.89にずらすと、TPRが0.77でFPRが0.09ということが分かると思います

f:id:minmin_21:20190331122945p:plain
ROC_example_with_description

AUCとは

先ほど、AUCとはROC曲線を評価する指標だと説明しましたが、そもそもROC曲線はどのように評価すればよいのでしょう?

理想的なROC曲線と、良くないROC曲線を比較しながら説明していきます


理想的なROC曲線は、以下のようにFPRが0のときにTPRが1になっている曲線です

f:id:minmin_21:20190331121531p:plain
best_ROC


逆に良くないROC曲線とは、以下のような曲線です
(AUC=0.79は悪すぎる例ではないと思うのですが、そこはスルーしてください笑)

f:id:minmin_21:20190331121548p:plain
bad_ROC

上の二つを比較してみると、ROC曲線の内側の面積が広い方が良いROC曲線ということが分かると思います

AUCはこの内側の面積を定量的に表したものになり、理想的なROC曲線のAUCを1としてそれを基準に評価した指標になります

参考