朴素贝叶斯模型
1. 术语解释
1.1 先验概率与后验概率
先验概率是试验前根据以往积累的资料和经验,对事件发生可能性的一个(绝对)判断。
后验概率是在试验后,根据由试验获得的信息对事件发生的可能性作重新审视和修正的概率。
【例1】设在一个盒子中混有新旧两种球共100个。新球共61个,其中有59个白球和2个红球;旧球共39个,其中有1个白球和38个红球。现从盒中任取一球,令事件A=“取得白球”,事件B=“取得新球”。则事件Bˉ\bar{B}Bˉ=“取得旧球”。
先验概率:设在试验前(即取球前),我们已知盒中各类球的数目。因此我们可以求得“取得新球”的概率为P(B)=61100P(B) = \frac{61}{100}P(B)=10061,“取得旧球”的概率为P(Bˉ)=39100P(\bar{B}) = \frac{39}{100}P(Bˉ)=10039。
后验概率:当我们从盒中任取一球后,设想我们已经从手指缝窥见这个球是白球。此时我们会重新估计事件BBB和Bˉ\bar{B}Bˉ发生的概率:P(B∣A)=5959+1=5960P(B|A) = \frac{59}{59+1} = \frac{59}{60}P(B∣A)=59+159=6059,P(Bˉ∣A)=159+1=160P(\bar{B}|A) = \frac{1}{59+1} = \frac{1}{60}P(Bˉ∣A)=59+11=601。
1.2 类先验概率
假设样本空间中有若干个样本,同时存在NNN种可能的类别标记将样本分为NNN类。则类先验概率表达了样本空间中各类样本所占的比例。根据大数定律,当训练集包含充足的独立同分布样本时,类先验概率可通过各类样本出现的频率来进行估计。
2. 贝叶斯定理
2.1 全概率公式
令B1,⋯ ,BnB_1,\cdots,B_nB1,⋯,Bn满足⋃i=1nBi=Ω\bigcup\limits_{i=1}^nB_i=\Omegai=1⋃nBi=Ω,Bi∩Bj=ϕB_i \cap B_j = \phiBi∩Bj=ϕ,i≠ji \neq ji=j,且对所有的iii,P(Bi)>0P(B_i)>0P(Bi)>0。那么,对于任意的AAA,有
P(A)=∑i=1nP(A∣Bi)P(Bi)(1)
P(A) = \sum_{i=1}^{n}P(A|B_i)P(B_i) \tag{1}
P(A)=i=1∑nP(A∣Bi)P(Bi)(1)
2.2 贝叶斯公式
令AAA和B1,⋯ ,BnB_1,\cdots,B_nB1,⋯,Bn是事件,其中BiB_iBi互不相交,⋃i=1nBi=Ω\bigcup\limits_{i=1}^nB_i=\Omegai=1⋃nBi=Ω,且对所有的iii,P(Bi)>0P(B_i) > 0P(Bi)>0,那么
P(Bj∣A)=P(A∣Bj)P(Bj)∑i=1nP(A∣Bi)P(Bi)=P(A∣Bj)P(Bj)P(A)(2)
\begin{aligned}
P(B_j|A)&=\frac{P(A|B_j)P(B_j)}{\sum\limits_{i=1}^{n}P(A|B_i)P(B_i)} \\
&= \frac{P(A|B_j)P(B_j)}{P(A)}
\end{aligned}\tag{2}
P(Bj∣A)=i=1∑nP(A∣Bi)P(Bi)P(A∣Bj)P(Bj)=P(A)P(A∣Bj)P(Bj)(2)
3. 最大似然估计
3.1 参数估计
3.2 基本思想
若一实验有nnn个可能结果A1,⋯ ,AnA_1,\cdots,A_nA1,⋯,An,现做一实验,若事件AiA_iAi发生了,则认为事件AiA_iAi在这nnn个可能结果中出现的概率最大。即极大似然原理认为:只一次实验就出现的事件(应该)有较大的概率。
【例2】如例1所述,当我们从盒子中取出一个白球时,求问这个白球是新球还是旧球?我们的第一反应是:这个球最可能是新球(因为60个白球中有59个是新的)。类似地,“最像”、“最可能”等即为“最大似然”之意。
总而言之,最大似然估计的思路为:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
3.3 似然性与似然函数
假设随机变量X1,⋯ .XnX_1,\cdots.X_nX1,⋯.Xn具有联合密度或频率函数f(x1,⋯ ,xn∣θ)f(x_1,\cdots,x_n|\theta)f(x1,⋯,xn∣θ),给定观测值Xi=xiX_i = x_iXi=xi,其中i=1,⋯ ,ni = 1,\cdots,ni=1,⋯,n,作为x1,⋯ ,xnx_1,\cdots,x_nx1,⋯,xn的函数,θ\thetaθ 的似然定义为
lik(θ)=f(x1,⋯ ,xn∣θ)(3)
lik(\theta) = f(x_1,\cdots,x_n|\theta) \tag{3}
lik(θ)=f(x1,⋯,xn∣θ)(3)
3.4 求最大似然估计的一般步骤
- 构造似然函数
- 对似然函数取对数得对数似然函数(适用于当似然函数中有指数项、连乘等)
- 在似然函数(或对数似然函数)中,对参数求导数(若有多个参数,则对各参数求偏导数)
- 另参数的导数等于零(或各参数的偏导均等于零),得方程(组),求解即可得参数的最大似然估计。
【例3】如果X1,⋯ ,XnX_1,\cdots,X_nX1,⋯,Xn独立同分布于N(μ,σ2)N(\mu,\sigma^2)N(μ,σ2),那么联合密度是边际密度的乘积:
f(x1,⋯ ,xn∣μ,σ)=∏i=1n1σ2πexp(−12[xi−μσ]2)(4)
f(x_1,\cdots,x_n|\mu,\sigma) = \prod_{i=1}^{n}\frac{1}{\sigma\sqrt{2\pi}}exp\left(-\frac{1}{2}\left[\frac{x_i-\mu}{\sigma}\right]^2\right) \tag{4}
f(x1,⋯,xn∣μ,σ)=i=1∏nσ2π1exp(−21[σxi−μ]2)(4)
将其视为μ\muμ和σ\sigmaσ的函数,这是似然函数。因此,对数似然是
l(μ,σ)=logf(x1,⋯ ,xn∣μ,σ)−log(∏i=1n1σ2πexp(−12[xi−μσ]2))=log((1σ2π)n∏i=1nexp(−12[xi−μσ]2))=log(1σ2π)n+log∏i=1nexp(−12[xi−μσ]2)=−nlog(σ2π)+∑i=1n(−12[xi−μσ]2)=−nlogσ−n2log2π−12σ2∑i=1n(xi−μ)2(5)
\begin{aligned}
l(\mu,\sigma) &= logf(x_1,\cdots,x_n|\mu,\sigma) \\
&- log\left(\prod_{i=1}^{n}\frac{1}{\sigma\sqrt{2\pi}}exp\left(-\frac{1}{2}\left[\frac{x_i-\mu}{\sigma}\right]^2\right)\right) \\
&= log\left(\left(\frac{1}{\sigma\sqrt{2\pi}}\right)^n\prod_{i=1}^{n}exp\left(-\frac{1}{2}\left[\frac{x_i-\mu}{\sigma}\right]^2\right)\right) \\
&= log\left(\frac{1}{\sigma\sqrt{2\pi}}\right)^n + log\prod_{i=1}^{n}exp\left(-\frac{1}{2}\left[\frac{x_i-\mu}{\sigma}\right]^2\right) \\
&= -nlog\left(\sigma\sqrt{2\pi}\right) + \sum_{i=1}^{n}\left(-\frac{1}{2}\left[\frac{x_i-\mu}{\sigma}\right]^2\right) \\
&= -nlog\sigma - \frac{n}{2}log2\pi - \frac{1}{2\sigma^2}\sum_{i=1}^{n}(x_i-\mu)^2
\end{aligned} \tag{5}
l(μ,σ)=logf(x1,⋯,xn∣μ,σ)−log(i=1∏nσ2π1exp(−21[σxi−μ]2))=log((σ2π1)ni=1∏nexp(−21[σxi−μ]2))=log(σ2π1)n+logi=1∏nexp(−21[σxi−μ]2)=−nlog(σ2π)+i=1∑n(−21[σxi−μ]2)=−nlogσ−2nlog2π−2σ21i=1∑n(xi−μ)2(5)
在上述对数似然函数中,分别对μ\muμ和σ\sigmaσ求偏导,可得:
∂l(μ,σ)∂μ=1σ2∑i=1n(xi−μ)∂l(μ,σ)∂σ=−nσ+1σ3∑i=1n(xi−μ)2(6)
\begin{aligned}
\frac{\partial{l(\mu,\sigma)}}{\partial{\mu}} &= \frac{1}{\sigma^2}\sum_{i=1}^{n}(x_i-\mu) \\
\frac{\partial{l(\mu,\sigma)}}{\partial{\sigma}} &= -\frac{n}{\sigma}+\frac{1}{\sigma^3}\sum_{i=1}^{n}(x_i-\mu)^2
\end{aligned} \tag{6}
∂μ∂l(μ,σ)∂σ∂l(μ,σ)=σ21i=1∑n(xi−μ)=−σn+σ31i=1∑n(xi−μ)2(6)
另上述两式为零,可分别得到参数μ\muμ和σ\sigmaσ的最大似然估计:
μ=1n∑i=1nxi=xˉσ=1n∑i=1n(xi−xˉ)2(7)
\begin{aligned}
\mu &= \frac{1}{n}\sum_{i=1}^{n}x_i = \bar{x}\\
\sigma &= \sqrt{\frac{1}{n}\sum_{i=1}^{n}\left(x_i-\bar{x}\right)^2}
\end{aligned} \tag{7}
μσ=n1i=1∑nxi=xˉ=n1i=1∑n(xi−xˉ)2(7)
4. 贝叶斯决策论
贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。
考虑一个多分类任务,假设x\mathbf{x}x为待分类样本,对样本共有NNN种可能的类别标记,即Y={c1,⋯ ,cn}\mathcal{Y} = \{c_1,\cdots,c_n\}Y={c1,⋯,cn}
4. 朴素贝叶斯分类器
4.1 朴素贝叶斯假设
朴素贝叶斯假设(Naive Bayes assumption),也有人称作属性条件独立性假设(attribute conditional independence assumption):对于已知类别,假设所有属性相互独立,即每个属性独立地对分类结果产生影响。
【例4】考虑一个文本分类问题,我们希望将邮件分为垃圾邮件和非垃圾邮件。假设我们已经有了一个训练集(一组被标记为垃圾邮件或非垃圾邮件的邮件),所有出现在训练集邮件中的单词可以构成一个字典。
现在我们将通过一个长度为字典中单词数量的特征向量来表示邮件,特别地,特征向量的第iii个元素对应于字典中的第iii个单词,对于一封特定的邮件,如果这封邮件包含了字典中的第jjj个单词,那么xj=1x_j=1xj=1;反之,如果这封邮件中不包含字典中的第jjj个单词,则xj=0x_j=0xj=0。
若字典中有50000个单词,即x∈R50000x \in \mathbb{R}^{50000}x∈R50000。假设y=1y=1y=1表示一封邮件为垃圾邮件,“buy”是这封邮件的特征向量中的第2087个单词,“price”是这封邮件的特征向量中的第39831个单词。朴素贝叶斯假设告诉我们,如果我告诉你一封邮件是垃圾邮件(即y=1y=1y=1),我们对于x2087x_{2087}x2087的认知对于我们对于x39831x_{39831}x39831的值的预测是没有影响的,即我们知道的关于单词“buy”是否出现在了邮件里不会影响我们对于单词“price”是否出现在邮件中的判断。写成数学表达式就是p(x2087∣y)=p(x2087∣y,x39831)p(x_{2087}|y)=p(x_{2087}|y,x_{39831})p(x2087∣y)=p(x2087∣y,x39831)。
注意:这不等同于“x2087x_{2087}x2087与x39831x_{39831}x39831相互独立”的说法!这个说法写成数学表达式为p(x2087)=p(x2087∣x39831)p(x_{2087})=p(x_{2087}|x_{39831})p(x2087)=p(x2087∣x39831)。我们这里假设的是对于给定的yyy,x2087x_{2087}x2087与x39831x_{39831}x39831是条件独立的(x2087x_{2087}x2087 and x39831x_{39831}x39831 are conditionally independent given yyy)!
朴素贝叶斯假设是一个非常强的假设(即这个假设在现实应用中很难成立),然而朴素贝叶斯分类器在很多情形下都能有很不错的表现。
4.2 朴素贝叶斯分类器的表达式
考虑一个多分类任务,假设x\mathbf{x}x为待分类样本,对样本共有NNN种可能的类别标记,即Y={c1,⋯ ,cn}\mathcal{Y} = \{c_1,\cdots,c_n\}Y={c1,⋯,cn}
之前所学的决策树、BP神经网络、SVM等都是在给定x\mathbf{x}x下直接对P(c∣x)P(c|\mathbf{x})P(c∣x)建模来预测ccc,这样的算法被称为“判别式模型(Discriminative models)”。而朴素贝叶斯分类器是典型的“生成模型(Generative models)”。对于生成模型,我们先对联合概率分布P(x,c)P(\mathbf{x},c)P(x,c)建模,然后再由此获得P(c∣x)P(c|\mathbf{x})P(c∣x)。
考虑P(c∣x)=P(x,c)P(x)P(c|\mathbf{x}) = \frac{P(\mathbf{x},c)}{P(\mathbf{x})}P(c∣x)=P(x)P(x,c)。基于贝叶斯定理,P(x∣c)P(\mathbf{x}|c)P(x∣c)可以写为
P(c∣x)=P(c)P(x∣c)P(x)
P(c|\mathbf{x}) = \frac{P(c)P(\mathbf{x}|c)}{P(\mathbf{x})}
P(c∣x)=P(x)P(c)P(x∣c)
- P(c)P(c)P(c):样本属于第ccc类的概率(先验概率)
- P(x)P(\mathbf{x})P(x):条件(或约束/属性)出现的概率(先验概率)
- P(c∣x)P(c|\mathbf{x})P(c∣x):在条件x\mathbf{x}x发生的情况下,样本属于第ccc类的概率(后验概率)
- P(x∣c)P(\mathbf{x}|c)P(x∣c):当样本属于第c类时,条件x\mathbf{x}x出现的概率(后验概率)
5. 拉普拉斯平滑
6. 实现
7. 练习
- 试使用极大似然法估算西瓜数据集3.0中前3个属性的类条件概率。
- 试证明:条件独立性假设不成立时,朴素贝叶斯分类器仍有可能产生最优贝叶斯分类器。
- 试编程实现拉普拉斯修正的朴素贝叶斯分类器,并以西瓜数据集3.0为训练集,对p.151“测1”样本进行判别。
8. 参考资料
[1] 吴志远, & 张振强. (2004). 由先验概率和后验概率谈信息的价值. 南宁师范高等专科学校学报, 21(3), 70-72.
[2] Rice, J. (2007). Mathematical statistics and data analysis (3rd ed., international student ed., Duxbury advanced series). Belmont, CA: Thomson/Brooks/Cole.
[3] Russell, S., & Norvig, P. (2016). Artificial intelligence : A modern approach (3rd ed., Prentice Hall series in artificial intelligence). Boston: Pearson.
[4] 周志华. (2016). 机器学习. 北京: 清华大学出版社.
[5] Andrew Ng. CS229 Lecture notes. Stanford University