线性回归与极大似然估计:从原理到实践
1. 线性回归与极大似然估计入门指南
线性回归是统计学和机器学习领域最基础也最重要的算法之一。作为一名从业多年的数据科学家,我经常遇到初学者对线性回归背后的数学原理感到困惑。今天我们就来聊聊如何用极大似然估计(MLE)这个强大的统计工具来理解线性回归。
线性回归看似简单,但很多教材只教你怎么用,却不解释为什么可以这样用。这就像给你一辆车却不教发动机原理,遇到问题就只能抓瞎。实际上,线性回归的很多特性(比如为什么用最小二乘法)都可以通过极大似然估计自然地推导出来。
2. 线性回归基础概念
2.1 什么是线性回归
线性回归模型假设因变量y与自变量x之间存在线性关系:
y = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ + ε
其中β是模型参数,ε是误差项。我们的目标是根据观测数据估计出最佳的β值。
2.2 最小二乘法的局限性
传统教学中,我们常用最小二乘法来估计参数:
argmin Σ(yᵢ - ŷᵢ)²
这种方法简单直接,但不解释为什么平方误差是最佳选择。极大似然估计则能从概率角度给出理论依据。
3. 极大似然估计原理
3.1 似然函数的概念
极大似然估计的核心思想是:找到使观测数据出现概率最大的参数值。对于线性回归,我们假设:
y|x ~ N(wᵀx, σ²)
即y服从均值为wᵀx,方差为σ²的正态分布。
3.2 构建似然函数
给定n个独立同分布的样本,联合概率密度(似然函数)为:
L(w,σ²) = Π (1/√(2πσ²)) exp(-(yᵢ-wᵀxᵢ)²/(2σ²))
为简化计算,通常取对数得到对数似然函数:
ln L(w,σ²) = -n/2 ln(2πσ²) - 1/(2σ²) Σ(yᵢ-wᵀxᵢ)²
3.3 最大化似然函数
对w求导并令导数为0,会发现最大化似然函数等价于最小化平方误差。这就解释了为什么最小二乘法是合理的。
4. 参数估计的详细推导
4.1 权重参数的估计
对对数似然函数关于w求梯度:
∇ ln L(w) = 1/σ² Xᵀ(y - Xw)
令梯度为0,得到正规方程:
XᵀXw = Xᵀy
解这个方程即可得到权重估计:
ŵ = (XᵀX)⁻¹Xᵀy
4.2 噪声方差的估计
同样方法可估计噪声方差σ²:
∂lnL/∂σ² = -n/(2σ²) + 1/(2σ⁴)Σ(yᵢ-ŷᵢ)² = 0
解得:
σ̂² = 1/n Σ(yᵢ-ŷᵢ)²
5. 实际应用中的注意事项
5.1 数值稳定性问题
当XᵀX接近奇异矩阵时,求逆会出现数值不稳定。解决方法包括:
- 添加L2正则化(岭回归)
- 使用伪逆
- 采用QR分解等数值稳定算法
5.2 模型假设检验
MLE估计的有效性依赖于模型假设的正确性,需要检查:
- 残差是否服从正态分布
- 误差是否同方差
- 自变量间是否存在多重共线性
5.3 小样本下的偏差
当样本量较小时,σ̂²是有偏估计。通常采用无偏估计:
σ̂² = 1/(n-p) Σ(yᵢ-ŷᵢ)²
其中p是特征数量。
6. 与其他方法的比较
6.1 与最小二乘法的关系
在正态误差假设下,MLE与最小二乘等价。但MLE框架更通用,可以扩展到:
- 非正态误差分布
- 广义线性模型
- 混合效应模型等复杂场景
6.2 与贝叶斯方法的对比
MLE是频率学派的点估计,而贝叶斯方法会得到参数的后验分布。当先验选择适当时,MAP估计与MLE结果相同。
7. 案例演示(Python实现)
import numpy as np
from scipy.optimize import minimize
# 生成模拟数据
np.random.seed(42)
X = np.random.rand(100, 2)
true_w = np.array([3, 5])
y = X @ true_w + np.random.normal(0, 0.5, 100)
# 定义负对数似然函数
def neg_log_likelihood(w, X, y):
residuals = y - X @ w
n = len(y)
return n/2 * np.log(2*np.pi) + n/2 * np.log(np.var(residuals)) + 1/(2*np.var(residuals)) * np.sum(residuals**2)
# 使用优化算法求解
initial_guess = np.zeros(2)
result = minimize(neg_log_likelihood, initial_guess, args=(X, y))
estimated_w = result.x
print("Estimated weights:", estimated_w)
8. 常见问题解答
8.1 为什么假设误差服从正态分布?
中心极限定理告诉我们,许多独立随机变量的和近似正态分布。即使假设不成立,MLE估计也有很好的稳健性。
8.2 如何处理非正态误差?
可以构建更一般的误差分布(如Student-t分布),或使用广义线性模型。此时MLE仍然适用,只是似然函数形式不同。
8.3 MLE估计的方差如何计算?
可以通过Fisher信息矩阵计算参数估计的渐近方差:
Var(ŵ) ≈ (XᵀX)⁻¹σ²
9. 扩展思考
在实际项目中,我发现理解MLE原理对模型调优很有帮助。比如当遇到异方差问题时,可以考虑加权最小二乘,这相当于假设不同观测有不同的噪声水平。MLE框架可以自然地扩展到这种情况。
另一个有用的扩展是考虑正则化的MLE,这等价于给参数加上先验分布。例如L2正则对应高斯先验,L1正则对应拉普拉斯先验。
更多推荐



所有评论(0)