机器学习算法(七):朴素贝叶斯方法
朴素贝叶斯方法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
朴素贝叶斯方法实际上学习到生成数据的机制,所以属于生成模型。条件独立假设是用于分类的特征在类确定的条件下都是条件独立的。这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率,因为忽略掉了各项之间的联系。
贝叶斯决策论
假设有N种可能的类别标记,即 y={c1,c2,...,cN} , λij 是将一个真是标记为 cj 的样本误分类为 ci 所产生的损失。基于后验概率 P(cj|x) 可获得将样本x分类为 ci 所产生的期望损失,即在样本x上的『条件风险』:
我们的任务是寻找一个判定准则 h:X→Y 以最小化总体风险:
对每个样本x,若h能最小化条件风险 R(h(x)|x) ,则总体风险 R(h) 也能被最小化。这就产生了贝叶斯判定准则:为最小化总体风险,只需要在每个样本上选择那个能使条件风险 R(c|x) 最小的类别标记,即:
h∗ 称为贝叶斯最优分类器,与之对应的总体风险 R(h∗) 称为贝叶斯风险。 1−R(h∗) 反映了分类器所能达到的最好性能。
若目标是最小化分类误差,则误判损失 λij 可写为:
此时,条件风险为:
最小化分类错误率的贝叶斯最优分类器为:
即对每个样本x, 选择能够使后验概率 P(c|x) 最大的类别标记。
基于贝叶斯定理, P(c|x) 可写为:
P(c) 是类的先验概率; P(x|c) 是样本x相对于类标记c的类条件概率,或称为『似然』; P(x) 是用于归一化的因子。对给定样本x,因子 P(x) 与类别无关,因此估计 P(c|x) 的问题就转化为如何基于训练数据D来估计先验 P(c) 和似然 P(c|x) 。
朴素贝叶斯分类
根据之前对于贝叶斯公式的分析,类先验概率 P(c) 表达了样本空间中各类样本所占比例,根据大数定律,当训练集包含充足的独立同分布样本时, P(c) 可通过各类样本出现的频率来进行估计。而条件概率 P(x|c) 是所有属性上的联合概率,难以从有限的训练样本直接估计而得。为避开这个障碍,朴素贝叶斯分类器采用了『属性条件独立性假设』。基于这个假设,我们之前的公式可以改写为:
其中d为属性的个数, xi 为x在第i个属性上的取值。
对离散属性而言,令 Dc,xi 表示 Dc 中在第i个属性上取值为 xi 的样本组成的集合,则条件概率 P(xi|c) 可估计为:
对连续属性可以考虑概率密度函数,假定 p(xi|c)∼N(μc,i,σ2c,i) ,其中 μc,i 和 σ2c,i 分别是第c类样本在第i个属性上取值的均值和方差,则有:
拉普拉斯平滑
在计算中我们可能会碰到的一类问题是:在某一个类别下,某一个属性取某一值的情况没有出现过。由于这一项为零,那么总体的结果就为零,也就是说明这个样本属于这个类的概率为0。但事实可能并非如此,因为数据集在搜集时可能是有偏的。通常就需要在计算概率值时进行平滑,常用的方法是拉普拉斯平滑。令N表示训练集D中可能的类别数, Ni 表示第i个属性可能的取值数,则:
从上面的式子就可以注意到,这种情况一般只会发生在离散属性中。拉普拉斯平滑实质上假设了属性值与类别是服从均匀分布的,这是在贝叶斯学习过程中额外引入的关于数据的先验。但是在数据集变大时,引入的先验的影响也会逐渐变得可忽略,使得估计值逐渐趋向于实际概率值。
题外话
在现实任务中,朴素贝叶斯分类器有多种使用方式。若任务对预测速度要求较高,则对给定数据集,可将分类器涉及的所有概率估值事先计算好存储起来,这样在进行预测时只需要查表即可进行判别;若任务数据更替频繁,则可采用『惰性学习』的方式,先不进行任何训练,待收到预测请求时在根据当前数据集进行概率估值;若数据不断增加,则可在现有估值的基础之上,仅对新增样本的属性值设计的概率估值进行计数修正即可实现增量学习。
写在最后
本篇博客的部分内容参考自《统计学习方法》和《机器学习》(周志华)。