当前位置: 首页 > news >正文

最小二乘问题详解7:正则化最小二乘

1. 引言

在之前的文章《最小二乘问题详解4:非线性最小二乘》、《最小二乘问题详解5:非线性最小二乘求解实例》和《最小二乘问题详解6:梯度下降法》中分别介绍了使用Gauss-Newton方法(简称GN方法)和梯度下降法求解最小二乘问题之后,让我们插入另一个基础知识:正则化最小二乘(Regularized Least Squares),也就是大家常说的岭估计(Ridge Estimator),因为接下来要介绍的 Levenberg-Marquardt方法会用到这个思想。

本文讨论的岭估计在机器学习中也常称为岭回归(Ridge Regression)

2. 问题

复习《最小二乘问题详解2:线性最小二乘求解》中讨论的标准线性最小二乘问题:

min⁡θ∥Aθ−b∥2\min_{\theta} \|A\theta - b\|^2 θminAθb2

其解为正规方程 ATAθ=ATbA^T A \theta = A^T bATAθ=ATb的解。当AAA列满秩时,解唯一且为:

θ∗=(ATA)−1ATb\theta^* = (A^T A)^{-1} A^T b θ=(ATA)1ATb

然而,在实际应用中,直接使用这个解可能会遇到一些问题。

  1. 矩阵病态(Ill-conditioning)

    • 矩阵 ATAA^T AATA 的条件数可能非常大。
    • 这意味着即使数据 bbb 中有微小的扰动,也会导致解 θ∗\theta^*θ 发生剧烈变化,数值不稳定。
    • 条件数大的一个常见原因是特征之间高度相关(多重共线性),此时 ATAA^T AATA 接近奇异,逆矩阵难以精确计算。
  2. 过拟合(Overfitting)

    • 当模型参数过多或特征维度很高时,标准最小二乘倾向于拟合训练数据中的噪声,导致泛化能力差。
    • θ∗\theta^*θ 的模长(范数)可能非常大,表示模型对某些特征赋予了不合理的高权重。
  3. 秩亏(Rank Deficiency)

    • AAA 不是列满秩(即 rank(A)<n\text{rank}(A) < nrank(A)<n),则 ATAA^T AATA 是奇异的,无法求逆,正规方程有无穷多解。

矩阵的病态问题详见6.1节。

为了解决这些问题,我们引入正则化(Regularization)——通过在目标函数中加入一个额外的惩罚项,来“约束”解的行为,使其更稳定、更平滑,并避免过拟合。其实,正则化是一个通用的数学和机器学习思想:在优化问题中,通过向目标函数添加一个额外的“惩罚项”(penalty term),来引导解具有某种期望的性质,比如平滑性稀疏性小范数结构简单等,从而提高模型的稳定性、泛化能力或可解释性。

3. 定义

最常用的正则化方法之一是Tikhonov 正则化,其核心思想是在原始的残差平方和基础上,加上一个关于参数θ\thetaθ的L2范数平方的惩罚项:

min⁡θ(∥Aθ−b∥2+λ∥θ∥2)\boxed{ \min_{\theta} \left( \|A\theta - b\|^2 + \lambda \|\theta\|^2 \right) } θmin(Aθb2+λθ2)

其中:

  • ∥Aθ−b∥2\|A\theta - b\|^2Aθb2是数据拟合项(data fidelity term),衡量模型对数据的拟合程度。
  • ∥θ∥2=θTθ\|\theta\|^2 = \theta^T \thetaθ2=θTθ是正则化项(regularization term),也叫 Tikhonov 项,它惩罚较大的参数值。
  • λ>0\lambda > 0λ>0正则化参数(regularization parameter),控制正则化的强度:
    • λ→0\lambda \to 0λ0:正则化作用消失,退化为标准最小二乘。
    • λ→∞\lambda \to \inftyλ:正则化主导,迫使 θ→0\theta \to 0θ0,模型趋于常数零。

直观理解就是:通过加入正则项,不仅要保证预测误差小,还要保证模型参数不要太大。这相当于在“拟合数据”和“保持模型简单”之间做权衡。

4. 求解

将目标函数展开:

