朴素贝叶斯算法_Naive Bayes 朴素贝叶斯算法

序言:

贝叶斯公式中学都学过的东西,本节主要的目的是从机器学习的视角解读贝叶斯公式,以及怎样的将贝叶斯公式应用于实际的工程当中。贝叶斯学派的思想可以概括为先验概率+数据=后验概率。也就是说我们在实际问题中需要得到的后验概率,可以通过先验概率和数据一起综合得到。在很多实际应用中,贝叶斯理论很好用,比如垃圾邮件分类,文本分类等等。

一,贝叶斯公式和后验概率

假如有两个相互独立的变量X和Y,有公式:

2f9549220041dd1afa44a726826e4eb3.png

从而推出贝叶斯公式:

cb4e339db28d56b9ea061072c72852e0.png

对于分母的P(X) 有全概率公式:

c1d280dc4175f9bcca84a89a481ed936.png

将P(X)全概率公式代入条件概率中:

068c379e646f8a0e3d550d020cfdbd91.png

举个例子:

我们收集了一大堆的数据, X表示特征的集合,Y表示类别的集合。对应上面的公式有简易的表示为:

3b942d87ed5e455aaafd97edd94f44e8.png
  • P(归属的类别|具有某特征)解释为,具有某一些特征的数据归属于某类别的概率,称为后验概率,这也是我们所希望求得的概率。以邮件分类为例,已知某些词判断其为垃圾邮件的概率。
  • P(具有某特征|归属类别)解释为,在知道归属类别的情况是具有某特征的概率,称为先验概率,可以通过语料库来进行计算。以邮件分类为例,此概率表示为,垃圾邮件中出现某些单词的概率
  • P(归属类别)在一个语料库中属于某类别的个数除以样本总数。如有垃圾邮件和正常邮件各为一般则P(垃圾邮件)=1/2。

二,贝叶斯的巧妙

贝叶斯公式之所以巧妙,我认为是它将求后验概率转化为了求先验概率!

还是以邮件分类为例!假如从邮件中摘出一句话“快来爽吧KTV,酒水全场五折!”判断其为垃圾邮件的概率,用公式表示为:P(垃圾邮件|“快来爽吧KTV,酒水全场五折!”)

根据贝叶斯公式,转化为求先验概率:

107ec7a9c84fb5ea0517e201605b7195.png

这下就简单了,给定一个邮件的语料库,数数次数就可以了。从这里可以看出贝叶斯属于有监督的学习方式,需要提前的根据标签进行训练。

三,数据稀疏和独立假设

但是在实际的语料库中,在垃圾邮件中出现完整的此句话的概率很小,这是因为汉语博大精深,同一个意思表达方式千差万别,所以我们把句子拆分为词来看下,通过此种方式来降低数据的稀疏,避免出现的概率为0,如下例子:

P(‘快来爽吧KTV,酒水全场五折!’|垃圾邮件)

=P(‘快来,爽,吧,KTV,酒水,全场,五折’|垃圾邮件)

通过分词把句子拆分为词,但是计算此概率还是比较困难,此时NB的贝叶斯引入了独立假设,即:假设各个词之间是相互独立的(数据的各个特征之间是独立的),接下来神奇的事情发生了:

=P(‘快来,爽,吧,KTV,酒水,全场,五折’|垃圾邮件)

=P(快来|S)*P(爽|S)*…*P(五折|S)

S表示垃圾邮件。

P(快来|S)=(垃圾邮件中‘快来’出现的次数)/(垃圾邮件中词的总数)

这里的独立假设就是Naïve的由来,贝叶斯+独立假设=朴素贝叶斯

Summary:

至此,我们通过分词和独立假设,将先验概率P(特征|归类)概率过可计算化,通过统计本句话拆分的词在垃圾邮件中出现的词频与总次数相比,最后将各个词的概率相乘。

四,贝叶斯模型建立:

假设分类模型的样本如下:

65ef3ef6cfacb4e745c0d9451885264e.png

由上面的假设可知每个数据的特征不止有一个,有n个的特征,这就造成了:

假设各个特征之间是相互独立的那么有:

35e70e11499bfe858411d19571e84795.png

相互独立的假设条件大大简化了公式的计算难度,但也给其应用带来一定的限制,并不是数据的各个特征之间都是相互独立的。最终的目的是的具有某个特征的数据,属于某个类别的概率最大,用公式表示为:

b68ca3b2a8bd35f0d1a20a14421baba2.png

对于所有计算数据来讲分母都是一样的略去,那一般式的写法为:

fe4c5fb62d02c3cfc83419fa17bfcad3.png

五,贝叶斯的Disable

上面我们讨论了通过分词,以词出现的频率代替整个句子或是文档的出现频率,此时有一个问题,即在贝叶斯模型看来“武松打死了老虎“和”老虎打死了武松“是一样一样的,这就是假设相互独立带来的局限性,称此种模型为词袋模型(Bag of Word)。为此我们可以引入语言模型N-gram,例如,当前词和前一个或是前两个词相关,分别称为unigram和bigram,即前后词之间有一定的语序关系。以bigram为例:

P(‘快来爽吧KTV,酒水全场五折!’|垃圾邮件)

=P(‘快来,爽,吧,KTV,酒水,全场,五折’|垃圾邮件)

