朴素贝叶斯与文本分类
朴素贝叶斯 (Naive Bayesian algorithm) 是一种基于概率统计的分类方法,主要用到了贝叶斯定理和特征条件独立性假设。朴素贝叶斯具有悠久的历史,其算法逻辑比较简单,有健壮的性能,通常可以用于文本分类、信用评估等方面。
1、朴素贝叶斯
1.1 贝叶斯公式
给定一个样本,我们用 X 表示样本的特征,用 Y 表示样本的类别,我们首先可以计算出 X 和 Y 的联合概率 P(X,Y):
文章图片
X 和 Y 的联合概率 从联合概率 P(X,Y) 可以推导出则贝叶斯公式:
文章图片
贝叶斯公式 其中 P(Y) 称为先验概率,P(Y|X) 称为后验概率。
对于二分类问题,若 P(Y = 0|X) > P(Y = 1|X),则判断样本 X 的类标为 Y = 0。因为对于任意 X,P(X) 是固定的,则我们只需要比较 P(X|Y = 0)P(Y = 0) 与 P(X|Y = 1)P(Y = 1) 的大小即可以知道 X 属于哪一个类。
P(Y = 0) 与 P(Y = 1) 可以用下面的公式计算,其中 D 表示整个数据集,D0 表示属于第 0 类的所有数据,D1 表示属于第 1 类的所有数据:
文章图片
Y 的先验概率 而 P(X|Y = 0) 和 P(X|Y = 1) 一般不容易进行计算,因此朴素贝叶斯采用了条件独立性假设,使 P(X|Y) 更容易计算,而且也具有比较好的鲁棒性。
1.2 条件独立性假设
假定特征 X 有 N 维,X = [X1, X2, ..., XN],则贝叶斯公式可以表示为
文章图片
贝叶斯公式 而 P(X|Y = 0) 和 P(X|Y = 1) 可以表示为:
文章图片
朴素贝叶斯采用条件独立性假设计算上面的公式,条件独立性假设是指,样本 X 的特征之间出现与否是互相独立的。
文章图片
条件独立性假设 而 P(Xi = x|Y = y) 的概率对于不同的数据和任务有不同方式计算,常见的有:
文章图片
D(Xi=x,Y=y) 表示数据集中类标等于 y 且第 i 个属性值为 x 的所有数据,|D| 表示求数据集 D 里面数据个数。通过上面的方法,我们就可以计算出 P(Y) 和 P(X|Y),然后用于对比 P(Y|X) 的大小,从而找出样本所属的类。
2、 朴素贝叶斯优化技巧
2.1 取对数相加代替概率相乘
文章图片
在条件独立性假设里,我们将 P(X|Y) 转换成了对于每一位特征的概率相乘。由于概率是小于 1 的数,多次相乘后的数可能会很小,另外乘法的运算时间相对也长一点,因此通常采用取对数,然后相加的方式。
文章图片
计算对数的时间花销也是比较大的,因此通常会事先计算出大量概率值 P 对应的 log P 并保存下来,在后续计算时从保存的表中直接读取 log P 的值。
2.2 转为特征权重相加
我们要比较 P(Y = 0|X) 与 P(Y = 1|X),等价于比较 log P(Y = 0|X) 和 log P(Y = 1|X),如果 log P(Y = 0|X) - log P(Y = 1|X) > 0 则 X 属于 Y=0 的概率更大。
文章图片
最终可以转换为:
文章图片
我们可以将第 i 个特征所有选项 xi 的权重保存在 hash 表中,使用时查找,加快算法速度。
2.3 平滑处理
原始的 P(X|Y) 的计算方法为:
文章图片
使用上面的公式计算概率 P(X|Y) 有可能出现概率为 0 的情况,此时后验概率 P(Y|X) 的值就变为 0 了。因此在实际使用时,通常要进行平滑处理。
假设第 i 个特征 Xi 有 k 种可能的取值,则可以使用下面的公式进行平滑处理。
文章图片
平滑处理 3、文本分类
我们以垃圾邮件分类为例子,了解朴素贝叶斯在文本分类中的应用。
3.1 垃圾邮件
我们的样本是一封邮件,则样本的特征 X 为邮件的内容,类标 Y 表示邮件是否是垃圾邮件。
X = 内容,如"上次的股票赚了吧,加微信获取更多股票信息"
Y = 类别,如 "垃圾邮件"、"正常邮件"
那么给定一封邮件 "上次的股票赚了吧,加微信获取更多股票信息",就可以根据贝叶斯公式计算出这封邮件属于垃圾邮件的概率。
文章图片
【朴素贝叶斯与文本分类】
3.2 分词以及去掉停用词
直接在数据集上统计 P("上次的股票赚了吧,加微信获取更多股票信息"|"垃圾邮件") 是不实际的,因为每封邮件的内容都不一样,下次邮件内容换成 "上次的股票赚了吧,加QQ获取更多股票信息",则得到的概率为 0。
因此通常需要进行分词处理以及去掉停用词,停用词指一些对于我们分类没有帮助的词,通常是一些非常中性的词,如 "了"、"我"。
分词:"上次", "的", "股票", "赚了", "吧", "加", "微信", "获取", "更多", "股票", "信息"
去掉停用词:"上次", "股票", "赚了", "微信", "获取", "更多"、"股票", "信息"
则最终 P("上次的股票赚了吧,加微信获取更多股票信息"|"垃圾邮件") 可以转换为
文章图片
根据条件独立性假设,最终变为:
文章图片
经过上述的步骤,我们可以计算出 P(Y="垃圾邮件"|X) 和 P(Y="正常邮件"|X) 的概率,最终判断邮件 X 是不是垃圾邮件。
4、总结
朴素贝叶斯是一种比较简单的算法,具有不错的鲁棒性。
朴素贝叶斯主要使用了贝叶斯公式和条件独立性假设。
朴素贝叶斯文本分类器实际上是词袋模型,也就是把文本看成是一个包含很多单词的袋子,与文本单词顺序无关。因此句子 "我喜欢听张学友唱歌" 和 "张学友喜欢听我唱歌" 在朴素贝叶斯看来是没有区别的。
参考文献
李航《统计学习方法》
推荐阅读
- 【读书笔记】贝叶斯原理
- 现役联盟前十怎么排(詹姆斯榜首无悬念!杜兰特库里位置不确定!)
- 戏剧教育阿提斯师资培训在安徽阜阳举办
- 青春里
- 诗‖失德
- 走进大师的世界|走进大师的世界 ——《维特根斯坦?传—天才之责任》
- 滑板车中的劳斯莱斯,你不想拥有吗()
- 这些你能看明白吗()
- 藏族开发的修路人——记致富援乡的斯定那珠
- 「漫威之父」斯坦·李去世,回味老爷子在漫威中客串的各种角色