经典机器学习系列(一)【 贝叶斯分类、 最大似然估计、 最大后验概率估计】

简介: 经典机器学习系列(一)【 贝叶斯分类、 最大似然估计、 最大后验概率估计】

贝叶斯决策、概率估计

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(ωix),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(ωix),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(ωix),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(ωix)=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(ω1x)>P(ω2x)xω2 if P(ω2x)>P(ω1x)

  如果我们只需要判定属于哪一个类别的话,我们只需要判定上式中的分子部分即可。上述判定式等价于:

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}L1L 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}}12p(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=λ11R1p(xω1)dx+λ12R2p(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=λ21R1p(xω2)dx+λ22R2p(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(ωix)P(ωjx)=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(ωix)) 是决策函数(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Σi211exp(21(xμiTΣi1(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=0nP(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θ64(1α)3=06θ5(1θ)4=4θ6(1θ)36(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θ64(1α)3=06θ5(1θ)4=4θ6(1θ)36(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πσ1e2σ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=0nP(xiθ)=i=0nln(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θ=066θ=4θθ=0.6ln⁡�(�;�)′=��−41−�=0⇒6−6�=4�→�=0.6

lnL(x;θ)=θb1θ4=066θ=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=0n2πσ1e2σ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=0n(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σ2ni=0(xiμ)=0lnL(μ,σ2)σ2=n2σ2+12σ4ni=0(xiμ)2=0∂ln⁡�(�,�2)∂�=1�2∑�=0�(��−�)=0∂ln⁡�(�,�2)∂�2=−�2�2+12�4∑�=0�(��−�)2=0

\right.μlnL(μ,σ2)=σ21i=0n(xiμ)=0σ2lnL(μ,σ2)=2σ2n+2σ41i=0n(xiμ)2=0

  解得:

{ μ ^ = 1 n ∑ i = 0 n x i = x ˉ σ ^ 2 = 1 n ∑ i = 0 n ( x i − x ˉ ) 2 \left\{

μ^=1nni=0xi=x¯σ^2=1nni=0(xix¯)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πσ1e2σ2(θμ)2=102π1e50(θ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×e50(θ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×e50(θ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θ3150θ2+40θ+6=0

  由于0 ≤ θ ≤ 1 0 \leq \theta \leq 10θ1,解得:θ ^ ≈ 0.529 \hat{\theta} \approx 0.529θ^0.529P ( 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)) ## 使用模型自带性能评估器

参考

贝叶斯估计、最大似然估计、最大后验概率估计

贝叶斯学派与频率学派有何不同?

李航统计学方法

相关文章
|
10天前
|
机器学习/深度学习 数据挖掘 Python
机器学习之pandas基础——pandas与概率论的简短碰面
机器学习之pandas基础——pandas与概率论的简短碰面
16 4
|
2天前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
6 0
|
2天前
|
机器学习/深度学习 算法
机器学习中的超参数优化涉及手动尝试、网格搜索、随机搜索、贝叶斯优化、梯度优化、进化算法等策略
【6月更文挑战第28天】**机器学习中的超参数优化涉及手动尝试、网格搜索、随机搜索、贝叶斯优化、梯度优化、进化算法等策略。工具如scikit-optimize、Optuna助力优化,迁移学习和元学习提供起点,集成方法则通过多模型融合提升性能。资源与时间考虑至关重要,交叉验证和提前停止能有效防止过拟合。**
5 0
|
11天前
|
机器学习/深度学习 数据采集 自然语言处理
【机器学习】逻辑回归:智能垃圾邮件分类实例
【机器学习】逻辑回归:智能垃圾邮件分类实例
37 0
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】自然语言引导下的单目深度估计:泛化能力与鲁棒性的新挑战
【机器学习】自然语言引导下的单目深度估计:泛化能力与鲁棒性的新挑战
24 0
|
11天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Voting集成学习算法:分类任务中的新利器
【机器学习】Voting集成学习算法:分类任务中的新利器
15 0
|
11天前
|
机器学习/深度学习 人工智能 算法
【机器学习】概率模型在机器学习中的应用:以朴素贝叶斯分类去为例
【机器学习】概率模型在机器学习中的应用:以朴素贝叶斯分类去为例
15 0
|
11天前
|
机器学习/深度学习 算法 数据可视化
【机器学习】分类与预测算法的评价与优化
【机器学习】分类与预测算法的评价与优化
22 0
|
3天前
|
数据采集 机器学习/深度学习 算法
机器学习方法之决策树算法
决策树算法是一种常用的机器学习方法,可以应用于分类和回归任务。通过递归地将数据集划分为更小的子集,从而形成一棵树状的结构模型。每个内部节点代表一个特征的判断,每个分支代表这个特征的某个取值或范围,每个叶节点则表示预测结果。
14 1
|
7天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
130 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50