Naive Bayes classifier(単純ベイズ分類器)の仕組み
Naive Bayes Classifierの原理を解説します.
この記事では,その導入部分だけを書き,Naive Bayesそのものまでは書きません.Naive Bayesそのものについては,次の記事で書くつもりです.
概要
Naive Bayes Classifierは,機械学習の,分類アルゴリズムの一つです.
古くから,特にテキストの分類に使われてきました.
Apache Spark MLlibや,python nltkで使ってみることができます.
アルゴリズム
Naive Bayes以前
例
次のような,10件の学習データがあったとします.
おもしろい #モンスターハンター
おもしろい #モンスターハンター
おもしろい #モンスターハンター
おもしろくない #モンスターハンター
おもしろくない #モンスターハンター
おもしろい #たけしの挑戦状
おもしろくない #たけしの挑戦状
おもしろくない #たけしの挑戦状
おもしろくない #たけしの挑戦状
おもしろくない #たけしの挑戦状
ここで,さらに
おもしろくない
という入力があったとします.この入力の次に続くのは,#モンスターハンター か #たけしの挑戦状 のどちらが適切でしょうか?
学習データを集計すると,以下のような表を作ることができます.
モンスターハンター | たけしの挑戦状 | |
---|---|---|
おもしろい | 3件 | 1件 |
おもしろくない | 2件 | 4件 |
いま,入力は「おもしろくない」なので,表の2行目を見ます. |
モンスターハンター | たけしの挑戦状 | |
---|---|---|
おもしろくない | 2件 | 4件 |
ここで,「おもしろくない」に,「モンスターハンター」と「たけしの挑戦状」のそれぞれが続く確率を計算してみると,以下のようになります. | ||
まず,「モンスターハンター」については, |
P(モンスターハンター|おもしろくない)=\frac{P(おもしろくない and モンスターハンター)}{P(おもしろくない)}=\frac{2}{2+4}=\frac{1}{3}
となります.ここで,条件付き確率の定義
P(B|A)=\frac{P(A\cap B)}{P(A)}
を用いました.
同様に,「たけしの挑戦状」については
P(たけしの挑戦状|おもしろくない)=\frac{2}{3}
となります.
以上の計算から,「おもしろくない」に続くのは,「モンスターハンター」の確率が1/3, 「たけしの挑戦状」である確率が2/3であることが,学習データを使ってわかりました.
つまり
入力データXと,正解ラベルYの組からなる,学習データを用意します.
この学習データから,X×Y上の確率分布が計算できます.
この確率分布を使って,分類器を以下のように作ることができます.
いま,入力X=xがあったとき,この入力に対応する出力がY=yである確率P(Y=y| X=x)は,
P(Y=y|X=x)=\frac{P(X=x, Y=y)}{P(X=x)}
で計算できます.この確率の最大値を与えるY=yが,最尤の出力です.
ところで,いま,P(X=x)はxを一つ与えるごとに固定されるので,最大値を与えるY=yを探すときには,分母のP(X=x)は気にせず,P(X=x, Y=y)だけを考えればよいです.