NLP学习笔记18-朴素贝叶斯(Naive Bayes)

一 序

  本文属于贪心NLP学习笔记系列。本篇介绍朴素贝叶斯。

二  朴素贝叶斯

2.1 问题引出

  垃圾邮件里经常出现“广告”,“购买”,“产品”这些单词。也就是p(“广告”|垃圾)>p(“广告”|正常),p(“购买”|垃圾)>p(“购买”|正常)……这符合我们判断习惯。那么这些概率怎么计算?

具体案例1如下:

下图计算了购买在垃圾邮件和正常邮件里出现的概率。

NLP学习笔记18-朴素贝叶斯(Naive Bayes)_第1张图片

根据假设:正常邮件的单词总数为24*10,垃圾邮件为:12 *10
正常邮件含有“购买”词的概率多少?p(“购买”|正常)=3/240
垃圾邮件含有“购买”词的概率多少?p(“购买”|垃圾)=7/120

和上面一样,再看下“物品”这个关键词的概率

NLP学习笔记18-朴素贝叶斯(Naive Bayes)_第2张图片

把词库中每个单词都按这个模式计算一遍,

Prior Information

先验就是我们已知的信息。

NLP学习笔记18-朴素贝叶斯(Naive Bayes)_第3张图片

插播数学背景知识:朴素贝叶斯定理

NLP学习笔记18-朴素贝叶斯(Naive Bayes)_第4张图片

条件独立性:

给定第三个事件P(X,Y|Z) =P(X|Z)*P(Y|Z) ,则称X和Y是条件独立事件,独立于Z

 

 

也就是说,当Z发生时,X发生与否与Y发生与否是无关的。

看到这里,我总是觉得李文哲老师的优秀之处,很多数学公式讲的很清楚,功底深厚。

判断新邮件是否是垃圾邮件:

需要判断一个邮件不是垃圾邮件,那么就要满足:
p ( 正 常 ∣ 内 容 ) > p ( 垃 圾 ∣ 内 容 )

NLP学习笔记18-朴素贝叶斯(Naive Bayes)_第5张图片

上面根据贝叶斯公式,下面根据条件独立推导。

这里面每一项我们都在朴素贝叶斯模型中训练好了,同理,p(内容|垃圾)也可以这样计算,那么最终二者可以进行比较并判断是否是垃圾邮件。

垃圾邮件分类实例

假设我们有的邮件数据:供6条数据,预测新邮件?

NLP学习笔记18-朴素贝叶斯(Naive Bayes)_第6张图片

第一步、训练模型

先看先验:正常邮件与垃圾邮件各占一半=1/2;

接下来计算正常单词在正常邮件或者垃圾邮件出现的概率,计算完之后基本就是训练好了。

构建词库:维度为15
接下来计算每一个词在不同分类中的条件概率,为了防止出现一些概率为0的情况,朴素贝叶斯一般采用add-one smooth策略:
NLP学习笔记18-朴素贝叶斯(Naive Bayes)_第7张图片

第二步、预测分类

p(垃圾|邮件)>or p(内容∣正常)p(正常)>or

其中p(正常),p(垃圾)是先验概率,剩余的把上一步的单词的概率放入。计算结果就是要比较结果的大小,这个明显左侧大说明该邮件是垃圾邮件。

这里注意:
当词库中词很多,每个词语的条件概率会很小,连乘后会得到underflow的错误,可以在每个项前面加上log,再来比较。
log一来是严格递增函数,不会因为加log改变相对大小。加log后连乘可以变连加,不会越乘越小。

 

 

 

 

你可能感兴趣的:(NLP,朴素贝叶斯算法,垃圾邮件,先验概率,NLP)