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

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

贝叶斯决策、概率估计

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)) ## 使用模型自带性能评估器

参考

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

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

李航统计学方法

相关文章
|
20天前
|
机器学习/深度学习
如何用贝叶斯方法来解决机器学习中的分类问题?
【10月更文挑战第5天】如何用贝叶斯方法来解决机器学习中的分类问题?
|
26天前
|
机器学习/深度学习 存储 自然语言处理
【机器学习】基于逻辑回归的分类预测
【机器学习】基于逻辑回归的分类预测
|
14天前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
19 0
|
24天前
|
机器学习/深度学习 程序员
【机器学习】朴素贝叶斯原理------迅速了解常见概率的计算
【机器学习】朴素贝叶斯原理------迅速了解常见概率的计算
|
26天前
|
机器学习/深度学习 传感器 算法
机器学习入门(一):机器学习分类 | 监督学习 强化学习概念
机器学习入门(一):机器学习分类 | 监督学习 强化学习概念
|
2月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
266 1
|
3月前
|
机器学习/深度学习 人工智能 算法
【人工智能】机器学习、分类问题和逻辑回归的基本概念、步骤、特点以及多分类问题的处理方法
机器学习是人工智能的一个核心分支,它专注于开发算法,使计算机系统能够自动地从数据中学习并改进其性能,而无需进行明确的编程。这些算法能够识别数据中的模式,并利用这些模式来做出预测或决策。机器学习的主要应用领域包括自然语言处理、计算机视觉、推荐系统、金融预测、医疗诊断等。
56 1
|
3月前
|
机器学习/深度学习 算法
【机器学习】简单解释贝叶斯公式和朴素贝叶斯分类?(面试回答)
简要解释了贝叶斯公式及其在朴素贝叶斯分类算法中的应用,包括算法的基本原理和步骤。
70 1
|
3月前
|
机器学习/深度学习
如何用贝叶斯方法来解决机器学习中的分类问题?
如何用贝叶斯方法来解决机器学习中的分类问题?
|
6月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
233 14

热门文章

最新文章