ROC てなんだ?

ROC: receiver operating characteristic;受信者動作特性とは、何かを判定する場合、判定基準をどこに置くか、とか、複数の判定方法がある場合、どの方法がすぐれているかを判定するために考案された統計的方法である。レーダーの性能を比較するのに使われたといわれているけれども、その真偽は知らない。画像診断の際、診断者の能力の判定に使える。疾患判定(検査)の方法の比較にも使える。新規の判定方法が従来より優れていることを証明するのに使われる。

何かの測定値があり、この値をもとに真偽を判定(二者択一)する場合、どこに判定基準をおいたら、目的にかなうかを判断ができるかを解析する必要がある。

照井のところに来たメールの例で説明してみよう。

メール398通のうち242通が spam メールで 156通が spam でない、つまり ham メールであった。6割が spam メールである。spam メールを spam と自動判定しないと日常業務ができないことが理解できるでしょ。これをメールサーバである mike が Spamassassin というプログラムで spam か ham かを判定している。Spamassassin はメールのSubject、本文の文字、本文内に絵があるかないか、URL が書かれているか等でそのメールに点数(スパムレベル)をつけ、メールサーバ管理者が設定する閾値にしたがって判定する。スパムレベルが大きいほどspamらしいということになる。

Spamassassin によるメールのスパムレベル値は ー3から+22 までであった。これを区間別に分けてみると

spamメールの分布

スパムレベル
頻度
累積 %
-3 0 .00%
-2 0 .00%
-1 41 16.94%
0 24 26.86%
1 11 31.40%
2 18 38.84%
3 28 50.41%
4 22 59.50%
5 10 63.64%
6 17 70.66%
7 6 73.14%
8 8 76.45%
9 4 78.10%
10 3 79.34%
11 4 80.99%
12 7 83.88%
13 16 90.50%
14 9 94.21%
15 3 95.45%
16 4 97.11%
17 0 97.11%
18 3 98.35%
19 2 99.17%
20 1 99.59%
21 1 100.00%
22 0 100.00%

hamメールの分布

スパムレベル
頻度
累積 %
-3 0 .00%
-2 5 3.21%
-1 8 8.33%
0 13 16.67%
1 62 56.41%
2 29 75.00%
3 35 97.44%
4 2 98.72%
5 2 100.00%
6 0 100.00%
7 0 100.00%
8 0 100.00%
9 0 100.00%
10 0 100.00%
11 0 100.00%
12 0 100.00%
13 0 100.00%
14 0 100.00%
15 0 100.00%
16 0 100.00%
17 0 100.00%
18 0 100.00%
19 0 100.00%
20 0 100.00%
21 0 100.00%
22 0 100.00%

ということになり。ヒストグラムにすると

スパムレベル

となる。みればわかるようにスパムレベルはかなり重なり、このスパムレベルの値だけで spamを 除去するのは難しい。
spam メールのヒストグラムは3つの山に別れ、値の大きいものは、以前からある spam メールで特徴の抽出が容易、3付近の山は新しいパターン、0以下のは ham メールと区別がつかない最新のパターンの spam メールという想像がつく。

判定値(閾値)を低くすれば(−1以上を spam とする)、全ての spam を含むので感度が高くなるが ham も含むので特異度が悪くなる。判定値を高くすれば(5以上を spamとする)かなりの spam を見逃すが(感度が低くなるが)、これを越えたメールは全て spam であるから特異度が高くなる。累積頻度%から以下のような表を作成し、

スパムレベル
感度
-3 0
-2 0.00
-1 0.17
0 0.27
1 0.31
2 0.39
3 0.50
4 0.60
5 0.64
6 0.71
7 0.73
8 0.76
9 0.78
10 0.79
11 0.81
12 0.84
13 0.90
14 0.94
15 0.95
16 0.97
17 0.97
18 0.98
19 0.99
20 1.00
21 1.00
22 1.00

特異度
1.00
0.97
0.92
0.83
0.44
0.25
0.03
0.01
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00

1− 特異度
0.00
0.03
0.08
0.17
0.56
0.75
0.97
0.99
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00

感度と(1−特異度)の関係をプロットすると、

この曲線をROC という。

もし、判定基準がでたらめで spam と ham をランダムに選ぶとこの曲線は45度の直線になる(緑線)。この直線が作る面積は0.5 となる。もし完璧に spam を選別できれば赤線のようになりこの線の下の面積は1である。したがって曲線の下の面積は0.5 から1.0の値となり1.0に近いほど弁別能力が高いということになる。オレンジ曲線の方法は青曲線の方法よりすぐれた選別方法であるということになる。

どんな方法でも1.0にはならないが、この曲線の下の面積を比較すれば、どちらが優れている方法か、あるいはどちらが優れた眼をもっているかがわかることになる。

どのような方法でも、はっきり弁別できないので、どこが最適の閾値にするかを決めないといけない。その閾値によって誤って spam と判定されるメールが少ないほど、誤って ham とされるメールが少ないほどいいわけであるが、たとえ、誤って ham とされるメールが多くても、誤ってspamとされるメールが少ない方がコストが安い(大切なメールを見逃してしまったときの処理が大変だ)。hum から spam を除くコストが高い場合は逆になる。診療の検査で、安価・容易な一次検査で少しでも見逃さないとして疑わしいケースを沢山作ると高価・煩雑な二次検査量が増えてコスト高になる。閾値をどこに設定するかは、ケースバイケースになる。最適の閾値を決めることは他の要素が加わるから一概には決められないことになる。

mike の Spamassassin では閾値を3とした。つまり、spam メールの50%は通してしまうが hamメールを spam とする率は3%である。これはROCをつくらなくてもヒストグラムからもわかる。

スパムレベルは、学習しているので毎日変わるのでこの50%が10%になることを期待しているが、敵も、ヒストグラムをみればわかるように刻々と変化しているのでなかなか改善されない。