本文共 3076 字,大约阅读时间需要 10 分钟。
概率基础
概率
概率表示为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=argmaxc∈CP(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=argmaxc∈CP(C=c)∙∏1≤k≤ndP(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是单词。
(极大似然估计)
应用:文本分类(垃圾邮件分类器、情感分类等)。
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(x∙y)=log(x)+log(y) l o g ( x ∙ y ) = l o g ( x ) + l o g ( y ) 概率值由 0-1 转换成 负无穷到0,较高的值预示正确的类别。
所以:
Cbest=argmaxc∈C(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