1. 最小二乘法的前世今生
1801年元旦之夜,意大利天文学家皮亚齐发现了一颗新天体——谷神星。但在跟踪观测40天后,这颗行星消失在太阳光中。当时24岁的高斯利用最小二乘法,仅用3个观测数据就成功预测了谷神星轨道,这个数学工具从此改变了科学研究的范式。
如今,最小二乘法已成为数据分析的基础工具。在金融领域,用它预测股票走势;在工程领域,用它校准传感器数据;在电商领域,用它分析用户行为。这个诞生于天体力学的方法,现在每天处理着全球数以亿计的数据点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心原理拆解
2.1 几何视角的直观理解
想象你在散点图上画一条直线,最小二乘法的目标就是找到使所有数据点到直线垂直距离平方和最小的那条线。这个"垂直距离"在数学上称为残差(residual),即观测值与预测值之差。
具体计算时,我们建立目标函数:
code复制S = Σ(y_i - ŷ_i)^2
其中y_i是实际值,ŷ_i=β_0+β_1x_i是预测值。通过最小化S,我们就能找到最优的β_0(截距)和β_1(斜率)。
2.2 矩阵形式的数学推导
对于多元回归情况,用矩阵表示更简洁。设设计矩阵X为n×(p+1)矩阵(含截距项),y为n×1响应向量,参数β为(p+1)×1向量。则正规方程(推导过程)为:
code复制X'Xβ = X'y
解得:
code复制β = (X'X)^(-1)X'y
这个解要求X'X可逆,即X列满秩。实际计算中常使用QR分解等数值稳定方法。
注意:当特征存在多重共线性时,X'X接近奇异矩阵,会导致系数估计不稳定。这时需要考虑岭回归等改进方法。
3. 算法实现细节
3.1 手工实现Python版本
python复制import numpy as np
def ols_fit(X, y):
# 添加截距项
X = np.column_stack([np.ones(X.shape[0]), X])
# 计算系数
beta = np.linalg.inv(X.T @ X) @ X.T @ y
return beta
# 示例使用
X = np.array([[1], [2], [3]])
y = np.array([2, 3, 4])
print(ols_fit(
