斯坦福大学公开课 :机器学习课程(Andrew Ng)——4、监督学习:Naive Bayes

本文详细介绍了朴素贝叶斯模型,包括模型假设、构建过程、邮件分类的应用,以及拉普拉斯平滑技术和两种事件模型:多元伯努利和多项式事件模型。朴素贝叶斯尽管存在假设简化,但在实际应用中表现出良好的分类效果。

0)GDA要求输入特征x是连续型随机变量;朴素贝叶斯分类方法适用于输入特征x是离散值的情况主要目的是确定后验概率p(x|y)

1)朴素贝叶斯模型(Naive Bayes Model)

    1.1)朴素贝叶斯假设

    1.2)朴素贝叶斯模型的构建——以邮件分类为例

    1.3)应用朴素贝叶斯模型分类新邮件

    1.4)朴素贝叶斯模型的一些问题

2)拉普拉斯平滑技术(Laplace Smoothing)

3)朴素贝叶斯算法的两类事件模型(多元伯努利事件模型+多项式事件模型,Multi-Variate Bernoulli Event Model and Multinomial Event Model)

    3.1)多元伯努利事件模型(multi-variate Bernoulli event model)

    3.2)多项式事件模型(Multinomial Event Model)

    3.3)朴素贝叶斯模型——多项式事件模型——构建

    3.4)朴素贝叶斯模型——多项式事件模型——邮件分类示例




1)朴素贝叶斯模型(Naive Bayes Model)

    1.1)朴素贝叶斯假设

假设x中的特征分量xi是相互条件独立的。此假设虽然常常不成立,但其产生的分类效果却很好!

    1.2)朴素贝叶斯模型的构建——以邮件分类为例

对于邮件分类,采用最简单的特征描述方法,首先找一部英语词典,将里面的单词全部列出来。然后将每封邮件表示成一个向量,向量中每一维都是字典中的一个词的0/1值,1表示该词在邮件中出现,0表示未出现。如:

clip_image044[8]

假设字典中总共有5000个词,那么x是5000维的。这时候如果要建立多项式分布模型(二项分布的扩展)。 

多项式分布(multinomial distribution)

某随机实验如果有k个可能结局A1,A2,…,Ak,它们的概率分布分别是p1,p2,…,pk,那么在N次采样的总结果中,A1出现n1次,A2出现n2次,…,Ak出现nk次的这种事件的出现概率P有下面公式:(Xi代表出现ni次)

clip_image045[6]

对应到上面的问题上来,把每封邮件当做一次随机试验,那么结果的可能性有 clip_image047[6]种。意味着k= clip_image047[7],pi有 clip_image047[7]个,参数太多,不可能用来建模。

此时,我们就要用到朴素贝叶斯假设,即如果一封邮件是垃圾邮件(y=1),且这封邮件出现词“buy”与这封邮件是否出现“price”无关,即“buy”和“price”之间是条件独立的。

形式化表示为,(如果给定Z的情况下,X和Y条件独立):clip_image049[6]也可以表示为:clip_image051[6]

回到邮件问题中

clip_image052[8]

建立形式化的模型表示:

clip_image054[8]


clip_image058[10]

那么我们想要的是模型在训练数据上概率积能够最大,即最大似然估计如下:

clip_image059

求解得:

clip_image060[8]

最后一个式子是表示y=1的样本数占全部样本数的比例(垃圾邮件占总训练样本邮件数的比例),前两个表示在所有的y=1(垃圾邮件)或0(非垃圾邮件)的样本中,特征Xj=1的比例(即,对于y=1,表示出现了第j个单词的垃圾邮件总数占所有<不过出没出现第j个单词>垃圾邮件总数的比例)。

    1.3)应用朴素贝叶斯模型分类新邮件

a)根据训练样例,利用1.2)中描述的方法计算出了朴素贝叶斯模型中的10002个参数(y=1和y=0时,j分别为1-5000时的条件概率;y=1和y=0的概率),这远远少于clip_image047[7]

b)对于一个待分类新邮件x,根据生成模型定义的下面的式子计算p(x|y=0)*p(y=0)和p(x|y=1)*p(y=1)哪个大,对应的y就是x要归为的类。

clip_image001[4]

    其中,p(x|y)根据朴素贝叶斯假设计算,方法如下:

clip_image052[8]

    1.4)朴素贝叶斯模型的一些问题
a) 朴素贝叶斯假设虽然常常不成立,但其产生的分类效果却很好!

b)对于邮件分类,该方法由于只是简单地将某个单词出现不出现标记为0/1进行区分,而没有考虑一个单词在同一个邮件中可能出现多次的情况。

c)朴素贝叶斯方法可以扩展到y也有多个离散值(不仅仅是y=0 / y=1)的情况。