f(θ)=(Aθ−b)T(Aθ−b)+λθTθ=θTATAθ−2bTAθ+bTb+λθTθf(\theta) = (A\theta - b)^T (A\theta - b) + \lambda \theta^T \theta = \theta^T A^T A \theta - 2 b^T A \theta + b^T b + \lambda \theta^T \theta f(θ)=(Aθb)T(Aθb)+λθTθ=θTATAθ2bTAθ+bTb+λθTθ

θ\thetaθ求梯度并令其为零:

∇θf(θ)=2ATAθ−2ATb+2λθ=0\nabla_\theta f(\theta) = 2 A^T A \theta - 2 A^T b + 2 \lambda \theta = 0 θf(θ)=2ATAθ2ATb+2λθ=0

整理得:

(ATA+λI)θ=ATb(A^T A + \lambda I) \theta = A^T b (ATA+λI)θ=ATb

这就是岭估计的正规方程

由于λ>0\lambda > 0λ>0,矩阵ATAA^T AATA是半正定的,而λI\lambda IλI是正定的,因此ATA+λIA^T A + \lambda IATA+λI严格正定的,从而总是可逆的,无论AAA是否列满秩!于是,岭估计的闭式解为:

θridge∗=(ATA+λI)−1ATb\boxed{ \theta^*_{\text{ridge}} = (A^T A + \lambda I)^{-1} A^T b } θridge=(ATA+λI)1ATb

可见,岭估计只是在ATAA^T AATA的对角线上加了一个小量λ\lambdaλ,这相当于“抬升”了所有特征值,使得原本接近零的特征值变得远离零,从而显著改善了矩阵的条件数,提高了数值稳定性。

关于正定矩阵的问题详见6.2节。

从几何角度看,标准最小二乘是寻找使 AθA\thetaAθ 投影最接近 bbb 的点;而岭估计则在此基础上“收缩”参数空间,使 θ\thetaθ 向零靠近。这可以理解为给 θ\thetaθ 的空间加上一个“弹簧”,防止参数跑得太远。

5. 分解

虽然有了闭式解,但在实际数值计算中,仍然不推荐直接计算(ATA+λI)−1(A^T A + \lambda I)^{-1}(ATA+λI)1,因为ATAA^T AATA可能病态,显式构造ATAA^T AATA会损失精度。

5.1 QR分解

将正则化最小二乘问题转化为一个更大的最小二乘问题:

min⁡θ∥[AλI]θ−[b0]∥2=∥Aθ−b∥2+λ∥θ∥2\min_{\theta} \left\| \begin{bmatrix} A \\ \sqrt{\lambda} I \end{bmatrix} \theta - \begin{bmatrix} b \\ 0 \end{bmatrix} \right\|^2= \|A\theta - b\|^2 + \lambda \|\theta\|^2 θmin[AλI]θ[b0]2=Aθb2+λθ2

这是一个标准的最小二乘问题,可以用 QR 分解高效求解。

令:

A~=[AλI],b~=[b0]\tilde{A} = \begin{bmatrix} A \\ \sqrt{\lambda} I \end{bmatrix},\quad \tilde{b} = \begin{bmatrix} b \\ 0 \end{bmatrix} A~=[AλI],b~=[b0]

A~\tilde{A}A~做QR分解:A~=Q~R~\tilde{A} = \tilde{Q} \tilde{R}A~=Q~R~

则解为:

θridge∗=R~−1Q~1Tb\theta^*_{\text{ridge}} = \tilde{R}^{-1} \tilde{Q}_1^T b θridge=R~1Q~1Tb

其中Q~1\tilde{Q}_1Q~1Q~\tilde{Q}Q~的前 mmm 行(对应 AAA 部分)。

5.2 SVD分解

A=UΣVTA = U \Sigma V^TA=UΣVTAAA 的 SVD。

代入岭估计的闭式解:

θridge∗=(VΣTUTUΣVT+λI)−1VΣTUTb=(V(ΣTΣ+λI)VT)−1VΣTUTb\theta^*_{\text{ridge}} = (V \Sigma^T U^T U \Sigma V^T + \lambda I)^{-1} V \Sigma^T U^T b = (V (\Sigma^T \Sigma + \lambda I) V^T)^{-1} V \Sigma^T U^T b θridge=(VΣTUTUΣVT+λI)1VΣTUTb=(V(ΣTΣ+λI)VT)1VΣTUTb

利用 VTV=IV^T V = IVTV=I,得:

