朴素贝叶斯分类器
贝叶斯算法基本原理
在机器学习中主要用于分类,已知样本X,
- 首先计算\(P(X|C_i)\),得出Ci类别包含样本X的先验概率;
- 然后根据贝叶斯定理求后验概率\(P(C_i|X)\),得到X属于Ci类别的后验概率;
- 最后根据最大后验概率判断所属类别。
朴素贝叶斯分类
朴素的含义
朴素地假设特征变量\(F_1\)与\(F_2\)相互独立,则
\[P(F_1,F_2|C)=P(F_1|C)P(F_2|C)
\]
当待分类样本拥有若干特征变量F1...Fn时,待分类样本属于类C的后验概率为:
\[p(C|F_1,...,F_n)=\frac{1}{Z}p(C)\prod_{i=1}^n p(F_i|C)
\]
其中,\(Z=P(F_1,...,F_n)\)是一个缩放因子,当特征向量的值已知时是一个常数。
分类时可以采用最大后验概率(MAP)决策准则:
\[\rm{classify}(f_1,...,f_n)=\mathop{\arg\\max}\limits_c p(C=c)\prod_{i=1}^n p(F_i=f_i|C=c)
\]
工程上的技巧
平滑技术,为了防止乘积的某一项出现0的情况,采用平滑技术解决. 常见的有laplace平滑
和加1平滑
.
laplace平滑
增加未出现的item的概率(同时因此减少已出现的概率).
最简单的加1平滑
在分子中简单的加1,分母加上元的个数, 但会有一个问题:未出现的和只出现一次的概率相混淆了.
或者在先验概率的基础上加上一个适当的较小的概率值。
还有其它更好一些的方法:古德图灵平滑;线性插值法;回退法(K-Z回退).
取对数,为了防止多个概率值相乘可能出现的算数下溢的情况(接近于0而精度不够用导致结果为0),可以对概率值取对数 \(\log(x\cdot y)=\log x + \log y\)。另外,将各个词与其在正类的条件概率的对数值构成的键值对存到一张表中,在测试的时候只需要查表再做简单的加法,将计算量转移到了训练阶段.
转为权重,一个句子是类别S与H的概率比的对数:\(\log {C_S\over C_H}=\sum_i\log{P(x_i|S)\over P(x_i|H)}\),和上述方法一样将各项保存在表中,测试时查表,相加后大于0表明是S类,否则H类.需要注意每一项要加平滑.还可以根据权重的大小来评估和筛选显著的特征.
朴素贝叶斯的三种模型
按照统计(训练)与判断(测试)时是否考虑重复词语(即是否去重)可分为3种模型:
模型 | 训练 | 测试 |
---|---|---|
多项式模型 | Y | Y |
伯努利模型 | N | N |
混合模型 | Y | N |
后两种模型比较简单方便,但由于丢失了词频信息,效果可能会差一些.
在新闻分类中的应用
- 对样本进行人工分类标记
- 分词,并去除垃圾词条
- 计算每个类别中词条的词频,计算出词条在各类别文本中的先验概率
- 对待分类样本同样进行上述过程
- 代入后验概率对应的classify公式
本文源自http://www.cnblogs.com/makefile/