
【機械学習の初学者向け】AUCについて理解しよう!
機械学習モデルの評価指標の一つである
AUCについて、
分かりやすく解説していきます。
機械学習の初学者を対象にしていますが、
混同行列の概念は理解していることを
想定しています。
「混同行列がよく分からないよ」という方は
まずはこちらのサイトをご覧ください。
AUCとは何か?まずは直感的に理解
AUCとはArea Under the Curveの略です。
直訳すると「曲線の下の面積」となります。
ここでいう「曲線」とは、ROC曲線なるものを指していますが、
まずは、直感的に理解するために、
実際のグラフを見てみましょう。

ブルーの曲線がROC曲線になります。
そして、ブルーの曲線の下の面積がAUCになります。
ROC曲線とは何か?
AUCを理解するには、
ROC曲線を理解する必要があります。
ROC曲線を理解するために、
おさえておく概念があります。
混同行列の真陽性率(TPR)と偽陽性率(FPR)の概念です。

真陽性率(TPR): 実際に陽性だったもののうち、陽性と予測したもの
偽陽性率(FPR): 実際に陰性だったもののうち、陽性と予測したもの
ROC曲線は、
縦軸に真陽性率(TPR: True Positive Rate)、
横軸に偽陽性率(FPR: False Positive Rate)をとったグラフです。
実際にROC曲線を描いてみる
実際にROC曲線を描いてみましょう。
陽性(1)である確率についてのモデル予測値と実際が以下の通りだったとします。

さて、真陽性率と偽陽性率を求めるには、
陽性と陰性の分かれ目である閾値を決めてやる必要があります。
閾値とは、
モデルが予測した確率の何%以上を
陽性とするか?
この基準になります。
例えば、
閾値を0.50とおくと、
予測確率0.50以上は陽性、
予測確率0.50未満は陰性となります。
ROC曲線の計算では、
あらかじめ閾値を決めるのではなく、
最初に、1位のスコアを閾値とし、
その後、閾値の基準を
2位、3位、4位のスコアへと順番に下げていきます。
ROC曲線は閾値を下げていったときに、
真陽性率と偽陽性率がどう変化するかを
プロットしたものになります。
モデルが完璧に予測できれば、
真陽性率は100%に向かって上昇し、
偽陽性率は0%のままです。
モデルが間違って予測するたびに、
偽陽性率の数値が上がります。

偽陽性率(FPR)をX軸とし、
真陽性率(TPR)をY軸としてプロットしたものが
以下のグラフになります。

閾値が1位から10位の水準に動いていく中
真陽性率と偽陽性率が変わります。
この矢印がROC曲線となり、
塗り潰されたピンクの領域がAUCとなるわけです。
AUCの値は0.5〜1までの値を取り、
値が大きいほどモデルの分類性能が高いことを示します。
完璧な分類ができるモデルのAUCは1になります。
逆に、ランダムな推測に基づくモデルのAUCは0.5になります。
AUCとは何か?噛み砕いた理解
AUCを噛み砕いて理解するとすれば、以下の通りです。
予測スコアを高い順に並べた時に、
陽性のクラスには高いスコアが、
陰性のクラスには低いスコアが、
当てられているか?を数値化したもの
具体的な数値で確認してみましょう。
今、陽性クラス5、陰性クラス5のデータがあるとします。
これを予測するモデルを作りました。
予測スコアの高い順に並べ、実際に陽性だったか、陰性だったかを見比べてみます。(陽性を1、陰性を0とします)

左の図は、陽性クラスを上に、陰性クラスを下に
完璧に分けることができたモデルです。
この場合、AUCは最大の1をとります。
右の図は、陽性クラスと陰性クラスが交互に現れており、
予測がランダムであったことを示しています。
この場合、AUCは最小の0.5をとります。
だいたいのイメージがつかめたでしょうか。
さいごに〜AUCのメリット
F1スコアとの比較で、AUCの優れている点をあげています。
不均衡なデータセットに強い: AUCは、クラス間のバランスが大きく異なる不均衡なデータセットに対しても、モデルの性能を公平に評価することができます。これはAUCが偽陽性率(FPR)と真陽性率(TPR)の関係を考慮しており、異なる閾値でのモデルの性能を全体的に評価するからです。一方で、F1スコアは特定の閾値での精度(Precision)と再現率(Recall)の調和平均を計算するため、不均衡なデータセットでは適切な閾値の選択が難しくなります。
性能の全体的な評価に適している: AUCはモデルがランダムな予測よりどれだけ優れているかを示す指標であり、閾値に依存しないため、モデルの性能を全体的に把握するのに適しています。これに対して、F1スコアは特定の閾値における性能のみを示し、閾値の変更によって大きく変動する可能性があります。
ROCカーブによる視覚化ができる: ROCカーブは様々な閾値における偽陽性率と真陽性率をプロットしたもので、モデルの異なる性能を視覚的に比較することができます。F1スコアにはこのような視覚的な評価ツールはありません。
いいなと思ったら応援しよう!
