← 返回题目列表

线性回归用正规方程还是梯度下降?两者怎么选?

高频 中等 第 12 / 25 题 更新于 2026/09/25
线性模型正规方程梯度下降优化
学习 AI 实战项目

简化版

普通最小二乘可直接解线性方程组:满列秩时常写作 w=(XᵀX)⁻¹Xᵀy,但工程实现优先使用 QR、SVD 或伪逆,避免显式求逆。形成正规方程约需 O(md²),分解 d×d 系统约需 O(d³);梯度法每轮约 O(md),可用 mini-batch/SGD 扩展,但需要选择学习率和停止条件,通常还要缩放改善条件数。秩亏时不是“最小二乘失效”,而是系数解可能不唯一,应使用伪逆、稳定分解或正则化。选择依据是 m、d、稀疏性、精度和硬件,不能用“几千维”作为固定边界。

详细版

两者对比:

正规方程梯度下降
形式解线性最小二乘系统迭代逼近
学习率不需要需要调 η
特征缩放不改变理论解,但缩放可改善数值条件通常需要预处理或预条件以加速
复杂度形成 XᵀX 约 O(md²),分解约 O(d³)稠密全批每轮约 O(md),稀疏时按非零数计
特征数多时慢、内存大依然可行
样本量大时一次性载入,压力大可用 SGD/mini-batch 分批
秩亏QR/SVD/伪逆给最小二乘解,正则给唯一收缩解目标仍可优化,但参数解不唯一且收敛受条件数影响
适用特征少、中小数据高维、大规模、在线学习

正规方程由来: 令 MSE 对 w 的导数为 0,解出 XᵀXw = Xᵀy → w = (XᵀX)⁻¹Xᵀy。

XᵀX 不可逆怎么办: 特征共线或特征数 > 样本数时奇异 → 用伪逆,或加 L2 正则变 (XᵀX+λI)⁻¹(一定可逆)。

完整版教学

一、同一个目标,两条求解路

线性回归要最小化的目标是均方误差(凸函数):

L(w) = ‖Xw - y‖²

因为 L 是凸的,任一局部最优都是全局最优;只有在设计矩阵满列秩时,系数解才唯一。求这个最优有两条路:直接解方程(正规方程) 或 迭代逼近(梯度下降)。两者最终都逼近同一个最优解,区别在「怎么到达」和「代价」。

二、正规方程:一步求出闭式解

对 L(w) = ‖Xw - y‖² 求关于 w 的梯度并令其为 0:

∇L = 2Xᵀ(Xw - y) = 0
⟹  XᵀX w = Xᵀy
⟹  w = (XᵀX)⁻¹ Xᵀy      ← 正规方程

优点:

  • 确定性的线性代数求解:QR、SVD 或专用 least-squares solver 可直接求到数值精度,不需人为设置训练轮数。
  • 无超参数:不用选学习率、不用定迭代次数。
  • 缩放不改变对应回原尺度后的理论拟合:但极端尺度差仍会恶化条件数,实际数值计算中缩放依然有价值。

缺点:

  • 高维代价大:若先形成 XᵀX,需约 O(md²) 运算和 O(d²) 存储,分解 d×d 系统再需立方量级;具体算法、稀疏性和硬件会改变实际边界。
  • 内存压力:要构造并存储 XᵀX,高维时很大。
  • XᵀX 可能不可逆:这会让显式逆写法失效,但最小二乘问题仍可用伪逆、QR 或 SVD 求解,见第四节。

所以直接线性代数法适合能容纳矩阵且维度、稀疏结构适合分解的问题。不存在通用的“几千维”分界;应基于 m、d、nnz(X)、所需精度和内存基准测试。

三、梯度下降:迭代逼近,扛得住大规模

梯度下降不解方程,而是从初始 w 出发,反复沿梯度反方向走一小步:

w ← w - η · ∇L(w) = w - η · (2/m) Xᵀ(Xw - y)
  • η(学习率):步长。太大震荡/发散,太小收敛慢,需要调。
  • 迭代直到收敛(梯度接近 0 或损失不再下降)。

变体:

  • 批量梯度下降(BGD):每步用全部样本算梯度,稳但每步贵。
  • 随机梯度下降(SGD):每步用一个样本,快、可在线学习,但噪声大。
  • 小批量(Mini-batch):每步用一小批,兼顾稳定和效率,最常用。

优点:

  • 对特征数近似线性,高维依然可行。
  • 样本海量时可用 SGD/mini-batch 分批处理,不必一次性载入全部数据、也不做大矩阵求逆。
  • 通用——同一套框架能优化各种模型(逻辑回归、神经网络)。

缺点:

  • 要调学习率、要迭代多轮。
  • 通常应做特征缩放:尺度不一时条件数可能变差,梯度来回横跳、收敛慢;若使用自适应预条件或特殊数据表示,仍应以收敛诊断为准。
  • 在停止容差内逼近最优;直接分解同样受浮点误差影响,二者都不是数学意义上的无限精度计算。

