機械学習の評価指標 ROC曲線 AUC

Posted on 2019/09/30 in 機械学習 , Updated on: 2019/09/30

ROC曲線、AUC とは

ROC AUC は、kaggle などの機械学習コンペに置いても、学習モデルの評価指標として頻繁に用いられる。分類問題において、学習モデルのパフォーマンスの確認または、視覚化する必要がある場合に、最も重要な評価指標の一つになる。 定義としては、下図のように、横軸に False Positive Rate (偽陽性率) を、 縦軸に True Positive Rate (真陽性率) を置いてプロットし、 それらのプロットを繋げた曲線を ROC曲線 (Receiver Operatorating Characteristic curve、受信者動作特性曲線) という。 また、ROC曲線と横軸および、偽陽性率=1 の線により囲まれた領域の面積を AUC (Area Under the Curve) と呼ぶ。 ROCは確率曲線であり、AUCは分離性の程度または尺度を表します。AUCが高いほど、モデルは0を0として、1を1として予測する性能が高いことを示す。

本記事では、ROC曲線および AUC について、腫瘍が悪性か良性かを予測する2値分類問題を例にとり、 直感的に理解できるように説明する。

分類問題

特徴量として"腫瘍の大きさ"を持つ、いくつかの腫瘍サンプルがあるとする。 下のグラフでは、縦軸に腫瘍の悪性/良性を、横軸に腫瘍の大きさを表す軸を置いている。 また、グラフ中の青い点は良性の腫瘍サンプルを、赤い点は悪性の腫瘍サンプルを表している。

直感的に、腫瘍の大きさが大きくなると、腫瘍は悪性である傾向が見てわかるが、 良性サンプルにも比較的大きいものがあり、同じく悪性サンプルでも比較的小さいものがあるとする。

学習モデルを適用する

上記サンプルに、例として Logistic Regression (ロジスティック回帰)モデルを適用する。(破線カーブ) これにより、グラフ縦軸は、腫瘍が悪性/良性である確率に置き換えることができる。

破線(Logistic Regression モデル)から、腫瘍の大きさが大きくなるにつれて、悪性である確率が高くなることがわかる。これを用いて、ラベルのないサンプル(悪性か良性かわからない)の大きさをもとに、そのサンプルの悪性である確率を得ることができる。

しきい値を考える

Logistic Regression モデルを適用後、腫瘍の大きさに対して腫瘍が悪性か良性かの確率がわかるようになった。 現実問題で、このモデルに期待するのは、実際に腫瘍は悪性か良性かをより正確に分類させることである。 ここで、分類するしきい値として、0.5 を設定してみる。 すると Logistic Regression モデルにより、求まった確率が 0.5 以上なら悪性、0.5 以下なら良性という分類ができるようになる。

この分類モデルの性能を評価するために、悪性/良性があらかじめわかっているいくつかの腫瘍サンプルに適用してみる。これにより実際のラベル(悪性/良性)と同じ結果を得られるかテストすることができる。つまりこの Logistic Regression の性能評価をすることができる。

下図のように、しきい値 0.5 に設定した分類結果を見ると、いくつかはラベル通りに分類できていないことがわかる。また、この分類精度を評価するために、Confusion Matrix(混同行列) を示す。

さらにしきい値を変化させた場合の Confusion Matrix をいくつか見てみる。 しきい値の変化に伴い、悪性/良性を正しくまたは間違って分類されるサンプル数が変化するため、 Confusion Matrix も少しずつ変化する。

ここで、誤分類が最も少ない Confusion Matrix を示すしきい値を選ぶことで、 最もよい分類モデルが得られたことになるが、実世界の問題では、サンプル数や特徴量が大きいため 一つ一つのしきい値を試していくことはできない。 そこで簡潔に、モデルの最良なしきい値を判定するために ROC 曲線 を利用する。

ROC 曲線を作成する

上の分類モデルにおいてしきい値を限りなく小さく(0に限りなく近く)した場合の、Confusion Matrix を考える。この場合、しきい値≒0 であるため、すべてのサンプルを悪性と予測することになる。そしてこの Confusion Matrix より、偽陽性率 (False Positive Rate)真陽性率 (True Positive Rate) を計算すると、偽陽性率 = 1, 真陽性率 = 1 の結果が得られる。
※ (1, 1) は、すべての悪性サンプルを悪性と予測し、すべての良性サンプルも悪性と予測したことを表している。

次に、横軸に偽陽性率 (False Positive Rate) 、縦軸を真陽性率 (True Positive Rate) となるグラフを書く。そして、上記で得られた (1, 1) の点をプロットし、その点と (0, 0) を結んだ線を引く。この線上の任意の点は、正しく予測されたサンプルの数と誤って予測されたサンプルの数が同じことを示す。

そして、この閾値を徐々に大きくしていき、それに伴って変化する Confusion Matrix からさらにプロットを増やしていく。

そして、これらから得られた、偽陽性率と真陽性率の座標を、プロットすると下記のようになり、ROC曲線 (Receiver Operatorating Characteristic curve、受信者動作特性曲線)が得られる。この図において、(0, 0) と (1, 1) を結ぶ対角線からの距離が最も遠いプロットが、このモデルの最も正解率の高いしきい値を示す。※ (0.2, 1) の点、または (0, 0.8) の点。
つまり、ROC曲線を用いることで、最適なしきい値を選択することができる。

また、複数のモデルを構築し、ROC曲線を描画することで、ROC曲線により囲われた面積 (AUC) の大小を比較することで、どのモデルが最も優れているのかを判別することができる。
※ 下図では、緑のモデルの方が AUC が広いので、オレンジのモデルより優れている。

まとめ

ROC曲線は、モデルの各しきい値における Confusion Matrix の確率曲線であり、最適なしきい値を判定するために利用される。
また、ROC曲線により生成される AUC は、モデルの分類性能を表し、例えば AUC = 0.7 のとき、このモデルは 70% の分類性能を有していることを表す。さらにこの AUC を複数の分類モデルの性能比較に利用することができる。