朴素贝叶斯(NaiveBeyesian Classification,NB)

1、贝叶斯定理

假设对于某个数据集,随机变量C表示样本为C类的概率,F1表示测试样本某特征出现的概率,套用基本贝叶斯公式,则如下所示:

详解基于朴素贝叶斯的情感分析及 Python 实现

上式表示对于某个样本,特征F1出现时,该样本被分为C类的条件概率。那么如何用上式来对测试样本分类呢?

举例来说,有个测试样本,其特征F1出现了(F1=1),那么就计算P(C=0|F1=1)和P(C=1|F1=1)的概率值前者大,则该样本被认为是0类;后者大,则分为1类。(分类原则)

对该公示,有几个概念需要熟知:

先验概率(Prior)。P(C)是C的先验概率,(每个类别的先验概率)可以从已有的训练集中计算分为C类的样本占所有样本的比重得出。

证据(Evidence)。即上式P(F1),(待分类对象自身的概率)表示对于某测试样本,特征F1出现的概率。同样可以从训练集中F1特征对应样本所占总样本的比例得出。

似然(likelihood)。即上式P(F1|C),每个类别产生该对象的概率 表示如果知道一个样本分为C类,那么他的特征为F1的概率是多少。

对于多个特征而言,贝叶斯公式可以扩展如下:

详解基于朴素贝叶斯的情感分析及 Python 实现

分子中存在一大串似然值。当特征很多的时候,这些似然值的计算是极其痛苦的。现在该怎么办?

2、朴素的概念

为了简化计算,朴素贝叶斯算法做了一假设:“朴素的认为各个特征相互独立”。这么一来,上式的分子就简化成了:

P(C)P(F1|C)P(F2|C)...P(Fn|C)。

这样简化过后,计算起来就方便多了。

这个假设是认为各个特征之间是独立的,看上去确实是个很不科学的假设。因为很多情况下,各个特征之间是紧密联系的。然而在朴素贝叶斯的大量应用实践实际表明其工作的相当好。

其次,由于朴素贝叶斯的工作原理是计算P(C=0|F1...Fn)和P(C=1|F1...Fn),并取最大值的那个作为其分类。而二者的分母是一模一样的。因此,我们又可以省略分母计算,从而进一步简化计算过程。

另外,贝叶斯公式推导能够成立有个重要前期,就是各个证据(evidence)不能为0。也即对于任意特征Fx,P(Fx)不能为0。而显示某些特征未出现在测试集中的情况是可以发生的。因此实现上通常要做一些小的处理,例如把所有计数进行+1(加法平滑 additive smoothing,又叫拉普拉斯平滑 Laplace smothing)。而如果通过增加一个大于 0 的可调参数 alpha 进行平滑,就叫 Lidstone 平滑


总结

某一组特征值为{a1,a2,...,an}属于某类别ci

的概率:

p(ci|a1,a2,...,an)=p(ci)∗p(a1,a2,...,an|ci)p(a1,a2,...,an)

用朴素的语言可以表达为:

posterior (后验概率)=prior (先验概率) ∗ likelihoor (似然概率) evidence (边际概率)

只关心分子部分:p(ci)p(ci|a1,...,an) 
=p(ci)p(ci|a1)p(a2,a3,...,an|ci,a1) 
=p(ci)p(ci|a1)p(a2|ci,a1)p(a3,...,an|ci,a1,a2) 
=p(ci)p(ci|a1)p(a2|ci,a1)p(a3|c,a1,a2)...p(an|ci,a1,...,an1)

由于朴素贝叶斯假设各特征之间是相互独立的,则有: 

p(ai|C,aj)=p(ai|C)

所以有: 
p(ci)p(ci|a1,...,an)=p(ci)p(a1|ci)...p(an|ci)

=p(ci)k=1np(ak|ci)

p(ci) 我们一般用类别 i 的样本数量除以总样本数量来估计,即: 
p (ci) =D (i) : 类别i样本数量D : 总的样本数量

而对于 p(ak|ci) ,只需要找出所有的类别为i的样本中,第k个属性中,取值为 ak 的比例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值