极大似然估计(MLE)

一、原理

极大似然估计方法(Maximum Likelihood Estimate,MLE)也称为最大概似估计或最大似然估计,是求估计的一种方法。

给定一堆数据,假如我们知道它是从某一种分布中随机取出来的,可是我们并不知道这个分布具体的参数,即“模型已定,参数未知”。例如,我们知道这个分布是正态分布,但是不知道均值和方差;或者是二项分布,但是不知道均值。 最大似然估计就可以用来估计模型的参数。MLE的目标是找出一组参数,使得模型产生出观测数据的概率最大:

                                                                      \underset{\theta}{argmax}\: p(X;\theta)

其中p(X;\theta)表示在参数\theta下出现观测数据的概率。这里我们假设每个观测数据是独立的,那么有

                                                             L(\theta)=p(x_{1},x_{2},...,x_{n};\theta)=\prod_{i=1}^{n}p(x_{i};\theta)

这一概率随\theta的取值而变化,它是\theta的函数,称L(\theta)为似然函数。

为了求导方便,一般对目标取log。所以最优化似然函数等同于最优化对数似然函数。

                                                              \underset{\theta}{argmax}\: p(X;\theta)\approx \underset{\theta}{argmax}\: log\: p(X;\theta)

二、一般步骤

求极大似然函数估计值的一般步骤

(1) 写出似然函数;

(2) 对似然函数取对数,并整理;

(3) 求导数;

(4) 解似然方程 。

三、例子

以《统计学习方法》(李航著)一书中求解二元逻辑斯谛回归模型为例(书79页)。

设:

                                                           P(Y=1|x) = \pi (x),\: P(Y=0|x)=1-\pi(x)

似然函数为

                                                                      \prod_{i=1}^{N}[\pi(x_{i})]^{y_{i}}[1-\pi(x_{i})]^{1-y_{i}}

对数似然函数为

                                                  L(w)=\sum_{i=1}^{N}[y_{i}log\pi(x_{i})+(1-y_{i})log(1-\pi(x_{i}))]

                                                             =\sum_{i=1}^{N}[y_{i}log\frac{\pi(x_{i})}{1-\pi(x_{i})}+log(1-\pi(x_{i}))]

                                                             =\sum_{i=1}^{N}[y_{i}(w\cdot x_{i})-log(1+exp(w\cdot x_{i}))]

对似然函数L(w)求极大值,得到w的估计值。

这样,问题就变成了以对数似然函数为目标函数的最优化问题。逻辑斯谛回归学习中通常采用的方法是梯度下降法及拟牛顿法优化似然函数。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
极大估计(Maximum Likelihood Estimation,MLE)是一种常用的参数估计方法,用于根据观测数据来估计概率分布的参数。在Python中,可以使用SciPy库中的stats模块来进行极大估计。 以下是一个简单的使用Python实现极大估计的示例程序: ```python import numpy as np from scipy.stats import norm # 假设观测到的数据服从正态分布 N(mu, sigma^2) mu_true = 5.0 sigma_true = 2.0 data = np.random.normal(mu_true, sigma_true, size=100) # 定义然函数 def likelihood(mu, sigma, data): return np.prod(norm.pdf(data, mu, sigma)) # 极大估计 def mle(data): mu_hat = np.mean(data) sigma_hat = np.std(data) return mu_hat, sigma_hat # 计算然函数在 mu, sigma 的取值下的值 mu_vals = np.linspace(0, 10, num=100) sigma_vals = np.linspace(0.1, 5, num=100) likelihood_vals = np.zeros((100, 100)) for i, mu in enumerate(mu_vals): for j, sigma in enumerate(sigma_vals): likelihood_vals[i, j] = likelihood(mu, sigma, data) # 找到最大估计的 mu, sigma 值 mu_mle, sigma_mle = mle(data) # 输出结果 print('True Parameters: mu={:.2f}, sigma={:.2f}'.format(mu_true, sigma_true)) print('MLE Parameters: mu={:.2f}, sigma={:.2f}'.format(mu_mle, sigma_mle)) ``` 这段代码中,我们首先生成了服从正态分布的观测数据。然后定义了然函数likelihood,它计算给定参数mu和sigma下观测数据的然值。接下来,我们实现了极大估计函数mle,它使用观测数据来估计mu和sigma的值。最后,我们计算了然函数在一定范围内mu和sigma的取值下的值,并找到使然函数最大化的mu和sigma值,即最大估计的结果。 运行这段代码,我们可以得到真实参数和极大估计的参数值。 参考文献: [1] Statistics (scipy.stats) — SciPy v1.4.1 Reference Guide [2] Scipy:高级科学计算 | SciPy Lecture Notes 中文版 [3] python简单实现最大估计&scipy库的使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值