ROC AUCとは何か

モデルの良さを測る尺度として精度では限界があります。精度に代わる尺度としてAUCの説明をします。なお、本稿は2クラス分類を前提としています。

Keywords

  • 機械学習

Contents

  • 1. 混同行列
  • 2. 精度
  • 3. 精度の限界
  • 4. ROCとは
  • 5. プロットしていくイメージ
  • 6. どのようなROCが良いか
  • 7. AUC
  • 8. なぜ精度ではダメなのか
  • 9. 参考文献

混同行列

精度についての説明に入る前に、本稿を理解する上で必要になる混同行列の説明をします。

混同行列とは、予測の分類と実際の分類とでマトリクスを組んだものです。

陰性と予測陽性と予測
実際に陰性4010
実際に陽性520

上記の混同行列では、
陰性と予測して実際に陰性だったサンプルの数は40個、
陽性と予測して実際に陽性だったサンプルの数は10個、
陰性と予測して実際は陽性だったサンプルの数は5個、
陽性と予測して実際は陰性だったサンプルの数は20個
ということを表しています。

精度

混同行列を一般化して記述すると、下記のようになります。

陰性と予測陽性と予測
実際に陰性TN(新陰性)FP(偽陽性)
実際に陽性FN(偽陰性)TP(真陽性)

精度とは、全体のうちどの程度予測が成功しているかを表している尺度ですので、

精度 = (TN + TP) / (TN + FP + FN + TP)

となります。

精度の限界

モデルの予測の精度が99%と聞くと、すごいと思われるかもしれません。 しかし、仮にサンプルの99%が陰性であり、1%が陽性となっているデータセットの場合はどうでしょうか。

例えば、100人中1人が悪性腫瘍であり、99人が良性腫瘍であるサンプルがあるとします。この100人のサンプルに対して、一律に良性腫瘍であると予測するモデルは99%の精度がでていることになります。

良性腫瘍と予測悪性腫瘍と予測
実際に良性腫瘍990
実際に悪性腫瘍10

一般的に陽性と陰性の比率が偏る場合(偏ったクラスのデータセット)は、精度だけではモデルの評価ができなくなってしまいます。

ROCとは

モデルは、陰性か陽性かのクラスを予測として出力するだけでなく、陽性になるスコア(確率)を出力することが可能です。

仮に100件のうち、10件が陽性で90件が陰性であるデータサンプルがあったとし、それぞれに対して陽性と予測するスコアと実際のクラスをあらわした表を想定します。また、この表はスコアの高い順から並べています。

サンプルスコアクラス
10.99陽性
20.98陽性
30.95陰性
40.92陽性
50.88陰性
1000.10陰性

次に、この100件全てのサンプルに対して陰性と予測した場合の混同行列、上から1件だけを陽性と予測した場合の混同行列、上から2件だけを陽性と予測した場合の混同行列、上から3件だけを陽性と予測した場合の混同行列・・・というように、順々に混同行列を作っていき、最終的には、全て陽性と予測した場合の混同行列を作ります。

次に、それぞれの混同行列に対して、下記2つを算出します。

真陽性率: TP / (FN + TP)
偽陽性率: FP / (TN + FP)

真陽性率とは、実際に陽性であるサンプルをどれだけ正しく陽性と予測したかを表します。 偽陽性率とは、実際に陰性であるサンプルをどれだけ間違えて陽性と予測したかを表します。

つまり、真陽性率は高ければ高いほど、偽陽性率は低ければ低いほど、良い予測ができているということになります。

なお、全て陰性と予測した場合の混同行列は、真陽性率が低く偽陽性率も低くなります。段々と陽性と予測する数を増やしていくと、真陽性率が高く偽陽性率も高くなります。

次に、それぞれの混同行列に対して、この2つを算出し、そして真陽性率と偽陽性率の座標にプロットしていきます。

ここでは、上記7個の混同行列の真陽性率と偽陽性率の組み合わせしかプロットしていないので、欠けてはいますが、この曲線をROCと呼びます。

プロットしていくイメージ

もう一度プロットしていく過程をみていきます。

一番最初の100件全てのサンプルに対して陰性と予測した場合の混同行列は、陽性と予測するサンプルがないので、真陽性率も偽陽性率も(0.0,0.0)となり、一番左下にプロットしています。

次のデータは、クラスも陽性で予測も陽性であるため、真陽性率が上がるため、上にプロットしています。※座標は(0.0,0.1)

次のデータは、クラスも陽性で予測も陽性であるため、真陽性率が上がるため、上にプロットしています。※座標は(0.0,0.2)

次のデータは、クラスが陰性ですが予測は陽性であるため、偽陽性率が上がるため、右にプロットしています。※座標は(0.01,0.2)

次のデータは、クラスも陽性で予測も陽性であるため、真陽性率が上がるため、上にプロットしています。※座標は(0.01,0.3)

つまり、予測が成功すると上にプロットし、予測が失敗すると右にプロットすることがわかります。

どのようなROCが良いか

真陽性率と偽陽性率の座標は、(0.0,0.0)から(1.0,1.0)に向かってプロットされていきます。

予測が成功するには、陽性であるデータのスコアが高い必要があり、逆に言うと、そのように正確に予測できている場合は、(0.0,0.0)から上の方に、進んで行き、途中から陰性であるデータが出始めるようになってからは、予測が外れるようになって、右に進むようになります。(曲線A)

ランダムに予測している場合は、予測が当たったり外れたりするので、上に進んだり右に進んだりします。(曲線B)

予測が正確にできていない場合は、陰性のデータなのにスコアが高く出ているパターンであり、最初から予測が外れるため、右に進み始め、途中から陽性であるデータが出始めるようになってからは、予測が当たるようになって、上に進むようになります。(曲線C)

曲線Aは、クラスが陽性であるサンプルのスコアが高い場合です。

サンプルIDスコアクラス
10.99陽性
20.98陽性
30.95陰性
40.92陽性
50.88陽性
1000.10陰性

曲線Bは、ランダムに陽性と陰性を予測している場合です。

サンプルIDスコアクラス
10.99陽性
20.98陰性
30.95陽性
40.92陰性
50.88陽性
1000.10陰性

曲線Cは、クラスが陰性であるサンプルのスコアが高い場合です。

サンプルIDスコアクラス
10.99陰性
20.98陰性
30.95陽性
40.92陰性
50.88陰性
1000.10陽性

このことから曲線Aのような真陽性率が高く偽陽性率が低い箇所を通る曲線(つまり山なりになっている曲線)が良いことがわかります。

AUC

AUCとはこの曲線の下の面積のことを指します。

曲線Aの場合は、AUCはグレーの部分であり、このグレー部分を全体で割ったものがAUCとして算出する値となります。

なぜ精度ではダメなのか

先に挙げた一律に陰性であると予測するモデルは真陽性率と偽陽性率が同じになってしまいます。

一律に陰性であると予測するモデル

真陽性率: 0.0
偽陽性率: 0.0

これはどういうことかというと、このモデルの場合は、先の曲線B上にしかプロットされない、ということなのです。

さらに言うと、一律に陽性であると予測するモデルやランダムに予測するモデルについても、真陽性率と偽陽性率が同じになってしまいます。

一律に陽性であると予測するモデル

真陽性率: 1.0
偽陽性率: 1.0

ランダムに予測するモデル

真陽性率: 0.5
偽陽性率: 0.5

こういったモデルも曲線B上にしかプロットされず、左上の座標(真陽性率が高く偽陽性率が低い座標)には通らなくなってしまうのです。

参考文献