最小二乘法(Least Squares Method):原理、应用与扩展
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!
1 最小二乘法的基本概念
最小二乘法(Least Squares Method)是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。这种方法的核心思想是找到一组参数估计值,使得预测值与实际观测值之间的差异(残差)的平方和最小。最小二乘法在统计学、机器学习和工程学等领域有着广泛的应用,特别是在回归分析和曲线拟合问题中。
最小二乘法的基本数学表达式为:
S=∑i=1n[yi−f(xi,β)]2S = \sum_{i=1}^{n} [y_i - f(x_i, \beta)]^2 S=i=1∑n[yi−f(xi,β)]2
其中,yiy_iyi 是实际观测值,f(xi,β)f(x_i, \beta)f(xi,β) 是基于参数 β\betaβ 的预测值,SSS 是残差平方和(Sum of Squared Errors, SSE)。最小二乘法的目标是找到参数 β\betaβ 使得 SSS 最小化。
1.1 历史背景
最小二乘法的历史可以追溯到18世纪末和19世纪初。勒让德(Adrien-Marie Legendre)和高斯(Carl Friedrich Gauss)被独立认为是这一方法的发明者。
- 勒让德在1805年首次发表了关于最小二乘法的论文,将其应用于天体轨道计算的问题。他主要从代数角度出发,将最小二乘法作为解线性方程组的一种方法。
- 高斯在1809年声称自己在1795年就使用了最小二乘法,并从中概率论的角度阐述了这一方法的合理性。他通过假设误差服从正态分布,证明了最小二乘法得到的估计量具有优良的统计性质。
两位数学大师的工作相辅相成,勒让德提供了方法的形式,而高斯则奠定了其理论基础,共同推动了数理统计学的发展。
1.2 核心思想
最小二乘法的核心思想是最小化误差的平方和。这种方法的选择有以下几个原因:
- 数学处理方便:平方操作使函数可微,便于使用求导方法找到最小值。
- 统计性质优良:在高斯-马尔可夫定理条件下,最小二乘估计是最优线性无偏估计(BLUE)。
- 对大误差的惩罚更强:相比绝对值误差,平方误差对异常值更敏感,这在一定情况下有助于减少大误差的影响。
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!
往期文章推荐:
- 20.方差齐性(Homoscedasticity):概念、检验方法与处理策略
- 19.残差图(Residual Plot):模型诊断的关键工具
- 18.模拟退火粒子群优化算法(SA-PSO):原理、应用与展望
- 17.早熟收敛(Premature Convergence):遗传算法中的局部最优陷阱
- 16.杂交粒子群优化算法(Hybrid PSO):原理、应用与展望
- 15.模拟退火算法:从金属退火到全局优化
- 14.蝴蝶优化算法:原理、改进与应用
- 13.SPEA:强度帕累托进化算法
- 12.d-分离:图模型中的条件独立性判定准则
- 11.二元锦标赛:进化算法中的选择机制及其应用
- 10.变分推断:从优化视角逼近复杂后验分布的强大工具
- 9.Multi-Arith数据集:数学推理评估的关键基准与挑战
- 8.Gibbs采样:全面解析马尔可夫链蒙特卡洛的核心算法
- 7.BIG-Bench:大规模语言模型能力的全面评估与挑战
- 6.MATH-500:大模型数学推理能力评估基准
- 5.狄利克雷先验:贝叶斯分析中的多面手与它的学术传承
- 4.GSM8K:评估大模型数学推理能力的关键数据集
- 3.BIC评分:模型选择的贝叶斯利器与学术传承
- 2.二型最大似然(Type II Maximum Likelihood):概述与核心概念
- 1.半贝叶斯方法:理论基础、算法实现与应用全景
2 数学原理与算法形式
2.1 线性最小二乘法
对于线性模型,假设因变量 yyy 与自变量 xxx 之间存在线性关系:
y=β0+β1x+εy = \beta_0 + \beta_1 x + \varepsilon y=β0+β1x+ε
其中 β0\beta_0β0 和 β1\beta_1β1 是待估参数,ε\varepsilonε 是随机误差项。
最小二乘法的目标是找到参数 β0\beta_0β0 和 β1\beta_1β1,使得残差平方和最小:
S(β0,β1)=∑i=1n[yi−(β0+β1xi)]2S(\beta_0, \beta_1) = \sum_{i=1}^{n} [y_i - (\beta_0 + \beta_1 x_i)]^2 S(β0,β1)=i=1∑n[yi−(β0+β1xi)]2
通过求解以下正规方程(Normal Equations)可以得到参数估计:
nβ0+β1∑xi=∑yiβ0∑xi+β1∑xi2=∑xiyi\begin{align*} n\beta_0 + \beta_1 \sum x_i &= \sum y_i \\ \beta_0 \sum x_i + \beta_1 \sum x_i^2 &= \sum x_i y_i \end{align*} nβ0+β1∑xiβ0∑xi+β1∑xi2=∑yi=∑xiyi
2.2 矩阵形式与代数解法
对于多元线性回归问题,使用矩阵表示更为方便。线性模型可以表示为:
y=Xβ+ε\mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} y=Xβ+ε
其中 y\mathbf{y}y 是 n×1n \times 1n×1 的观测值向量,X\mathbf{X}X 是 n×pn \times pn×p 的设计矩阵,β\boldsymbol{\beta}β 是 p×1p \times 1p×1 的参数向量,ε\boldsymbol{\varepsilon}ε 是 n×1n \times 1n×1 的误差向量。
最小二乘法的目标函数为:
S(β)=(y−Xβ)T(y−Xβ)S(\boldsymbol{\beta}) = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^T (\mathbf{y} - \mathbf{X}\boldsymbol{\beta}) S(β)=(y−Xβ)T(y−Xβ)
通过求导并令导数为零,可以得到正规方程:
XTXβ=XTy\mathbf{X}^T\mathbf{X}\boldsymbol{\beta} = \mathbf{X}^T\mathbf{y} XTXβ=XTy
当 XTX\mathbf{X}^T\mathbf{X}XTX 可逆时,参数的最小二乘估计为:
β^=(XTX)−1XTy\hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y} β^=(XTX)−1XTy
2.3 数值计算方法
当设计矩阵 X\mathbf{X}X 的列之间存在多重共线性时,XTX\mathbf{X}^T\mathbf{X}XTX 可能接近奇异矩阵,导致求逆不稳定。这时可以使用以下数值计算方法:
-
QR分解:将 X\mathbf{X}X 分解为正交矩阵 Q\mathbf{Q}Q 和上三角矩阵 R\mathbf{R}R,然后求解 Rβ=QTy\mathbf{R}\boldsymbol{\beta} = \mathbf{Q}^T\mathbf{y}Rβ=QTy。
-
奇异值分解(SVD):对于病态问题,SVD提供了一种稳定的求解方法。将 X\mathbf{X}X 分解为 UΣVT\mathbf{U}\mathbf{\Sigma}\mathbf{V}^TUΣVT,然后计算 β=VΣ−1UTy\boldsymbol{\beta} = \mathbf{V}\mathbf{\Sigma}^{-1}\mathbf{U}^T\mathbf{y}β=VΣ−1UTy。
以下是使用QR分解解决最小二乘问题的Python示例:
# 使用QR分解求解最小二乘问题
Q, R = np.linalg.qr(X)
beta_qr = np.linalg.solve(R, Q.T @ y)print(f"使用QR分解估计的参数: {beta_qr}")
3 最小二乘法的变体与扩展
传统的最小二乘法在某些情况下可能不够理想,例如当数据存在异常值、多重共线性或稀疏性时。以下是一些常见的变体:
3.1 加权最小二乘法(Weighted Least Squares, WLS)
当误差项存在异方差性(方差不全相等)时,可以使用加权最小二乘法。WLS通过给每个观测值赋予不同的权重来解决异方差性问题。目标函数为:
S(β)=(y−Xβ)TW(y−Xβ)S(\boldsymbol{\beta}) = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^T \mathbf{W} (\mathbf{y} - \mathbf{X}\boldsymbol{\beta}) S(β)=(y−Xβ)TW(y−Xβ)
其中 W\mathbf{W}W 是对角权重矩阵。
3.2 广义最小二乘法(Generalized Least Squares, GLS)
当误差项存在自相关或异方差时,GLS是一种更一般的方法。目标函数为:
S(β)=(y−Xβ)TΩ−1(y−Xβ)S(\boldsymbol{\beta}) = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^T \mathbf{\Omega}^{-1} (\mathbf{y} - \mathbf{X}\boldsymbol{\beta}) S(β)=(y−Xβ)TΩ−1(y−Xβ)
其中 Ω\mathbf{\Omega}Ω 是误差协方差矩阵。
3.3 正则化最小二乘法
当自变量之间存在多重共线性或模型过拟合时,可以引入正则化项:
- 岭回归(Ridge Regression):添加L2正则化项,目标函数为 $ | \mathbf{y} - \mathbf{X}\boldsymbol{\beta} | ^2 + \lambda | \boldsymbol{\beta} | ^2$。
- Lasso回归:添加L1正则化项,目标函数为 $ | \mathbf{y} - \mathbf{X}\boldsymbol{\beta} | ^2 + \lambda | \boldsymbol{\beta} | _1$,可以产生稀疏解。
- 弹性网络(Elastic Net):结合L1和L2正则化项。
以下是使用岭回归的Python示例:
from sklearn.linear_model import Ridge# 创建存在多重共线性的数据
np.random.seed(42)
x1 = np.random.normal(0, 1, 100)
x2 = 0.9 * x1 + np.random.normal(0, 0.1, 100) # x2与x1高度相关
y = 2 + 1.5 * x1 + 0.5 * x2 + np.random.normal(0, 1, 100)# 准备设计矩阵
X = np.column_stack((np.ones(100), x1, x2))# 普通最小二乘法
beta_ols = np.linalg.inv(X.T @ X) @ X.T @ y# 岭回归
ridge = Ridge(alpha=1.0)
ridge.fit(X[:, 1:], y) # 不包含截距项
beta_ridge = np.concatenate(([ridge.intercept_], ridge.coef_))print("OLS估计:", beta_ols)
print("岭回归估计:", beta_ridge)
3.4 总体最小二乘法(Total Least Squares, TLS)
当自变量和因变量都存在误差时,传统最小二乘法可能不适用。总体最小二乘法考虑了自变量和因变量的误差,通过最小化点到直线(或超平面)的垂直距离来实现。
3.5 正交最小二乘法(Orthogonal Least Squares, OLS)
正交最小二乘法是总体最小二乘法的一种特殊形式,它最小化点到直线的垂直距离,而不是垂直方向的误差。这种方法在误差存在于两个变量时特别有用。
from scipy.odr import ODR, Model, Data, RealData# 生成带有误差的数据
np.random.seed(42)
x = np.linspace(0, 10, 50)
x_err = np.random.normal(0, 0.5, 50)
y_err = np.random.normal(0, 0.5, 50)
y = 2 + 1.5 * (x + x_err) + y_err# 定义线性函数
def linear_func(b, x):return b[0] * x + b[1]# 使用正交距离回归(ODR)
data = RealData(x, y, sx=0.5, sy=0.5)
model = Model(linear_func)
odr = ODR(data, model, beta0=[1., 1.])
output = odr.run()print(f"正交最小二乘法估计: 斜率 = {output.beta[0]:.4f}, 截距 = {output.beta[1]:.4f}")
4 最小二乘法的应用案例
最小二乘法在机器学习和数据科学中有着广泛的应用。以下是几个常见应用场景:
4.1 线性回归
最小二乘法最直接的应用是线性回归,用于建立自变量和因变量之间的线性关系模型。
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 准备数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5]])
y = np.dot(X, np.array([1, 2])) + 3# 创建线性回归模型
model = LinearRegression()# 拟合模型
model.fit(X, y)# 预测
y_pred = model.predict(X)# 评估模型
print(f"系数: {model.coef_}")
print(f"截距: {model.intercept_}")
print(f"均方误差: {mean_squared_error(y, y_pred):.4f}")
print(f"决定系数 (R²): {r2_score(y, y_pred):.4f}")
5 学术引用与原始论文信息
最小二乘法的原始论文由两位数学大师独立提出:
勒让德(Adrien-Marie Legendre)的论文:
- 标题:Nouvelles méthodes pour la détermination des orbites des comètes
- 作者:Legendre, A.-M.
- 出版年份:1805
高斯(Carl Friedrich Gauss)的论文:
- 标题:Theoria Motus Corporum Coelestium in Sectionibus Conicis Solem Ambientium
- 作者:Gauss, C. F.
- 出版年份:1809
结论
最小二乘法是统计学和机器学习中最基础、最重要的方法之一。从勒让德和高斯的最初工作开始,经过两个多世纪的发展,最小二乘法已经从简单的线性回归扩展到包括加权最小二乘法、正则化方法、总体最小二乘法等多种变体。
最小二乘法的核心思想——最小化误差平方和——简单而强大,使得它成为数据建模和预测的有力工具。无论是简单的线性关系还是复杂的非线性模式,最小二乘法都提供了有效的解决方案。
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!