d)对于特征是连续值的情况,可以采用分段的方法来将连续值转化为离散值。转换标准可以采用信息增益的度量方法来确定。比如房子大小可以如下划分成离散值:

clip_image064

e)朴素贝叶斯方法有个致命的缺点就是对数据稀疏问题过于敏感,这就要引出下面的拉普拉斯平滑技术(Laplace Smoothing)。


2)拉普拉斯平滑技术(Laplace Smoothing)

假设NIPS这个词在字典中的位置是35000。然而NIPS这个词没有在训练数据中出现过,但新邮件却第一次出现了NIPS。那我们算概率的时候如下:

clip_image065[8]

由于NIPS不管是在以前的垃圾邮件还是正常邮件都没出现过,那么结果只能是0了。显然最终的条件概率也是0:

clip_image066[4]


拉普拉斯平滑技术就是要解决上面的问题!

    假设离散型随机变量z有{1,2,…,k}个值,则将原来的估计方法clip_image070[4] 改为:clip_image071[4] ,使每个概率都严格大于零,同时满足可见clip_image072[4]。其他平滑方法不再详述。

   回到邮件分类的问题,修改后的公式为:

clip_image073[4]

3)朴素贝叶斯算法的两类事件模型(多元伯努利事件模型+多项式事件模型,Multi-Variate Bernoulli Event Model and Multinomial Event Model)

我们刚刚使用的用于文本分类的朴素贝叶斯模型,称为多元伯努利事件模型。

    3.1)多元伯努利事件模型(multi-variate Bernoulli event model)

    a)首先随机选定邮件的类型(垃圾或者普通邮件)。决定y=0还是y=1主要根据p(y=0)和p(y=1)的概率分布。

    b)然后翻阅词典,从第一个词到最后一个词,随机决定每一个词是否要在邮件中出现,出现标示为1,否则标示为0。决定一个词是否出现依照概率p(xi|y)。

    c)最后将所有标记为1的词组成一封邮件。那么这封邮件的概率可以表示为clip_image074[8]

    3.2)多项式事件模型(Multinomial Event Model)

    a)首先随机选定邮件的类型(垃圾或者普通邮件)。决定y=0还是y=1主要根据p(y=0)和p(y=1)的概率分布。(和上面的完全相同)

    b)让i表示邮件中的第i个词,xi表示这个词在字典中的位置,那么xi取值范围为{1,2,…|V|},|V|是字典中词的数目(如5000)。任何一封邮件可以表示成clip_image075[8],n可以变化,因为每封邮件的词的个数不同。然后对于每个xi 随机从|V|个值中取一个,字典中相应位置的词就是我们要使用的。这相当于重复投掷|V|面的骰子,将观察值记录下来就形成了一封邮件。当然每个面的概率服从p(xi|y),而且每次试验条件独立。

    c)最后将所有抽到的词组成一封邮件。那么这封邮件的概率可以表示为clip_image074[8]。居然跟上面的一样,那么不同点在哪呢?注意第一个的n是字典中的全部的词,下面这个n是邮件中的词个数。上面xi表示一个词是否出现,只有0和1两个值,两者概率和为1。下面的xi表示|V|中的一个值,|V|个p(xi|y)相加和为1。

    3.3)朴素贝叶斯模型——多项式事件模型——构建

多项式事件模型形式化表示为:

m个训练样本为:clip_image077[6]其中clip_image078[6]clip_image079[6]表示第i个样本中,共有ni个词,每个词在字典中的编号为clip_image080[6],j由具体邮件样本确定。

那么我们仍然按照朴素贝叶斯的方法求得最大似然估计概率为

clip_image081[6]

解得:

clip_image082[6]


与以前的式子相比,分母多了个ni,分子由0/1变成了k。仔细分析会发现,该模型考虑的是训练样本中单词数量间的关系,而不是训练样本中邮件数量间的关系,从而避免了“ 1.4)朴素贝叶斯模型的一些问题-b)”中提到的问题

    3.4)朴素贝叶斯模型——多项式事件模型——邮件分类示例

 x1x2x3y
第1封邮件12-1
第2封邮件21-0
第3封邮件1320
第4封邮件3331

假如邮件中只有a,b,c这三词,他们在词典的位置分别是1,2,3,前两封邮件都只有2个词,后两封都只有3个词。Y=1是垃圾邮件。

那么,

clip_image084[6]


clip_image088[6]


假如新来一封邮件为b,c那么特征表示为{2,3}。那么

clip_image090[6]

clip_image092

那么该邮件是垃圾邮件概率是0.6。

如果同样使用拉普拉斯平滑,得到公式为:

clip_image097[6]


另外朴素贝叶斯虽然有时候不是最好的分类方法,但它简单有效,而且速度快。



参考:http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971903.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值