数式からみるナイーブベイズと尤度

スポンサーリンク

ナイーブベイズとは…確率とベイズの定理に基づいたクラス分けの手法

問題設定と事前確率

ナイーブベイズはクラス分け手法です.
例えば通常のメールと迷惑メールを分ける際に使用されます.
この時,ナイーブベイズはメールを”通常のメール”と”迷惑メール”という2つのクラスに分類しています.
以下通常のメールの集合をN,迷惑メールの集合をS(SpamのSです)と表します.
例えば

\[N = \{N_1, N_2, ..N_{10}\}\]

みたいな感じです.このときNは10個の通常のメールからなる集合です.

同様に迷惑メールSに関しても

\[S = \{S_1, S_2, ..S_{4}\}\]

みたいになっています(数は適当です).このときSは4個の迷惑メールからなる集合です.

この時メール全体の集合をU,

\[U=N \cup S=\{N_1, N_2, ..N_{10},S_1, S_2, ..S_{4}\}\]

このような状況で新たにメールが1件届いたときそれが通常のメールである確率はどれほどでしょうか.
単純に考えるとこれまで届いたメールが全部で14件で通常のメールが10件だったので

\[p(N)=\frac{|N|}{|U|}=\frac{10}{14}=0.71…\]

となります.ここで\(| |\)は集合の要素数という意味です.例えば今回の場合\(|N|\)はNの要素数10を表しています.

つまり,これまでに届いたメールの情報から新しくメールが届く前に通常のメールが来る確率が7割ほど,迷惑メールがくる確率が3割ほどということがわかります.
このように事前に得られている情報から推定した確率\(P(N), P(S)\)を事前確率と呼びます.

尤度

もう一つ事前の情報から求めることのできるものが存在します.それが尤度です.
これまでに経験したメールの文面から通常のメールではこの単語が多い,迷惑メールではこの単語が多いなどの情報が得られます.それらを数値的に表現したものが尤度です.
今回の例ではその文面が届いたときにそれが通常のメールだとするとどのくらい尤(もっと)もらしいかを表しています. 

これまでの経験から通常のメールNに100万円と書いてある確率が\(p(100万円|N)=0.001\)だったとします.
\(p(A|B)\)は条件付確率でBという事象が起こったときにAである確率を表しています.

この時尤度fは
\[f(N|100万円)=0.001\]
と書かれます.
つまり,通常のメールに100万円という単語が現れることはほとんどないということを意味しています.

また条件付確率の中身を逆にしただけじゃないかと思ったそこのあなた!その通りです.
では逆にすると何が違うのでしょうか.
\(p(100万円|N)\)は通常のメールに100万円と書いてある確率でしたが,
\(f(N|100万円)\)は100万円と書いてあったときに通常のメールである確率ではなく最もらしさです.

うぅ,尤度も確率といいたい.でも言えないんです.
私が今のところ尤度と確率の違いについて最もしっくり来ているのは以下の説明です.
“確率はすべての事象について積分すると1だが,尤度は積分しても1になるとは限らない.”
つまり
\[p(100万円が文中にある|N)+p(100万円が文中にない|N) = 0.001+0.999 = 1\]
ですが,
\[f(N|100万円)+f(S|100万円) = 0.001+0.700 = 0.7001\]
みたいな感じです.
0.700は適当な値ですが迷惑メールに100万円という文字が出現する確率です.
迷惑メールに100万円という文字が出現する確率がかならずしも0.999になるわけではないことはわかっていただけると思います.

今回は100万円という文字列に対する尤度を考えましたが,他にもメールに出てくる様々な文字列の集合\(W=\{w_1,w_2,…,w_n\}\)の要素に対する尤度を考えることができます.

この尤度があることで新しいメールの文面に使われている文字列から,それが通常のメールの確率が高いのか,迷惑メールの確率が高いのかを計算することができます.

事後確率

新たにメールが1通届いた状態を考えます.
するとメールの文面という新たな情報が得られます.
例えば”100万円が当選しました.振り込むので銀行口座を教えてください.”なんて書いてあればこのメールはスパムだなと予想がつくわけです.
こんな文章が書いてあるメールが友達から送られてくる確率\(p(N|100万円)\)はほとんど0です.

このように私たちが普段何気なく行っている,新たに得られた文面情報を利用したスパムと通常メールの見分けを数式ベースで説明したものがナイーブベイズです.
新たに得られた情報で修正した確率は事後確率と呼ばれ

\[p(N|100万円)=\frac{f(100万円|N)p(N)}{p(100万円)}\]
\[p(S|100万円)=\frac{f(100万円|S)p(S)}{p(100万円)}\]

と書けます.
分子の計算は事前確率に尤度をかけることで新たに文面から得られた情報で確率の修正を行っています.
分母は総和が1になるように補正しているだけなの基本的には気にしなくて大丈夫です.
また,通常か迷惑メールかを判断する場合にも分母は同じなので基本的に分子の大きさだけ気にすればよいです.

今回の場合は
\[p(N|100万円) \propto f(100万円|N)p(N) = 0.001 \times 0.71 = 0.0007…\]
\[p(S|100万円) \propto f(100万円|S)p(S) = 0.700 \times 0.29 = 0.203\]

で\(p(S|100万円)\)の方が大きいので迷惑メールと判断します.

スポンサーリンク

疑問

スカラーの絶対値と集合の濃度(加算集合においては要素数)を同じ\(|\cdot|\)で表現するのには何か深い理由があるのでしょうか.

コメント

タイトルとURLをコピーしました