バケツに振り分けるしきい値

POPFile 日本語化プロジェクトのフォーラムに投稿した話だけど、あまり知られていないかもしれないので、自分用のメモもかねて書いてみる。
POPFile は、メールを分析してどのバケツに振り分けるのが一番ふさわしいのかを調べるのだけど、まず、それぞれのバケツに含まれる確率を計算する。一番確率が高いバケツに分類するのは当然として、単にそうするのではなく、確率の比がある程度以上あるときにだけ振り分ける。そうでないときは、どこにも振り分けず、「unclassified」とする。
デフォルトの場合ではこの比は 100 倍になっていて、一番確率の高いバケツに含まれる確率が、二番目に確率の高いバケツに含まれる確率の 100 倍以上であれば、一番確率の高いバケツに振り分けられる。例えば、spam と inbox という2つのバケツを作っている場合であれば、spam バケツに含まれる確率が p だとすると、p/(1-p)>=100 の場合、spam バケツに振り分けられることになる。これを解くと、p>=0.9900... なので、約99% 以上の場合、となる。
この 100 という値は、詳細設定タブの「bayes_unclassified_weight」を変更することによって好きな値に設定できる。例えば 1000 にすれば、約99.9% 以上の場合に振り分けられることになる。
この、bayes_unclassified_weight(w とする)の値と、振り分けたい確率の最小値(p とする)の間には、下のような関係式が成り立つ。

p = w/(1+w)
w = p/(1-p)

だから、逆に p=0.995とすれば、w=199 となるから、99.5% 以上の場合に振り分けたいと思えば、bayes_unclassified_weight に 199 と入力すればいい。
これらはあくまでバケツの数が2つの場合の計算。3つ以上の場合はもっと複雑になるのでパス(汗)。

おまけとして、unclassified にしたくない場合(すなわち、確率に少しでも差があれば振り分けたい場合)は、bayes_unclassified_weight に 1 を入力(上に書いた2つの場合でいうと、p=0.5 となる)。

(参考)
POPFile Option Reference
POPFile Option Reference(翻訳版)