Naive Bayes分类器

Naive Bayes分类器

Naive Bayes是一个概率分类器,也就是说,在文档d中,返回所有类别c中后验概率最大的类别 c ^ \hat{c} c^:

c ^ = argmax P ( c ∣ d ) \hat{c}=\text{argmax}P(c\vert d) c^=argmaxP(cd)

回顾一下贝叶斯法则:

P ( x ∣ y ) = P ( y ∣ x ) P ( x ) P ( y ) P(x\vert y)=\frac{P(y\vert x)P(x)}{P(y)} P(xy)=P(y)P(yx)P(x)

它把任何条件概率转化成了三个概率。

其中, P ( y ) P(y) P(y)先验概率或者边缘概率

贝叶斯法则可以从条件概率的定义推导,过程如下:

P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A\vert B) = \frac{P(A\cap B)}{P(B)} P(AB)=P(B)P(AB)

又,

P ( A ∣ B ) P ( B ) = P ( A ∩ B ) = P ( B ∣ A ) P ( A ) P(A\vert B)P(B) = P(A\cap B) = P(B\vert A)P(A) P(AB)P(B)=P(AB)=P(BA)P(A)

所以,

P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A\vert B) = \frac{P(B\vert A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)

上面第二个公式又叫做概率乘法法则

回到之前的 c ^ \hat{c} c^,那么此时有:

c ^ = argmax P ( c ∣ d ) = argmax P ( d ∣ c ) P ( c ) P ( d ) \hat{c}=\text{argmax}P(c\vert d)=\text{argmax}\frac{P(d\vert c)P(c)}{P(d)} c^=argmaxP(cd)=argmaxP(d)P(dc)P(c)

因为 P ( d ) P(d) P(d)对于任何 c c c都是一个不变的值,所以可以省去:

c ^ = argmax P ( c ∣ d ) = argmax P ( d ∣ c ) P ( c ) \hat{c}=\text{argmax}P(c\vert d)=\text{argmax}P(d\vert c)P(c) c^=argmaxP(cd)=argmaxP(dc)P(c)

上式, P ( d ∣ c ) P(d\vert c) P(dc)叫做似然(likelihood) P ( c ) P(c) P(c)先验概率(prior probability)

此时,假设文档 d d dn个特征组成,则有:

c ^ = argmax P ( f 1 , f 2 , … , f n ∣ c ) ⏞ likelihood   P ( c ) ⏞ prior \hat{c}=\text{argmax}\overbrace{P(f_1,f_2,\dots,f_n\vert c)}^{\text{likelihood}}\ \overbrace{P(c)}^{\text{prior}} c^=argmaxP(f1,f2,,fnc) likelihood P(c) prior

要计算上面的似然,需要很多的参数和很大的训练集,这个很难实现。

朴素贝叶斯有两个假设:

  • 位置无关
  • P ( f i ∣ c ) P(f_i\vert c) P(fic)条件独立,也称朴素贝叶斯假设

所以上式可以简化为:

P ( f 1 , f 2 , … , f n ∣ c ) = P ( f 1 ∣ c ) P ( f 2 ∣ c ) … P ( f n ∣ c ) P(f_1,f_2,\dots,f_n\vert c)=P(f_1\vert c)P(f_2\vert c)\dots P(f_n\vert c) P(f1,f2,,fnc)=P(f1c)P(f2c)P(fnc)

即:

C N B = argmax P ( c ) ∏ f ∈ F P ( f ∣ c ) C_{NB}=\text{argmax}P(c)\prod_{f\in F}P(f\vert c) CNB=argmaxP(c)fFP(fc)

**词袋模型(bag of words)**不考虑词语的位置,把词语出现的频次当做特征,于是有:

C N B = argmax P ( c ) ∏ i ∈ p o s i t i o n s P ( w i ∣ c ) C_{NB}=\text{argmax}P(c)\prod_{i\in positions}P(w_i\vert c) CNB=argmaxP(c)ipositionsP(wic)

为了避免数值下溢和提高计算速度,通常使用对数形式:

c N B = argmax log ⁡ P ( c ) + ∑ i ∈ p o s i t i o n s log ⁡ P ( w i ∣ c ) c_{NB}=\text{argmax}\log{P(c)+\sum_{i\in positions}\log{P(w_i\vert c)}} cNB=argmaxlogP(c)+ipositionslogP(wic)

训练朴素贝叶斯分类器

为了知道 P ( c ) P(c) P(c) P ( f i ∣ c ) P(f_i\vert c) P(fic),我们还是使用最大似然估计(MLE)

有:
P ^ ( c ) = N c N d o c \hat{P}(c)=\frac{N_c}{N_{doc}} P^(c)=NdocNc

P ^ ( w i ∣ c ) = c o u n t ( w i , c ) ∑ w ∈ V c o u n t ( w , c ) \hat{P}(w_i\vert c)=\frac{count(w_i,c)}{\sum_{w\in V}count(w,c)} P^(wic)=wVcount(w,c)count(wi,c)

为了避免某个概率值为0,我们使用拉普拉斯平滑(Laplace smooth or add-one smooth)

P ^ ( w i ∣ c ) = c o u n t ( w i , c ) + 1 ∑ w ∈ V ( c o u n t ( w , c ) + 1 ) = c o u n t ( w i , c ) + 1 ( ∑ w ∈ V c o u n t ( w , c ) ) + ∣ V ∣ \hat{P}(w_i\vert c)=\frac{count(w_i,c)+1}{\sum_{w\in V}(count(w,c)+1)}=\frac{count(w_i,c)+1}{(\sum_{w\in V}count(w,c))+\vert V\vert} P^(wic)=wV(count(w,c)+1)count(wi,c)+1=(wVcount(w,c))+Vcount(wi,c)+1

对于unknown word怎么处理呢?答案是:直接从测试数据集中移除这些词,不计算概率

联系我

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值