精读西瓜书(第七章-贝叶斯分类器)-朴素贝叶斯分类器

写在前面

  • 昨天, 我们学习了贝叶斯分类器中的极大似然估计; 今天, 我们将继续学习朴素贝叶斯分类器中的朴素贝叶斯分类器.

朴素贝叶斯分类器

  • 不难发现, 基于贝叶斯公式来估计后验概率 \(P(c|x)\) 的主要困难在于: 类似条件概率 \(P(x|c)\) 是所有属性上的联合概率, 难以从有限的训练样本直接估计而得. 为避开这个障碍, 朴素贝叶斯分类器(Naive Bayes Classifier)采用了’属性条件独立假设’(Attribute Conditional Independence Assumption): 对已知类别, 假设所有属性互相独立. 换言之, 假设每个属性独立地对分类结果发生影响. 基于属性条件假设, 得到:

  • 其中 \(d\) 为属性数目, \(x_{i}\) 为 \(x\) 在第 \(i\) 个属性上的取值. 由于对所有类别来说 \(P(x)\) 相同, 因此有朴素贝叶斯分类器表达式:

  • 显然, 朴素贝叶斯分类器的训练过程就是基于训练集 \(D\) 来估计类先验概率 \(P(c)\) , 并为每个属性估计条件概率 \(P(x_{i}|c)\) . 令 \(D_{c}\) 表示训练集 \(D\) 中第 \(c\) 类样本组成的集合, 若有充足的独立同分布样本, 则可容易地估计出类先验概率:

  • 对离散属性而言, 令 \(D_{c, x_{i}}\) 表示 \(D_{c}\) 中在第 \(i\) 个属性上取值为 \(x_{i}\) 的样本组成的集合, 则条件概率 \(P(x_{i}|c)\) 可估计为:

  • 对连续属性可考虑概率密度函数, 假定 \(p(x_{i}|c) \sim N(\mu_{c, i} , \sigma^{2}{c, i})\) , 其中 \(\mu{c, i}\) 和 \(\sigma^{2}_{c, i}\) 分别是第 \(c\) 类样本在第 \(i\) 个属性上取值的均值和方差, 则有:

  • 为了避免其他属性携带的信息被训练集中未出现的属性值’抹去’, 在估计概率值时通常要进行’平滑’(Smoothing), 常用’拉普拉斯修正’(Laplacian Correction). 具体来说, 令 \(N\) 表示训练集 \(D\) 中可能的类别数, \(N_{i}\) 表示第 \(i\) 个属性可能的取值数, 则有:

  • 拉普拉斯修正避免了因训练集样本不充分而导致概率估值为零的问题, 并且在训练集变大时, 修正过程所引入的先验(Prior)的影响也会逐渐变得可忽略, 使得估值逐渐趋向于实际概率值. 在现实任务中朴素贝叶斯分类器有多种使用方式. 例如, 若任务对预测速度要求较高, 则对给定训练集, 可将朴素贝叶斯分类器涉及的所有概率估值事先计算好存储起来, 这样在进行预测时只需’查表’即可进行判别; 若任务数据更替频繁, 则可采用’懒惰学习’(Lazy Learning)方式, 先不进行任何训练, 待收到预测请求时再根据当前数据集进行概率估值; 若数据不断增加, 则可在现有估值基础上, 仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习.

写在后面

  • 今天, 我们学习了贝叶斯分类器中的朴素贝叶斯分类器; 明天, 我们将继续学习贝叶斯分类器中的半朴素贝叶斯分类器.