LoginSignup
9
11

More than 3 years have passed since last update.

ナイーブベイズ(単純ベイズ)

Last updated at Posted at 2020-05-04

ナイーブベイズ(Naive Bayes)の特徴・考え方について

「ナイーブベイズ」の概要

  • 機械学習の、教師あり学習に使われる手法。
  • 自然言語の分類で主に利用される。(文章の分類やスパムメール判定など)

特徴

  • 超シンプルな仮定に基づいて計算する割に、良い結果を返してくれる。
  • トレーニングデータが少なくてもよい。
  • 他の手法に比べて、計算が速い。
  • 次元の呪い」の影響を受けづらい。
  • ナイーブベイズで計算される「確率」は、「その物事が起きる確率」としては使えない。(計算時にものごとを単純に仮定し過ぎているため)

計算方法

ベイズの定理

名前の通り、↓ベイズの定理を使う

P(B|A) = \frac{P(A|B) P(B)}{P(A)}
  • $P(B|A)$:$A$が発生した状態で、$B$が発生する確率
  • $P(A)$:(何も前提条件なしで)$A$が発生する確率

コレは、↓を変形したものと考えるとわかりやすいかも

P(A) × P(B|A) = P(B) × P(A|B)
  • 両辺とも、$A, B$が両方とも発生する確率
  • 「$A$が発生してから$B$が発生する」と考えるか、「$B$が発生してから$A$が発生する」と考えるか

ナイーブベイズの計算

ベイズの定理より

P(y | x_1, \cdots , x_n) = \frac{P(y) P(x_1, \cdots , x_n | y)}{P(x_1, \cdots , x_n)} \; \cdots (i)
  • $y$:分類したいカテゴリ(「文章のカテゴリ」「スパムメールである、ではない」など)
  • $x_1, \cdots , x_n$:↑の分類に使う要素。自然言語処理では、文に含まれる単語など
  • $P(y | x_1, \cdots , x_n)$:$x_1, \cdots , x_n$が含まれる(or含まれない)とき、$y$である確率
  • $P(y)$:全体のうち、$y$である確率。(=サンプル全部のうち、分類が$y$の割合)

となる。ここで、$x_1, \cdots , x_n$たちが互いの確率に影響を与えない(独立である)と仮定する
ココの仮定がnaive=単純なので、「ナイーブベイズ」と呼ばれる

このとき、「$x_i$以外が発生している(orしていない)とき、$x_i$が発生する(orしない)確率」

P(x_i | y, x_1, \cdots, x_{i-1} , x_{i+1} , \cdots , x_n)

は、他の$x$からの影響を受けないため

P(x_i | y, x_1, \cdots, x_{i-1} , x_{i+1} , \cdots , x_n) = P(x_i | y)

となるので、$(i)$の式は

\begin{align}
P(y | x_1, \cdots , x_n) &= \frac{P(y) P(x_1 | y) \cdots P(x_n | y)}{P(x_1, \cdots , x_n)} \\
&= \frac{P(y) \prod_{i = 1}^{n} P(x_i | y)}{P(x_1, \cdots , x_n)} \; \cdots (ii) \\
\end{align}

となる。実際に計算するときは右辺の分母$P(x_1, \cdots , x_n)$は定数なので、各カテゴリごとに分子だけ計算して、一番大きくなる(=確率が高い)カテゴリであると判定する。

計算例

下のような7つの文(教師データ)を与える。

含まれる単語 カテゴリ
a, b, c A
a, c A
c A
a A
a, b B
a B
b B

この場合、それぞれの確率は以下になる

\begin{align}
P(A) &= \frac{4}{7} \\
P(B) &= \frac{3}{7} \\
P(a | A) &= \frac{3}{4} \\
P(b | A) &= \frac{1}{4} \\
P(c | A) &= \frac{3}{4} \\
P(a | B) &= \frac{2}{3} \\
P(b | B) &= \frac{2}{3} \\
P(c | B) &= \frac{0}{3} \approx 0.01 \\
\end{align}

※確率が0になるところは、代わりに0.01(小さい確率)を割り振る。(今回は出現しなかったが、もっと数が大きいデータでは出現する可能性があるため)

ここで、以下のような新しい文がある場合のカテゴリがAなのかBなのか判定する。

含まれる単語 カテゴリ
a ?

「$a$が含まれる」「$b$が含まれない」「$c$が含まれない」場合のカテゴリA, Bの確率(分母は省略)を計算すると

\begin{align}
P(A | a, \bar{b}, \bar{c}) &\sim P(A) × P(a | A) × P(\bar{b} | A) × P(\bar{c} | A) \\
&= \frac{4}{7} × \frac{3}{4} × (1 - \frac{1}{4}) × (1 - \frac{3}{4}) \\
&= 0.080 \\
\end{align}
\begin{align}
P(B | a, \bar{b}, \bar{c}) &\sim P(B) × P(a | B) × P(\bar{b} | B) × P(\bar{c} | B) \\
&= \frac{3}{7} × \frac{2}{3} × (1 - \frac{2}{3}) × (1 - 0.01) \\
&= 0.094 \\
\end{align}

となり、カテゴリは$B$と判定する。

他リンク

最大事後確率(maximum a posteriori, MAP)推定: https://ja.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E4%BA%8B%E5%BE%8C%E7%A2%BA%E7%8E%87

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11