朴素贝叶斯算法

概率基础

概率

概率表示为0到1之间的数字,含义是某一事件或者预测行为的可信程度,1值表示“事件为真”的情形肯定发生,或表述为预测为真;而0值表示“事件为真”这一情形为假。

条件概率

条件概率是带有某些(前提条件)背景约束下的概率问题。

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

联合概率

联合概率是指两个事件同时发生的概率。P(A, B)是A和B事件的发生都为真的概率。

例1:投硬币,A与B独立

P(A,B)=P(A)P(B) P ( A , B ) = P ( A ) P ( B )

例2:事件不独立。A表示今天下雨的事件、B表示明天会下雨的事件。今天下雨,明天还有可能下雨的:

P(B|A)>P(B) P ( B | A ) > P ( B )

联合概率为:对于任何A、B事件,如果任意一天下雨的机会是0.5,连续两天就不会是0.25,而是可能更高一点。

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

The Rules of Probability

sum rule: (求离散变量X的边缘概率分布)

p(X)=Yp(X,Y) p ( X ) = ∑ Y p ( X , Y )

product rule: (或称为条件概率的链式法则)

p(X,Y)=p(Y|X)p(X) p ( X , Y ) = p ( Y | X ) p ( X )

P(X,Y,Z)=P(X|Y,Z)P(Y,Z) P ( X , Y , Z ) = P ( X | Y , Z ) P ( Y , Z )

P(Y,Z)=P(Y|Z)P(Z) P ( Y , Z ) = P ( Y | Z ) P ( Z )

P(X,Y,Z)=P(X|Y,Z)P(Y|Z)P(Z) P ( X , Y , Z ) = P ( X | Y , Z ) P ( Y | Z ) P ( Z )

全概率公式

p(X)=p(X|Y1)p(Y1)+P(X|Y2)p(Y2)+...P(X|Yn)p(Yn) p ( X ) = p ( X | Y 1 ) p ( Y 1 ) + P ( X | Y 2 ) p ( Y 2 ) + . . . P ( X | Y n ) p ( Y n )

贝叶斯定理 (Bayes’ theorem)

p(Y|X)=p(X|Y)p(Y)p(X) p ( Y | X ) = p ( X | Y ) p ( Y ) p ( X )

  • p(Y)称为先验概率,即在得到新数据前某一假设的概率。
  • P(Y|X)称为后验概率,即在看到新数据后,我们要计算的该假设的概率。
  • P(X|Y)是该假设下得到这一数据的概率,称为似然度
  • P(X)是在任何假设下得到这一数据的概率,称为标准化常量

Naive Bayes classifier

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。

优点:对无关特征的处理能力十分彪悍,无关特征会被自然忽略掉,朴素贝叶斯分类器学习和预测的速度都很快,并且不需要很大的存储空间。

假设:条件独立假设,所有特征需要相互独立。(实践中独立假设往往不成立,但是仍然能够达到非常好的效果)

原理:朴素贝叶斯的核心功能是跟踪哪个特征在哪个类别中出现。

P(C|F1F2)=P(C)P(F1F2|C)P(F1,F2) P ( C | F 1 F 2 ) = P ( C ) ∙ P ( F 1 F 2 | C ) P ( F 1 , F 2 )

即:

这里写图片描述

由条件独立假设(假设每个属性独立地对分类结果产生影响)可以得:

P(C|F1F2)=P(C)P(F1F2|C)P(F1,F2)=P(C)P(F1|C)P(F2|C,F1)P(F1,F2)=P(C)P(F1|C)P(F2|C)P(F1,F2) P ( C | F 1 F 2 ) = P ( C ) ∙ P ( F 1 F 2 | C ) P ( F 1 , F 2 ) = P ( C ) ∙ P ( F 1 | C ) ∙ P ( F 2 | C , F 1 ) P ( F 1 , F 2 ) = P ( C ) ∙ P ( F 1 | C ) ∙ P ( F 2 | C ) P ( F 1 , F 2 )

朴素贝叶斯对真实概率并不感兴趣,只是注重哪个类别更有可能:

Cbest=argmaxcCP(C=c)P(F1|C=c)P(F2|C=c) C b e s t = a r g m a x c ∈ C P ( C = c ) ∙ P ( F 1 | C = c ) ∙ P ( F 2 | C = c )

最大后验估计(Maximum a posteriori, MAP) :

Cbest=argmaxcCP(C=c)1kndP(Fk|C=c) C b e s t = a r g m a x c ∈ C P ( C = c ) ∙ ∏ 1 ≤ k ≤ n d P ( F k | C = c )

朴素贝叶斯分类器的训练过程就是基于训练集来估计类先验概率P(C),并为每个属性估计条件概率P(F|C)

这里写图片描述
上式估计了文档d属于类别c的概率,假设文档长度为n_d,F_k是单词。

P(c)=DcD P ( c ) = D c D

这里写图片描述

(极大似然估计)

应用:文本分类(垃圾邮件分类器、情感分类等)。

Engineering tricks

考虑零概率(未出现的词语和其他古怪情况)

计算 P(F|C) 时:加1平滑(加法平滑、拉普拉斯平滑),假装每个词语至少出现了一次。分子加1、分母加n。

P(C)=Df+1D+N P ( C ) = D f + 1 D + N

这里写图片描述

(先验概率的贝叶斯估计):

P(C)=Df+λD+Kλ P ( C ) = D f + λ D + K λ

lambda=0时就是极大似然估计,可能会出现所有估计的概率为0的情况,这时会影响到后验概率的计算结果,使分类产生偏差,解决这一问题的方法是使用贝叶斯估计。常取lambda=1,这时称为拉普拉斯平滑(Laplace smoothing)

拉普拉斯修正实际上假设了属性值和类别的均匀分布,在学习过程中额外引入了先验识。

考虑算术下溢

取对数:

log(xy)=log(x)+log(y) l o g ( x ∙ y ) = l o g ( x ) + l o g ( y )

概率值由 0-1 转换成 负无穷到0,较高的值预示正确的类别。

所以:

Cbest=argmaxcC(logP(C=c)+kP(Fk|C=c) C b e s t = a r g m a x c ∈ C ( l o g P ( C = c ) + ∑ k P ( F k | C = c )

实现

sklearn.naive_bayes

  • GaussianNB
  • MultinomialNB
  • BerboulliNB

《统计学习方法》 P47

《Think Bayes》

《Building Machine Learning Systems with Python》 P90

《Machine Learning in Action》 P53

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值