正规方程的介绍及与梯度下降的对比

对于某些线性回归问题,正规方程会给我们一个更好的方法,来求得参数 θ \theta θ的最优值

到目前为止,我们都在使用梯度下降算法,我们使用这种迭代算法,经过很多步,也就是梯度下降的多次迭代,来收敛到全局最小。

相反的,正规方程算法提供了一种求 θ \theta θ的解析解法,所以我们不再需要运行迭代算法,而是可以一次性地直接求解 θ \theta θ的最优值。所以说基本上可以一步直接得到最优值

正规方程是通过求解下面的方程来找到使得代价函数最小的参数的
∂ ∂ θ j J ( θ j ) = 0 \frac {\partial}{\partial \theta_j}J(\theta_j)=0 ∂θj​∂​J(θj​)=0
假设我们的训练集特征矩阵为 X X X(包含了 x 0 = 1 {{x}_{0}}=1 x0​=1)并且我们的训练集结果为向量 y y y,则利用正规方程解出向量 θ = ( X T X ) − 1 X T y \theta ={{\left( {X^T}X \right)}^{-1}}{X^{T}}y θ=(XTX)−1XTy 。上标T代表矩阵转置,上标-1 代表矩阵的逆。设矩阵 A = X T X A={X^{T}}X A=XTX,则: ( X T X ) − 1 = A − 1 {{\left( {X^T}X \right)}^{-1}}={A^{-1}} (XTX)−1=A−1

以下表示数据为例:

正规方程的介绍及与梯度下降的对比

正规方程的介绍及与梯度下降的对比

运用正规方程方法求解参数:

正规方程的介绍及与梯度下降的对比

注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。

梯度下降与正规方程的比较:

梯度下降 正规方程
需要选择学习率 α \alpha α 不需要
需要多次迭代 一次运算得出
当特征数量 n n n大时也能较好适用 需要计算 ( X T X ) − 1 {{\left( {{X}^{T}}X \right)}^{-1}} (XTX)−1 如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为 O ( n 3 ) O\left( {{n}^{3}} \right) O(n3),通常来说当 n n n小于10000 时还是可以接受的
适用于各种类型的模型 只适用于线性模型,不适合逻辑回归模型等其他模型

总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数$\theta $的替代方法。具体地说,只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法。

随着我们学习的算法越来越复杂,例如,当我们讲到分类算法,像逻辑回归算法,我们会看到,实际上对于那些算法,并不能使用标准方程法。对于那些更复杂的学习算法,我们将不得不仍然使用梯度下降法。因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。或者我们以后在课程中,会讲到的一些其他的算法,因为标准方程法不适合或者不能用在它们上。但对于这个特定的线性回归模型,标准方程法是一个比梯度下降法更快的替代算法。所以,根据具体的问题,以及你的特征变量的数量,这两种算法都是值得学习的。

正规方程的python实现:

import numpy as np
    
def normalEqn(X, y):
   theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X等价于X.T.dot(X)
   return theta
上一篇:【华为配置基础ospf】


下一篇:【文献阅读】A Region-Based Efficient Network for Accurate Object Detection一种基于区域的高效精确目标检测网络