四、正规方程的软肋:XᵀX 不可逆怎么办

w = (XᵀX)⁻¹Xᵀy 要求 XᵀX 可逆。两种常见情形会让它奇异(不可逆):

  1. 特征间多重共线性:某特征是其他特征的线性组合,矩阵秩亏。
  2. 特征数 > 样本数(n > m):矩阵必然不满秩。

解决:

  • 用伪逆(Moore-Penrose):w = X⁺y,即使奇异也能给出一个(最小范数)解,numpy 的 pinv 就干这个。
  • 加 L2 正则(岭回归):对所有待估斜率施加 λ>0 时,XᵀX+λI 正定并给出唯一收缩解;截距通常不惩罚,应先中心化或使用相应块矩阵。梯度下降无需显式求逆,但秩亏会导致多组最优参数,病态条件数也会拖慢收敛。

五、怎么选——决策清单

特征数 d、非零数和内存是否适合分解?
 ├─ 中小规模稠密问题 → 优先 QR/SVD/专用 least-squares solver
 └─ 大规模稀疏问题 → LSQR/LSMR、坐标法或梯度类迭代法

样本量 m 大不大?
 ├─ m 适中、能整体载入 → 两者都行
 └─ m 海量 / 流式数据 → SGD / mini-batch 梯度下降(分批、可在线)

存在秩亏 / d>m?
 ├─ 需要特定 OLS 解 → 用 SVD/伪逆明确最小范数约定
 └─ 更重视泛化和稳定 → 用交叉验证选择正则化

补充:普通最小二乘可直接转成线性方程组;标准逻辑回归和神经网络没有这种对应闭式解,通常用梯度法、牛顿法、L-BFGS 等迭代算法。不要把“无正规方程”误记为“只能使用某一种梯度下降”。

六、常见追问

  • 直接法为什么常说不用缩放? 单位变换后可把系数换算回原尺度,理论预测不变;但缩放仍能改善病态矩阵的数值计算。梯度法对条件数更敏感,因此收益通常更明显。
  • 牛顿法算哪种? 也是迭代法,用到二阶导(Hessian),收敛快但每步求 Hessian 逆很贵,适合中小规模。
  • O(n³) 的 n 是样本还是特征? 是特征数(XᵀX 是 n×n)。样本多主要影响构造 XᵀX 的 O(m·n²) 部分。
  • 梯度下降会不会陷入次优局部极小值? 标准最小二乘没有次优局部极小;但不合适步长会震荡或发散,有限迭代会欠收敛,秩亏时算法的初始化与隐式偏置还会决定落在哪个全局解。

七、用算例与工程边界复核

正规方程直接求 β=(XᵀX)^+Xᵀy,其中 + 表示可用伪逆。若特征数 d=100,分解约为 d³ 量级尚可;d=100000 时立方级计算和 d² 存储不可接受,迭代法更现实。

对象/方案核心机制选择或风险
正规方程/分解直接线性代数求解中小 d、无需学习率
梯度下降按批迭代更新大 n/d、可流式与分布式
QR/SVD避免显式求逆更稳定生产数值计算优先

把推导和选择压缩成执行路径:

check n, d and sparsity
small/medium dense -> QR/SVD solver
large sparse -> SGD/LSQR/coordinate methods
validate convergence and conditioning

工程上不要显式计算矩阵逆;solve、QR、SVD 或专用最小二乘算法通常更稳定。

八、常见误区与追问

  • 误区:正规方程只要写出逆矩阵就一定可解。 XᵀX 可能奇异或病态,应使用伪逆、分解或正则化。
  • 误区:梯度下降结果一定比闭式解差。 迭代充分且数值设置正确时可逼近同一最优解,误差来自停止与优化。
  • 追问:为什么特征缩放影响梯度下降? 尺度差异让等高线狭长、条件数变差,导致震荡和慢收敛。
  • 追问:Ridge 的闭式解是什么? 常写为 (XᵀX+λI)^{-1}Xᵀy,截距是否惩罚需按实现处理。
  • 追问:n 很大但 d 很小怎么选? 可通过累积 XᵀX 与 Xᵀy 或分解求解;还要权衡流式数据和数值稳定性。

九、加强记忆

记忆时抓住两类计算路径:普通最小二乘可以直接解线性系统,满列秩时可写成 (XᵀX)⁻¹Xᵀy,但实际优先 QR、SVD 或伪逆;形成系统约 O(md²),分解约 O(d³),秩亏意味着系数可能不唯一而非问题无解。梯度法每轮约 O(md),mini-batch/SGD 可服务大规模与在线数据,但要管理学习率、尺度、停止误差和迭代轮数。损失凸只保证没有次优局部极小值,不保证任意配置自动收敛。标准逻辑回归与神经网络没有 OLS 这种线性系统解,却可使用多种迭代求解器,并非只能用某一种梯度下降。