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

别再死记公式了!用Python从零推导极大似然估计,5分钟搞懂核心思想

别再死记公式了用Python从零推导极大似然估计5分钟搞懂核心思想统计学课本里那些密密麻麻的数学推导总是让人望而生畏今天我们用Python代码和可视化图形带你绕过复杂公式直击极大似然估计Maximum Likelihood Estimation, MLE的核心思想。无需微积分基础只要会写几行Python代码你就能理解这个支撑现代机器学习的统计基石。想象你是一位考古学家在遗址中发现10枚古币其中7枚是正面朝上。你会如何推测这批古币的真实正面概率这就是MLE要解决的经典问题——通过观察到的数据反推最可能产生这些数据的模型参数。下面我们用一个正态分布的例子分三步实现这个思想1. 模拟实验环境生成观测数据任何统计推断都始于数据。我们先设定一个真实的正态分布均值μ5标准差σ1然后从中抽样生成模拟观测数据import numpy as np import matplotlib.pyplot as plt np.random.seed(42) true_mu 5 # 真实均值 true_sigma 1 # 真实标准差 sample_size 100 # 样本量 observations np.random.normal(true_mu, true_sigma, sample_size)用直方图可视化这些数据点可以看到它们围绕5左右波动plt.hist(observations, bins20, densityTrue, alpha0.6) plt.title(模拟观测数据分布) plt.xlabel(数值) plt.ylabel(频率) plt.show()注意现实中我们只有观测数据不知道真实的μ和σ。这里生成数据只是为了模拟实验场景。2. 构建似然函数量化参数可能性似然函数L(θ)衡量的是在给定参数θ下观察到当前数据的概率。对于正态分布其概率密度函数(PDF)为$$ f(x|\mu,\sigma) \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} $$因为各数据点独立整体似然是所有数据点概率的乘积def likelihood(mu, sigma, data): # 计算单个数据点的概率密度 single_prob (1/(sigma * np.sqrt(2*np.pi))) * np.exp(-0.5*((data-mu)/sigma)**2) # 返回所有数据点的联合概率乘积 return np.prod(single_prob)但直接计算乘积会遇到数值下溢问题大量小于1的数相乘结果趋近于0。因此实践中使用对数似然log-likelihood将乘积转为求和def log_likelihood(mu, sigma, data): n len(data) const -n * np.log(sigma * np.sqrt(2*np.pi)) sum_sq -np.sum((data - mu)**2) / (2 * sigma**2) return const sum_sq3. 寻找最大似然可视化参数空间现在我们在μ的可能取值范围内比如0到10计算每个μ对应的对数似然值mu_candidates np.linspace(0, 10, 100) log_likelihoods [log_likelihood(mu, true_sigma, observations) for mu in mu_candidates] plt.plot(mu_candidates, log_likelihoods) plt.axvline(xtrue_mu, colorr, linestyle--, label真实均值) plt.xlabel(候选μ值) plt.ylabel(对数似然值) plt.title(对数似然函数曲线) plt.legend() plt.show()你会看到曲线在μ5附近达到峰值——这正是MLE的核心理念选择使观测数据出现概率最大的参数值。用代码找出精确的最大值点max_idx np.argmax(log_likelihoods) mle_mu mu_candidates[max_idx] print(f极大似然估计的μ值: {mle_mu:.2f})运行结果通常会接近5如4.85与真实值非常接近。样本量越大估计越准确。4. 扩展到多参数估计联合优化μ和σ现实中σ也未知。我们可以扩展似然函数同时优化两个参数from mpl_toolkits.mplot3d import Axes3D # 生成参数网格 mu_grid np.linspace(4, 6, 50) sigma_grid np.linspace(0.5, 1.5, 50) M, S np.meshgrid(mu_grid, sigma_grid) # 计算每个(μ,σ)组合的对数似然 LL np.array([[log_likelihood(m, s, observations) for m in mu_grid] for s in sigma_grid]) # 3D可视化 fig plt.figure(figsize(10, 7)) ax fig.add_subplot(111, projection3d) ax.plot_surface(M, S, LL, cmapviridis) ax.set_xlabel(μ) ax.set_ylabel(σ) ax.set_zlabel(对数似然) plt.title(双参数对数似然函数曲面) plt.show()通过scipy.optimize可以自动找到最大值点from scipy.optimize import minimize def neg_log_likelihood(params, data): mu, sigma params return -log_likelihood(mu, sigma, data) # 最小化负对数似然 initial_guess [4, 1] # 初始猜测 result minimize(neg_log_likelihood, initial_guess, args(observations,)) mle_mu, mle_sigma result.x print(fMLE估计结果: μ{mle_mu:.2f}, σ{mle_sigma:.2f})5. 从数学到实践MLE的应用陷阱虽然MLE理论优美但实际应用中需要注意样本量敏感性小样本下估计可能偏差较大模型误设风险如果假设的分布模型与真实数据生成过程不符结果将失真计算复杂度对于复杂模型似然函数可能难以优化一个改进方案是正则化通过在似然函数中加入惩罚项防止过拟合def regularized_log_likelihood(params, data, lambda_reg0.1): mu, sigma params # 原始对数似然 L2正则化项惩罚大的σ值 return log_likelihood(mu, sigma, data) - lambda_reg * sigma**2最后分享一个实用技巧在Python中许多统计模型如statsmodels库已经内置了MLE实现。理解原理后你可以直接调用import statsmodels.api as sm model sm.MLE(observations, model_function) results model.fit() print(results.summary())
http://www.zskr.cn/news/1413411.html