θridge∗=V(ΣTΣ+λI)−1VTVΣTUTb=V(ΣTΣ+λI)−1ΣTUTb\theta^*_{\text{ridge}} = V (\Sigma^T \Sigma + \lambda I)^{-1} V^T V \Sigma^T U^T b = V (\Sigma^T \Sigma + \lambda I)^{-1} \Sigma^T U^T b θridge=V(ΣTΣ+λI)1VTVΣTUTb=V(ΣTΣ+λI)1ΣTUTb

ΣTΣ=diag(σ12,…,σn2)\Sigma^T \Sigma = \text{diag}(\sigma_1^2, \dots, \sigma_n^2)ΣTΣ=diag(σ12,,σn2),则:

θridge∗=V[σ1σ12+λ⋱σnσn2+λ]UTb\theta^*_{\text{ridge}} = V \begin{bmatrix} \frac{\sigma_1}{\sigma_1^2 + \lambda} & & \\ & \ddots & \\ & & \frac{\sigma_n}{\sigma_n^2 + \lambda} \end{bmatrix} U^T b θridge=Vσ12+λσ1σn2+λσnUTb

即:

θridge∗=∑i=1rσiσi2+λ(uiTb)vi\boxed{ \theta^*_{\text{ridge}} = \sum_{i=1}^r \frac{\sigma_i}{\sigma_i^2 + \lambda} (u_i^T b) v_i } θridge=i=1rσi2+λσi(uiTb)vi

对比标准最小二乘解(SVD 形式):

θ∗=∑i=1r1σi(uiTb)vi\theta^* = \sum_{i=1}^r \frac{1}{\sigma_i} (u_i^T b) v_i θ=i=1rσi1(uiTb)vi

可见,岭估计通过因子 σiσi2+λ\frac{\sigma_i}{\sigma_i^2 + \lambda}σi2+λσi 对小奇异值方向进行了压制。当 σi→0\sigma_i \to 0σi0 时,标准解会爆炸(1/σi→∞1/\sigma_i \to \infty1/σi),但岭估计中该项趋于 0,从而避免了对噪声方向的过度放大。

6. 补充

有一些《线性代数》、《矩阵论》相关的知识笔者也忘记了,这里就总结一下。如果有的读者很熟悉,可以直接略过。

6.1 病态矩阵

病态矩阵指的是矩阵条件数(Condition Number)很大的矩阵。矩阵病态会导致输入数据的微小扰动(如 bbbAAA 的舍入误差),线性方程组 Aθ=bA\theta = bAθ=b 解就会剧烈变化。换句话说,系统对噪声极度敏感,数值计算中结果不可靠。

对于一个可逆矩阵 A∈Rn×nA \in \mathbb{R}^{n \times n}ARn×n,其谱条件数(Spectral Condition Number)定义为:

κ(A)=σmax⁡(A)σmin⁡(A)\kappa(A) = \frac{\sigma_{\max}(A)}{\sigma_{\min}(A)} κ(A)=σmin(A)σmax(A)

其中:
σmax⁡(A)\sigma_{\max}(A)σmax(A)AAA 的最大奇异值,
σmin⁡(A)\sigma_{\min}(A)σmin(A)AAA 的最小奇异值。

注意这个定义也适用于非方阵 A∈Rm×nA \in \mathbb{R}^{m \times n}ARm×nm≥nm \geq nmn),只要 AAA 列满秩。条件数 κ(A)\kappa(A)κ(A) 的含义如下:

  • κ(A)≈1\kappa(A) \approx 1κ(A)1 良态,解非常稳定
  • κ(A)<102\kappa(A) < 10^2κ(A)<102 良态
  • 102≤κ(A)<10610^2 \leq \kappa(A) < 10^6102κ(A)<106 中等病态
  • κ(A)≥106\kappa(A) \geq 10^6κ(A)106 严重病态,浮点计算可能完全失效
  • κ(A)>1014\kappa(A) > 10^{14}κ(A)>1014 双精度浮点数(约16位有效数字)完全失效

任何实矩阵 A∈Rm×nA \in \mathbb{R}^{m \times n}ARm×n 都可以进行奇异值分解(SVD):

A=UΣVTA = U \Sigma V^T A=UΣVT

