分享

从理论基础到实践理解朴素贝叶斯



问题导读

1.怎样从机器学习角度理解贝叶斯公式?
2.怎样识别垃圾邮件?
3.朴素贝叶斯的优缺点是什么?



导读

贝叶斯方法是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时直接而又高效,很多高级自然语言处理模型也可以从它演化而来。因此,学习贝叶斯方法,是研究自然语言处理问题的一个非常好的切入口。

其实朴素贝叶斯=贝叶斯公式+条件独立假设

1.贝叶斯公式

大学概率学统计就已经学过贝叶斯公式,没学过也没关系,该公式就一行:

P(Y|X)=P(X|Y)*P(Y)/P(X)

它是由联合概率推导出来的:

P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)

其中 P(Y) 叫做先验概率, P(Y|X) 叫做后验概率, P(Y,X) 叫做联合概率


2.机器学习角度理解贝叶斯公式

X:具有某些特征,Y:属于某类的标签。于是贝叶斯公式就变成:

P(“属于某类”|“具有某特征”)=P(“具有某特征”|“属于某类”)*P(“属于某类”)/P(“具有某特征”)

对于二分类问题最终判断判断 P(“属于某类”|“具有某特征”)是否大于1/2。

3.垃圾邮件识别

现在我们举个例子,判断**“我司可办理正规发票(保真)17%增值税发票点数优惠!”这样的一份邮件是不是垃圾邮件。那么这样的一个例子具有某些特征:X=“我司可办理正规发票(保真)17%增值税发票点数优惠!”,属于某类标签:Y=垃圾邮件

根据刚提到的概率模型就是判断概率P**(“垃圾邮件”|“我司可办理正规发票(保真)17%增值税发票点数优惠!”)是否大于1/2。

4.分词

为了完成垃圾邮件的识别,我们先了解下什么是分词。分词也是中文NLP中最重要的技术之一,就是将一句话拆分成若干个词语的组合。比如句子**“我司可办理正规发票(保真)17%增值税发票点数优惠!”就变成(“我”,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”))。那么在python平台上有一个非常常用 的分词工具就是jieba**。
分词完后,贝叶斯公式就变成:


640.png

5.条件独立假设

虽然已经把一句话转换成不同词语的组合,或者说一组向量,但我们现在还不知道分词后的概率怎么求,现在就用简单粗暴的方法:条件独立假设求上面的概率,也就是很朴素的近似。我们用S表示垃圾邮件,用H表示正常邮件,那么垃圾邮件的近似公式(贝叶斯公式分子第一项)就表示如下:


640 (2).png

终究是传说中的条件独立假设。基于正常邮件的条件独立假设也一样。
式中的每一项都特别好求,只需统计各类邮件中关键词出现的概率就行了,比如:


640 (3).png

在垃圾邮件分类的例子中,先验概率(贝叶斯公式分子第二项)都先等:P(S)=P(H)=1/2。

而其中P((”我“,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”)) 对于正常邮件和垃圾邮件值都是一样的,所以可以不用计算。

将这些公式代入贝叶斯公式就可以求出概率是不是大于1/2来判断该邮件,是不是垃圾邮件了。


6.朴素贝叶斯,朴素在何处

最后来讨论下加上条件独立假设的贝叶斯方法为什么叫朴素贝叶斯方法。

将句子(“我”,“司”,“可”,“办理”,“正规发票”) 中的 (“我”,“司”)与(“正规发票”)调换一下顺序,就变成了一个新的句子(“正规发票”,“可”,“办理”, “我”, “司”)。新句子与旧句子的意思完全不同。

但由于乘法交换律,朴素贝叶斯方法中算出来二者的条件概率完全一样!也就是说,在朴素贝叶斯眼里,“我司可办理正规发票”与“正规发票可办理我司”完全相同。朴素贝叶斯失去了词语之间的顺序信息。这就相当于把所有的词汇扔进到一个袋子里随便搅和,贝叶斯都认为它们一样。因此这种情况也称作词**袋子模型(bag of words)。**词袋子模型与人们的日常经验完全不同。比如,在条件独立假设的情况下,“武松打死了老虎”与“老虎打死了武松”被它认作一个意思了。恩,朴素贝叶斯就是这么单纯和直接。

朴素贝叶斯的优缺点

朴素贝叶斯的主要优点有:

1)朴素贝叶斯模型有稳定的分类效率。

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

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

朴素贝叶斯的主要缺点有:   

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

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

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

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




最新经典文章,欢迎关注公众号



---------------------






没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条