Press "Enter" to skip to content

朴素贝叶斯(Naive Bayes)和情感分类

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

Naive Bayes分类器

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

ĉ =argmaxP(c|d)c^=argmaxP(c|d)

回顾一下贝叶斯法则:

P(x|y)=P(y|x)P(x)P(y)P(x|y)=P(y|x)P(x)P(y)

它把任何条件概率转化成了三个概率。
其中,P(y)P(y)先验概率或者边缘概率
贝叶斯法则可以从条件概率的定义推导,过程如下:

P(A|B)=P(AB)P(B)P(A|B)=P(A∩B)P(B)

又,

P(A|B)P(B)=P(AB)=P(B|A)P(A)P(A|B)P(B)=P(A∩B)=P(B|A)P(A)

所以,

P(A|B)=P(B|A)P(A)P(B)P(A|B)=P(B|A)P(A)P(B)

上面第二个公式又叫做
回到之前的ĉ c^,那么此时有:

ĉ =argmaxP(c|d)=argmaxP(d|c)P(c)P(d)c^=argmaxP(c|d)=argmaxP(d|c)P(c)P(d)

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

ĉ =argmaxP(c|d)=argmaxP(d|c)P(c)c^=argmaxP(c|d)=argmaxP(d|c)P(c)

上式,P(d|c)P(d|c)叫做似然(likelihood)P(c)P(c)先验概率(prior probability)
此时,假设文档ddn个特征组成,则有:

ĉ =argmaxP(f1,f2,,fn|c)likelihood P(c)priorc^=argmaxP(f1,f2,…,fn|c)⏞likelihood P(c)⏞prior

要计算上面的似然,需要很多的参数和很大的训练集,这个很难实现。
朴素贝叶斯有两个假设:

  • 位置无关
  • P(fi|c)P(fi|c)条件独立,也称朴素贝叶斯假设

所以上式可以简化为:

P(f1,f2,,fn|c)=P(f1|c)P(f2|c)P(fn|c)P(f1,f2,…,fn|c)=P(f1|c)P(f2|c)…P(fn|c)

即:

CNB=argmaxP(c)fFP(f|c)CNB=argmaxP(c)∏f∈FP(f|c)

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

CNB=argmaxP(c)ipositionsP(wi|c)CNB=argmaxP(c)∏i∈positionsP(wi|c)

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

cNB=argmaxlogP(c)+ipositionslogP(wi|c)cNB=argmaxlog⁡P(c)+∑i∈positionslog⁡P(wi|c)

训练朴素贝叶斯分类器

为了知道P(c)P(c)P(fi|c)P(fi|c),我们还是使用最大似然估计(MLE)
有:

P̂ (c)=NcNdocP^(c)=NcNdoc
P̂ (wi|c)=count(wi,c)wVcount(w,c)P^(wi|c)=count(wi,c)∑w∈Vcount(w,c)

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

P̂ (wi|c)=count(wi,c)+1wV(count(w,c)+1)=count(wi,c)+1(wVcount(w,c))+|V|P^(wi|c)=count(wi,c)+1∑w∈V(count(w,c)+1)=count(wi,c)+1(∑w∈Vcount(w,c))+|V|

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

评估

TODO

Precision

Recall

F-measure

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注