这次需要总结的是朴素贝叶斯算法,参考文章:
简介
朴素贝叶斯是基于贝叶斯定理与特征条件独立假设的分类方法。
贝叶斯定理是基于条件概率来计算的,条件概率是在已知事件B发生的前提下,求解事件A发生的概率,即
P(A|B)=P(AB)P(B)
,而贝叶斯定理则可以通过
P(A|B)
来求解
P(B|A)
:
其中分母 P(A) 可以根据全概率公式分解为: P(A)=∑ni=1P(Bi)P(A|Bi)
而特征条件独立假设是指假设各个维度的特征
x1,x2,...,xn
互相独立,则条件概率可以转化为:
朴素贝叶斯分类器可表示为:
而由于对上述公式中分母的值都是一样的,所以可以忽略分母部分,即可以表示为:
这里 P(yk) 是先验概率,而 P(yk|x) 则是后验概率,朴素贝叶斯的目标就是最大化后验概率,这等价于期望风险最小化。
参数估计
极大似然估计
朴素贝叶斯的学习意味着估计 P(yk) 和 P(xi|yk) ,可以通过极大似然估计来估计相应的概率。
如上图所示,分别是 P(yk) 和 P(xi|yk) 的极大似然估计。
当求解完上述两个概率,就可以对测试样本使用朴素贝叶斯分类算法来预测其所属于的类别,简单总结的算法流程如下所示:
贝叶斯估计/多项式模型
用极大似然估计可能会出现所要估计的概率值为0的情况,这会影响到后验概率的计算,使分类产生偏差。解决这个问题的办法是使用贝叶斯估计,也被称为多项式模型。
当特征是离散的时候,使用多项式模型。多项式模型在计算先验概率
P(yk)
和条件概率
P(xi|yk)
时,会做一些平滑处理,具体公式为:
N 是总的样本个数, k 是总的类别个数, Nyk 是类别为 yk 的样本个数, α 是平滑值。
Nyk 是类别为 yk 的样本个数, n 是特征的维数, Nyk,xi 是类别为 yk 的样本中,第 i 维特征的值是 xi 的样本个数, α 是平滑值。
当 α=1 时,称作Laplace平滑,当 0<α<1 时,称作Lidstone平滑,α=0时不做平滑。
如果不做平滑,当某一维特征的值 xi 没在训练样本中出现过时,会导致 P(xi|yk)=0 ,从而导致后验概率为0。加上平滑就可以克服这个问题。
高斯模型
当特征是连续变量的时候,运用多项式模型会导致很多 P(xi|yk)=0 (不做平滑的情况下),即使做平滑,所得到的条件概率也难以描述真实情况,所以处理连续变量,应该采用高斯模型。
高斯模型是假设每一维特征都服从高斯分布(正态分布):
μyk,i 表示类别为 yk 的样本中,第 i 维特征的均值;
σ2yk,i 表示类别为 yk 的样本中,第 i 维特征的方差。
伯努利模型
与多项式模型一样,伯努利模型适用于离散特征的情况,所不同的是,伯努利模型中每个特征的取值只能是1和0(以文本分类为例,某个单词在文档中出现过,则其特征值为1,否则为0).
伯努利模型中,条件概率 P(xi|yk) 的计算方式是:
当特征值 xi 为1时, P(xi|yk)=P(xi=1|yk) ;
当特征值 xi 为0时, P(xi|yk)=1−P(xi=1|yk) ;
工作流程
- 准备阶段
确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本。 - 训练阶段
计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计 - 应用阶段
使用分类器进行分类,输入是分类器和待分类样本,输出是样本属于的分类类别
属性特征
- 特征为离散值时直接统计即可(表示统计概率)
- 特征为连续值的时候假定特征符合高斯分布,则有
优缺点
优点
- 对小规模的数据表现很好,适合多分类任务,适合增量式训练。
缺点
- 对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。
朴素贝叶斯分类的正式定义如下:
1、设为一个待分类项,而每个a为x的一个特征属性。
2、有类别集合。
3、计算。
4、如果,则
。
那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:
1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
2、统计得到在各类别下各个特征属性的条件概率估计。即。
3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。(类别概率大小比较时,只需要由于分母相同,故只需分子即可)又因为各特征属性是条件独立的,所以有:
根据上述分析,朴素贝叶斯分类的流程可以由下图表示(暂时不考虑验证):
第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。
第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。