其中:
U∈Rm×mU \in \mathbb{R}^{m \times m}URm×m 是左奇异向量矩阵(正交),
V∈Rn×nV \in \mathbb{R}^{n \times n}VRn×n 是右奇异向量矩阵(正交),
Σ∈Rm×n\Sigma \in \mathbb{R}^{m \times n}ΣRm×n 是对角矩阵,对角线元素为奇异值(Singular Value) σ1≥σ2≥⋯≥σr≥0\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r \geq 0σ1σ2σr0r=min⁡(m,n)r = \min(m,n)r=min(m,n)

奇异值表示矩阵 AAA 在各个正交方向上的“拉伸”程度。如果 σmin⁡→0\sigma_{\min} \to 0σmin0,说明 AAA 把某个方向“压扁”了,接近奇异,也就是矩阵病态。

6.2 正定矩阵

A∈Rn×nA \in \mathbb{R}^{n \times n}ARn×n 是一个实对称矩阵(即 A=ATA = A^TA=AT),我们有如下定义:

如果对所有非零向量 x∈Rn,x≠0x \in \mathbb{R}^n, x \ne 0xRn,x=0,都有:

xTAx>0x^T A x > 0 xTAx>0

则称 AAA正定矩阵

如果对所有非零向量 x∈Rn,x≠0x \in \mathbb{R}^n, x \ne 0xRn,x=0,都有:

xTAx≥0x^T A x \ge 0 xTAx0

则称 AAA半正定矩阵

对于实对称矩阵 AAA,我们可以进行谱分解(特征值分解):

A=QΛQTA = Q \Lambda Q^T A=QΛQT

其中 QQQ 是正交矩阵(列是特征向量),Λ=diag(λ1,…,λn)\Lambda = \mathrm{diag}(\lambda_1, \dots, \lambda_n)Λ=diag(λ1,,λn) 是对角矩阵,对角元素是特征值。

那么:

  • AAA 正定 ⟺\Longleftrightarrow 所有特征值 λi>0\lambda_i > 0λi>0
  • AAA 半正定 ⟺\Longleftrightarrow 所有特征值 λi≥0\lambda_i \ge 0λi0

既然正定矩阵的所有特征值都 大于零,那么意味着正定矩阵是满秩,也就是正定矩阵一定可逆。

回到岭估计中的 ATA+λIA^T A + \lambda IATA+λI

  1. ATAA^T AATA 是半正定的:

    • 因为对任意 xxx,有 xTATAx=∥Ax∥2≥0x^T A^T A x = \|Ax\|^2 \ge 0xTATAx=Ax20
    • 所以它的所有特征值 ≥0\ge 00
  2. 加上 λI\lambda IλI(其中 λ>0\lambda > 0λ>0)后:

    • 新矩阵是 ATA+λIA^T A + \lambda IATA+λI
    • 它的特征值变为:原来的每个特征值 $\lambda_i $ 变成 λi+λ\lambda_i + \lambdaλi+λ
    • 原来最小可能是 0,现在最小是 λ>0\lambda > 0λ>0
    • 所以所有特征值 >0> 0>0正定 ⇒ 可逆

因此,(ATA+λI)−1(A^T A + \lambda I)^{-1}(ATA+λI)1 总是存在的,无论 AAA 是否列满秩。这正是岭估计的精髓所在:通过加一个小的正数 λ\lambdaλ 到对角线上,把原本可能奇异(不可逆)的 ATAA^T AATA “修复”成一个严格正定、可逆的矩阵,从而保证了解的唯一性和数值稳定性。

7. 实例

如果线性最小二乘问题的设计矩阵AAA接近线性相关,那么普通方法求得的解不稳定,可以使用岭估计来给出稳定解。代码实现如下:

