贝叶斯决策、概率估计
Introduction
将未知的东西,进行正确的类别划分,叫做classification。怎么用有效的数字、符号来表示你的未知的东西呢?我们将其称之为feature,它能够有效表达未知物品,或者说所需要分类的物品的有效信息。大量的特征组成特征向量{ x 1 , x 2 , … , x l } \left\{x_{1}, x_{2}, \ldots, x_{l}\right\}{x1,x2,…,xl}用矩阵表示如下:x ‾ = [ x 1 , x 2 , … , x l ] T \underline{x}=\left[x_{1}, x_{2}, \ldots, x_{l}\right]^{T}x=[x1,x2,…,xl]T。
介绍一些基本符号:
Available Classes
(可用类) : ω i , i = 1 , 2 , … , M \omega_{i}, i=1,2, \ldots, Mωi,i=1,2,…,M
A-priori probabilities
(先验概率) : P ( ω i ) , i = 1 , 2 , … , M P\left(\omega_{i}\right), i=1,2, \dots, MP(ωi),i=1,2,…,M
A-posteriori probability
(后验概率) : P ( ω i ∣ x ‾ ) , i = 1 , 2 , … , M P\left(\omega_{i} | \underline{x}\right), i=1,2, \ldots, MP(ωi∣x),i=1,2,…,M
Class-conditional PDF
(类条件概率) : p ( x ‾ ∣ ω i ) , i = 1 , 2 , … , M p\left(\underline{x} | \omega_{i}\right), i=1,2, \ldots, Mp(x∣ωi),i=1,2,…,M
PDF
of x ‾ \underline{x}x (Probability Density Function
概率密度函数):p ( x ‾ ) = ∑ i = 1 M p ( x ‾ ∣ ω i ) P ( ω i ) p(\underline{x})=\sum_{i=1}^{M} p\left(\underline{x} | \omega_{i}\right) P\left(\omega_{i}\right)p(x)=∑i=1Mp(x∣ωi)P(ωi)
有了这些之后,我们来举个例子解释一下这些符号:
假设现在有100个学生,分类男同学和女同学,那么classes :ω 1 = male, ω 2 = female \omega_{1}=\text { male, } \omega_{2}=\text { female }ω1= male, ω2= female ;我们所观察到的特征假设为身高,特征向量:x ‾ = height \underline{x}=\text { height }x= height ,这里的特征只有1个维度;假设男女同学各为50人,那么A-priori probabilities :P ( ω i ) = 0.5 , i = 1 , 2 P\left(\omega_{i}\right)=0.5, i=1,2P(ωi)=0.5,i=1,2,那我们怎么来求它的A-posteriori probability :P ( ω i ∣ x ‾ ) , i = 1 , 2 P\left(\omega_{i} | \underline{x}\right), i=1,2P(ωi∣x),i=1,2 呢?依据我们手中100个学生的样本我们能统计出Class-conditional PDF : p ( x ‾ ∣ ω i ) , i = 1 , 2 p\left(\underline{x} | \omega_{i}\right), i=1,2p(x∣ωi),i=1,2 ,表示的是知道是某个类别,在这个类别中,某个特征所占的概率,比如知道是男生,其身高是165的概率。
Bayesian Classifier
由上文所述,我们依据统计能够知道Class-conditional PDF : p ( x ‾ ∣ ω i ) , i = 1 , 2 p\left(\underline{x} | \omega_{i}\right), i=1,2p(x∣ωi),i=1,2,也就是知道是男生,是165的概率,而机器学习做的是给定特征,希望得到类别的概率,也就是说告诉你是165,这个人是男生的概率是多少,是女生的概率又是多少?也就是A-posteriori probability :P ( ω i ∣ x ‾ ) , i = 1 , 2 P\left(\omega_{i} | \underline{x}\right), i=1,2P(ωi∣x),i=1,2。
Bayesian Rule 建立起了两者之间的桥梁:
P ( ω i ∣ x ) = p ( x ∣ ω i ) P ( ω i ) / p ( x ‾ ) P\left(\omega_{i} | \boldsymbol{x}\right)=p\left(\boldsymbol{x} | \omega_{i}\right) P\left(\omega_{i}\right) / p(\underline{x})P(ωi∣x)=p(x∣ωi)P(ωi)/p(x)
我们给一组数据实际计算一下:
现在想要知道,给定165这个特征,属于男性的概率是多少?属于女性的概率又是多少?依据Bayesian Rule计算规则过程如下所示:
P ( male ∣ 165 ) = p ( 165 ∣ male ) P ( male ) p ( 165 ) = 0.12 × 0.5 0.24 = 0.25 P(\text { male } | 165)=\frac{p(165 | \text { male }) P(\text { male })}{p(165)}=\frac{0.12 \times 0.5}{0.24}=0.25P( male ∣165)=p(165)p(165∣ male )P( male )=0.240.12×0.5=0.25
P ( female ∣ 165 ) = p ( 165 ∣ female ) P ( female ) p ( 165 ) = 0.36 × 0.5 0.24 = 0.75 P(\text { female } | 165)=\frac{p(165 | \text { female }) P(\text { female })}{p(165)}=\frac{0.36 \times 0.5}{0.24}=0.75P( female ∣165)=p(165)p(165∣ female )P( female )=0.240.36×0.5=0.75
拿到准确的概率我们就能够判断,其来自女性的概率要大于男性的概率,做分类问题的话,就将其判定为女性即可。
x → ω 1 if P ( ω 1 ∣ x ‾ ) > P ( ω 2 ∣ x ‾ ) x → ω 2 if P ( ω 2 ∣ x ‾ ) > P ( ω 1 ∣ x ‾ )
x→ω1 if P(ω1|x––)>P(ω2|x––)x→ω2 if P(ω2|x––)>P(ω1|x––)�→�1 if �(�1|�_)>�(�2|�_)�→�2 if �(�2|�_)>�(�1|�_)
x→ω1 if P(ω1∣x)>P(ω2∣x)x→ω2 if P(ω2∣x)>P(ω1∣x)
如果我们只需要判定属于哪一个类别的话,我们只需要判定上式中的分子部分即可。上述判定式等价于:
p ( x ‾ ∣ ω 1 ) P ( ω 1 ) ( > ? < ) p ( x ‾ ∣ ω 2 ) P ( ω 2 ) p\left(\underline{x} | \omega_{1}\right) P\left(\omega_{1}\right)(>?<) p\left(\underline{x} | \omega_{2}\right) P\left(\omega_{2}\right)p(x∣ω1)P(ω1)(>?<)p(x∣ω2)P(ω2)
而本例中,男女比例一样多,也就是a-priori probabilities P( ω i ) = 0.5 , i = 1 , 2 \left(\omega_{i}\right)=0.5, i=1,2(ωi)=0.5,i=1,2,由此,上式等价于:
p ( x ‾ ∣ ω 1 ) ( > ? < ) p ( x ‾ ∣ ω 2 ) p\left(\underline{x} | \omega_{1}\right)(>?<) p\left(\underline{x} | \omega_{2}\right)p(x∣ω1)(>?<)p(x∣ω2)
那这两个分布又长什么样子呢?什么时候会判别为第一类?什么时候判别为第二类呢?将其画出,如下所示:
x xx在左边属于w 1 w_{1}w1类,右边属于w 2 w_{2}w2类,中间x 0 x_{0}x0处无法划分。效果最好的划分也是当x = x 0 x=x_{0}x=x0处能够达到,在这个点处,产生的误判率如下所示:
P e = ∫ − ∞ x 0 p ( x ∣ ω 2 ) d x + ∫ x 0 + ∞ p ( x ∣ ω 1 ) d x P_{e}=\int_{-\infty}^{x_{0}} p\left(x | \omega_{2}\right) d x+\int_{x_{0}}^{+\infty} p\left(x | \omega_{1}\right) d xPe=∫−∞x0p(x∣ω2)dx+∫x0+∞p(x∣ω1)dx
贝叶斯优化器所需要优化的就是最小化误判率。如上图所示:移动虚线边界,所产生的阴影部分就是能够优化的多余的误差。
然而在真实的生活中,对不同类别之间的判断成本是不一样的。比如,将得了恶性肿瘤 (malignant) 判定为良性肿瘤(benign),比良性肿瘤判定为得了恶性肿瘤要严重。因为误判定为良性肿瘤很有可能损失这个人的生命,而误判定为恶性肿瘤,这个人很有可能会换几家医院复检。
对于二分类问题,定义风险矩阵:
L = ( λ 11 λ 12 λ 21 λ 22 ) L=\left(
λ11λ21λ12λ22�11�12�21�22
\right)L=(λ11λ21λ12λ22)
其中λ 12 \lambda_{12}λ12 表示的是将ω 1 \omega_{1}ω1类判定为ω 2 \omega_{2}ω2类。它们之间的关系如下所示:
恶性肿瘤判定为良性肿瘤的风险λ 21 \lambda_{21}λ21 ,大于良性肿瘤判定为恶性肿瘤的风险λ 12 \lambda_{12}λ12 ,大于恶性肿瘤判定为恶性肿瘤的风险λ 22 \lambda_{22}λ22 ,大于良性肿瘤判定为良性肿瘤的风险λ 11 \lambda_{11}λ11 。
之前判定的是属于类别ω 1 \omega_{1}ω1的概率大,还是属于类别ω 2 \omega_{2}ω2的概率大。
p ( x ‾ ∣ ω 1 ) P ( ω 1 ) ( > ? < ) p ( x ‾ ∣ ω 2 ) P ( ω 2 ) p\left(\underline{x} | \omega_{1}\right) P\left(\omega_{1}\right)(>?<) p\left(\underline{x} | \omega_{2}\right) P\left(\omega_{2}\right)p(x∣ω1)P(ω1)(>?<)p(x∣ω2)P(ω2)
现在我们想看一下判定为类别ω 1 \omega_{1}ω1的风险大,还是属于类别ω 2 \omega_{2}ω2的风险大。将其判定为类别ω 1 \omega_{1}ω1的风险L 1 L_{1}L1:
l 1 = λ 11 p ( x ‾ ∣ ω 1 ) P ( ω 1 ) + λ 21 p ( x ‾ ∣ ω 2 ) P ( ω 2 ) l_{1}=\lambda_{11} p\left(\underline{x} | \omega_{1}\right) P\left(\omega_{1}\right)+\lambda_{21} p\left(\underline{x} | \omega_{2}\right) P\left(\omega_{2}\right)l1=λ11p(x∣ω1)P(ω1)+λ21p(x∣ω2)P(ω2)
同理可以得到,将其判定为类别ω 2 \omega_{2}ω2的风险L 2 L_{2}L2:
l 2 = λ 12 p ( x ‾ ∣ ω 1 ) P ( ω 1 ) + λ 22 p ( x ‾ ∣ ω 2 ) P ( ω 2 ) l_{2}=\lambda_{12} p\left(\underline{x} | \omega_{1}\right) P\left(\omega_{1}\right)+\lambda_{22} p\left(\underline{x} | \omega_{2}\right) P\left(\omega_{2}\right)l2=λ12p(x∣ω1)P(ω1)+λ22p(x∣ω2)P(ω2)
那么他俩谁大呢?将其化简一下, 得到L 1 L_{1}L1对L 2 L_{2}L2的风险概率:ℓ 12 \ell_{12}ℓ12
ℓ 12 ≡ p ( x ∣ ω 1 ) p ( x ‾ ∣ ω 2 ) > ( < ) P ( ω 2 ) P ( ω 1 ) λ 21 − λ 22 λ 12 − λ 11 \ell_{12} \equiv \frac{p\left(x | \omega_{1}\right)}{p\left(\underline{x} | \omega_{2}\right)}>(<) \frac{P\left(\omega_{2}\right)}{P\left(\omega_{1}\right)} \frac{\lambda_{21}-\lambda_{22}}{\lambda_{12}-\lambda_{11}}ℓ12≡p(x∣ω2)p(x∣ω1)>(<)P(ω1)P(ω2)λ12−λ11λ21−λ22
如果左边大,则说明L 1 L_{1}L1的风险概率大于L 2 L_{2}L2的风险概率。这个式子看起来还是比较复杂,我们将其简化一下。假设:P ( ω 1 ) = P ( ω 2 ) = 1 2 and λ 11 = λ 22 = 0 P\left(\omega_{1}\right)=P\left(\omega_{2}\right)=\frac{1}{2} \text { and } \lambda_{11}=\lambda_{22}=0P(ω1)=P(ω2)=21 and λ11=λ22=0 看起来好像也比较合理。由此,得到判定为两类别的条件是:
x ‾ → ω 1 if P ( x ‾ ∣ ω 1 ) > P ( x ‾ ∣ ω 2 ) λ 21 λ 12 x ‾ → ω 2 if P ( x ‾ ∣ ω 2 ) > P ( x ‾ ∣ ω 1 ) λ 12 λ 21
x––→ω1 if P(x––|ω1)>P(x––|ω2)λ21λ12x––→ω2 if P(x––|ω2)>P(x––|ω1)λ12λ21�_→�1 if �(�_|�1)>�(�_|�2)�21�12�_→�2 if �(�_|�2)>�(�_|�1)�12�21
x→ω1 if P(x∣ω1)>P(x∣ω2)λ12λ21x→ω2 if P(x∣ω2)>P(x∣ω1)λ21λ12
很明显判定为良性的条件在加入风险函数后要更苛刻(判定为恶性的概率,乘了一个大于1的系数)。如果拿风险来作为判定的依据,我们希望是风险最少。也就是两者之间的平均风险最小。由此做优化。
ω 1 \omega_{1}ω1的风险:
r 1 = λ 11 ∫ R 1 p ( x ‾ ∣ ω 1 ) d x ‾ + λ 12 ∫ R 2 p ( x ‾ ∣ ω 1 ) d x ‾ r_{1}=\lambda_{11} \int_{R_{1}} p\left(\underline{x} | \omega_{1}\right) d \underline{x}+\lambda_{12} \int_{R_{2}} p\left(\underline{x} | \omega_{1}\right) d \underline{x}r1=λ11∫R1p(x∣ω1)dx+λ12∫R2p(x∣ω1)dx
ω 2 \omega_{2}ω2的风险:
r 2 = λ 21 ∫ R 1 p ( x ‾ ∣ ω 2 ) d x ‾ + λ 22 ∫ R 2 p ( x ‾ ∣ ω 2 ) d x ‾ r_{2}=\lambda_{21} \int_{R_{1}} p\left(\underline{x} | \omega_{2}\right) d \underline{x}+\lambda_{22} \int_{R_{2}} p\left(\underline{x} | \omega_{2}\right) d \underline{x}r2=λ21∫R1p(x∣ω2)dx+λ22∫R2p(x∣ω2)dx
两者的平均风险:
r = r 1 P ( ω 1 ) + r 2 P ( ω 2 ) r=r_{1} P\left(\omega_{1}\right)+r_{2} P\left(\omega_{2}\right)r=r1P(ω1)+r2P(ω2)
最小化平均风险作为优化目标。
说完了风险函数,我们再回到之前的男女分类问题,g ( x ‾ ) ≡ P ( ω i ∣ x ‾ ) − P ( ω j ∣ x ‾ ) = 0 g(\underline{x}) \equiv P\left(\omega_{i} | \underline{x}\right)-P\left(\omega_{j} | \underline{x}\right)=0g(x)≡P(ωi∣x)−P(ωj∣x)=0是他的决策面(decision surface),大于0属于一类,小于0属于另一类。如果f ( . ) f(.)f(.)单调,g i ( x ) ≡ f ( P ( ω i ∣ x ‾ ) ) g_{i}(\boldsymbol{x}) \equiv f\left(P\left(\omega_{i} | \underline{x}\right)\right)gi(x)≡f(P(ωi∣x)) 是决策函数(discriminant function)。
样本我们有,但是我们怎么才能快速知道样本所服从的Class-conditional PDF p ( x ‾ ∣ ω i ) p\left(\underline{x} | \omega_{i}\right)p(x∣ωi)呢?因为数据量大了的话,统计这个分布还是有点难搞,那能不能先假设其服从某种分布,然后依据手中的数据去计算出这个分布大概长什么样子呢?却是,就是这么做的,并且一般假设服从的是高斯分布:
[多元高斯分布 The Multivariate normal distribution]
p ( x ‾ ∣ ω i ) = 1 ( 2 π ) t 2 ∣ Σ i ∣ 1 2 exp ( − 1 2 ( x ‾ − μ ‾ − i T Σ i − 1 ( x ‾ − μ ‾ i ) ) p\left(\underline{x} | \omega_{i}\right)=\frac{1}{(2 \pi)^{\frac{t}{2}}\left|\Sigma_{i}\right|^{\frac{1}{2}}} \exp \left(-\frac{1}{2}\left(\underline{x}-\underline{\mu}_{-i}^{\mathrm{T}} \Sigma_{i}^{-1}\left(\underline{x}-\underline{\mu}_{i}\right)\right)\right.p(x∣ωi)=(2π)2t∣Σi∣211exp(−21(x−μ−iTΣi−1(x−μi))
其中μ ‾ i = E [ x ‾ ] ℓ × 1 \underline{\mu}_{i}=E[\underline{x}] \ell \times 1μi=E[x]ℓ×1表示ω i \omega_{i}ωi均值向量。Σ i = E [ ( x ‾ − μ ‾ i ) ( x ‾ − μ ‾ i ) T ] ℓ × ℓ \Sigma_{i}=E\left[\left(\underline{x}-\underline{\mu}_{i}\right)\left(\underline{x}-\underline{\mu}_{i}\right)^{\mathrm{T}}\right] \ell \times \ellΣi=E[(x−μi)(x−μi)T]ℓ×ℓ 表示ω i \omega_{i}ωi的协方差(covariance matrix)矩阵。
那么接下来就是依据手中有的数据来求解这个函数的均值跟方差。这个就属于概率估计问题。
Probability Estimation
概率估计问题又分为参数估计(Parametric estimation)和非参数估计(Nonparametric estimation)。对于参数估计,上一节末尾所述的高斯分布的均值和方差就是参数估计问题中所要估计的参数。这里就能引出三种算法:最大似然估计(MLE, Maximum Likelihood Estimation);最大后验概率估计(MAP, Maximum A Posteriori Estimation);EM(Expectation Maximization)算法。
最大似然估计(MLE, Maximum Likelihood Estimation)
在统计中,似然(Likelihood)与概率(probability)是不同的东西。概率是已知参数,对结果可能性的预测。似然是已知结果,对参数是某个值的可能性预测。下图很好展示了这一概念:
最大似然估计(Maximum Likelihood Estimation)简写问MLE,其直观的思想是使得观测数据(样本)发生概率最大的参数就是最好的参数。
对于一个独立同分布的样本集来说,总体的似然就是每个样本似然的乘积。针对抛硬币的问题,似然函数可写作:
L ( X ; θ ) = ∏ i = 0 n P ( x i ∣ θ ) L(X ; \theta)=\prod_{i=0}^{n} P\left(x_{i} | \theta\right)L(X;θ)=i=0∏nP(xi∣θ)
要求能够使得似然函数L ( X ; θ ) L(X ; \theta)L(X;θ) 取到最大值的θ \thetaθ,令其对θ \thetaθ的导数等于0即可。
例:抛硬币问题:手中样本6次正面,4次反面,求正面的概率θ \thetaθ是多少?
解:设正面概率为:θ \thetaθ,则反面的概率为:1 − θ 1 - \theta1−θ。依据这十个样本,我们能够得到其似然函数:
L ( X ; θ ) = θ 6 ( 1 − θ ) 4 L(X ; \theta)=\theta^{6}(1-\theta)^{4}L(X;θ)=θ6(1−θ)4
用Python将其图像画出如下图所示:
import numpy as np import matplotlib.pyplot as plt import math x = np.linspace(0, 1, 100) y = [math.pow(i,6)*math.pow((1-i), 4) for i in x] plt.grid() plt.plot(x, y) plt.show()
对其求偏导,并令其等于0,求解如下:
∂ L ∂ θ = 6 θ 5 ( 1 − θ ) 4 − θ 6 ⋅ 4 ( 1 − α ) 3 = 0 ⇒ 6 θ 5 ( 1 − θ ) 4 = 4 θ 6 ( 1 − θ ) 3 ⇒ 6 ( 1 − θ ) = 4 θ ⇒ 6 = 10 θ ⇒ θ = 0.6
∂L∂θ=6θ5(1−θ)4−θ6⋅4(1−α)3=0⇒6θ5(1−θ)4=4θ6(1−θ)3⇒6(1−θ)=4θ⇒6=10θ⇒θ=0.6∂�∂�=6�5(1−�)4−�6⋅4(1−�)3=0⇒6�5(1−�)4=4�6(1−�)3⇒6(1−�)=4�⇒6=10�⇒�=0.6
∂θ∂L=6θ5(1−θ)4−θ6⋅4(1−α)3=0⇒6θ5(1−θ)4=4θ6(1−θ)3⇒6(1−θ)=4θ⇒6=10θ⇒θ=0.6
公式求解与图像所对应,说明求解正确。
由于我们经常用高斯函数去构造概率密度函数。高斯函数如下所示:
p = 1 2 π σ e − ( x − μ ) 2 2 σ 2 p = \frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}}p=2πσ1e−2σ2(x−μ)2
也就是似然函数变成了一堆高斯函数的乘积。令其求导等于0,这一步求解将会非常困难。
转换成对数似然函数并不会影响凹凸性:
ln L ( X ; θ ) = ln ∏ i = 0 n P ( x i ∣ θ ) = ∑ i = 0 n ln ( P ( x i ∣ θ ) ) \ln L(X ; \theta)=\ln \prod_{i=0}^{n} P\left(x_{i} | \theta\right)=\sum_{i=0}^{n} \ln \left(P\left(x_{i} | \theta\right)\right)lnL(X;θ)=lni=0∏nP(xi∣θ)=i=0∑nln(P(xi∣θ))
例:还是之前的抛硬币问题,L ( X ; θ ) = θ 6 ( 1 − θ ) 4 L(X ; \theta)=\theta^{6}(1-\theta)^{4}L(X;θ)=θ6(1−θ)4。
解:
1.确定似然函数:
L ( X ; θ ) = θ 6 ( 1 − θ ) 4 L(X ; \theta)=\theta^{6}(1-\theta)^{4}L(X;θ)=θ6(1−θ)4
2.将似然函数转为对数似然函数:
ln L ( X ; θ ) = 6 ln ( θ ) + 4 ln ( 1 − θ ) \ln L(X ; \theta)=6 \ln (\theta)+4 \ln (1-\theta)lnL(X;θ)=6ln(θ)+4ln(1−θ)
3.对数似然函数求导,解方程:
ln L ( x ; θ ) ′ = b θ − 4 1 − θ = 0 ⇒ 6 − 6 θ = 4 θ → θ = 0.6
⇒→lnL(x;θ)′=bθ−41−θ=06−6θ=4θθ=0.6ln�(�;�)′=��−41−�=0⇒6−6�=4�→�=0.6
⇒→lnL(x;θ)′=θb−1−θ4=06−6θ=4θθ=0.6
可知其求解结果与之前一致,但计算量急剧下降。
正态分布的最大似然估计
假设样本服从正态分布N ∼ ( μ , σ 2 ) N \sim\left(\mu, \sigma^{2}\right)N∼(μ,σ2),则其似然函数为:
1.确定似然函数:
L ( μ , σ 2 ) = ∏ i = 0 n 1 2 π σ e − ( x i − μ ) 2 2 σ 2 L\left(\mu, \sigma^{2}\right)=\prod_{i=0}^{n} \frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{\left(x_{i}-\mu\right)^{2}}{2 \sigma^{2}}}L(μ,σ2)=i=0∏n2πσ1e−2σ2(xi−μ)2
2.将似然函数转换为对数似然函数:
对其取对数得:
ln L ( μ , σ 2 ) = − n 2 ln ( 2 π ) − n 2 ln ( σ 2 ) − 1 2 σ 2 ∑ i = 0 n ( x i − μ ) 2 \ln L\left(\mu, \sigma^{2}\right)=-\frac{n}{2} \ln (2 \pi)-\frac{n}{2} \ln \left(\sigma^{2}\right)-\frac{1}{2 \sigma^{2}} \sum_{i=0}^{n}\left(x_{i}-\mu\right)^{2}lnL(μ,σ2)=−2nln(2π)−2nln(σ2)−2σ21i=0∑n(xi−μ)2
3.求对数似然函数的最大值(求导,解似然方程):
分别对μ \muμ,σ 2 \sigma^{2}σ2求偏导,并令导数为0,得:
{ ∂ ln L ( μ , σ 2 ) ∂ μ = 1 σ 2 ∑ i = 0 n ( x i − μ ) = 0 ∂ ln L ( μ , σ 2 ) ∂ σ 2 = − n 2 σ 2 + 1 2 σ 4 ∑ i = 0 n ( x i − μ ) 2 = 0 \left\{
∂lnL(μ,σ2)∂μ=1σ2∑ni=0(xi−μ)=0∂lnL(μ,σ2)∂σ2=−n2σ2+12σ4∑ni=0(xi−μ)2=0∂ln�(�,�2)∂�=1�2∑�=0�(��−�)=0∂ln�(�,�2)∂�2=−�2�2+12�4∑�=0�(��−�)2=0
\right.⎩⎨⎧∂μ∂lnL(μ,σ2)=σ21∑i=0n(xi−μ)=0∂σ2∂lnL(μ,σ2)=−2σ2n+2σ41∑i=0n(xi−μ)2=0
解得:
{ μ ^ = 1 n ∑ i = 0 n x i = x ˉ σ ^ 2 = 1 n ∑ i = 0 n ( x i − x ˉ ) 2 \left\{
μ^=1n∑ni=0xi=x¯σ^2=1n∑ni=0(xi−x¯)2�^=1�∑�=0���=�¯�^2=1�∑�=0�(��−�¯)2
\right. { μ ^ = n 1 ∑ i=0 n x i = x ˉ σ ^ 2 = n 1 ∑ i=0 n ( x i − x ˉ ) 2μ ^ \hat{\mu}μ^,σ 2 ^ \hat{\sigma^{2}}σ2^,就是正态分布中μ \muμ,σ 2 \sigma^{2}σ2的最大似然估计。
最大后验概率估计 (MAP, Maximum A Posteriori Estimation)
在最大似然估计中,我们需要使∏ i = 0 n P ( x i ∣ θ ) \prod_{i=0}^{n} P\left(x_{i} | \theta\right)∏i=0nP(xi∣θ)最大,也就是期望找到一个参数θ \thetaθ,能够使整个样本发生的概率最大。这个参数θ \thetaθ是一个固定值,需要求解。
在最大后验概率估计中认为θ \thetaθ服从某种分布,是一个随机变量,我们将其称为先验分布。那此时整个事件发生的概率是∏ i = 0 n P ( x i ∣ θ ) p ( θ ) \prod_{i=0}^{n} P\left(x_{i} | \theta\right)p(\theta)∏i=0nP(xi∣θ)p(θ)。找到能使其取到最大值的θ \thetaθ。
到这里其实最大后验概率估计就能够进行求解,我们看一下它跟贝叶斯概率以及最大似然估计的关系。由于x xx的先验分布p ( x ) p(x)p(x)是固定的(可通过分析数据获得,其实我们也并不关系x xx的分布,我们关系的是θ \thetaθ.)因此最大化函数可变为p ( x ∣ θ ) p ( θ ) / p ( x ) p(x|\theta)p(\theta)/p(x)p(x∣θ)p(θ)/p(x),进而依据贝叶斯法则能够将其转化为后验概率。
最大后验概率估计可以看作是正则化的最大似然估计,当然机器学习或深度学习中的正则项通常是加法,而在最大后验概率估计中采用的是乘法,p ( θ ) p(\theta)p(θ)是正则项。在最大似然估计,由于认为θ \thetaθ是固定的,因此P ( θ ) = 1 P(\theta)=1P(θ)=1。
argmax θ P ( θ ∣ X ) = argmax θ P ( X ∣ θ ) P ( θ ) P ( X ) ∝ argmax θ P ( X ∣ θ ) P ( θ ) \underset{\theta}{\operatorname{argmax}} P(\theta | X)=\underset{\theta}{\operatorname{argmax}} \frac{P(X | \theta) P(\theta)}{P(X)} \propto \operatorname{argmax}_{\theta} P(X | \theta) P(\theta)θargmaxP(θ∣X)=θargmaxP(X)P(X∣θ)P(θ)∝argmaxθP(X∣θ)P(θ)
例:
1.确定参数的先验分布以及似然函数:
用均值为0.5,方差为0.1的高斯分布来描述θ \thetaθ的先验分布,(当然也可以用其它的分布来描述θ \thetaθ的先验分布。θ \thetaθ的先验分布):
1 2 π σ e − ( θ − μ ) 2 2 σ 2 = 1 10 2 π e − 50 ( θ − 0.5 ) 2 \frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{(\theta-\mu)^{2}}{2 \sigma^{2}}}=\frac{1}{10 \sqrt{2 \pi}} e^{-50(\theta-0.5)^{2}}2πσ1e−2σ2(θ−μ)2=102π1e−50(θ−0.5)2
用Python画出其分布:
import math import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 1, 100) y = [1 / (10 * math.sqrt(2* math.pi)) * math.exp(-50 * math.pow((i - 0.5), 2)) for i in x] plt.grid() plt.plot(x, y) plt.show()
2.确定参数的后验分布函数:
在最大似然估计中,已知似然函数为p ( x ∣ θ ) = θ 6 ( 1 − θ ) 4 p(x|\theta)=\theta^{6}(1-\theta)^{4}p(x∣θ)=θ6(1−θ)4,因此:
P ( X ∣ θ ) P ( θ ) = θ 6 × ( 1 − θ ) 4 × 1 10 2 π × e − 50 ( θ − 0.5 ) 2 P(X | \theta) P(\theta)=\theta^{6} \times(1-\theta)^{4} \times \frac{1}{10 \sqrt{2 \pi}} \times e^{-50(\theta-0.5)^{2}}P(X∣θ)P(θ)=θ6×(1−θ)4×102π1×e−50(θ−0.5)2
3.将后验分布函数转换为对数函数:
转化为对数函数:
ln ( P ( X ∣ θ ) P ( θ ) ) = ln ( θ 6 × ( 1 − θ ) 4 × 1 10 2 π × e − 50 ( θ − 0.5 ) 2 ) = 6 ln ( θ ) + 4 ln ( 1 − θ ) + ln ( 1 10 2 π ) − 50 ( θ − 0.5 ) 2 \ln (P(X | \theta) P(\theta))=\ln \left(\theta^{6} \times(1-\theta)^{4} \times \frac{1}{10 \sqrt{2 \pi}} \times e^{-50(\theta-0.5)^{2}}\right)\\ = 6 \ln (\theta)+4 \ln (1-\theta)+\ln \left(\frac{1}{10 \sqrt{2 \pi}}\right)-50(\theta-0.5)^{2}ln(P(X∣θ)P(θ))=ln(θ6×(1−θ)4×102π1×e−50(θ−0.5)2)=6ln(θ)+4ln(1−θ)+ln(102π1)−50(θ−0.5)2
4.求对数函数的最大值(求导,解方程):
令其导数为0,得:
100 θ 3 − 150 θ 2 + 40 θ + 6 = 0 100 \theta^{3}-150 \theta^{2}+40 \theta+6=0100θ3−150θ2+40θ+6=0
由于0 ≤ θ ≤ 1 0 \leq \theta \leq 10≤θ≤1,解得:θ ^ ≈ 0.529 \hat{\theta} \approx 0.529θ^≈0.529。P ( X ∣ θ ) P ( θ ) P(X|\theta)P(\theta)P(X∣θ)P(θ)的函数图像如下,基本符合θ \thetaθ的估计值θ ^ \hat{\theta}θ^:
如果我们用均值为0.6,方差为0.1的高斯分布来描述θ \thetaθ的先验分布,则θ ^ = 0.6 \hat{\theta}=0.6θ^=0.6。由此可见,在最大后验概率估计中,θ \thetaθ的估计值与θ \thetaθ的先验分布会有很大的关系。这也说明一个合理的先验概率假设是非常重要的,如果先验分布假设错误,则会导致估计的参数值偏离实际的参数值。
在Python中使用朴素贝叶斯分类算法
在Scikit-Learn
库中,基于贝叶斯这一大类的算法模型的相关类库都在sklearn.naive_bayes
包之中。根据似然度计算方法不同,朴素贝叶斯也分成几个具体的算法分支。这里主要介绍的多项式朴素贝叶斯(Multinomial NaiveBayes
),该类在naive_bayes
包中为MultinomialNB
。除此之外,还包括伯努利分布朴素贝叶斯的类BernoulliNB
、高斯分布朴素贝叶斯的类GaussianNB
等一共4
种子算法类。
# 导入朴素贝叶斯模型中的多项式朴素贝叶斯分类算法 from sklearn.naive_bayes import MultinomialNB # 导入鸢尾花分类数据集 from sklearn.datasets import load_iris X, y = load_iris(return_X_y=True) # 训练模型 clf = MultinomialNB().fit(X, y) print(clf.predict(X)) ## 使用模型进行分类预测 print(clf.score(X,y)) ## 使用模型自带性能评估器
参考
李航统计学方法