最大似然估计(MLE)的一些公式与定理(python实践)

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow

                       

单参的情况

给定观察集D=(Fi

贝叶斯最大似然估计(Bayesian Maximum Likelihood Estimation)是统计学中用于参数估计的重要方法之一,结合了贝叶斯定理极大似然估计的思想。其核心目标是在给定数据的条件下,找到最可能产生这些数据的模型参数值。 ### 原理 贝叶斯最大似然估计的基本思想可以分为两个部分:**先验分布**和**似然函数**。根据贝叶斯定理,后验概率 $ P(\theta | D) $ 可以表示为: $$ P(\theta | D) = \frac{P(D | \theta) P(\theta)}{P(D)} $$ 其中: - $ P(\theta | D) $ 是后验概率,即在观察到数据 $ D $ 的条件下,参数 $ \theta $ 的概率。 - $ P(D | \theta) $ 是似然函数,描述了在给定参数 $ \theta $ 下观察到数据 $ D $ 的概率。 - $ P(\theta) $ 是先验概率,代表在没有观测数据之前对参数 $ \theta $ 的已有知识。 - $ P(D) $ 是边缘似然,是一个归一化常数,通常不影响最大化过程。 贝叶斯最大似然估计的目标是最大化后验概率 $ P(\theta | D) $,即寻找最优参数 $ \theta^* $ 使得: $$ \theta^* = \arg\max_{\theta} P(\theta | D) $$ 由于 $ P(D) $ 是一个常数,最大化 $ P(\theta | D) $ 等价于最大化分子 $ P(D | \theta) P(\theta) $。因此,贝叶斯最大似然估计可以看作是对似然函数和先验信息的联合优化[^1]。 ### 实例 一个经典的实例是**高斯分布参数估计**。假设我们有一组独立同分布的数据 $ x_1, x_2, ..., x_n $,它们服从正态分布 $ N(\mu, \sigma^2) $,其中均值 $ \mu $ 未知,标准差 $ \sigma $ 已知。我们的任务是估计均值 $ \mu $。 #### 似然函数 对于正态分布,似然函数为: $$ L(\mu) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x_i - \mu)^2}{2\sigma^2}\right) $$ 取对数似然后: $$ \log L(\mu) = -\frac{n}{2} \log(2\pi\sigma^2) - \frac{1}{2\sigma^2} \sum_{i=1}^{n} (x_i - \mu)^2 $$ #### 先验分布 假设均值 $ \mu $ 的先验分布也是正态分布 $ N(m_0, s_0^2) $,则其概率密度函数为: $$ P(\mu) = \frac{1}{\sqrt{2\pi s_0^2}} \exp\left(-\frac{(\mu - m_0)^2}{2s_0^2}\right) $$ #### 后验分布 将似然函数和先验分布代入贝叶斯公式,并忽略常数项,可得后验分布的形式。通过最大化后验分布,可以得到最终的参数估计结果: $$ \mu^* = \frac{\frac{1}{s_0^2} m_0 + \frac{n}{\sigma^2} \bar{x}}{\frac{1}{s_0^2} + \frac{n}{\sigma^2}} $$ 其中 $ \bar{x} $ 是样本均值。可以看出,该估计结果是先验均值 $ m_0 $ 和样本均值 $ \bar{x} $ 的加权平均,权重取决于先验方差 $ s_0^2 $ 和样本误差 $ \sigma^2 $ 的相对大小[^1]。 ### 应用场景 贝叶斯最大似然估计广泛应用于以下领域: - **自然语言处理**:如主题建模中的潜在狄利克雷分布(LDA),使用贝叶斯方法估计文档的主题分布。 - **图像识别**:在卷积神经网络(CNN)中,贝叶斯推断用于不确定性量化和模型校准。 - **金融建模**:用于预测股票价格波动、风险评估等,尤其是在小样本情况下更为稳健。 ### 代码示例 以下是一个简单的 Python 示例,展示如何使用 `scipy` 进行贝叶斯最大似然估计: ```python import numpy as np from scipy.stats import norm from scipy.optimize import minimize_scalar # 生成模拟数据 np.random.seed(42) data = np.random.normal(loc=5.0, scale=2.0, size=100) # 定义负对数似然函数(考虑先验) def neg_log_posterior(mu, data, sigma=2.0, prior_mu=0.0, prior_sigma=10.0): # 似然部分 log_likelihood = np.sum(norm.logpdf(data, loc=mu, scale=sigma)) # 先验部分 log_prior = norm.logpdf(mu, loc=prior_mu, scale=prior_sigma) return -(log_likelihood + log_prior) # 最大化等价于最小化负值 # 最大化后验估计 result = minimize_scalar(lambda mu: neg_log_posterior(mu, data), bounds=(0, 10), method='bounded') estimated_mu = result.x print(f"Estimated mean (Bayesian MLE): {estimated_mu}") ``` 输出结果会给出基于贝叶斯最大似然估计的均值估计值。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值