朴素贝叶斯

最近打算写一些偏基础的东西,尽量讲简单点吧,可能会有漏洞,各位大佬别喷,先从简单的朴素贝叶斯开始

朴素嘛,说白了就是比较简单,因为它基于了一个强假设,就是几个特征之间相互独立(也就是没有啥关系,比如你是不是丑和明天太阳是不是升起就是独立的)。

然后几个概念:

先验概率:就是看的到的概率(比如一堆苹果,你知道红的有多少个,大的有多少个,数数就知道的东西)

后验概率:就是一下子看过去不知道的概率,要算才知道的概率

 

接下来我们考虑一个垃圾邮件分类的问题:

比如我们现在有100封邮件,其中50封是垃圾邮件,我们把邮件中的单词作为特征,然后认为每个单词之间没关系(这其实是不对的是吧?但是因为“朴素”所以我们这么假设,而且在很多场景中朴素贝叶斯的效果其实还不错)

比如垃圾邮件中出现buy的有70%,出现friend的只有5%,非垃圾邮件中出现buy的有5%,出现friend的有10%,所有邮件里有20%的垃圾邮件,所有邮件里有buy这个单词的有30%,所有邮件里有friend这个单词的有20%

那么P(buy|垃圾)=70%,P(friend|垃圾)=5%, P(buy|非垃圾)5%,P(friend|非垃圾)=10%, P(垃圾)=20%  ,P(非垃圾)=80% , P(buy)=30% , P(friend)=20%大声的告诉我这些是啥——先验概率

有这些先验我们可以算啥?可以算垃圾邮件里各个特征的概率或者非垃圾邮件里各个特征的概率。(没看明白不要紧,反正你知道在“朴素”的前提下,我可以算出来个这样的东西)抽象点写就是下面这个样子  xi就是第i个特征,c就是结果分类(垃圾还是非垃圾)

我们前面说过这是个“朴素”的方法,我们假设各个条件是独立的,根据概率论的知识,可以知道

看,这些P(x|c)先验我们上面不是有了吗,带进去就有左边的东西了

我们现在想要的是有一个新邮件,它有 XXXXXX单词,那它是不是一封垃圾邮件,用数学表示也就是P(C|X)

咦,这东西和我们上面P里面c和x是反的啊。。。这可怎么办,不怕不怕,我们有贝叶斯公式,它长这个样子

把我们前面得到的P(X|C)带入到贝叶斯公式,看,公式里所有的东西我们不是都有了嘛。

我们把先验都带进去就可以啦。啥?你说你不知道P(ci)?这不就是P(垃圾)和P(非垃圾)啊,前面那个20%和80%,那P(xi)也应该知道是啥了吧,就是P(buy),P(friend)啥啥啥的。看这不就都算出来了嘛~ 最后算出来的这个P(C|X)就是传说中的后验概率。

最后算出来的P(垃圾|X)和P(非垃圾|X)比个大小,选个大的当结果就好啦。你说两次算的P(x)都一样,去掉P(X)比较结果也是一样的,对啊,没错啊,所以我们都不用算P(X),只算分子比个大小就行啦,只不过这时候就不是概率了,要写成下面这个样子

你说举个数据的例子吧,我好懒不想举了,看看这个例子吧->https://blog.csdn.net/xo3ylAF9kGs/article/details/78630937

 

然后大家说看到了很多奇怪的贝叶斯,叫什么Gaussian Naive BayesMultinomial Naive BayesBernoulli Naive Bayes ,咋这么多花里胡哨的呢?

我们先说Bernoulli Naive BayesGaussian Naive Bayes,他们两个其实就是的产生方式不太一样。在前面的例子里我直接给你了,实际上对不同的问题每个特征的概率产生方式会不同。

比如Bernoulli Naive Bayes,它基于下面公式产生特征的条件概率(这里的y就是上面的c)。该模型最明显的一个特点是他非常关注每一个特征是否出现而不仅是出现的次数,针对那种在某个计算中不出现的特征值会有惩罚。

Gaussian Naive Bayes基于下面公式计算条件概率

至于这两个方法具体在哪个场景下用。。。欢迎小伙伴们留言给出应用例子,独乐乐不如众乐乐嘛。

Multinomial Naive Bayes就和上面两个不太一样了,我们考虑一个问题,如果有一封新的邮件,这里面所有词都在原来的邮件里没出现,会怎么样?算出来应该概率全是0对不对?这样是不对的对不对?为了应对类似这种问题,需要给它加一个平滑项。这个模型就是对最初的朴素贝叶斯模型做了类似于拉普拉斯平滑。这个算法经常会用于做文本处理。下面上公式。

对于每一个y来说,分布通过向量参数化,n是类别的数目(在文本分类中,表示词汇量的长度) 表示标签i出现的样本属于类别y的概率

该参数   是一个平滑的最大似然估计,即相对频率计数:

                                                                                                                    

 

  表示标签i在样本集T中属于类别y的 数目

 

 表示在所有标签中类别y出现的数目

 

平滑先验 a >=0表示学习样本中不存在的特征并防止在计算中概率为0,设置alpha = 1被称为拉普拉斯平滑,当α<1称为Lidstone平滑

 

参考链接

https://blog.csdn.net/Gamer_gyt/article/details/51253445

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值