=P(快来| S)*P(爽|快来,S)*…*P(五折|全场,S)

P(五折|全场,S)表示为在垃圾邮件中,词‘全场’后面为‘五折’的概率。

当加入了语言模型后就体现了语序的概念,其预测的结果就提升了一点。

处理重复词的三种模型

在一篇文章或是句子中不可避免的会出现重复词,例如“大厅酒水自助,全场酒水五折起!KTV包厢酒水低至一折“,这句话中‘酒水’连续出现了三次,贝叶斯模型是如何处理的,下面是典型的三种模型:

1,多项式模型

Key Point: 出现多少次就统计多少次

f9d145604a92af5b21238b83e620e5f4.png

这里的‘酒水’出现了三次,所以有个三个多项式相乘。

公式版本:

如果

是离散的值,那么可以假设
是符合多项式分布的,这样得到
是在样本类别
中,特征
出现的频率即:

23796e5d3140b18177892288baa955f0.png

其中

为样本类别中的特征计数,而
为类别为
的样本中,第i维特征
出现的计数。如果某些的类别没有出现过会导致概率为0,为解决此种情况,引入了拉普拉平滑算法。详细请参考平滑算法链接(1)

https://zhuanlan.zhihu.com/p/100441799

2,伯努利分布:

简单理解为:只要词出现就计数为1,不管多少。

P(大厅酒水自助,全场酒水五折起!KTV包厢酒水低至一折|S)

=P(大厅|S)P(酒水|S)P(自助|S)*…*P(一折)

公式版本:

假设

是非常稀疏的离散值,即各个特征出现频率很低,这时候我们假设样本服从伯努利分布。即只要
特征出现就记1,不出现为0,这里不关注特征
出现的次数,只要
出现即可。

363ab28cd35fbe11c994599b81119b61.png

混和模型:

第三种方式是在计算句子概率时,不考虑重复词语出现的次数,但是在统计计算词语的概率P(“词语”|S)时,却考虑重复词语的出现次数,这样的模型可以叫作混合模型

3,正态分布

如果

是连续的值且符合正态分布。

5d5a7f3f437a5dbe5b73659a28137ebe.png

六,贝叶斯和频率学派之争

在垃圾邮件分类中,假设中体样本各有垃圾和正常邮件1 万封,

959a43f41f5671644153ca000cc141c5.png

对于以上公式分母一样可以省略,又有P(Y1)=P(Y2),所以:

c2cc7ba1da297d3fddc47223e1a1fdcc.png

可以看出对于结果只需要比较右边的概率就可以了,我们把它称之为似然函数,也可以解释为逆条件概率。即不考虑先验概率直接比较似然函数即可。这是频率学派的观点,而贝叶斯学派则建议考虑先验概率对结果的影响。

这里的关键就是,语料库的分布是否符合真实世界分布。当我们对数据的真实分布一无所知的时候,只能假设他们概率相同,使用最大似然公式计算,就是频率学派是拿过来直接干!统计词频。当我们确切的知道真实分布的情况的时候,我们乘上先验概率,所以贝叶斯学派假设数据服从于各种的分布,以减少与真实数据分布之间的差异。。

在深入的理解下贝叶斯学派的思想:当已知某特征求属于类别概率不好求的时候,往往求其逆反概率(已知归属类别求具有某特征概率),问题迎刃而解!

七,实际工程应用的tricks:

1:因概率较小,使用log函数。

P(大厅酒水自助,全场酒水五折起!KTV包厢酒水低至一折|S)

=logP(大厅|S)+ logP(酒水|S)+…+ logP(一折|S)

P(大厅酒水自助,全场酒水五折起!KTV包厢酒水低至一折|H)

=logP(大厅|H)+ logP(酒水|H)+…+ logP(一折|H)

这样将乘法运算转化为加法运算,然后可以将特定经常出现的词放到表中,以备查找。

2:将特定的条件概率事先算好,放在表中,减少计算次数,提高效率。

一般对于二分类项目,直接比较结果即可:

450d3f55d2bf587a378a9103088d46af.png

可以把上面的每一项看作为对应单词的权重,比如

为大厅这个词的权重,在训练阶段可以将值直接的存储起来,等待实际预测的时候进行查验。

3:选取TopK 个关键词,对其对应的权重进行加和,不过这样根据经验来选取判断结果的阈值。

实际采用方法,对于长篇幅邮件,按一定的大小,比如每500字,将其分割成小的文本段落,再对小文本段落采用topk关键词的方法。只要其中有一个小文本段落超过阈值就判断整封邮件是垃圾邮件。对于超短篇幅邮件,比如50字,可以按篇幅与标准比较篇幅的比例来选取topk,以确定应该匹配关键

词语的个数。比如选取 个词语进行匹配,相应的阈值可以是之前阈值的

4:位置权重

以上我们讨论过程中,没有考虑位置因素对概率的影响,完全可以在句首或是段落标题加一个很重的权重,正文默认权重为1;所以可以根据词语出现的位置,对其权重再乘以一个放大系数,以扩大其对整封邮件的影响,提高识别准确度。

5ba4ea73fcd3ccbb02a66ae1e443e439.png

本文整理参考寒老师视频教程,如有不妥之处,请予指正。

参考文献:

https://zhuanlan.zhihu.com/p/100441799

https://www.cnblogs.com/pinard/p/6069267.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值