从Data-Science-45min-Intros项目理解最大似然估计
最大似然估计的基本概念
最大似然估计(Maximum Likelihood Estimation, MLE)是统计学中一种常用的参数估计方法,其核心思想是:在已知观测数据的情况下,寻找最有可能产生这些数据的模型参数。
在数学表达上,我们定义:
- D = 观测数据
- θ = 模型参数
- y(θ, x) = 参数化模型
从最小二乘法到最大似然估计
传统的最小二乘法通过最小化误差平方和来估计参数:
$$ \sum_{i}(D_i - y_i(θ, x))^2 $$
这种方法在误差服从正态分布时效果很好,但当误差分布不是正态分布时(如泊松分布),最小二乘法可能不再是最优选择。
# 生成带噪声的线性数据示例
import numpy as np
import matplotlib.pyplot as plt
n_points = 10
x = np.linspace(0,10,n_points)
def y(x, theta=(2, 4), noise=0):
return theta[0] * x + theta[1] + noise*np.random.randn(n_points)
D = y(x, noise=1)
plt.scatter(x,D)
贝叶斯视角下的参数估计
贝叶斯统计提供了另一种思路,将参数估计问题转化为:
$$ P(θ|D) = \frac{P(D|θ)P(θ)}{P(D)} $$
其中:
- P(D|θ) 是似然函数
- P(θ) 是先验概率
- P(D) 是证据(通常难以计算)
- P(θ|D) 是后验概率
最大似然估计可以看作是贝叶斯方法在先验分布为均匀分布时的特例。
离散模型示例:硬币投掷问题
假设我们进行了10次硬币投掷,得到7次正面。如何估计硬币正面朝上的概率p?
from scipy.stats import binom
# 定义似然函数
def L_binom(w):
rv = binom(10, w)
return -rv.pmf(7) # 取负值以便使用最小化函数
# 寻找最大似然估计
from scipy.optimize import minimize_scalar
result = minimize_scalar(L_binom, bounds=[0,1], method="bounded")
print(f"最大似然估计值: {result.x}")
这个简单的例子验证了我们的直觉:当观察到7次正面时,p=0.7是最有可能的参数值。
连续模型示例:指数衰减
考虑一个更复杂的例子,数据服从指数衰减模型并带有噪声:
n_points = 10
x = np.linspace(0,100,n_points)
def y(x, theta=(10, 0.05), noise=0):
return theta[0] * np.exp(-x * theta[1]) + noise*np.random.randn(n_points)
D = y(x, noise=1)
plt.scatter(x,D)
对于正态分布噪声,对数似然函数与最小二乘法等价:
def L_cost(w):
return np.sum((D - y(x,(10, w)))**2/2
result = minimize_scalar(L_cost, bounds=[0,0.1], method="bounded")
print(f"衰减参数的最大似然估计: {result.x}")
泊松噪声情况下的最大似然估计
当数据服从泊松分布时,我们需要使用不同的似然函数:
from numpy.random import poisson
n_points = 20
x = np.linspace(0,300,n_points)
def y(x, theta=(110, 0.03)):
return theta[0] * np.exp(-x * theta[1])
D = [poisson(y_val) for y_val in y(x)]
# 泊松分布的对数似然函数
def P_cost(*w):
model = y(x,*w)
return -np.sum(D*np.log(model) - model) # 忽略常数项
fit_ml = minimize(P_cost, (105,0.05))
print(f"泊松噪声下的参数估计: {fit_ml.x}")
最大似然估计的优缺点
优点:
- 具有良好的统计性质(一致性、渐近正态性等)
- 对于大样本,通常是最有效的估计方法
- 直观且易于理解
缺点:
- 对小样本可能不够稳健
- 需要知道数据的分布形式
- 有时计算可能比较复杂
实际应用建议
- 首先分析数据的分布特性,选择合适的似然函数
- 对于复杂模型,考虑使用数值优化方法
- 在可能的情况下,使用对数似然简化计算
- 考虑使用正则化技术防止过拟合
最大似然估计是数据科学和统计学中的基础工具,理解其原理和应用场景对于构建可靠的统计模型至关重要。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考