最大似然估计(MLE)、最大后验估计(MAP)及贝叶斯分类
0. 概念
概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。
条件独立:
P(X, Y | Z)=P(X | Z) P(Y | Z)
这里,X,Y条件独立,等价于:
(\forall x, y, z) P(X=x | Y=y, Z=z)=P(X=x | Z=z)
下面介绍两种参数估计的方法,MLE 和 MAP,用于估计概率。
1. 最大似然估计(MLE)
最大似然估计就是,最大化似然函数。 似然可理解为观测事件发生的概率。从统计学的角度出发,把事情发生的频率当作概率。
对抛硬币来说(服从伯努利分布),正面的概率为:p(Head) = \theta;负面概率:p(Tail) = 1-\theta.
MLE 的目标:选择合适的\theta,使得观测数据的概率最大。
\begin{aligned} \widehat{\theta}_{M L E} &=\arg \max _{\theta} {P(D | \theta)} \\ &=\arg \max _{\theta} \prod_{i=1}^{n} P\left(X_{i} | \theta\right)\\ &=\arg \max _{\theta} {\prod_{i: X_{i}=H} \theta \prod_{i: X_{i}=T}(1-\theta)} \\ &={\arg \max _{\theta} \underbrace{\theta^{\alpha_{H}}(1-\theta)^{\alpha_{T}}}_{J(\theta)}} \end{aligned}
这里,\alpha_H是正面的次数,\alpha_T是负面的次数。
似然函数求偏导:
\frac{\partial J(\theta)}{\partial \theta}=\left.\alpha_{H} \theta^{\alpha_{H}-1}(1-\theta)^{\alpha_{T}} - \alpha_{T} \theta^{\alpha_{H}}(1-\theta)^{\alpha_{T}-1}\right|_{\theta=\hat{\theta}_{\mathrm{MLE}}}=0
可得:\widehat{\theta}_{M L E}=\frac{\alpha_{H}}{\alpha_{H}+\alpha_{T}}
估计的置信度:
进行5次试验和50次试验,可能得到的\theta相等,但两个结果可信程度一样吗,或者是我需要做多少次试验来确保参数的可信度。
Hoeffding 不等式:
P\left(\left|\widehat{\theta}-\theta^{*}\right| \geq \epsilon\right) \leq 2 e^{-2 n \epsilon^{2}} \leq \delta
其中,\epsilon代表误差,n 为试验次数,其中\delta代表估计错误概率。
也就是,试验次数越多,得到的结果大于某个偏差的概率越低。
在保证置信度为 1-\delta 情况下,试验次数:
n \geq \frac{\ln (2 / \delta)}{2 \epsilon^{2}}
连续特征的处理
假设连续型数据(或者数据的每个属性)服从高斯分布,从而估计其概率:
p(x | \mu, \sigma)=\frac{1}{\sqrt{2 \pi \sigma^{2}}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)=\mathcal{N}_{x}(\mu, \sigma)

同样求偏导,得:
\begin{aligned} &\widehat{\mu}_{M L E}=\frac{1}{n} \sum_{i=1}^{n} x_{i}\\ &\hat{\sigma}_{M L E}^{2}=\frac{1}{n} \sum_{i=1}^{n}\left(x_{i}-\widehat{\mu}\right)^{2} \end{aligned}
2.最大后验估计MAP
与最大似然估计不同,最大后验估计考虑了先验分布p(\theta)。
先验分布类型:
1、简单的先验分布,比如均匀分布;
2、专业知识的先验分布,比如共轭分布(先验分布和后验分布属于同一分布)。
引入贝叶斯学习:
P(\theta | \mathcal{D})=\frac{P(\mathcal{D} | \theta) P(\theta)}{P(\mathcal{D})}
这等价于:
P(\theta | \mathcal{D}) \propto P(\mathcal{D} | \theta) P(\theta)
MAP 在抛硬币中的参数估计:
定义 B(Beta)函数:
B(x, y)=\int_{0}^{1} t^{x-1}(1-t)^{y-1} d t
B(Beta)分布的概率密度函数:
\begin{aligned} f(x ; \alpha, \beta) &=\frac{x^{\alpha-1}(1-x)^{\beta-1}}{\int_{0}^{1} t^{\alpha-1}(1-t)^{\beta-1} d u} \\ &=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} x^{\alpha-1}(1-x)^{\beta-1} \\ &=\frac{1}{\mathrm{B}(\alpha, \beta)} x^{\alpha-1}(1-x)^{\beta-1} \end{aligned}
如果 x 满足该概率密度函数,则称 x 服从B分布.
Beta分布不同参数下的PDF曲线:

