pythonでできる!面積で精度検証 ~ROC曲線とAUC~

こんにちは!
IT企業に勤めて、約2年間でデータサイエンティストになったごぼちゃん(@XB37q)です!

このコラムでは、ROC曲線とAUCについて紹介します!
精度検証を行う場合、ROC曲線とAUCを使うことが有効な場面が出てくるため、AIモデルを精度検証する人は理解しておくことをおすすめします!

ROC曲線とは

ROC曲線とは
ROC曲線とは

ROC曲線とは、カテゴリデータに対するAIモデルの精度を視覚的に把握するための曲線です。
ROC曲線では、グラフの形状が左上に膨らんでいくほどAIモデルの精度が高いことを表します。
つまり、上図の水色で示している面積が大きければ大きいほど、AIモデルの精度が高いことを表します。

混合行列で見るAIの精度 TPRとFPR

TPRとFPR
TPRとFPR

カテゴリデータに対するAIモデルの精度とは、予測値と実際の値が一致しているかどうかが重要です。
カテゴリデータに対するAIモデルの精度を確認するために、混合行列と呼ばれるクロス集計表があります。
混合行列は、縦に実際の値(0 or 1)、横に予測値の値(0 or 1)を集計したクロス集計表です。

そして、 TPRとFPRをグラフにしたものがROC曲線です。
TPRとは、「実際の値が1の時に正解している割合」であり、FPRとは、「地齋の値が0の時に不正解の割合」を表します。
ここでいう値(0 or 1)は、例えば病気になったかを予測したい場合、病気を1、病気ではないことを0で表す値です。

TPRは、再現率と呼ばれることもあります。
TPRは高ければ高いほどよく、FPRは低ければ低いほど良い値です。

ROC曲線を使う場面

ROC曲線の使い方
ROC曲線の使い方

ROC曲線はどのような場面で使うのが最適なのでしょうか?
ROC曲線は、確率を予測するAIモデルの場合に有効です!

つまり、0~1の値を取る確率を表す予測値に対して一定の閾値を定め、その閾値を上回るか下回るかで0、もしくは1の2種類を予測する場合にROC曲線は使われます。
上の例では、閾値が0.3の場合、予測値が0.3以上の行に対して、1と予測を行います。
また、閾値が0.7の場合、予測値が0.7以上の行に対して、1と予測を行います。

このように、確率を予測するAIモデルの精度を検証したい場合、ROC曲線を使うことがあります。
つまり、ROC曲線ではこの閾値を変化させた時のAIモデルの精度を確認できます。

例えば、病気かどうかの確率を予測する場合、確率の閾値を変えることで「病気と予測される患者」と「病気ではないと予測される患者」の数が変化します。
この場合、下記のTPRとFPRの割合をROC曲線で表していることになります。

  • TPR:本当は病気で実際に病気と予測された場合
  • FPR:本当は病気ではないのに病気と予測された割合

閾値を低くするということは、病気と予測する人数が多くなるため、病気の人に対して病気と予測する割合(TPR)は高くなりますが、病気ではない人に対して病気と予測する割合(FPR)が高くなります。

また、閾値を高くするということは、病気と予測する人数が少なくなるため、病気の人に対して病気と予測する割合(TPR)が低くなりますが、病気ではない人に対して病気と予測する割合(FPR)が低くなります。

つまり、TPRとFPRの両方を向上させることは難しく、どちらかを高くする(低くなる)とどちらかが低くなる(高くなる)というトレードオフの関係になります。
どのようなものを予測するかによって、TPRを重視するのか、FPRを重視するのかが変わるため、閾値を調整することが重要になります。

AUCとは

AUCとは
AUCとは

グラフの面積はAUCと呼ばれており、AIモデルの精度を評価する指標です。
AUCは0から1までの値をとり、AUCが1に近いほど精度が高いと言えるため、AUCは大きければ大きいほど良いとされています。
AUCが1ということは閾値を適切に定めれば「病気ではない人に病気と判断して間違う可能性がない(FPRが0)」、「病気の人に病気ではないと判断して間違う可能性がない(TPRが1)」になることを意味します。
つまり、FPRが0であり、TPRが1になるということです。

一方、AUCが0.5に近いということは、ランダムに近いモデルということになるため、精度は低いと言えます。
陰性と陽性の出力をランダムにすれば、正解する割合も0.5であるため、AUCは0.5に近づくからです。

まとめ

  • ROC曲線
    • カテゴリデータに対するAIモデルの精度を検証する曲線
    • TPRとFPRの割合を表す
  • TPR
    • 本当は病気で実際に病気と予測された場合
    • TPRは高ければ高いほど良い値
  • FPR
    • 本当は病気ではないのに病気と予測された割合
    • FPRは低ければ低いほど良い値
  • TPRとFPRの関係
    • トレードオフの関係にあるため、閾値を調整することが重要
  • AUC
    • ROC曲線より下の面積を表す値
    • 0から1の値を取り、1に近いほど精度が良いことを表す