第 3 章 統計的推測 - 推定と検定
3.2 点推定・最尤推定・ベイズ推定
3.2.3 ベイズ推定:ベイジアンフィルタ
ここで、P(D|A) = 0.000、P(A) = 0.3である。DかつA, DかつB, DかつCは 排反事象でDが起るすべてのケースを尽くしているからP(D) =P(D|A)P(A)+
P(D|B)P(B) +P(D|C)P(C) = 0.0126と計算できる。データから、投げたコイ ンがAであった確率は
P(A|D) = 0.000×0.3 0.0126 = 0
である。同様にして、事象Bを「投げたコインはBである」事象とすれば、
P(B|D) =0.012×0.6
0.0126 = 0.571 事象Cを「投げたコインはCである」事象とすれば、
P(C|D) = 0.054×0.1
0.0126 = 0.429
となる。よって、投げたコインはBと推定される。ここで、Bであるとの結論 だけでなく、データを得た後の事象A、B、Cの確率が、0.000,0.571,0.429と求 まる、これらを事後確率(分布)という。
例 3.2.3. ベイジアンフィルタ
つぎにベイズの定理を使って、スパムメールを除去するのに使われるベイジ アンフィルタの原理を説明しよう。ここでは、原理は同じであることから、ある PCサイトの記事が「開発者向け」か「ユーザ向け」かを判別する方法として述 べよう。両者の区別をする確率変数をXとする。すなわちP(X=開発者向け)
、P(X =ユーザ向け)という確率を考える。これらの確率は、1000本ぐらいの 記事がサンプルとしてあり各記事が「開発者向け」か「ユーザ向け」か区別がつ いているとすれば、サンプルの中でのそれぞれの割合(標本比率)として計算で きる。これを
P(X =開発者向け) = 0.348、P(X=ユーザ向け) = 0.652 と計算されたとする。
どちらの記事かを判断するためには記事に含まれている語彙から判断する方法 が考えられる。そこで、ここでは簡単に二つの言葉「プログラム」「アプリ」に ついてのデータを見てみよう。確率変数Y1, Y2を
Y1= {
1 「プログラム」が含まれているとき 0 「プログラム」が含まれていないとき
Y2= {
1 「アプリ」が含まれているとき 0 「アプリ」が含まれていないとき
として、上と同様にサンプルからの標本比率を使って、それぞれのカテゴリでこ れらの語が含まれている割合を求めると
P(Y1= 1|X=開発者向け) = P(Y1= 1かつX =開発者向け)
P(X=開発者向け) = 0.271 P(Y2= 1|X=開発者向け) = P(Y2= 1かつX =開発者向け)
P(X=開発者向け) = 0.172 P(Y1= 1|X=ユーザ向け) = P(Y1= 1かつX =ユーザ向け)
P(X=ユーザ向け) = 0.136 P(Y2= 1|X=ユーザ向け) = P(Y2= 1かつX =ユーザ向け)
P(X=ユーザ向け) = 0.523 さて、ここで「アプリ」という語は含まれているが「プログラム」という語は含 まれていない記事があったとして、この記事はどちらのカテゴリかを判定したい とする。これに対して、確率P(X = 開発者向け|Y1 = 0かつY2 = 1)と確率 P(X =ユーザ向け|Y1= 0かつY2= 1)を求めて、大きいほうのXの値である としよう。各確率を以下のように求める。以下ではX, Y1, Y2の値を明示せずに、
また「かつ」という論理積を表す言葉を「,」で表す。
ベイズの定理より、
P(X|Y1, Y2) =P(Y1, Y2|X)P(X) P(Y1, Y2)
であるから、右辺の各確率を求めればよいのであるが、上と同じようにサンプル から標本比率として求めるのは大変である。ここで注意しておきたいのは、各記 事の中である単語が何個含まれるかを調べるのは大変であること、そして実用で はかなり多くの単語について調べるということである。そこで、ここではすでに 上でXの値ごとに計算してある結果から右辺の確率を簡便法で求めることを考 える。まず、
P(Y1, Y2|X) =P(Y1|X)P(Y2|X)
を仮定する。この条件を条件付独立性というが、たとえば「開発者記事の中で
『プログラミング』という単語が現れることと『プログラム』という単語が現れ ることは互いに独立である」とするのである。これは実際には独立ではないであ
ろう、しかし、計算の便宜のために敢えて仮定する。これで、P(Y1, Y2|X)P(X) が計算される。
P(Y1= 0, Y2= 1|X =開発者向け)P(X =開発者向け)
=P(Y1= 0|X =開発者向け)P(Y2= 1|X =開発者向け)P(X =開発者向け)
=(1−0.271)×0.172×0.348 = 0.044
P(Y1= 0, Y2= 1|X =ユーザ向け)P(X =開発者向け)
=P(Y1= 0|X =ユーザ向け)P(Y2= 1|X =ユーザ向け)P(X =ユーザ向け)
=(1−0.136)×0.523×0.652 = 0.294
あとは分母のP(Y1, Y2)であるが、これは以下の式で求めることができる。
P(Y1, Y2)
=P(Y1, Y2|X =開発者向け)P(X=開発者向け) +P(Y1, Y2|X =ユーザ向け)P(X=ユーザ向け)
=0.338
この式は、Xの値で場合分けをして加法定理を使った式であり、上で計算したば かりのP(Y1, Y2|X)を全て足すことで求められる。
この計算法で計算してみると、
P(X =開発者向け|Y1= 0かつY2= 1) = 0.044/0.338 = 0.129 P(X =ユーザ向け|Y1= 0かつY2= 1) = 0.294/0.338 = 0.871
となるので、当該記事はユーザ向けであろうということになる。この方法は、計 算の便宜のために明らかに現実と異る仮定をおきながら、かなり実用になること が知られている。
ベイズの定理を応用する統計的手法は、様々ある。前節の最尤推定による回帰 では、誤差の分布として正規分布をとると最小2乗法と一致し、他の分布をと る可能性を示唆した。実は、ベイズの方法によりさらに一般化できる。標本の分 布(誤差の分布)以外に係数の分布を仮定し(事前分布)これをベイズの定理と データにより事後分布に更新するという手続きをとる。すなわち、回帰係数の値 を求める代わりにその分布を求めることになる。これにより求められた分布の共 分散の構造を見て推定係数の信頼度を測ることもできる。
この節に関しては、サイト:http://gihyo.jp/dev/serial/01/machine-learning を参照のこと。