朴素贝叶斯(naive Bayes)法是根据贝叶斯定理与特征条件独立假设的分类方法. 对于给定的训练数据集, 首先基于特征条件独立假设学习输入/输出的联合概率分布, 然后基于此模型, 对给定的输入\(x\), 利用贝叶斯定理求出后验概率最大的输出\(y\).
基本方法: 设输入空间\(\mathcal{X} \subseteq \mathbf{R}^n\)为\(n\)维向量的集合, 输出空间为类标记集合\(\mathcal{Y}=\{c_1, c_2, \cdots, c_K\}\), 输入为特征向量\(x \in \mathcal{X}\), 输出为类标记\(y \in \mathcal{Y}\). \(X\)是定义在输入空间\(\mathcal{X}\)上的随机向量, \(Y\)是定义在输出空间\(\mathcal{Y}\)上的随机变量, \(P(X, Y)\)是\(X\)和\(Y\)的联合概率分布, 训练集为\(T(N)\), 由\(P(X, Y)\)独立同分布产生.
朴素贝叶斯法**通过训练数据学习联合概率分布\(P(X, Y)\), 分为两个部分:
- 先验概率分布: \begin{align} P(Y=c_k), k = 1, 2, \cdots, K \end{align}
- 条件概率分布: \begin{align} P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)}, \cdots, X^{(n)}=x^{(n)} | Y=c_k), k = 1, 2, \cdots, K \end{align} 条件概率分布有指数级的参数个数\(K \prod_{j=1}^nS_j\)其中\(S_j\)是第\(j\)维输入\(x^{((j)}\)的可能的值的个数(这是很明显的, \(x^{(i)}\)和\(y\)的组合数). 朴素贝叶斯法对条件概率分布作了条件独立性的假设: \begin{align} P(X=x|Y=c_k) = \prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) \end{align} 此假设等于是说用分类的特征在类确定的条件下都是条件独立的(各个特征\(x^{(i)}, x^{(j)}\)之间没有关联, 如果有关联的话怎么求?), 此时\(X=x\)的先验概率\(P(X=x)\)可以由正式给出: \begin{align} P(X=x) = \sum_{c_i \in \mathcal{Y}} P(X=x|Y=c_i) P(Y=c_i) \end{align}
朴素贝叶斯法进行分类时, 对给定的输入\(x\), 通过学习到的模型计算后验概率分布\(P(Y=c_k|X=x)\), 将后验概率最大的类\(y\)作为输出. 根据贝叶斯定理有: \begin{align} P(Y=c_k|X=x) &= \frac{P(X=x|Y=c_k) P(Y=c_k)}{P(X=x)} \end{align} 由于\(P(Y=c_k|X=x)\)对于所有的\(c_k\), 分母均为\(X=x\)的先验概率, 因此最终目标函数变为 \begin{align} y &= \arg \min_{c_k \in \mathcal{Y}} P(X=x|Y=c_k) P(Y=c_k) \\ &= \arg \min_{c_k \in \mathcal{Y}} P(Y=c_k) \prod_{i=1}^n P(X^{(i)}=x^{(i)}|Y=c_k) \end{align}
参数估计
通常采用极大似然估计, 但是会出现所需要估计的值为0的情况, 修正的贝叶斯估计在各项随机变量中赋予一个正数\(\lambda\)(也就是每个可能的值的出现次数至少为1, 所以需要先确定X, Y的取值范围, 如果训练数据中某个\(x_i^{(j)}\)或者\(c_k\)缺失, 在测试之前就应该发现, 否则对于不同的预测, 可能出现分布不同的情况), 常用\(\lambda = 1\), 这时称为拉普拉斯平滑.
先验概率(\(Y=c_k\)) \begin{align} P(Y=c_k) = \frac{\sum_{y \in \mathcal{Y}} I(y = c_k)}{N} \end{align}
后验概率(\(X^{(j)}=a_{jl}, Y=c_k\)) \begin{align} P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum_{i=1}^N I(x_i^{(j)} = a_{jl}, y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)} \end{align}
修正后
先验概率 \begin{align} P_\lambda(Y=c_k) = \frac{\sum_{i=1}^NI(y_i=c_k) + \lambda}{N + K \lambda} \end{align}
后验概率 \begin{align} P_\lambda(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum_{i=1}^N I(x_i^{(j)} = a_{jl}, y_i=c_k) + \lambda}{\sum_{i=1}^NI(y_i=c_k) + S_j \lambda} \end{align}
附: 贝叶斯定理
\begin{align} P(Y|X) = \frac{P(X|Y) P(Y)}{P(X)} \end{align}
其中
- \(P(X), P(Y)\)分别是\(X, Y\)的先验概率, 之所以称为先验, 是因为它不考虑\(Y\)或者\(X\)的概率分布.
- \(P(X|Y)\)表示已知\(Y\)发生的情况下\(X\)发生的概率, 是\(X\)的后验概率, 反之亦然