假设先验服从Beta分布:
P(\theta)=\frac{\theta^{\beta_{H}-1}(1-\theta)^{\beta_{T}-1}}{B\left(\beta_{H}, \beta_{T}\right)} \sim \operatorname{Beta}\left(\beta_{H}, \beta_{T}\right)
似然是二项式:
P(\mathcal{D} | \theta)=\left(\begin{array}{c}n \\ \alpha_{H}\end{array}\right) \theta^{\alpha_{H}}(1-\theta)^{\alpha_{T}}
则后验也服从Beta分布:
P(\theta | D) \sim \operatorname{Beta}\left(\beta_{H}+\alpha_{H}, \beta_{T}+\alpha_{T}\right)
这里,\alpha_H是正面的次数,\alpha_T是负面的次数,\beta_H和\beta_T都是beta分布的预设参数 。
求偏导,得到估计参数:
\begin{aligned} \hat{\theta}_{M A P} &=\arg \max _{\theta} P(\theta | D)=\arg \max _{\theta} P(D | \theta) P(\theta) \\ &=\frac{\alpha_{H}+\beta_{H}-1}{\alpha_{H}+\beta_{H}+\alpha_{T}+\beta_{T}-2} \end{aligned}
拓展:二项式到多项式
如果似然服从多项式:
P(\mathcal{D} | \theta)=\theta_{1}^{\alpha_{1}} \theta_{2}^{\alpha_{2}} \ldots \theta_{k}^{\alpha_{k}}
先验服从 Dirichlet 分布:
P(\theta)=\frac{\Pi_{i=1}^{k} \theta_{i}^{\beta_{i}-1}}{B\left(\beta_{1}, \ldots, \beta_{k}\right)} \sim \operatorname{Dirichlet}\left(\beta_{1}, \ldots, \beta_{k}\right)
则后验也是 Dirichlet 分布:
P(\theta | D) \sim \text { Dirichlet }\left(\beta_{1}+\alpha_{1}, \ldots, \beta_{k}+\alpha_{k}\right)
最大后验概率方法和贝叶斯方法的区别:
最大后验概率方法使用到了贝叶斯公式,但和贝叶斯方法进行参数估计还是有点区别,以下用列出他们预测的实现:

3. 区别与联系
举例:
如下的概率图中:

如果是
最大似然估计的话:\max p(y|x, \theta)
最大后验估计的话:\max p(\theta| x, y)
根据:
\boldsymbol{\theta}_{\mathrm{MAP}}=\underset{\boldsymbol{\theta}}{\arg \max } p(\boldsymbol{\theta} | \boldsymbol{x})=\underset{\boldsymbol{\theta}}{\arg \max } \log p(\boldsymbol{x} | \boldsymbol{\theta})+\log p(\boldsymbol{\theta})
两者对比:
1、在高斯噪声条件下,即先验分布p(\theta)为高斯分布时,MAP等价于带L2正则的MLE;在拉普拉斯噪声条件下,则是L1正则。
2、先验分布项有助于MAP减少最大后验点估计的方差(相比于MLE), 但同时增加了偏差。
3、MLE在样本比较少的时候,估计会较差;MAP的结果和假设的先验关系大。
4. 实践
上述抛硬币案例中,
MLE的似然:
J(\theta)_{MLE} = \theta^{\alpha_{H}}(1-\theta)^{\alpha_{T}}
\widehat{\theta}_{M L E}=\frac{\alpha_{H}}{\alpha_{H}+\alpha_{T}}
MAP的后验:
J(\theta)_{MAP} = \frac{\theta^{\beta_{H} + \alpha_H -1}(1-\theta)^{\beta_{T} + \alpha_T -1}} {B\left(\beta_{H}+\alpha_H, \beta_{T}+\alpha_T \right)}
\begin{aligned} \hat{\theta}_{M A P} &=\frac{\alpha_{H}+\beta_{H}-1}{\alpha_{H}+\beta_{H}+\alpha_{T}+\beta_{T}-2} \end{aligned}
令\beta_H = 2, \beta_T = 2.
假设 \alpha_H = 7, \alpha_T = 3.
import matplotlib.pyplot as plt
from numpy.random import normal,rand
import numpy as np
from functools import reduce
x = np.linspace(0, 1, num = 1000)
alpha_h = 7
alpha_t = 3
beta_h = 2
beta_t = 2
likelihood = x**(alpha_h)*(1-x)**alpha_t
def factorial(n):
return reduce(lambda x,y:x*y,range(1,n+1))
posterior = x**(alpha_h+beta_h-1)*(1-x)**(alpha_t+beta_t-1)*\
factorial(alpha_h + beta_h + alpha_t + beta_t-1)/(factorial(alpha_h+beta_h-1)*factorial(alpha_t+beta_t-1))
plt.figure(figsize=(8,4))
# mae
plt.subplot(2,1,1)
plt.plot(x, likelihood)
theta_mle = alpha_h/(alpha_h + alpha_t)
plt.axvline(theta_mle, color='k', linestyle='solid')
plt.text(theta_mle, .0, round(theta_mle,2))
plt.xlabel("theta")
plt.ylabel("likelihood")
# map
plt.subplot(2,1,2)
plt.plot(x, posterior)
theta_map = (alpha_h + beta_h -1)/(alpha_h + beta_h + alpha_t + beta_t -2)
plt.axvline(theta_map, color='r', linestyle='solid')
plt.text(theta_map, .0, round(theta_map,2))
plt.xlabel("theta")
plt.ylabel("posterior")
plt.show()
python

实验结果:

参考:
