綱引きに蛇口当てゲーム?! 楽しく学ぶベイズフィルターの仕組み:スパム対策の基本技術解説(4/4 ページ)
残念ながら、メールの世界では迷惑メールの送信を根絶することがまだできていません。そのため、受信時に必要なメールとそうでないメールを判別する必要があります。今回は単語の頻出度合いから必要なメールかどうかを判別する「ベイズフィルター」(ベイジアンフィルター)の動作理論と実装上の工夫を2回に分けて解説します(編集部)
単純ベイズ法を2つの蛇口でとらえる
いままで見てきたように、単純ベイズ法を用いたスパム判定では、すでに手元にあるスパムメール中に含まれている単語の出現頻度と、非スパムメール中に含まれている単語の出現頻度を計算することで、スパムメールの判定を行いました。
この計算の過程を、もう少し大ざっぱなモデルで説明してみましょう。
まず、無限の単語を含んだ蛇口を2つ考えます。1つは、スパム発生源の蛇口で、もう1つは通常メールの発生源の蛇口です。
そして、蛇口から流れ出た単語が袋に入りメールを生成するとします。それぞれの蛇口に含まれている単語の割合はもちろん違います。おそらく、スパムの蛇口に「無料」が含まれる割合は、非スパムの蛇口に「無料」が含まれる割合よりずっと大きなはずです。
スパム判定問題は、この蛇口を使うと次のようにモデル化できます。
いま、どちらか一方の蛇口から単語をばらばらと(有限個)こぼします。この単語を袋に入れた時、袋の中身はスパムの蛇口と非スパムの蛇口、どちらから出てきたものなのかをを当てるクイズがスパム判定問題です。その袋とは、あなたが受け取ったメールの文章そのものと考えてください。
今まで説明した計算式をこのモデルを使いおさらいをしましょう。
知りたいのは、袋の中身Fを見たとき、その袋がスパムの蛇口から出てきたものなのか、それとも非スパムの蛇口から出てきたものなのかです。例えば、袋の中身Fを見たあとに、その袋がスパムである確率は、P(スパム|袋の中身F)です。スパムの蛇口(原因)から、袋の中身F(結果)が作られたという、「原因→結果」の関係に注目すると、ベイズの定理は、袋の中身Fという結果から、スパムの蛇口という原因を推測する逆の「結果→原因」方向の問題を解くための方法なのです。
ベイズの定理は理解頂けたでしょうか。理論を理解していただいたところで後編では実装上の話(さまざまなスムージング手法など)を解説します。
Profile
三井物産セキュアディレクション株式会社 ビジネスデベロップメント部 主席研究員
草場 英仁(くさば ひでかず)
大手システム会社からベンチャー企業、ペネトレーション会社を経て現職へ。ルータ開発やファイアウォール開発、apacheや*BSDなどのOSS開発を経験し、低レイヤから高レイヤまで深いレベルでのハッキング技術を有する。
Exploit作成や手動でのペネトレーションテストなど、ツールではない本物の技術にこだわり、官公庁や企業へのハッキング教育、ペネトレーションテストに従事。その他、大学で非常勤講師、研究員などを勤めるかたわら、セキュリティ関連を中心に執筆多数。アカデミックな一面を持つ希少なエンジニア。最近はフォレンジックや携帯関連(端末・ガジェット・アプリなど)のハックにいそしむ。なお、同姓同名(読みは違う)の、どこにでもいる普通の変態な方とよく間違われるが http://twitter.com/E_I_J_I_R_O は私ではありません。
Copyright © ITmedia, Inc. All Rights Reserved.