Python 机器学习及实践——朴素贝叶斯理论

朴素贝叶斯理论

朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的方法。

1. 基本原理介绍

对于多分类模型:假设有 K 种可能的类别标记,即 y={ C1,C2,…,Ck },记 P(y=ci|x)为特征向量 x 属于 ci 的概率。根据贝叶斯原理:
Python 机器学习及实践——朴素贝叶斯理论

我们的目标是寻找所有 y={ C1,C2,…,Ck }中 P(c|x)最大的,即:

Python 机器学习及实践——朴素贝叶斯理论

考虑到 P(x)对于同一样本都是相同的,因此上式可转化为:

Python 机器学习及实践——朴素贝叶斯理论
若每一种特征可能的取值均为 0 或 1 ,在没有任何特殊假设的情况下,计算 P(x1,x2,…,xn|c)需要对 k*2^n 个可能的参数进行估计:

P(x1,x2,…,xn|c)= P(x1|c)P(x2|x1,c)P(x3|x2,x1,c)…P(xn|x1,x2,…,xn-1,c)

但是在计算上将会遭遇组合爆炸问题,在数据上将会遭遇样本稀疏问题,属性数越多,问题越严重。为避开这个障碍,朴素贝叶斯分类器 (naÏve Bayes classifier) 采用了“属性条件独立性假设” (attribute conditional independence assumption): 对已知类别,假设所有属性相互独立。换言之,假设每个属性独立地对分类结果生影响。基于属性条件独立性假设,原式可改写成:

Python 机器学习及实践——朴素贝叶斯理论

2. 朴素贝叶斯的参数估计

通过训练集计算上面式子中两部分的概率:

对于 P(cj),只需要通过极大似然估计可以很容易得到 P(cj) 为样本类别 cj 出现的频率,即样本类别 cj 出现的次数 mk 除以样本总数 m 。

而对于概率

Python 机器学习及实践——朴素贝叶斯理论

分以下三种情况进行讨论:

① 如果 Xj 是离散的值,那么可以假设 Xj 符合多项式分布,这样得到要求的概率即是在样本类别 cj 中,Xj(test) 出现的频率。即:

Python 机器学习及实践——朴素贝叶斯理论
某些时候,可能某些类别在样本中没有出现,这样可能导致要求概率为 0 ,这样会影响后验的估计,为了解决这种情况,引入了拉普拉斯平滑,即此时有:

Python 机器学习及实践——朴素贝叶斯理论
其中 λ 为一个大于 0 的常数,常常取为 1 。

② 如果 Xj 是非常稀疏的离散值,即各个特征出现概率很低,这时可以假设 Xj 符合伯努利分布,即特征 Xj 出现记为 1 ,不出现记为 0 ,即只要 Xj 出现即可,不用关注 Xj 的次数:

Python 机器学习及实践——朴素贝叶斯理论

③ 如果 Xj 是连续值,通常取 Xj 的先验概率为正态分布,即在样本类别 Ck 中,Xj 的值符合正态分布:

Python 机器学习及实践——朴素贝叶斯理论

正态分布的期望和方差,可以通过极大似然估计求得。

根据上述分析,朴素贝叶斯分类的流程可以由下图表示(暂时不考虑验证):

Python 机器学习及实践——朴素贝叶斯理论

3. 朴素贝叶斯的优缺点

优点:

① 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。

② 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批地去增量训练。

③ 对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:

① 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

② 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

③ 由于是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

④ 对输入数据的表达形式很敏感。

参考文献:

[1] 李航. 统计学习方法[M]. 清华大学出版社, 北京, 2012.
[2] 周志华. 机器学习[M]. 清华大学出版社, 北京, 2016.
[3] 范淼,李超.Python 机器学习及实践[M].清华大学出版社, 北京, 2016.
[4] http://www.cnblogs.com/pinard/p/6069267.html