【Excelで実演!】ナイーブベイズ分類器でクレームメールを見分けてみる

ベイズ推定では、古いデータによる確率を新しく得られたデータによって更新していきます。

古いデータによる確率を事前確率、新しく得られたデータを尤度、更新された確率を事後確率といい、次のように表します。

事後確率=尤度×事前確率

>> 「ベイズの定理」の使い方を具体例を使ってわかりやすく解説【初心者向け】

 

ベイズの定理の復習

ここまでは難しくないと思うのですが、式で書くと次のようになり、少し分かりづらくなります。

この式を理解するには、迷惑メール分類器で考えると分かり易くなります。

 

まず、今まで迷惑メールだった割合を事前確率とします。

迷惑メールの数/全体のメールの数で求められますね。

迷惑メールを受け取るという事象をY1、通常メールを受け取るという事象をY2とすると、迷惑メールを受け取る事前確率はP(Y1)、通常メールを受け取る事前確率はP(Y2)と書けます。

この会社では全メールのうち迷惑メールが70%、通常メールが30%とします。

 

次に、迷惑メールの中に「無料」という単語が含まれていた割合を調べます。

面倒臭いけど、やろうと思えば力業でできますね。

同様に、通常メールの中に「無料」という単語が含まれていた割合も調べます。

これが尤度になります。

迷惑メールを受け取ったという条件の元で「無料」という単語が含まれる確率なので、条件付き確率の記号を使ってP(X|Y1)と書きます。

>> 「条件付き確率」の使い方を具体例を使ってわかりやすく解説【初心者向け】

 

次に、迷惑メールを受け取って、かつその中に「無料」という単語が含まれる確率を求めます。

これは同時確率といって、掛け算で求められます。

同様に、通常メールを受け取って、かつその中に「無料」という単語が含まれる確率も求めます。

 

最後に、青で網掛した部分だけで考えます。

青で網掛した部分は、迷惑メール/通常メールに拘わらず、「無料」という単語が含まれる事象を表します。

左側の部分は、「無料」という単語が含まれるメールを受け取ったという条件の下で、それが迷惑メールである確率(条件付き確率)を表します。

条件付き確率なので、P(Y1|X)と書けます。

計算すると87.5%になりました。

つまり、通常は迷惑メールを受け取る確率は70%なのですが、「無料」という単語が含まれるメールは、その確率が87.5%にまで上昇するということです。

 

これで式の意味が分かったと思います。

分からない場合は何度も読み返せば必ず分かりますので、頑張って下さい。

 

ナイーブベイズ分類器の仕組み

次にナイーブベイズ分類器について説明します。

これは簡単にいうと、先ほどの事例を複数の単語について行うだけです。

しかも、

の式の分母を無視します。

 

なぜ無視しても大丈夫なのか?

 

先ほどの例で見てみましょう。

「無料」という単語が含まれるメールが迷惑メールである確率は87.5%でした。

逆にいうと、通常メールである確率は12.5%です。

「あなたはどちらだと思いますか?」

と聞かれれば、この数字を知っているあなたは間違いなく迷惑メールですと答えるでしょう。

 

それでは迷惑メールである確率が51%だった場合はどうでしょう?

それでも、どちらか一方を選べといわれたら迷惑メールと答えるでしょう。

このように、どちかかを選ぶ場合には、わざわざ細かい確率まで求める必要はないのです。

どうせ87.5%も51%も同じなのですから。

先ほどの例でいうと、42%と6%まで分かっていれば十分です。

42%の方が大きいのですから、迷惑メールと判断できます。

 

それでは42%と6%はどうやって計算したか?

42%はP(X|Y1)P(Y1)、6%はP(X|Y2)P(Y2)ですね。

P(X|Y1)P(Y1)=「無料」が迷惑メールに含まれる確率(尤度)×迷惑メールである事前確率

P(X|Y2)P(Y2)=「無料」が通常メールに含まれる確率(尤度)×通常メールである事前確率

 

これらはいずれも分子です。

だから分母は無視してよいのです。

 

先ほどの例では「無料」という単語についてだけ見ていましたが、単語が増えても同じことです。

試しに「無料」「出会い」「物流」という3つの単語が含まれているメールを想定してみましょう。

迷惑メールに「無料」が含まれる確率は60%、通常メールに「無料」が含まれる確率は20%でしたが、「出会い」と「物流」は以下の通りとします。

「出会い」・・・迷惑メール70%、通常メール10%

「物流」・・・迷惑メール1%、通常メール30%

 

迷惑メールである事後確率と通常メールである事後確率は、次のように計算できます。

 

迷惑メールである事後確率

=迷惑メールである事前確率×迷惑メールに「無料」が含まれる尤度×迷惑メールに「出会い」が含まれる尤度×迷惑メールに「物流」が含まれる尤度

=70%×60%×70%×1%

=0.3%

 

通常メールである事後確率

=通常メールである事前確率×通常メールに「無料」が含まれる尤度×通常メールに「出会い」が含まれる尤度×通常メールに「物流」が含まれる尤度

=30%×20%×10%×30%

=0.18%

 

迷惑メールである確率の方が1.5倍くらい高いですね。

従って、このメールは迷惑メールと判断します。

きっと物流業者と荷主のビジネスマッチングの案内メールだったのでしょう。

 

このようにナイーブベイズ分類器の仕組みはとても単純です。

これは、各変数が独立であると仮定しているためです。

変数とは、この場合は「無料」などの単語です。

独立とは、「無料」と「出会い」と「物流」という単語の使われ方に関連性がないということです。

でも実際は「無料」と「出会い」は一緒に使われることが多いですね。

ですので、本当は独立ではないのですが、独立と仮定しても十分に実用に耐えるためよく用いられています。

ナイーブベイズのナイーブとは幼稚で単純という意味です。

変数は独立であるというように、幼稚で単純に仮定した仕組みだということです。

だから簡単なのです。

 

クレームメール判定に応用

上の例では迷惑メールか通常メールかの二者択一でしたが、ナイーブベイズ分類器は3つ以上のカテゴリーに分類する時にも使えます。

そこで、メールの中に含まれる単語で、クレームメール感謝メールその他のメールの3カテゴリーに振り分けるナイーブベイズ分類器をExcelで表現してみましょう。

 

まず、今までに受信したメールを分析して、クレームメール/感謝メール/その他メールのそれぞれのメールに「残念」、「遅い」、「原因」、「感謝」、「丁寧」、「素早い」の各単語が含まれる確率を調べたら下記のようになりました。

これが尤度になります。

 

この会社では全メールのうち、クレームメールが20%、感謝メールが10%、その他メールが70%を占めます。

これが事前確率になります。

今、受信したメールを調べたら、「残念」、「遅い」、「丁寧」、「素早い」の4単語が含まれていました。

このメールは、どのカテゴリーに分類すべきでしょうか?

 

これをExcelでやるには、次のようにします。

 

黒字は過去データを調べてベタ打ち、青字が計算するセルです。

尤度事前確率を掛けて事後確率を計算しているだけです。

たったこれだけですが、クレームメールの事後確率が0.0004で一番大きいため、このメールはクレームメールと判定されました。