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

一 序

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

二  朴素贝叶斯

2.1 问题引出

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

具体案例1如下:

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

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

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

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

Prior Information

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

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

条件独立性:

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

 

 

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

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

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

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

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

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

垃圾邮件分类实例

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

第一步、训练模型

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

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

构建词库:维度为15
接下来计算每一个词在不同分类中的条件概率,为了防止出现一些概率为0的情况,朴素贝叶斯一般采用add-one smooth策略:

第二步、预测分类

p(垃圾|邮件)>or <P(正常|邮件),先把预测推导出来的公式贴一遍:
p(内容∣正常)p(正常)>or<p(内容∣垃圾)p(垃圾)

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

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

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值