相关文章:

  • 从挖掘机到注塑机:手把手拆解液压系统在工业设备中的核心应用与选型要点
  • 华为何庭波:数万人历经七年,铸成‘莫邪干将’剑!
  • 经营分析和管理分析有什么区别?别让管理分析,代替经营分析
  • 5步轻松掌握AntiDupl.NET:终极图片去重与智能清理完全指南
  • Linux 负载均衡的常见问题:缓存失效与迁移开销优化
  • 基于Next.js 14与NeuroLink构建高性能AI应用:全栈开发实践
  • 新手入门教程五分钟内获取 Taotoken API Key 并完成第一次模型调用
  • 2026论文双降终极榜单:10款降AIGC网站, 合规修正一路顺畅 - 降AI小能手
  • 基于Arduino的智能小车:从硬件搭建到自主泊车与循迹算法实现
  • QMCDecode技术解析:深度解密QQ音乐加密文件格式的macOS解决方案
  • 正点原子DS100手持示波器开箱实测:小巧便携,真能替代实验室‘大块头’吗?
  • 2026年全国仓储钢平台货架top榜:主打个性化定制与长效售后保障服务 - 深度智识库
  • 2026株洲市天元区黄金奢侈品回收/抵押门店实力排行榜及联系方式推荐 - 生活测评小能手
  • 惠普tank 1020,开机提示错误代码 er-08 ,加了粉还是报错er08,黄灯闪烁成像鼓接近寿命期限报错,怎么办?
  • 基于Arduino与步进电机的智能牙膏分配器:从硬件选型到物联网扩展
  • YOLOv5网络结构详解:从Focus到SPP,手把手教你读懂common.py里的核心模块
  • 别再被‘裸眼3D’视频忽悠了!用3dsMax和Unity手把手还原制作流程(附测试技巧)
  • 解决Cursor AI试用限制的完整技术方案
  • Hot-108 将有序数组转换成二叉平衡搜索树
  • 多体量子系统关联的分类与度量方法【附代码】
  • 如何免费解锁加密音乐文件:Unlock-Music终极使用指南
  • 5分钟搞定Honey Select 2汉化去码:HS2-HF_Patch终极指南
  • AI应用的国际化:从多语言到文化适配
  • 3步打造高效Mac菜单栏:Ice菜单栏管理工具完整指南
  • 淘宝淘金币自动化脚本完整指南:如何每天节省20分钟轻松赚取金币
  • 保姆级排错指南:华为交换机802.1X认证通了但上不了网?从EAP透传到ARP探测一步步查
  • A-Pot:基于ARM硬件与容器化的Android恶意软件高隐蔽动态分析平台
  • 5G毫米波MIMO-OFDM混合预编码:迭代算法与工程实践详解
  • 用Arduino PWM驱动旧电压表,打造蒸汽朋克桌面时钟
  • DFRobot Devastator坦克机器人套件组装与Arduino控制实战指南