为什么正规方程法在工作中使用较少
·
在教科书或入门课程中,正规方程法(Normal Equation)通常被作为线性回归的“完美解析解”首先被介绍,它的公式非常优雅:
θ=(XTX)−1XTy\theta = (X^T X)^{-1} X^T yθ=(XTX)−1XTy
但在实际工作和工业界中,我们绝大多数情况下会选择**梯度下降法(Gradient Descent)**及其变种(如 SGD, Adam),而极少使用正规方程法。这主要由以下几个现实原因决定:
1. 致命的计算复杂度(当特征数量 nnn 很大时)
正规方程的核心是计算矩阵 XTXX^T XXTX 的逆矩阵:(XTX)−1(X^T X)^{-1}(XTX)−1。
- 矩阵求逆的计算时间复杂度大约是 O(n3)O(n^3)O(n3)(nnn 为特征的数量)。
- 在实际工作中: 如果你的特征只有几十个或几百个,计算会瞬间完成。但现代机器学习任务中,特征数量 nnn 经常是几万、几十万甚至上千万(例如自然语言处理中的词袋模型、推荐系统中的用户标签)。如果 n=100,000n = 100,000n=100,000,那么 n3n^3n3 就是一个天文数字,即使是超级计算机也要算很久,甚至直接内存溢出(OOM)。
- 相比之下: 梯度下降法的复杂度大约是 O(k⋅n)O(k \cdot n)O(k⋅n)(kkk 为迭代次数),当 nnn 很大时,梯度下降的效率远超正规方程。
2. 算法的通用性不足(“一招鲜” vs “万金油”)
- 正规方程法是“特化”的: 它仅仅适用于线性回归(以及带有 L2 正则化的岭回归等极少数模型)。
- 梯度下降法是“通用”的: 实际工作中,我们很少只跑一个简单的线性回归。我们通常要面对逻辑回归(Logistic Regression)、支持向量机(SVM)、树模型以及各种复杂的深度神经网络(Deep Learning)。正规方程对这些模型无能为力,而梯度下降法可以作为底层优化器“通吃”几乎所有基于损失函数的机器学习模型。为了工程代码的复用性和技术栈的统一,工业界更倾向于一套成熟的梯度下降框架。
3. 矩阵不可逆(奇异矩阵)的问题
在某些情况下,矩阵 XTXX^T XXTX 是不可逆的(Singular Matrix),此时正规方程直接失效。这通常发生在以下两种情况:
- 特征数多于样本数(n>mn > mn>m): 比如在医疗基因数据中,只有 100 个病人的样本(m=100m=100m=100),但每个病人测了 10,000 个基因特征(n=10000n=10000n=10000)。
- 特征之间存在高度共线性(多重共线性): 比如特征组里同时包含了“以米为单位的长度”和“以厘米为单位的长度”,这两个特征完全线性相关。
- 虽然可以通过计算伪逆(Pseudo-inverse)或加入正则化(Ridge Regression)来解决不可逆的问题,但这增加了额外的处理成本。
4. 无法处理动态/流式数据(在线学习)
- 正规方程是批量处理(Batch): 它要求把所有历史数据 XXX 一次性加载到内存中进行矩阵运算。如果明天公司又新收集了 10 万条数据,你必须把旧数据和新数据拼在一起,从头再算一次整个矩阵的逆。
- 梯度下降支持在线更新(Online Learning): 在工业推荐系统或广告点击预测中,数据是源源不断流进来的。使用随机梯度下降(SGD),模型可以利用新进来的这一小批数据,在原有参数 θ\thetaθ 的基础上进行微调(Update),而不需要触碰过去的海量历史数据,这在工程上具有极其巨大的优势。
总结:什么时候能用正规方程?
尽管在工作中用得少,但它并非毫无价值。如果你在工作中遇到的场景 同时满足 以下条件,正规方程反而是最快、最好的选择:
- 模型确定只是纯线性回归。
- 特征数量 nnn 比较小(通常小于 10,000)。
- 数据集是静态的,不需要频繁应对实时流数据。
因为在这些条件下,正规方程法不需要选择学习率(Learning Rate),也不需要迭代,敲一行代码就能直接得到全局最优解,非常省心。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)