ベイジアン (bayesian)、ベイズ (bayes)、ナイーブベイズ (naive bayes) ってなんですか?

ベイジアン (bayesian)、ベイズ (bayes)、ナイーブベイズ (naive bayes) という言葉は、POPFile や類似のメールフィルターの議論においてよく使われます。これらはたいていの場合、数学の公式のことを言っています。

Thomas Bayes は 1700 年代に確率論を研究した人で、彼の業績は ベイズ統計(Bayesian Statistics)として知られています。そして、この方法は、最近メールフィルタリングの分野でよくとりあげられるようになってきました。それはグループの異なるメッセージを分類するのに非常によい成績を発揮するからです。

POPFile はベイズの定理を用いて、あるメールが work、personal、spam のどのバケツに分類すべきかを計算します。そのために、P(work|E)、P(personal|E)、P(spam|E) のそれぞれを計算します。ここで、E は新しく届いたメール、P(work|E) はメール E が 'work' バケツに含まれる確率(他も同じ)です。この中からいちばん大きな確率のものを選ぶことによって、POPFile は自動的に適切なバケツにメールを分類することができます。POPFile はそれぞれのバケツに現れる単語の頻度を確認し、ベイズの定理を適用することによってこれらの確率を計算するのです。

上記の多くは、古い古い POPFile のインデックスからの情報です。私はこの分野や歴史に詳しくないので、最初、あるいは二つ目のパラグラフに間違いがあれば修正してください。三つ目のパラグラフは、古い古いインデックスをそのまま利用しています: http://popfile.sourceforge.net/old.html

上記ページにある以下のリンクもドキュメントに含めたいと思います: http://sourceforge.net/docman/display_doc.php?docid=13334&group_id=63137

(以下は、上記リンク先ドキュメントの翻訳です)

POPFile はどのようにしてメールを分類しているのか (How POPFile does email classification)

POPFile はメールに含まれる単語によって特定のバケツにメールを分類する確率を計算するために ナイーブ・ベイズ法(Naive Bayes)と呼ばれる技術を使っています。

バケツは単語とそれぞれの単語の頻度のリストで構成されています。いくつかのバケツをあわせたものはコーパスと呼ばれ、メールを分類するバケツ、メールに含まれる個々の単語が特定のバケツに含まれる確率、メールがバケツに含まれる確率を決定します。

B1 から Bn までの n 個のバケツがあり、W1 から Wm までの m 個の単語があると仮定します。私たちは、特定のメール E が含まれるべきバケツを知りたいのです。

そのためには、それぞれのバケツ Bi について、P(Bi|E) を計算します。これは、ベイズの定理を使用することによって以下のように計算できます。

                       P(E|Bi) x P(Bi)
            P(Bi|E) =  ---------------
                         P(E)

ここで、P(Bi|E) はメール E が バケツ Bi に含まれる確率です; これは、E に含まれる単語のうち、バケツ Bi に現れる単語から計算されます。

P(E|Bi) はバケツ Bi について、E を構成する単語がバケツの中に現れる確率です。

P(Bi) は与えられたバケツが選ばれる確率です; これは、バケツ Bi に分類されることになるいずれかのメールが選ばれる確率でもあります。

P(E) はこの特定のメールが現れる確率です。

E をどのバケツに分類するかを計算するためには、P(Bi|E) をそれぞれのバケツについて計算し、最大のものを探す必要があります。どの計算においても、P(E) を使用するので、これを無視して

            P(Bi|E) = P(E|Bi) x P(Bi)

を計算することにします。

まず、E を E に含まれる単語リストに分割して、これらを E1 から Eo と呼びます。P(E|Bi) を計算するためにはそれぞれの単語の確率の積を計算します。これはそれぞれの単語が Bi に含まれる確率です。ここが “naive”(単純な)ステップなのです; 我々は、単語が出現する確率は他の単語とは関係なく独立であると仮定しています。しかし、実際には殆どの言語においてこの仮定は正しくありません!

            P(E|Bi) = P(E1|Bi) x P(E2|Bi) x ... x P(Eo|Bi)

それぞれのバケツについて、P(Ej|Bi) は Bi に現れた Ej の回数を Bi に含まれるすべての単語の数で割ることによって計算されます。

P(Bi) は Bi に含まれるすべての単語の数を、すべてのバケツの単語を足し合わせたもので割ることによって計算されます。

最終的に、P(Bi|E) はそれぞれのバケツについて

            P(Bi|E) = P(E1|Bi) x P(E2|Bi) x ... x P(Eo|Bi) x P(Bi)

として計算され、そのうちから最大のものを選ぶことになります。

原文

 
jp/glossary/bayesian.txt · Last modified: 2009/03/02 15:30 by amatubu

Should you find anything in the documentation that is incomplete, unclear, outdated or just plain wrong, please let us know and leave a note in the Documentation Forum.

Recent changes RSS feed Donate Driven by DokuWiki
The content of this wiki is protected by the GNU Fee Documentation License