最大似然估计MLE、最大后验估计MAP、贝叶斯估计

本文介绍了三种参数估计方法:最大似然估计(MLE)、最大后验概率估计(MAP)及贝叶斯估计。通过扔硬币实验,展示了这些方法在估计二项分布参数时的应用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍三类参数估计方法-最大似然估计MLE、最大后验概率估计MAP及贝叶斯估计。

1、最大似然估计MLE

首先回顾一下贝叶斯公式

 

 

这个公式也称为逆概率公式,可以将后验概率转化为基于似然函数和先验概率的计算表达式,即

 

 

最大似然估计就是要用似然函数取到最大值时的参数值作为估计值,似然函数可以写做

 

 

由于有连乘运算,通常对似然函数取对数计算简便,即对数似然函数。最大似然估计问题可以写成

 

 

这是一个关于的函数,求解这个优化问题通常对求导,得到导数为0的极值点。该函数取得最大值是对应的的取值就是我们估计的模型参数。

以扔硬币的伯努利实验为例子,N次实验的结果服从二项分布,参数为P,即每次实验事件发生的概率,不妨设为是得到正面的概率。为了估计P,采用最大似然估计,似然函数可以写作

 

                                                             

 

其中表示实验结果为i的次数。下面求似然函数的极值点,有

 

                                                                                 

 

得到参数p的最大似然估计值为

 

                                                                                 

 

可以看出二项分布中每次事件发的概率p就等于做N次独立重复随机试验中事件发生的概率。

如果我们做20次实验,出现正面12次,反面8次

那么根据最大似然估计得到参数值p为12/20 = 0.6。

2、最大后验估计MAP

最大后验估计与最大似然估计相似,不同点在于估计的函数中允许加入一个先验,也就是说此时不是要求似然函数最大,而是要求由贝叶斯公式计算出的整个后验概率最大(似然函数与先验概率的乘积),即

 

                                                          

 

注意这里P(X)与参数无关,因此等价于要使分子最大。与最大似然估计相比,现在需要多加上一个先验分布概率的对数。在实际应用中,这个先验可以用来描述人们已经知道或者接受的普遍规律。例如在扔硬币的试验中,每次抛出正面发生的概率应该服从一个概率分布,这个概率在0.5处取得最大值,这个分布就是先验分布。先验分布的参数我们称为超参数(hyperparameter)即

 

                                                                              

 

同样的道理,当上述后验概率取得最大值时,我们就得到根据MAP估计出的参数值。给定观测到的样本数据,一个新的值发生的概率是

 

                                                               

 

下面我们仍然以扔硬币的例子来说明,我们期望先验概率分布在0.5处取得最大值,我们可以选用Beta分布即

 

                                                               

 

其中Beta函数展开是

 

                                                                                     

 

当x为正整数时

 

                                                                                            \Gamma(n) = (n-1)!\,

 

Beta分布的随机变量范围是[0,1],所以可以生成normalised probability values。

我们取,这样先验分布在0.5处取得最大值,现在我们来求解MAP估计函数的极值点,同样对p求导数我们有

 

                                                                 

 

得到参数p的的最大后验估计值为

 

                                                                 

 

和最大似然估计的结果对比可以发现结果中多了这样的pseudo-counts,这就是先验在起作用。并且超参数越大,为了改变先验分布传递的belief所需要的观察值就越多,此时对应的Beta函数越聚集,紧缩在其最大值两侧。

如果我们做20次实验,出现正面12次,反面8次,那么

那么根据MAP估计出来的参数p为16/28 = 0.571,小于最大似然估计得到的值0.6,这也显示了“硬币一般是两面均匀的”这一先验对参数估计的影响。

 

3 贝叶斯估计

贝叶斯估计是在MAP上做进一步拓展,此时不直接估计参数的值,而是允许参数服从一定概率分布。回顾一下贝叶斯公式

 

                                                                           

 

现在不是要求后验概率最大,这样就需要求,即观察到的evidence的概率,由全概率公式展开可得

 

                                                                         

 

