ROCカーブ
ROC curve

分類アルゴリズムにおける性能評価方法の一つで、真陽性率を縦軸に、偽陽性率を横軸にプロットして描いた線。曲線が左上の角に近いほど性能が良い。

ROCとは受信者操作特性(Receiver Operating Characteristic)の略で、元々は飛行機のレーダーにおいてノイズの中から敵機を示すシグナルを認識する技術である。

現在は分類アルゴリズムの性能評価方法として、医療における画像診断や臨床検査の評価や、人工知能における予測モデルの評価に使われている。

ROCカーブによる予測アルゴリズムの評価

検出したい属性を持つデータのことを陽性といい、そうでないデータを陰性という。

例えば、PCに保存されているファイルに対してウィルススキャンを行う場合、ウィルスに感染していると疑われるファイルが陽性で、そうでないファイルが陰性である。

陽性だったものの中で、正しく陽性と予測した割合が「真陽性率」、陰性だったものの中で、誤って陽性と予測した割合が「偽陽性率」である。

真陽性率と偽陽性率を算出

真陽性率と偽陽性率のグラフ化

真陽性率を縦軸、偽陽性率を横軸にしたグラフを作成。陽性と判定する基準を変えてプロットを繰り返していくと、下の図のような曲線となる。描画した曲線がROCカーブである。

ROCカーブ

理想的な分類は、真陽性率が100%かつ偽陽性率が0%で、グラフ上では赤い丸の部分に近ければ近いほどよい。

真陽性率が高くなるように基準を変えると偽陽性率も高くなる。全て陽性と分類した場合は、真陽性率・偽陽性率共に100%で、グラフ上では緑の丸の部分になる。反対に全て陰性と分類した場合は、真陽性率・偽陽性率共に0%で、グラフ上では青い丸の部分となる。

確率p(pは0%から100%のうち、ランダムな値)で陽性と分類した場合は、陽性のデータと陰性のデータそれぞれに対して確率pで陽性と分類しているため、真陽性率・偽陽性率はどちらもpになる。全てのpに対して真陽性率と偽陽性率をプロットすると、ROCカーブは点線で示した線となる。

ROCカーブが点線よりも右下に描かれている場合は、分類アルゴリズムとしての有用性がない。

ROCカーブの描画・利用方法

架空の詐欺調査を行う例を使って、ROCカーブの描画・利用方法を説明する。

予測

1日に発信した電話の回数が基準値以上だった人を詐欺と疑う」という予測をする。詐欺の人が陽性、詐欺でない人が陰性。

調査した結果、詐欺だった人のうち「詐欺」と正しく予測された人の割合が真陽性率であり、詐欺でなかった人のうち「詐欺」と誤って予測された人の割合が偽陽性率である。

  • 真陽性率 = 詐欺と予測した人の数 ÷ 詐欺の人の数
  • 偽陽性率 = 詐欺と予測した人の数 ÷ 詐欺ではない人の数

計測調査

「1日に発信した電話の回数」毎に「詐欺」と「詐欺でない」人数を調査する。調査の結果は以下の通りだった。

調査結果(データは架空のもの)

基準値ごとの分析

判定基準となる値を変えて、「詐欺」または「詐欺でない」という分類を行う。今回は、1日に発信した電話の回数が15回10回の場合で分類した。

電話の回数/日が15回以上の場合に詐欺であると分類した場合

基準値ごとの分類(基準値15回)

  • 詐欺と正しく予測した人数:39(赤枠)
  • 詐欺だった人数:77
  • 詐欺と誤って予測した人数:2(青枠)
  • 詐欺でなかった人数:208

真陽性率と偽陽性率を求める。

  • 真陽性率 39÷77 = 50.7%
  • 偽陽性率 2÷208 = 0.96%

電話の回数/日が10回以上の場合に詐欺であると分類した場合

基準値ごとの分類(基準値10回)

  • 詐欺と正しく予測した人数:70(赤枠)
  • 詐欺だった人数:77
  • 詐欺と誤って予測した人数:7(青枠)
  • 詐欺でなかった人数:208

真陽性率と偽陽性率を求める。

  • 真陽性率 70÷77 = 90.9%
  • 偽陽性率 7÷208 = 3.37%

マッピング

縦軸を真陽性率、横軸を偽陽性率として、判定基準を1日に発信した電話の回数が「15回以上」と「10回以上」とした場合の真陽性率、偽陽性率をプロットする。

基準値ごとに真陽性率と偽陽性率をプロット

詐欺と分類する1日に発信した電話の基準回数を0回から25回と変えて分析・プロットを行っていくと、下図のようなROCカーブを作成できる。右端が判定基準0回の場合で、左端が判定基準25回の場合である。

基準値0回から25回の結果をプロット

評価

作成したROCカーブを基に分類の有用性の判定および、判定基準の選択を行う。判定基準は実際の問題に応じて選択する必要があるが、ここではグラフ左上との距離が小さいものを選択する。

描画されたROCカーブを元に基準値を選択

図のように、ROCカーブはランダムに分類した場合のROCカーブより左上に描かれているため、行った予測は分類アルゴリズムとして有用性がある

青で囲んだ箇所(判定基準が7回から9回の付近)は、グラフ左上との距離が小さい。結果として「1日に発信した電話の回数が7回から9回」を基準値として選択すると、詐欺の分類アルゴリズムとして良い効果が得られると結論づけられる。

参考資料

この記事を書いた人:かじしま さちこ

フリーランスのエンジニア。
2001年東京都立大学(現首都大学東京)経済学部卒業。独立系ソフトハウス(システム開発)、株式会社シンプレクス(金融機関向け取引システムの開発・運用)を経て2011年よりフリーランス。フリーランスになってからは、スマホアプリ、サーバーサイド(Java,Railsなど)の開発が多い。
ダイエットのためにランニングとヨガを4年ほど続けているが、どちらもガチになる一方で全く痩せないことが最近の悩み。