当前位置: 首页 > article >正文

ML 系列:第 40 节 — 最大似然MLE 的简单问题

一、说明

最大似然估计 (MLE) 是统计学和机器学习中用于估计概率模型参数的基本技术。在本文中,我们将介绍一个使用 MLE 估计正态分布参数的简单示例。我们将使用 Python 进行实现和可视化。

二、问题陈述

假设我们有一组数据点,我们认为这些数据点来自具有未知均值μ和方差sigma²的正态分布。我们的目标是使用 MLE 估计参数μ和sigma²。

生成示例数据
首先,让我们从已知均值和方差的正态分布中生成一些样本数据。

import numpy as np 
import matplotlib.pyplot as plt 

# 设置种子以实现可重复性
np.random.seed( 42 ) 

# True 参数
mu_true = 5
 sigma_true = 2 

# 生成样本数据
data = np.random.normal(mu_true, sigma_true, 1000 ) 

# 绘制数据直方图
plt.hist(data, bins= 30 , density= True , alpha= 0.6 , color= 'g' ) 
plt.title( '样本数据直方图' ) 
plt.xlabel( '值' ) 
plt.ylabel( '频率' ) 
plt.show()

输出:

在这里插入图片描述

实现正态分布的 MLE
为了找到正态分布参数的 MLE 估计值,我们需要:

定义似然函数。
取似然函数的对数(对数似然)。
通过最大化对数似然来推导出 MLE 估计的表达式。
对于数据集 {x1, x2,…, xn},假设它服从均值为 μ 、方差为 sigma² 的正态分布,我们的目标是找到最大化观察该数据可能性的参数值。

概率密度函数
正态分布的概率密度函数 (PDF) 为:
在这里插入图片描述

该函数给出给定参数 μ 和 sigma² 的单个观测 x 的可能性。

  1. 似然函数

对于 n 个独立观测值的数据集 {x1, x2, …, xn},联合似然函数 L(μ, σ2 ∣ x1, x2, …, xn) 是各个概率的乘积:
在这里插入图片描述

代入正态分布的 PDF,我们得到:
在这里插入图片描述

  1. 对数似然函数

为了简化计算并避免数值下溢(因为许多小概率的乘积可能非常小),我们取似然函数的自然对数。对数似然函数为:
在这里插入图片描述
利用对数的性质,结果变成:
在这里插入图片描述
进一步简化:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这是正态分布的对数似然函数。

对于正态分布,对数似然由以下公式给出:
在这里插入图片描述
μ 和 sigma² 的 MLE 估计值为:在这里插入图片描述
对于 Sigma 2:
在这里插入图片描述

三、让我们用 Python 实现它。

# 计算 MLE 估计值
mu_mle = np.mean(data) 
sigma_mle = np.std(data, ddof= 0 )   # ddof=0 用于标准差的 MLE 估计

print ( f'平均值的 MLE 估计 (mu): {mu_mle} ' ) 
print ( f'标准差的 MLE 估计 (sigma): {sigma_mle} ' )

可视化结果
我们现在可以通过绘制数据直方图并叠加估计的正态分布来可视化结果。

from scipy.stats import norm

# Plot histogram of the data
plt.hist(data, bins=30, density=True, alpha=0.6, color='g', label='Data')

# Plot the true normal distribution
x = np.linspace(min(data), max(data), 1000)
plt.plot(x, norm.pdf(x, mu_true, sigma_true), 'r--', label='True Distribution')

# Plot the estimated normal distribution
plt.plot(x, norm.pdf(x, mu_mle, sigma_mle), 'b-', label='Estimated Distribution')

plt.title('Histogram and Normal Distributions')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()

输出:
在这里插入图片描述

四、结论

在这篇文章中,我们演示了如何使用最大似然估计 (MLE) 来估计正态分布的参数。我们生成了样本数据,计算了平均值和标准差的 MLE 估计值,并可视化了结果。这个简单的例子说明了 MLE 在统计建模和推断中的强大功能和实用性。


http://www.kler.cn/a/446439.html

相关文章:

  • 使用二分查找法找出给定点距离给定点集合距离最近的点
  • 浏览器要求用户确认 Cookies Privacy(隐私相关内容)是基于隐私法规的要求,VUE 实现,html 代码
  • 计算机网络之多路转接epoll
  • 基于字节大模型的论文翻译(含免费源码)
  • 单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号
  • 有关异步场景的 10 大 Spring Boot 面试问题
  • 【WRF教程第3.1期】预处理系统 WPS 详解:以4.5版本为例
  • 利用Java获取淘宝商品详情API接口的深入指南引言
  • iOS 应用的生命周期
  • 【论文复刻】新型基础设施建设是否促进了绿色技术创新的“量质齐升”—来自国家智慧城市试点的证据(C刊《中国人口·资源与环境》
  • Apache Solr RCE(CVE-2017-12629)--vulhub
  • electron-vite打包后图标不生效问题
  • 前端实习近期小结
  • ML307R 串口开发--OpenCPU应用程序开发学习笔记(2)
  • 通过edu 邮箱免费使用 Autodesk
  • QT:Widgets中的模型/视图架构
  • 【AI驱动的设计模式:类图的智能化解读】
  • [机器学习] 决策树
  • 关于VS项目中添加第三方库出现error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 错误的解决方法
  • 【Visual Studio Code(VSCode)介绍】
  • 城市灾害应急管理集成系统——系统介绍
  • Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
  • [react] <NavLink>自带激活属性
  • 项目29:简易谜语生成器 --- 《跟着小王学Python·新手》
  • 如何解决Elastic Job Lite任务分配到不健康实例问题?
  • Java 中 wait 和 sleep 的区别:从原理到实践全解析