斯坦福公开课mechine learning笔记 之 朴素贝叶斯

朴素贝叶斯

另一种生成学习算法。

 

例:垃圾邮件分类

实现一个垃圾邮件分类器,以邮件输入流作为输入,确定邮件是否为垃圾邮件。输出y{0,1}1为垃圾邮件,0为非垃圾邮件。

首先,要将邮件文本表示为一个输入向量x,设已知一个含有n个词的字典,那么向量x的第i个元素{0,1}表示字典中的第i个词是否出现在邮件中,x示例如下:


要对p(x|y)建模,x是一个n维的{0,1}向量,假设n=50000,那么x2^50000种可能的值,一种方法是用多项式分布进行建模(伯努利分布对01建模,多项式分布对k个结果建模),这样就需要2^50000-1个参数,可见参数过多,下面介绍朴素贝叶斯的方法。

 

假设xi在给定y的时候是条件独立的,则x在给定y下的概率可简化为:


这个假设直观理解为,已知一封邮件是不是垃圾邮件(y),以及一些词是否出现在邮件中,这些并不会帮助你预测其他的词是否出现在邮件中。虽然这个假设不是完全正确的,但是朴素贝叶斯依然应用于对邮件进行分类,对网页进行分类等用途。

 

*对于朴素贝叶斯,我的理解为:通过指定一些垃圾邮件的关键词来计算某个邮件是垃圾邮件的概率。具体讲,就是给定字典后,给出每个词的p(xi|y=1),即这个词xi在垃圾邮件中出现的概率,然后对于一个邮件,将邮件所有词的p(xi|y)的相乘,就是邮件为垃圾邮件的概率。再简化一些,规定p(xi|y=1)={0,1},即划定一些关键词,这些关键词在邮件中出现的概率就是这封邮件为垃圾邮件的概率。

 

模型参数包括

Φi|y=1 = p(xi=1|y=1)

Φi|y=0 = p(xi=1|y=0)

Φy = p(y=1)

 

联合似然性

 

求得参数结果


Φi|y=1的分子为标记为1的邮件中出现词j的邮件数目和,分母为垃圾邮件数,总体意义就是训练集中出现词j的垃圾邮件在垃圾邮件中的比例。

Φi|y=0就是出现词j的非垃圾邮件在非垃圾邮件中的比例。

Φy就是垃圾邮件在所有邮件中的比例。

求出上述参数,就知道了p(x|y)p(y),用伯努利分布对p(y)建模,用上式中p(xi|y)的乘积对p(x|y)建模,通过贝叶斯公式就可求得p(y|x)

 

*实际操作中,例如将最近两个月的邮件都标记上垃圾非垃圾,然后得到(x(1),y(1))…(x(m),y(m))x(i)为词向量,标记出现在第i个邮件中的词,y(i)为第i个邮件是否是垃圾邮件。用邮件中的所有出现的词构造字典,或者选择出现次数k次以上的词构造字典。

 

朴素贝叶斯的问题

设有一封新邮件中出现一个字典没有的新词,设其标号为30000,因为这个词在垃圾邮件和非垃圾邮件中都不存在,则p(x3000|y=1)=0p(x30000|y=0)=0,计算p(y=1|x)如下:

p(y=1|x) = p(x|y=1)p(y=1) / (p(x|y=1)p(y=1) + p(x|y=0)p(y=0))

由于p(x|y=1)=p(x|y=0)=0p(x30000|y=1)=p(x30000|y=0)=0,则乘积为0),则p(y=1|x)=0/0,则结果是未定义的。

其问题在于,统计上认为p(x30000|y)=0是不合理的。即在过去两个月邮件里未出现过这个词,就认为其出现概率为0,并不合理。

概括来讲,即之前没有见过的事件,就认为这些事件不会发生,是不合理的。通过Laplace平滑解决这个问题。

 

4 Laplace平滑

根据极大似然估计,p(y=1) = #”1”s / (#”0”s + #”1”s),即y1的概率是样本中1的数目在所有样本中的比例。Laplace平滑就是将分子分母的每一项都加1,,即:

p(y=1) = (#”1”s+1)  / (#”0”s+1 +#”1”s+1)

例:给出一支球队5场比赛的结果作为样本,5场比赛都输了,记为0,那么要预测第六场比赛的胜率,按照朴素贝叶斯为:p(y=1) = 0/(5+0) = 0,即样本中没有胜场,则胜率为0,显然这是不合理的。按照Laplace平滑处理,p(y=1) = 0+1/(5+1+0+1) = 1/7,并不为0,且随着负场次的增加,p(y=1)会一直减小,但不会为0

 

更一般的,若yk中可能的值,比如尝试估计多项式分布的参数,得到下式:


即值为j的样本所占比例,对其用Laplace平滑如下式



对于朴素贝叶斯,得到的结果为
 
           

在分子上加 1,分母上加2,解决了0 概率的问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值