単純ベイズ分類器と変数選択問題

スパム分類

スパムフィルターの分類器として有名な単純ベイズ分類器は、ベイズの定理と説明変数の条件付(分類先に条件つけた)独立性を用いたシンプルな学習器である。

分類先として①正常先②スパム先として2つのカテゴリを考える。
あるメールを①②にずれかに分類するのが適当か判別したい。
そのために、あるメールが出現したときにそいつが
クラス①に属する確率:P(クラス=①|あるメール)
クラス②に属する確率:P(クラス=②|あるメール)
を計算し比較すればよい。

★単語の出現率
あるメールに含まれる単語をwi(i=1,,,n)としたとき、単語wiの出現率を
P(wi)と書くことにする。同様にクラス①と②に分類された先での条件付確率を
P(wi|クラス=①)
P(wi|クラス=②)
と書くことにする。

ここでは単純化のために、P(wi)は分かっているものとする。
注意1)本来はスパム分類先が増えるほど、P(wi)はよりよいものに更新されていく。

★独立性と条件付独立性
強引な仮説だが、任意の単語は全て独立に出現する物とする。
したがって、P(w1∧w2∧,,,,,,∧wN)=P(w1)*,,,,,,*P(wN)が成り立つ。
(単純ベイズ分類器といわれるゆえんである)
どうように条件付の場合
P(w1∧w2∧,,,,,,∧wN|クラス=①)=P(w1|クラス=①)*,,,,,,*P(wN|クラス=①)
P(w1∧w2∧,,,,,,∧wN|クラス=②)=P(w1|クラス=②)*,,,,,,*P(wN|クラス=②)
が成り立つ。

★あるメールの出現率
メールの出現率というといろいろな解釈ができるが、
(例えば毎日誰かれからメールが分かっているというときの今日の誰彼からのメールの出現率は100%ととも考えれる)
わかっている情報は構成されている単語のベクトルのみとする。⇒{w1、、、、wn}
(単語の世俗的な意味など考えない。あくまでここでは)

したがって以下のようにメールの出現率を定義する。
メールの出現率:=そのメールに含まれている単語の同時出現確率

数式化すると
あるメールは単語w1,w2,,,,,wNで構成されているとする、
あるメールの出現率は(出現する事象をMとすると)
P(M):=P(w1∧w2∧,,,,,,∧wN)

wiki参照
http://ja.wikipedia.org/wiki/%E5%8D%98%E7%B4%94%E3%83%99%E3%82%A4%E3%82%BA%E5%88%86%E9%A1%9E%E5%99%A8
(wikiの記述で事前事後の式と文章が逆になっていると思われる場所がある)

で私が携わっている分野はスパムメールフィルターの仕事ではなく大規模データベースからの知識発見なんだけど、こいつを使えないか現在考えている所。
実際に現実として出てくるデータで各説明変数が被説明で条件つけて独立であることなんか無いわけで、なるべく相関が低いかつ、説明力の高い変数の組でモデルを構築したい。
今回考えたのは、「よい変数の組」の基準として尤度を用いてみようということです。