美文网首页
朴素贝叶斯与文本分类

朴素贝叶斯与文本分类

作者: NLP与人工智能 | 来源:发表于2019-11-17 00:12 被阅读0次

朴素贝叶斯 (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、总结

朴素贝叶斯是一种比较简单的算法,具有不错的鲁棒性。

朴素贝叶斯主要使用了贝叶斯公式条件独立性假设

朴素贝叶斯文本分类器实际上是词袋模型,也就是把文本看成是一个包含很多单词的袋子,与文本单词顺序无关。因此句子 "我喜欢听张学友唱歌" 和 "张学友喜欢听我唱歌" 在朴素贝叶斯看来是没有区别的。

参考文献

李航《统计学习方法》

相关文章

  • Task5 朴素贝叶斯、SVM、LDA主题模型

    任务 朴素贝叶斯 朴素贝叶斯的原理 利用朴素贝叶斯模型进行文本分类 SVM模型 SVM的原理 利用SVM模型进行文...

  • 朴素贝叶斯法

    朴素贝叶斯法 朴素贝叶斯法的学习与分类 朴素贝叶斯法的参数估计 朴素贝叶斯实现 高斯朴素贝叶斯实现 使用 skle...

  • 朴素贝叶斯分类

    朴素贝叶斯分类的原理与流程 朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴...

  • 轻松带你搞懂朴素贝叶斯分类算法

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 机器学习算法朴素贝叶斯分类

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 监督学习之概率模型

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 机器学习——朴素贝叶斯

    朴素贝叶斯分类器(Naive Bayesian Classifier) 概述 朴素贝叶斯是基于贝叶斯,定理与特征条...

  • 数据挖掘之贝叶斯

    贝叶斯推理贝叶斯法则朴素贝叶斯分类器应用:文本分类 1. 贝叶斯推理 --提供了推理的一种概率手段 --两个基本假...

  • 朴素贝叶斯

    朴素贝叶斯 用处:朴素贝叶斯主要解决的是而分类的问题。 为什么叫朴素贝叶斯: 因为贝叶斯分类只做最原始,最简单的假...

  • 关于朴素贝叶斯的一些理解及python的简单实现

    1.朴素贝叶斯为什么是“朴素”的?朴素贝叶斯算法是基于贝叶斯定理与特征条件独立假设的分类方法,朴素贝叶斯之所以有朴...

网友评论

      本文标题:朴素贝叶斯与文本分类

      本文链接:https://www.haomeiwen.com/subject/amiuictx.html