研究メモ
Bayesianスパムフィルタにおいて、スパム判定の閾値を自動的に設定する方法について。
教師データとしては、スパムあるいはハムとラベル付けされたメッセージの集合(M)を用いる。ここで教師データのうち、スパムメッセージの集合を S、ハムの集合を H とする。Bayesian スパムフィルタは、各メッセージについてスパム性の指標となる [0, 1] な数値を割り当てる。p : M → [0, 1]
実用的なスパムフィルタには、false positive*1が限りなく0に近く(< 0.1%)、false negative*2がかなり0に近いこと(< 5%)が求められる。
スパム性の指標について、どのような閾値を与えれば、この要求に答えられるかを提案する。本当は統計的な考察をすべきだが、やんごとない理由から、極めていいかげんな議論になる点をお許しいただきたい。
max({p(h) | h in H }) + Δ1 < min({ p(s) | s in S }) のとき | max({ p(h) | h in H }) + Δ1を閾値とする。 |
このように設定した閾値を用いた場合、教師データをに対して false negative と false positive をともに 0 に設定することができる。
- それ以外の場合、すなわちハムとスパムに対する指標が近接したり、部分的に重なっている場合は、次の式の値を閾値とする:max(max({ p(h) | h in H }) + Δ2, p(s5%))
ここで、s5%は、s (in S)のうち 5% 番目(つまり、0.05×|S|番目)に小さな指標を得たスパムメッセージである。この心は、5% の false positive は我慢するというものである。ただ、このままでは下手をすると false negative を与える可能性があるので、それだけは避けるというものである。
さきほどの打合せでここまでを決めて、現在、佐藤くんがコーディング中。夕方からの新四年生歓迎コンパの間に、この結果が出るはず。