Bayes)を用いたスパムメールの判別では、まず次の2つを前提条件とします。�「特定の単語」はスパムメールに高頻度に出現する。�「それ以外の単語」は非スパムメールに高頻度に出現する。よって、新しく受信されたメールに含まれた単語(トークン)を、過去に出現したスパムメール、非スパムメール(正当なメール)に含まれている単語と比較することによって、そのメールがスパムかどうかを判別可能になります。新しく受信されたメールの単語と過去に受信したメールの単語を比較するために、コーパスというデータベースを作成しておきます。これは、単語の出現頻度のデータベースのことです。スパムメール用のコーパスをスパムコーパス、非スパムメール用のコーパスを非スパムコーパスと呼びことにします。トークンの抽出方法には日本語のメールと英語のメールで若干の違いが生じ、あらゆる方法が提案されています。これに関しては後述しています。†ベイズ理論を用いてスパムメールか否か判定するためのフィルタのことをベイジアンフィルタと呼びます。ベイジアンフィルタは、メールを判定した後に単語を新たに学習し、出現確率のデータを更新できるという特徴を持ちます。この特徴により、それ以降のメールの判定の精度が向上していきます。学習させればさせるほど判定の精度が向上するということです。この特徴は長いスパンで考えたときにとても有効です。スパムメールの本文内容にも時期によって多く使われている単語は変わってきます。文字列だけでフィルタリングするような方式を採用していたとき、流行遅れの単語さえもフィルタリング用の単語として登録してしまうことになり、スパム判定の精度を下げてしまう可能性があるからです。それに比べて、ベイジアンフィルタの場合は、学習によってスパムメールの流行に対応することができます。Grahamによって提案された方式です[b1][b2]。このモデルでは、新しいメールが受信されると、次の手順でそのメールがスパムメールである確率を求めます。1:まず、メール内の各単語のスパム確率を求めます。ページ内に出現する各単語wiに対して、wiを含むメールがスパムメールである確率をp(wi)は、学習データであるコーパスを用いて次のように計算します。gi:非スパムコーパス中にwiが出現した回数bi:スパムコーパス中に出現した回数ngood:非スパムコーパス中のメールの総数nbad:スパムコーパス中のメールの総数a:バイアス(定数)バイアスは、フィルタの通過・遮断を決定する要素のひとつです。[b1]ではスパムメールがフィルタを通過してしまうことより、非スパムメールをフィルタにより誤って遮断してしまうこと(false-positive)のほうが、メール受信者にとって損害が大きいという考えにより、非スパムメールの誤遮断が起きにくいようにバイアスをかけます。そのため、a=2としています。これらを[b1]に準拠して厳密に書くと、次のようになります。非スパムへの判定にバイアスをかけるために非スパムの出現回数を2倍にして計算し、出現回数が5回以下のものは計算から除外しています。P(wi)の最小値は0.01、最大値は0.99とします。2:メールのスパム確率を求めます。新しいメールがフィルタに到達すると、それを単語に分解し、ステップ1のように計算して、特徴的なM個の単語w1,w2,...,wnを抽出します。特徴的というのは、その単語のスパムメールの確率P(wi)が0.5から遠く離れていることです。[b1]では、経験則からn=15、即ち特徴的な15個の単語を抽出しています。いった単語の上位n個を抽出して、その結合確率によって、メールがスパムメールである確率p(D)を次の式で求めます。p(D)があるしきい値tを上回った場合に、そのメールはスパムメールと判定します。[b1]では、t=0.9としています。0.5ではなく0.9と高めに設定しているのは、false-positiveを割ける方法にバイアスをかけるためです。よって、スパムメールか否かを判定します。ステップ2で求めた確率P(D)が0.9以上であればスパムメール、0.9未満であれば非スパムメールとします。Grahamのベイジアンフィルターの実験では、それぞれ4,000通のメールを学習データとして用いており、その結果スパムメールは99.5%、非スパムメールは99.7%という判別的中率を出しています。RobinsonがGraham方式を改良した方式です[c1][c2]。1:まず、Graham方式の単語ごとにスパムメール確率p(wi)をバイアスをかけずに求めます。a=1で計算するわけです。そのp(wi)を用いて、f(wi)は次のように計算されます。x:今まで1度もメールの中に出現していない単語が初めてメールに出現したときに、そのメールがスパムメールである予測確率s:xの予測に与える強さ(strength)n:単語wiの出現回数xとsの値は、フィルタのパフォーマンスが最適化されるように設定すべきですが、とりあえずのところx=0.5、s=1が妥当であるとされています。2:あるメールがスパムメールである確率は次のH(Hamminess:ノンスパム性)とS(Spaminess:スパム性)を計算し、I(Indicator:指標)で与えられます。C-1:逆χ2関数3:スパムメールかどうかを判定するしきい値tについては[c1][c2]では特に指定されていません。判定結果を単にスパムメールと非スパムメールの2択だけにするのではなく、Iの値が0.5に近いときは「どちらともいえない」という判定をすることにより、誤判定を減らすことができます。このRobinson方式がGraham方式と比べて優れているのは、単語wiの出現回数が少ない場合(n=0を含める)をうまく扱えることです。Graham方式ではある単語wiがスパムメールのみに数回出現した場合、そのメールのスパムメール確率p(wi)は1になってしまうが、その程度の情報で単語wiに最大のスパムメール確率を与えるのはやりすぎといえます。Robinson方式では、単語wiの総出現回数nが小さい場合にはp(wi)の比重が小さくなるようにできているので、まだ情報不足であるということをf(wi)に暗に加味することができます。学習が繰り返されるによって、総出現回数nが大きくなっていって、f(wi)の値は漸近的にf(wi)の値に近づいていきます。n=0の場合にはf(wi)=xとなります。コンピュータ講座(1595d)。