同じ内容のメールを何度も学習させると何が起こるか

POPFile は、TOE という方法をとることによっていちばん効率よく働く。また、同じページには、同じメッセージを複数受け取った場合、そのうちひとつを学習させれば十分、と書かれている。このことを理解するために、POPFile でメールを再分類したとき、内部でどんなことが起こるかを考えてみる。
POPFile がメールをどのように分類しているかについては、ベイジアンってなんですか?に書かれている。ここでは単純なケースとして、バケツが 2 つだけ(spam と ham)の場合を考えてみる。また、spam バケツには(合計で)Ns 個の単語が、ham バケツには Nh 個の単語が含まれているとする。
ある単語 Wi について、spam バケツには k 個、ham バケツには l 個含まれていた場合、spam バケツから適当に単語を取り出したときにそれが Wi である確率は、k/Ns であり、同様に、ham バケツについては l/Nh である。そして、Wi が spam バケツから取り出されたものである確率は、ベイズの定理により、(k/Ns)/( (k/Ns) + (l/Nh) ) である。つまり、バケツの中に含まれている個数ではなく、バケツの中での割合が影響することになる。
そして、メール E を spam バケツに分類すると、どういうことが起こるかというと、このメール E に含まれる単語 E1 から Eo が spam バケツに加えられる。これによって、上記の Wi が spam バケツから取り出したものである確率はどう変化するのだろう。これは、この単語がメール E に含まれているかどうかによって異なる。まず、spam バケツに含まれる単語数は、Ns+o 個になる。そして、Wi がメール E に含まれていて、その回数が m だったとすると、spam バケツに含まれる Wi の数は、k+m 個になる。したがって、Wi が spam バケツから取り出されたものである確率は、( (k+m)/(Ns+o) )/( (k+m)/(Ns+o)+(l/Nh) ) となる。逆に、メール E に含まれていない場合は、( k/(Ns+o) )/( k/(Ns+o)+(l/Nh) ) となる。こうして、メール E に含まれていた単語については spam バケツに含まれる確率があがり、含まれていなかった単語については逆に確率が下がる。バケツに含まれている回数だけに注目していると、メールに含まれていない単語には影響はないと考えてしまいがちだが、実際には(大きくは影響しないかもしれないが)確率が下がることになるのだ。
ここで、同じメールを同じバケツに何度か学習させるとどういうことが起こるかというと、r 回再分類した場合、学習させたメールに含まれている単語については ( (k+m*r)/(Ns+o*r) )/( (k+m*r)/(Ns+o*r)+(l/Nh) ) となり、含まれていない単語については ( k/(Ns+o*r) )/( k/(Ns+o*r)+(l/Nh) ) となる。つまり、再分類したメールに含まれている単語が spam バケツから取り出されたものであるという確率は 1 回だけ再分類した場合よりも大きくあがるが、逆に、そのメールに含まれていなかった単語については、spam バケツから取り出されたものであるという確率は大きく下がることになる。再分類したメールと同じ内容のメールには(そのバケツに分類されるようになるという)効果がある反面、それ以外のメールには悪影響を及ぼす可能性があるということだ。
これを繰り返していくと、あるメールを再分類したときに、複数回再分類しなければ通常の場合と同じだけの効果を得ることができなくなってくる。極端なケースとして、最初から同じメールを 10 回ずつ再分類している場合、上の計算で出てきた Ns、Nh、k、l がそれぞれ 10 倍になっているはずだ。すると、メールを分類して通常と同じだけの効果を得るためには、今後もすべてのメールを 10 回ずつ再分類しなければならない。100 回ずつだったら、100 回ずつになってしまう。つまり、同じメールを何度も再分類していると、バランスを保つために同じメールを何度も再分類しなければならなくなるのだ。
これを避けるためには、同じメールは一度だけ再分類するようにすればよい。また、正しく分類されたメールを再分類させるという操作についても、程度の差はあるだろうが、同様の影響があるかもしれない(この場合にはコーパスが大きくなるという影響もある)。やはり、TOE にしたがって使うのがいいようだ。