綱引きに蛇口当てゲーム?! 楽しく学ぶベイズフィルターの仕組みスパム対策の基本技術解説(1/4 ページ)

残念ながら、メールの世界では迷惑メールの送信を根絶することがまだできていません。そのため、受信時に必要なメールとそうでないメールを判別する必要があります。今回は単語の頻出度合いから必要なメールかどうかを判別する「ベイズフィルター」(ベイジアンフィルター)の動作理論と実装上の工夫を2回に分けて解説します(編集部)

» 2008年03月05日 00時00分 公開
[草場英仁, 久保山哲二(監修)三井物産セキュアディレクション株式会社/UTCCR情報セキュリティコミュニティ]

付き合いたくないスパムと付き合うために

 受信者の意向を無視して、一方的に送りつけられる迷惑メール(スパム)は、いまやメールボックスを雑音でいっぱいにしてしまい、大事なメールを見過ごしかねないほどの量に膨れ上がり、大きな問題となっています。

 残念ながら、このようなスパムを発生源から断つような根本的な対策はいまだになく、私たちは、せめてメールサーバで受け取った大量のメール群からスパムと大事なメールを仕分けしてくれる仕組みに頼らざるを得ません。

 スパムを判定する方法は、次の2つに大別することができます。

  1. ヘッダを含むメールの中身から、スパムか否かを判定する方法
  2. スパム発信者の通信パターンから、スパムを遮断する方法

 本稿では前者の方法に着目します。メールを受け取った人にとっては、メールの中身を読めば、そのメールがスパムかそうでないかを判定するのは容易なことです。スパムの定義は、メールを読む人によって変わる可能性があります。例えば、まったくゴルフをしない人にゴルフの勧誘メールが来た場合はスパムといえるでしょう、しかし、逆にゴルフ好きの人にゴルフの勧誘メールが来た場合、それはスパムではないのかもしれません。

 米国最高裁判所の裁判官はこんな面白いことをいっています。「私は、ポルノを定義することはできませんが、見れば分かります」——スパムも、見れば分かるのです。つまり、スパムのイメージは個々の人の頭の中では、明らかなのですが、規則として書き出すことは非常に難しいのです。

 本稿では、前者の「ヘッダを含むメールの中身から、スパムメールか否かを判定する」手法の1つであるスパム対策の要素技術として、よく耳にする「ベイズフィルター」(ベイジアンフィルター)の仕組みについて解説します。

スパムと非スパムの「綱引き」

 ベイズフィルターの原理は、メール中に現れる言葉による、スパム陣地と、非スパム陣地の間の綱引きとして説明できます。

 例えば届いたメールに「情報技術」や「プログラミング言語」といった言葉が含まれていれば非スパム陣地に綱を引っ張り、「完全無料」や「男性会員」といった言葉が含まれていればスパム陣地に綱を引っ張ります。最終的に勝った陣営を、届いたメールの素性とするのです。

 普段、私たちがメールをスパムかどうか判断している方法も、おおよそこのようなものでしょう。そのような思考過程のモデルとして、「ベイズの定理」に基づいた手法が支持されています。

 私たちが「完全無料」や「男性会員」といった単語に怪しげな印象を持つのは、それまでに受け取ったスパムにより多くこのような単語【注1】が含まれているからです。ベイズ流の解釈を用いると、こういった学習の意味も自然にモデル化することができます。

【注1】

正確には何らかの規則により分割したトークンのことなのですが、説明上わかりやすいように単語と記載しています


 実際には、既読メールの単語の頻度情報を用いただけのシステムでも、取りあえずベイズフィルターと呼んでいることもあります。しかし、理想的にはこれから説明するベイズ流のメール分類手法が背後にあり、計算の高速化や現実的問題への対処のために、大胆な単純化や細工が施されていると考えることができます。

図1 ベイズフィルターは綱引きに例えられる 図1 ベイズフィルターは綱引きに例えられる
       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。