条件付き確率とベイズの定理)」についてのページです。統計webの「統計学の時間」では、統計学の基礎から応用までを丁寧に解説しています。大学で学ぶ統計学の基礎レベルである統計検定2級の範囲をほぼ全てカバーする内容となっています。 ベイスの定理と応用 –確率論i– 参考資料 2009/01/08, 西岡 1 ベイズの公式の応用例 近年, 条件付き確率とベイスの公式 (1) p[a/b] ≡p[a∩b]p[b](ベイズの公式)がマーケッティング理論や人工知能などに適用され, 確率論を社会現象へ応用する強力なツールとして, 注 目を集めている. 前回、「理由不十分の原則」と「ベイズ更新」を紹介しましたが、今回は迷惑メールを判定するための仕組みのひとつである「ナイーブベイズフィルタ」について紹介します。 とても簡単に迷惑メールが判定できる有名な仕組みなので、ぜひ覚えておきましょう。 「ナイーブベイズフィルタ」とは、ベイズフィルタのなかでも最も単純な方法で、迷惑メールの判定をする場合は、言葉の相関を無視するものになります。 では、早速次の例題を解いてみましょう。迷惑メールか通常メールか調べるために、3つの単語「アイドル」「無料」「科学」に着目することにします。このとき、それぞれの迷惑メールと通常メールの確率は、「アイドル:0.75, 0.125」「無料:0.7, 0.2」「科学:0.2, 0.5」でした。そして、あるメールを調べたところ、「アイドル」「無料」「科学」の順番で単語が検索されました。このメールは迷惑メールか通常メールのどちらに分類すべきでしょうか?ただし、迷惑メールと通常メールの割合は6:4とします。 これまでと同様に、データDを3つの単語「アイドル」「無料」「科学」として、仮定Hを「迷惑メール」と「通常メール」としてベイズ定理を適応しましょう。 まずは1つ目の単語「アイドル」についてベイズ定理で書き出すと、$$\mbox{「アイドル」が検出されたときに迷惑メールである確率}\\$$\mbox{「アイドル」が検出されたときに通常メールである確率}\\ になりますよね。この2つの式は分母が同じなので比較するときは無視できます。迷惑メールと通常メールの割合6:4を代入して式を書き直すと、$$\mbox{「アイドル」が検出されたときに迷惑メールである確率}\\$$\mbox{「アイドル」が検出されたときに通常メールである確率}\\ さらに、2つ目の単語「無料」は1つ目の結果を「迷惑メールである確率」「通常メールである確率」に代入して計算するので、$$\mbox{「無料」が検出されたときに迷惑メールである確率}\\$$\mbox{「無料」が検出されたときに通常メールである確率}\\ 同じように、3つ目の単語「科学」は2つ目の結果を「迷惑メールである確率」「通常メールである確率」に代入して計算するので、$$\mbox{「科学」が検出されたときに迷惑メールである確率}\\$$\mbox{「科学」が検出されたときに通常メールである確率}\\ あとは、実際の値を代入して計算すると、$$\mbox{「アイドル」「無料」「科学」が検出されたときに迷惑メールである確率}\\$$\mbox{「アイドル」「無料」「科学」が検出されたときに通常メールである確率}\\ となり、迷惑メールに分類すべきだとわかりました。 今回は、迷惑メールを判定するための仕組みのひとつである「ナイーブベイズフィルタ」について紹介してきました。 とても簡単に迷惑メールが判定できる有名な仕組みなので、ぜひ覚えておきましょう。本が売れない時代になりましたが、読書は楽しいし、人生が変わるきっかけにもなるので、一人でも多くの人に読書の面白さを知って欲しいという想いで書いているブログです。本が売れない時代になりましたが、読書は楽しいし、人生が変わるきっかけにもなるので、一人でも多くの人に読書の面白さを知って欲しいという想いで書いているブログです。 ベイズの定理の重要な応用として、スパムフォルダがある。スパムフォルダについて、以下の問いに答えよ。 迷惑メール(スパム)が大量に届いて困っている人がいた。全部で100通届くメールのうち90通は迷惑メールであり、これでは仕事にならない。 単純ベイズ分類器を使う有名な例として、迷惑メールの分類があります。具体例で説明していきます。 例題 あるメールを調べたら、次の順で以下単語が1回ずつ検索された。このメールが迷惑メールか通常メールかを分類せよ。 プレゼント 無料 天気 迷惑メールの自動振り分けなんかもこれで、迷惑メールであるかそうでないかの2つのカテゴリを割り当てる事に対応します。 文書分類タスクをナイーブベイズで解く際に用いられる最も単純なモデルは多項分布モデルです。 ただし、迷惑メールと通常メールの割合は6:4とします。 これまでと同様に、データdを3つの単語「アイドル」「無料」「科学」として、仮定hを「迷惑メール」と「通常メール」としてベイズ定理を適応しま … =============================================ナイーブベイズ分類器、あるいは単純ベイズ分類器という分類器について解説したいと思います。何それ?という方。まずはわけがわからないとしてもWikipediaのエントリを見てみましょう。上の説明でよくわかったという方はこれ以上先に進む必要はありません。ナイーブベイズ分類器は、一言でいうと、分類問題ってベイズの定理を使えば解けるんじゃね?というものです。入力 $X$ が与えられた時に出力 $Y$ が得られる確率 $P(Y|X)$ は以下の等式で表す事が出来ます:$$これがベイズの定理です。 $P(Y)$ は事前分布と呼ばれ、 $P(X|Y)$ は尤度とか条件付き確率とか呼ばれます。例を挙げると、のように、Xには何らかの起こった事象や入力データを、Yにはそこから推論したい事柄などを当てはめるわけです。ナイーブベイズ分類器は上の式の右辺を求めるわけですが、右辺を完璧に求めたいわけではなく、あるXに対して$$分母の $P(X)$ がなくなりました。最終的にはこの式の右辺を求めて、右辺が最大になるYを答えとして求める事になります。このままでは単なるベイズ分類器です。ナイーブベイズ分類器は確率分布 $P(X|Y)$ をシンプルな分布に限定します。いま、 Xはなんかよくわからんものですが、これを多次元変数であるとしましょう:$$なので、みなさんは自分で解きたい問題を頑張って多次元変数にする必要があります。X=俺の今の気持ち、とかしても無理です。$$これがナイーブベイズ分類器です。以上終わり。・・・とこれで終わってしまうと味気なさすぎるので、もうちょっと突っ込んでいきます。今、学習データとしてD個の正解を今持っているとします:$$$(S_j, T_j)$ は入力と出力の正解データのペアを表しています。また、取りうるYの値は離散値で、1, 2, ..., Kのうちのどれかだとします。ちゃんと書くと、$$です。正解データはそれぞれ独立していて、データの順番は関係ないものとします。さて、求める確率分布はこれら正解データをちゃんと再現出来ていなければなりません。$S_1$ だった時 $T_1$ で、かつ $S_2$ だった時 $T_2$ で、かつ ... で、かつ $S_D$ だった時 $T_D$ である確率を最大化する先ほどのベイズモデルをちょっと具体的にして、$$とします。ここで $\Theta = \{ \theta_1, \theta_2, ..., \theta_M \}$、$\Phi = \{ \phi_1, \phi_2, ..., \phi_L \}$ は確率分布を特徴付けるパラメータです。この式を使うと、最大化する確率は$$と書くことが出来ます。この時点で、変数はもはや $\Theta$ と $\Phi$ だけです。つまり、やるべきことはMを最大にする $\Theta$ と $\Phi$ を求める事です。この式はもう少しだけ整理することが出来ます。 $T_j$ は1からKのどれかなので、正解データを綺麗に1から順番になるように並び替えましょう。正解データは独立なのでいくら並び替えても文句はないはずです。Y=kの正解データの個数を $Q_k$ と書くと、$$ここで、 $S_{ki}$ はY=kになるSのi番目、という意味です。Mが最大になる必要条件は?それは、微分して0になることです:$$一般化したのでとりあえずこれ以上先には進めません。次にいくつかの具体例でこの条件を解いてみます。$P(x_i|Y)$ にガウス分布を仮定したモデルです:$$一つのYにつき、一組の $(\mu_Y, \sigma_Y)$ でモデル化しています。 $\mu_Y$はN次元の量である事に注意です。ではガウスモデルを解いてみます。一例として、事前分布 $P(Y)$ は一様分布(定数)だとします。この時、変数 $\Phi$ に相当するものは無いので考える必要はありません。変数 $\Theta$ に対応するのは $(\mu_Y, \sigma_Y)$ です。最大化すべきMは、$$です。小文字sがえらい事になっていますが、"Y=kになる正解データのi番目の入力データのj番目の要素"です。$\vec{\mu}$ のある一つの要素 $\mu_{lm}$ について微分したものが0になる条件は、$$$\mu_{lm}$ が無限大、という解は置いておいて、$$が得られました。直感的に当たり前な感じでいい感じですね!次に、ある $\sigma_l$ について微分したものが0になる条件は、$$$\sigma_l$ が無限大、という解は置いておいて、$$が得られました。こちらも直感的に当たり前な感じでいいですね!得られた $\vec{\mu}$ 、 $\vec{\sigma}$ を $P(X|Y)$ の式に入れてあげればモデルの完成です。各 $x_i$ が二値でしか表されない時に用いられる最もシンプルなモデルです。値はなんでもいいんですが、例えば0か1しかない、つまり$$な状況において、次のような式で表されます:$$ここで、 $\delta(\cdot)$ はデルタ関数です。 $p_i$ は $x_i=1$ となる確率そのものを表している変数です。$$です。$p_{kj}$ はY=kの時の $x_j$ の確率そのものを表しています。 $\vec{p}$ のある一つの要素 $p_{lm}$ について微分したものが0になる条件は、$$最初のカッコの中を0にすればいいので、$$これで、確率の比$$が得られます。 $p_{lm}$ は、$$という関係を使って、$$で得ることができます。この式の右辺は $s_{lum} = 1$となる正解データの個数を全体で割ったものです。この節では、文書分類を具体例に多項分布のモデルを解いてみます。ナイーブベイズがよく使われる例に文書分類タスクがあります。文書分類タスクというのは、文書が与えられた時に例えばそのカテゴリやトピック、タグのようなものを割り当てるというタスクです。別に文書と言っていますがメールだったりツイートだったり、なんかまとまったテキストの事です。迷惑メールの自動振り分けなんかもこれで、迷惑メールであるかそうでないかの2つのカテゴリを割り当てる事に対応します。文書分類タスクをナイーブベイズで解く際に用いられる最も単純なモデルは多項分布モデルです。このモデルは文書を確率で表現する際に、という条件を課す事で得られます。この条件でモデルを作ってみましょう。事前分布 $P(Y)$ はひとまず置いておきます。$$と書けます。条件2があるので確率が単語毎にバラバラになりますね。次に、条件3があるので、 $P(w_i|Y)$ は文書中の出現位置iに依存しません。なので、単語 $w_i$ を50音順にソートしてしまいましょう。例えば、”この りんご は おいしい りんご だ”という文は”おいしい この だ は りんご りんご”になります。単語にIDを1から順に振って、 $P(\text{ID}|Y) = p_{\text{ID}}$ とすると、$$ここで、Vは単語数(単語IDの上限)、 $c_i$ は単語ID i番の単語の文書X中での出現数になります。実は、この節のタイトルは多項分布モデルとなっていますが、厳密な意味では多項分布の形にはなっていません。原因は、文書を多次元変数として捉えるときに、今回の様に一次元系列として捉えるか、単語の出現頻度を文書の表現として捉えるかの立場の違いによります。まずは一様な事前分布を仮定して解いてみます。最大化すべき関数Mは$$です。事前分布は定数項なのでカットします。また、 $S_{ki}$ に対応するのは $p_{kj}$ と $c_{kij}$ です。 $p_{kj}$ はカテゴリがkである文書が持つ、単語IDがjの単語の確率です。 $c_{kij}$ はカテゴリがkである文書の、i番目の正解データの、単語IDがjの単語が出てくる数、です。ちょっと見通しが悪いので、iに関する積をまとめて指数の肩に載せましょう:$$ここで、$$はカテゴリがkである正解データに含まれる単語ID jの単語の総数、です。$$さて、Mを $\vec{p}$ のある一つの要素 $p_{lm}$ で微分して極値を求めましょう。ただし、今回は $p_{kj}$ に以下の条件が付きます:$$この条件をみたすようにMを最大化するためにラグランジュの未定定数法を使います。$$ここで、$$の条件を使って、両辺和を取ると、$$これを $\beta$ に代入してあげれば、$$もう一度説明すると、 $\tau_{lm}$ は、カテゴリがlである正解データに含まれる単語ID mの単語の総数、です。上で解いた分布には実用上大きな問題があります。それは、というものです。式中では $\tau_{lm}$ に相当します。せっかくなので、この問題に事前分布を設定することによって対処します。業界では、この事を”事前知識を与える”等と言ったりします。多項分布モデルでよく使われる事前分布はディリクレ分布です。ディリクレ分布というのは下の形のような分布です:$$$\Gamma$はガンマ関数です。これをいまの問題設定に当てはめてみます。この分布はこのままだと連続的に変化するベクトル $\vec{p}$ に対する分布になっているので、$$要は確率の定義域を変えます。すると、 $P(Y)$ のあるY=kでの確率は以下の様に書けるはずです:$$2つ目の式、kに関する和が確率全部足したら1、という条件を満たすための定数項を表しています。この関数 $Z$ は分配関数とも呼ばれています(今回はこのあたりには突っ込んでいきません)。この事前分布を持つような多項分布モデルにおけるMは次のようになります:$$事前分布が一様の場合と比べてほとんど形が一緒ですね。定数項のZを除くと $\tau_{kj}$ が $\tau_{kj} + \alpha_j - 1$ に変わっただけです。つまり、 $p_{lm}$ は$$である、という事です。これでディリクレ事前分布を仮定した多項分布モデルが解けました。で、この $\alpha_i$ って一体どうやって決めればいいのでしょうか?ひとつの方法は、”適当に決める”です。いや、本当です。$$とする事ができます。これは加算スムージングと呼ばれている方法になります。あとは $\alpha = 1$ なりなんなり適当に設定してください。周辺尤度最大化法と呼ばれる方法もあります。周辺尤度は入力データの出現確率 $P(S_1, S_2, \dots, S_D)$ を最大にするようにパラメータを調整するというものです。 $S_i$ は正解の入力データです。それではやってみましょう。周辺尤度を $L$ とします。$$途中でディリクレ分布の正規化に関する等式$$を使いました。あとは $\alpha$を色々動かして、最大値を探せばOKです。多分この式は解析的に解けず、数値的に解くことになります。いかがでしたでしょうか?なるべく途中式を書いていたので数式アレルギーの人はきつかったかもしれません。