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正则对应拉普拉斯先验。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