Skip to content

Naive Bayes Classifier

1. Bayes' Thm.

\[ \begin{aligned} P(Y = c_k | X = x) &= {P(Y = c_k, X = x) \over P(X = x)} \\ &= {P(X = x | Y = c_k)P(Y = c_k) \over P(X = x)} \end{aligned} \]

事件 X 是由原因 \(Y = c_k\) 引起的概率。

2. Bayes Classifier

给定X(一个n维向量,每一维代表一个特征),判断它是类别集合Y中的哪一类。

那么就要选取一个类别 \(c_k \in Y\) ,使得 \(P(Y = c_k | X = x)\) 最大

(下面用Y代表类别变量;X代表输入样本变量;y是预测的类别)

\[ \begin{aligned} y &= \arg\max_{c_k} P(Y = c_k | X = x) \\ &= \arg\max_{c_k} {P(X = x | Y = c_k)P(Y = c_k) \over P(X = x)} \\ &= \arg\max_{c_k} {P(X = x | Y = c_k)P(Y = c_k)} \end{aligned} \]

3. Naive Bayes Classifier

想求 \(P(X = x | Y = c_k)\) ,但是参数太多,没法算,因为这相当于在给定类别的条件下,寻找恰好符合一组特征的样本。输入样本为n维向量,对应n个特征,每个特征又对应不同的取值,这就产生了一个n维的联合分布,空间是很大的。

因此做出「独立性假设」简化之:假设特征之间的取值相互独立!于是:

\[ \begin{aligned} y &= \arg\max_{c_k} {P(X = x | Y = c_k)P(Y = c_k)} \\ &= \arg\max_{c_k} P(Y = c_k) ~ \prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y = c_k) \end{aligned} \]

\(P(X^{(j)} = x^{(j)} | Y = c_k)\) 表示类别为 \(c_k\) 的所有的样本中,特征的第 \(j\) 维是 \(x^{(j)}\) ,i.e. 输入样本第 \(j\) 个特征的值,的概率。

3.1 Laplace Smoothing

为了避免 \(P(X^{(j)} = x^{(j)} | Y = c_k)\) 由于训练集覆盖不全面而为0,进而导致整个概率为0,加入 Laplace Smoothing 进行修正:

\[ \begin{aligned} P(X^{(j)} = x^{(j)} | Y = c_k) &= {\text{Count}(X^{(j)} = x^{(j)} , Y = c_k) + \lambda \over \text{Count}(Y = c_k) + S_j \lambda} \end{aligned} \]

\(S_j\) 为第 \(j\) 维对应特征的所有可能的取值的数目。

\(\lambda\) 通常取1。

本质上,就是对于第 \(j\) 维对应特征所有可能的取值情况,都加了个1,i.e. 保证第 \(j\) 维每种可能的取值都至少有1个样本。

4. Practice

给定:

  • 训练集;每个样本为 \((x^{(1)}, x^{(2)}, \dots, x^{(n)}, c)\) ,即具有 n 个特征的样本对应一个实际类别 c 。
  • 待预测样本 \(x\) ;需要求出预测类别 y 。

利用公式计算:

\[ \begin{aligned} y &= \arg\max_{c_k} P(Y = c_k) ~ \prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y = c_k) \\ &= \arg\max_{c_k} {\text{Count}(Y = c_k) \over |\text{Training Set}|} ~ \prod_{j=1}^n {\text{Count}(X^{(j)} = x^{(j)} , Y = c_k) + \lambda \over \text{Count}(Y = c_k) + S_j \lambda} \end{aligned} \]
  • 需要代入每种 \(c_k\) ,最后 y 取让后面的概率最大的 \(c_k\)
  • 遍历 n 维特征算连乘

Last update: June 12, 2021
Authors: Co1lin (1.18%), Co1lin (1.18%), Colin (97.65%)