590 likes | 829 Views
ベイジアンネットワーク ~ spam フィルタを作ってみよう~. spam メール. 元ネタ 味付き豚肉の缶詰 Homel Foods 社 イギリスのコメディ 同じ言葉を連呼 妨害行為 しつこい= SPAM. 発表の流れ. コンピュータが扱う複雑な問題 問題のモデリング SPAM フィルタリング ベイジアンネットワーク ベイジアンについての基礎知識 確率の話,ベイズの定理 実習 ベイジアンネットワークを構築してみよう まとめ. コンピュータが扱う複雑な問題. 実世界の現象など 経済システム,社会システム,自然科学 全体の構造が把握できない
E N D
ベイジアンネットワーク~spamフィルタを作ってみよう~ベイジアンネットワーク~spamフィルタを作ってみよう~
spamメール • 元ネタ • 味付き豚肉の缶詰 • Homel Foods社 • イギリスのコメディ • 同じ言葉を連呼 • 妨害行為 • しつこい=SPAM
発表の流れ • コンピュータが扱う複雑な問題 • 問題のモデリング • SPAMフィルタリング • ベイジアンネットワーク • ベイジアンについての基礎知識 • 確率の話,ベイズの定理 • 実習 • ベイジアンネットワークを構築してみよう • まとめ
コンピュータが扱う複雑な問題 • 実世界の現象など • 経済システム,社会システム,自然科学 • 全体の構造が把握できない • 様々な要素が絡み合って結果が出る • 不確定な要素が多いが,ある程度規則性がある • 部分的なデータからある程度は予測可能
複雑な問題を扱うのに適している 厳密なモデルと柔軟なモデル • 厳密なモデル • 確定的な表現 • rule base(if thenや述語論理),決定木 • 柔軟なモデル • 曖昧さを許す表現 • 確率,マルコフモデル,ベイジアンネットワーク
ベイジアンネットワーク • 以前に使われてきた多くのモデルを包含し,表現力が高い • 決定木,マルコフモデル • ベイジアンの適用分野 • ヒューマンモデリング • カイル君 • トラブルシューティング • spamメールのフィルタリング
従来のspamフィルタリング • 『spam/spamではない』を定義する規則 • spam送信業者アドレスブラックリスト • タイトルでのフィルタリング • 送信側と受信側のいたちごっこ • 許可したアドレス以外のメールは受け取らない • PCアドレスから携帯に宛てたメールは届かない • 厳しすぎる制約
最近のspamフィルタリング • ベイジアンフィルタを使ったフィルタリング • 使用されている単語や単語列からspamである確率を算出 • 学習機能付き • ベイジアンフィルタを使っているソフトウェアたち • SpamBayes,POPFile,bayespam,Mozilla Spam Filtering,BOGOFILTER,BkASPil,bsfilter,ifile,PASP,spamoracle,Spam Assassin,Annoyance Filter,Bspam
ベイジアンネットワークの動作概要 • 確率についての簡単な説明 • 独立と従属 • ベイズの定理 • ベイジアンネットワークの説明 • モデルの作成
確率の独立と従属 • 独立 • 2つ以上の事象の確率が互いの結果によって変化しない • 2つのさいころA,Bを振ったときに,Aは6が出る確率,Bは2以下が出る確率
確率の独立と従属 • 従属 • 2つ以上の事象の確率が互いの結果によって変化する • 10本中3本の当たりくじがある宝くじを,A君B君が順番に引く確率
ベイズの定理 • 従属の関係にある事象で,一方が判明したときに,他方の確率を求められる • advertisementという単語が含まれると判明したときに,そのメールがspamである確率
目的 • ベイジアンネットワークを使ってspamメールフィルタを作る spamフィルタ
アウトライン • 実習準備 • 簡単なベイジアンネットワークを作ってみる • SpamAssasinを使ってみる
実習準備 • 実習準備 • 簡単なベイジアンネットワークを作ってみる • SpamAssasinを使ってみる
用意する物 • BayoNet • 初心者でも簡単にベイジアンネットが作れるソフト
とりあえずアーカイブを置いたので,取って下さいとりあえずアーカイブを置いたので,取って下さい • Bayonet • Windows版 http://www.ht.sfc.keio.ac.jp/~ryo/a.exe • Linux版 http://www.ht.sfc.keio.ac.jp/~ryo/a.tar.gz
実習その1 簡単なベイジアンネットワークを作ってみる • 実習準備 • 簡単なベイジアンネットワークを作ってみる • SpamAssasinを使ってみる
の目的 実習その1 • とりあえず簡単なベイジアンネットワークは作り,spamをフィルタする過程を学ぶ
簡単なベイジアンネットワークを作ってみる • spam特有の単語解析 • Bayonetを用いspam特有の単語リストからベイジアンネットワークを作成 • ベイジアンネットワークからspamである確率を求める
単語の解析 I have a pen.
spamに出てくる頻度順に単語をソート • Free • poker • casino • advertisement • !!!! など
単語解析するの大変なんで • とりあえずアーカイブを以下に置いたので,取って下さい • spam単語リスト • http://www.ht.sfc.keio.ac.jp/~ryo/b.csv
単語解析するのは大変なんで • とりあえずアーカイブを以下に置いたので,取って下さい • spam単語リスト • http://www.ht.sfc.keio.ac.jp/~ryo/b.csv
メールがspamだったかどうか spamに頻出する単語 spam単語リスト • 5つ目のメールは”Free”という単語を含みspamではなかった
簡単なベイジアンネットワークを作ってみる • spam特有の単語解析 • Bayonetを用いspam特有の単語リストからベイジアンネットワークを作成 • ベイジアンネットワークからspamである確率を求める
Bayonetの起動 • Execute without license keyを選択 • 試用版なので15分たつと何事もなく落ちます(TOT) • そのうちSFC全体でライセンスを買うかもらしいっす
DST Type FileDSTSearch algorithm Tree SelectionInformation Criteria C4.5
ある単語を選択し,CPTタブをクリックすると...ある単語を選択し,CPTタブをクリックすると... この値が...
isSpamの項目をし,CPTタブをクリックすると...isSpamの項目をし,CPTタブをクリックすると... この値が...
ある条件下においてspamである確率を示す 条件 spamかどうか? 90% 10%
TRUE FALSE FALSE TRUE ある条件下においてspamである確率を示す advertisement poker free casino isSpam? 90%でspamだと思います
簡単なベイジアンネットワークを作ってみる • spam特有の単語解析 • Bayonetを用いspam特有の単語リストからベイジアンネットワークを作成 • ベイジアンネットワークからspamである確率を求める
それぞれの単語がメールに含まれていたかを手動入力それぞれの単語がメールに含まれていたかを手動入力 右クリック メールに含まれていた メールに含まれて いなかった
適当なメールを頭の中で空想し,出てきた単語の値を1.0に変える(isSpam以外)適当なメールを頭の中で空想し,出てきた単語の値を1.0に変える(isSpam以外) 右クリック
spamの項目以外全部入れたら一番右の雷ボタンをPUSH!!spamの項目以外全部入れたら一番右の雷ボタンをPUSH!!
実習その2 SpamAssasinを使ってみる • 実習準備 • 簡単なベイジアンネットワークを作ってみる • SpamAssasinを使ってみる
の目的 実習その2 • 学習したメールの量と,精度の相関関係を学ぶ もっとたくさんのメールから学習し,spamフィルタを 強化しなければならない