ROC 曲線

ROC 曲線は、モデルの性能評価に使われている。ROC 曲線は、予測結果から計算される false positive rate を横軸に、true positive rate を縦軸に点をプロットし、それを線でつないだグラフである。点の数が多くなると、線が滑らかな曲線のように見えるので、曲線と呼ばれている。

ROC曲線

予測モデルが出力するスコアに基づいて、スコアの高い順にデータを並べ替える。次に、スコアに対して閾値を設けて、閾値を超えた場合に positive、閾値以下の場合に negative と判定する。判定結果と教師ラベルを比較し TPR および FPR を計算する。以下に ROC 曲線を描く例を示す。

まず、予測結果をスコア順に並べて、最も高いスコアの上に閾値を置く。閾値以下はすべて negative であるので、この場合、予測結果は TN または FN しかない。これらの値を元に TPR および PFR を計算し、それを座標上にプロットする。

ROC曲線(ステップ 1)

次に、閾値を最高スコアと 2 番目に大きいスコアの間に移動する。そして、同様にして TPR および FPR を計算して、座標上にプロットする。

ROC曲線(ステップ 2)

このように閾値を少しずつずらしながら、点をプロットする。

ROC曲線(ステップ 3)
ROC曲線(ステップ 4)
ROC曲線(ステップ 5)
ROC曲線(ステップ 6)
ROC曲線(ステップ 7)
ROC曲線(ステップ 8)
ROC曲線(ステップ 9)
ROC曲線(ステップ 10)
ROC曲線(ステップ 11)

最後にすべての点を線で結ぶことで、ROC 曲線が描かれる。ROC 曲線の下の部分の面積を AUC とよび、AUC が 1 に近づくほどモデルの性能が良いとされる。

ROC曲線

scikit-learn で ROC 曲線を描く方法

次のコードは、乳がんデータの疾患に対する予測モデルを SVM とロジスティック回帰の 2 つの方法で作成し、2 つのモデルの ROC 曲線を描く例である。ROC 曲線の座標を計算するためのスコアが必要なため、SVM モデルを作成するときに、probability=True を指定する必要がある。

scikit learnモジュールを使って ROC 曲線を描く方法