专栏名称: 机器学习初学者
号主黄博Github全球排名前90,3.6万Star!致力于为初学者提供学习路线和基础资料,公众号可以当作随身小抄,文章很全,建议收藏!点击菜单可以进入学习!
目录
相关文章推荐
名城网事  ·  下雪!下雪!淮安刚发布新消息 ·  4 小时前  
掌中淄博  ·  江苏突发地震 ·  昨天  
度房苏州  ·  马上,苏州家装补贴即将重启! ·  4 天前  
51好读  ›  专栏  ›  机器学习初学者

【机器学习】概率论中的极大似然估计:入门与Python实践

机器学习初学者  · 公众号  ·  · 2025-01-10 12:00

正文

1. 引言

极大似然估计(Maximum Likelihood Estimation,MLE)是统计学中最重要的参数估计方法之一。本文将从理论基础出发,结合Python代码实现,帮助读者深入理解这一核心概念。

2. 理论基础

2.1 什么是似然函数

似然函数是统计模型中关于参数的函数,它表示在给定观测数据下,模型参数取某个值时的"可能性"。

对于一组独立同分布的观测数据 ,假设它们来自某个概率分布 ,其中 是未知参数。似然函数定义为:

通常为了计算方便,我们会取对数似然:

2.2 极大似然估计的原理

极大似然估计的核心思想是:选择一个参数值 ,使得观测数据出现的可能性最大。数学表达为:

或等价地:

2.3 求解步骤

  1. 写出似然函数
  2. 取对数得到对数似然函数
  3. 求导数
  4. 解方程得到
  5. 验证二阶导数为负,确保是最大值点

3. 实践案例

3.1 正态分布参数估计

假设数据来自正态分布 ,我们用Python来实现参数估计:

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

# 生成模拟数据
np.random.seed(42)
true_mu = 2.5
true_sigma = 1.5
sample_size = 1000
data = np.random.normal(true_mu, true_sigma, sample_size)

# MLE估计
mu_mle = np.mean(data)
sigma_mle = np.std(data, ddof=0)  # ddof=0 for MLE

print(f"真实参数: μ = {true_mu}, σ = {true_sigma}")
print(f"MLE估计: μ = {mu_mle:.4f}, σ = {sigma_mle:.4f}")

# 可视化
x = np.linspace(min(data)-2, max(data)+2100)
plt.hist(data, bins=30, density=True, alpha=0.7, label='观测数据')
plt.plot(x, norm.pdf(x, mu_mle, sigma_mle), 
         'r-', label='MLE拟合')
plt.plot(x, norm.pdf(x, true_mu, true_sigma), 
         'g--', label='真实分布')
plt.legend()
plt.title('正态分布MLE估计结果')
plt.xlabel('x')
plt.ylabel('密度')
plt.show()

3.2 泊松分布参数估计

对于泊松分布 ,其概率质量函数为:

似然函数为:

对数似然:

Python实现:

import numpy as np
from scipy.stats import poisson
import matplotlib.pyplot as plt

# 生成模拟数据
np.random.seed(42)
true_lambda = 3.5
sample_size = 1000
data = np.random.poisson(true_lambda, sample_size)

# MLE估计
lambda_mle = np.mean(data)  # 泊松分布的MLE就是样本均值

print(f"真实参数: λ = {true_lambda}")
print(f"MLE估计: λ = {lambda_mle:.4f}")

# 可视化
x = np.arange(0, max(data)+5)
plt.hist(data, bins=range(max(data)+2), density=True
         alpha=0.7, label='观测数据')
plt.plot(x, poisson.pmf(x, lambda_mle), 'ro-'
         label='MLE拟合')
plt.plot(x, poisson.pmf(x, true_lambda), 'go--'
         label='真实分布')
plt.legend()
plt.title('泊松分布MLE估计结果')
plt.xlabel('k')
plt.ylabel('概率')
plt.show()

4. 优缺点分析

4.1 优点

  1. 理论基础扎实,具有良好的大样本性质
  2. 计算相对简单,特别是对于指数族分布
  3. 在大样本下,估计量渐近无偏且有效

4.2 缺点







请到「今天看啥」查看全文