#include <Eigen/Dense>
#include <iostream>
#include <random>
#include <vector>using namespace Eigen;
using namespace std;int main() {// 设置随机数生成器default_random_engine gen;normal_distribution<double> noise(0.0, 0.5);  // 噪声 ~ N(0, 0.5)// 数据生成:y = x1 + x2 + 0.1*x3 + noise// 但 x3 ≈ x1 + x2 (高度相关,造成病态)int n_samples = 20;int n_features = 3;MatrixXd A(n_samples, n_features);VectorXd b(n_samples);for (int i = 0; i < n_samples; ++i) {double x1 = (double)rand() / RAND_MAX * 10;double x2 = (double)rand() / RAND_MAX * 10;double x3 = x1 + x2 + (double)rand() / RAND_MAX * 0.1;  // x3 ≈ x1 + x2A(i, 0) = x1;A(i, 1) = x2;A(i, 2) = x3;double true_y = 1.0 * x1 + 1.0 * x2 + 0.1 * x3;b(i) = true_y + noise(gen);  // 加噪声}//使用 SVD 计算条件数BDCSVD<MatrixXd> svd(A, ComputeThinU | ComputeThinV);cout << "Condition number of A: "<< svd.singularValues()(0) / svd.singularValues()(2)<< endl;  // 假设 3 个奇异值// 普通最小二乘解:theta = (A^T A)^{-1} A^T bVectorXd theta_ols = A.bdcSvd(ComputeThinU | ComputeThinV).solve(b);// 岭回归解:theta = (A^T A + λI)^{-1} A^T bMatrixXd AtA = A.transpose() * A;VectorXd Atb = A.transpose() * b;double lambda = 0.01;MatrixXd ridge_matrix =AtA + lambda * MatrixXd::Identity(n_features, n_features);VectorXd theta_ridge = ridge_matrix.ldlt().solve(Atb);// 输出结果cout << "True weights: [1.0, 1.0, 0.1]" << endl;cout << "OLS weights:  " << theta_ols.transpose() << endl;cout << "Ridge weights:" << theta_ridge.transpose() << endl;return 0;
}

这里可以看到,我们使第三个已知参数向量,可以用第一个已知参数向量和第二个已知参数向量接近线性表示(x3≈x1+x2x3 ≈ x1 + x2x3x1+x2),那么设计矩阵就接近线性相关,这个设计矩阵就是病态的。分别用普通最小二乘求解和岭估计来求解,最后结果如下:

Condition number of A: 715.286
True weights: [1.0, 1.0, 0.1]
OLS weights:    2.00569   2.03977 -0.938346
Ridge weights: 1.02399  1.05935 0.038262

理论上来说,使用QR/SVD方法可以一定程度上解决矩阵的病态问题。但是从这个实例结果可以看到,即使使用最稳健的 SVD 方法求解普通最小二乘,参数估计仍严重偏离真实值。这是因为问题本身的结构特征高度相关,导致参数不可识别。

相比之下,岭估计通过引入正则化项λIλIλI,显著改善了矩阵的条件数,给出了稳定且接近真实的参数估计。岭估计通过牺牲一定的精度,提升模型的泛化能力,保证在噪声存在下仍能稳定预测。岭估计的另外一个问题是正则化参数λ\lambdaλ不太好进行给定,往往需要一些先验经验的辅助才能确定,有机会再进一步进行讨论了。

http://www.dtcms.com/a/555419.html

相关文章:

  • 网站表格布局网站seo优化软件
  • 网站图标怎么做的做网站页面大小多大
  • 淘城汇网站谁做的一个简单的个人网站
  • background样式问题踩坑
  • 淮安做网站公司深圳做网站知名排行
  • 有没有专门做航拍婚礼网站建设网站课程设计摘要
  • 浙江省国有建设用地出让网站建设网站一般用什么字体
  • 沧州高端网站制作用html制作百度首页
  • 手机网站开发是什么前端seo怎么优化
  • 咖啡网站设计模板化妆品网站设计思路
  • Servlet 数据库访问
  • 无锡自助建站软件logo设计免费在线制作
  • 怎么建设淘宝联盟的网站个人怎么免费注册公司流程
  • 怎样看一个网站是哪个公司做的wordpress 判断语言
  • 莱芜网站建设开发公司wordpress 热门头条
  • 湖北疾控发布最新通告做十来个网站优化
  • 凡科网做音乐网站微网站开发平台 开源
  • 做魔方网站用什么背景最好网站 乱码
  • FlashAttention whl本地快速安装
  • 泰安集团网站建设方案东莞图文短视频推广
  • 官方网站拼多多商洛做网站多少钱
  • 【断路器深入认识加选型】
  • 网站用哪些系统做的网站上传服务器教程
  • 南京网站设计网站建设移动门网站建设
  • 做任务拍照片赚钱的网站电商数据分析与数据化运营
  • 广东网站设计与建设商城网站建站系统源码
  • 阿里云网站 模板建设wordpress 用户权限管理
  • 如何注销网站备案号什么是营销型企业网站
  • 建设银行网站缺点wordpress 内存清理
  • 建设银行 成都 招聘网站可信赖的郑州网站建设