当新的数据被观察到时,后验概率可以自动随之调整。但是通常这个全概率的求法是贝叶斯估计比较有技巧性的地方。

那么如何用贝叶斯估计来做预测呢?如果我们想求一个新值的概率,可以由

 

                                                 

 

来计算。注意此时第二项因子在上的积分不再等于1,这就是和MLE及MAP很大的不同点。

我们仍然以扔硬币的伯努利实验为例来说明。和MAP中一样,我们假设先验分布为Beta分布,但是构造贝叶斯估计时,不是要求用后验最大时的参数来近似作为参数值,而是求满足Beta分布的参数p的期望

注意这里用到了公式

 

                                                                                 

 

当T为二维的情形可以对Beta分布来应用;T为多维的情形可以对狄利克雷分布应用

根据结果可以知道,根据贝叶斯估计,参数p服从一个新的Beta分布。回忆一下,我们为p选取的先验分布是Beta分布,然后以p为参数的二项分布用贝叶斯估计得到的后验概率仍然服从Beta分布,由此我们说二项分布和Beta分布是共轭分布。在概率语言模型中,通常选取共轭分布作为先验,可以带来计算上的方便性。最典型的就是LDA中每个文档中词的Topic分布服从Multinomial分布,其先验选取共轭分布即Dirichlet分布;每个Topic下词的分布服从Multinomial分布,其先验也同样选取共轭分布即Dirichlet分布。

可以看出此时估计的p的期望和MLE ,MAP中得到的估计值都不同,此时如果仍然是做20次实验,12次正面,8次反面,那么我们根据贝叶斯估计得到的p满足参数为12+5和8+5的Beta分布,其均值和方差分别是17/30=0.567, 17*13/(31*30^2)=0.0079。可以看到此时求出的p的期望比MLE和MAP得到的估计值都小,更加接近0.5。

,从MLE到MAP再到贝叶斯估计,对参数的表示越来越精确,得到的参数估计结果也越来越接近0.5这个先验概率,越来越能够反映基于样本的真实参数情况。

 

原文地址:http://blog.youkuaiyun.com/yangliuy/article/details/8296481

### 最大似然估计的概念 最大似然估计(Maximum Likelihood Estimation, MLE)是一种用于参数估计的重要方法,在统计学和机器学习领域广泛应用。该方法的核心在于寻找能够使观测数据出现概率最大的模型参数集[^1]。 ### 数学原理 从数学角度讲,给定一组独立同分布的样本 \(X_1,X_2,\ldots,X_n\) 和未知参数 \(\theta\) 下的概率密度函数 \(f(X_i|\theta)\),则联合概率可表示为: \[L(\theta|X)=\prod_{i=1}^{n}{f(X_i|\theta)}\] 为了简化计算通常取对数形式得到对数似然函数: \[l(\theta|X)=\sum_{i=1}^{n}\log{f(X_i|\theta)}\] 最终目标是求解使得上述表达式达到极值点对应的参数向量 \(\hat{\theta}_{ML}\)。 ```python import numpy as np from scipy.optimize import minimize def log_likelihood(params, data): mu, sigma = params n = len(data) ll = -n/2 * np.log(2*np.pi*sigma**2) - (np.sum((data-mu)**2))/(2*sigma**2) return -ll # 负号是因为minimize找最小值而我们要最大化likelihood initial_guess = [0, 1] result = minimize(log_likelihood, initial_guess, args=(data,)) mle_estimate = result.x ``` 这段Python代码展示了如何使用SciPy库来实现一维高斯分布下的最大似然估计过程。 ### 实际应用场景 在实际应用中,MLE广泛应用于各种场景之中,比如但不限于以下方面: - **回归分析**:在线性回归或者逻辑回归等问题里用来确定权重系数; - **分类问题**:构建朴素贝叶斯分类器时评估类别条件概率; - **时间序列预测**:ARIMA等模型训练过程中调整自回归项和平滑移动平均项之间的平衡; 值得注意的是,虽然MLE提供了一种有效的参数估计手段,但在某些情况下可能会遇到过拟合的风险。此时可以通过引入正则化项或将MLE扩展至MAP等方式加以改进[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值