ナイーブベイズ分類器について

概要

ナイーブベイズ(単純ベイズ)について調べたので備忘録。
ここでは文書分類を題材に書きます。

説明

数式

一般的にナイーブベイズの数式は下記の通り。


P(category|word) \propto P(category) \prod_{i=1}^{n} P ( word_{i} | Category)
記号 説明
P(category|word)
対象とするカテゴリである確率
P(category)
対象とするカテゴリが含まれている確率
\prod_{i=1}^{n} P ( word_{i} | Category) 対象とするカテゴリに含まれる各単語の確率の総乗

一般的に分母については考えないことが多く「それらしい答えが出たらいいでしょ」ということらしい。(こういう考え方は最尤法と呼ばれる。)
また、前提として単語の出現確率は独立性がある(次に出てくる単語の確率に影響しない)とすることで上記の式が成り立つ。
例えば「人工」という単語があったときに次に「知能」という単語が出てくる確率と「芝生」という単語が出てくる確率は同じという考え。
この点がナイーブ(単純)ベイズと呼ばれる由縁だと思われる。

ゼロ頻度問題

上の数式の中で出てこない単語(未知語)があったときに単語の出現する確率は0になってしまう。
それを防ぐために加重スムージングというのがある。
この手法は単語の出現回数に1を足して、全文書の重複を除いた全単語数をカテゴリの単語数に加算する手法。

実際の問題も踏まえて

文書 単語 カテゴリ
今日はいい天気です。 今日、いい、天気 A
今日の午後から雨が降る予定なので、傘を持って行きます。 今日、午後、から、雨、降る、予定、なので、傘、持つ、行く A
夕飯はステーキです。 夕飯、ステーキ B
お昼はカレーでした。 昼、カレー B
明日の朝ごはんはおにぎりの予定です。 明日、朝ごはん、おにぎり、予定 B

上のような5件の文書があり、単語が上のようなとき

  • カテゴリAの文書は2件なのでP(category)は2/5

  • カテゴリBの文書は3件なのでP(category)は3/5

  • カテゴリAに出てくる単語は重複している単語も含めて「今日」「いい」「天気」「今日」「午後」「から」「雨」「降る」「予定」「なので」「傘」「持つ」「行く」の13単語

  • カテゴリBに出てくる単語は「夕飯」「ステーキ」「昼」「カレー」「明日」「朝ごはん」「おにぎり」「予定」の8単語

  • 全文書に出てくる単語数は重複した単語を除いて20単語

  • カテゴリAの単語の出現確率(P ( word | Category))は「今日」は 2 / 13、それ以外の単語は1 / 13

  • カテゴリAの出現確率に加重スムージングを適用すると「今日」は(2 + 1) / (13 + 20) = 3 / 33、それ以外の単語は(1 + 1) / (13 + 20) = 2 / 33、未知語の場合は1 / 33

  • カテゴリBの単語の出現確率(P ( word | Category))はそれぞれの単語の出現確率は1 / 8

  • カテゴリBの出現確率に加重スムージングを適用するとそれぞれの単語の出現確率は(1 + 1) / (8 + 20) = 2 / 28、未知語の場合は1 / 28

となる。
次に文書「お昼のご飯の予定は?」という文書が用意されて、単語が「昼」「ご飯」「予定」の5単語の場合、 カテゴリAは


P(category|word) = \frac{2}{5} × \frac{1}{33} × \frac{1}{33} × \frac{2}{33}  = 0.0000222545016

カテゴリBは


P(category|word) = \frac{3}{5} × \frac{2}{28} × \frac{1}{28} × \frac{2}{28}  = 0.0001091983032

よって「お昼のご飯の予定は?」はカテゴリBに分類される。