通过前面博文,你应该了解:单/多变量线性回归,代价函数,梯度下降算法,特征缩放。
这篇博文主要讲解:
1,在梯度下降算法中,如何选择合适的学习率α。
2,在一定条件下,不使用多次迭代梯度下降算法求最优值θ,而是一次性求出θ。
一,学习率α的选择
梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。
也有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如 0.001)进行比较,但通常看上面这样的图表更好。梯度下降算法的每次迭代受到学习率的影响,如果学习率 α 过小,
则达到收敛所需的迭 代次数会非常高;如果学习率 α 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
通常可以考虑尝试些学习率:
α=0.01,0.03,0.1,0.3,1,3,10
二,正规方程
到目前为止,我们都在使用梯度下降算法,但是对于某些线性回归问题,正规方程方法是更好的解决方案。如:
假设我们的训练集特征矩阵为 X(包含了 x0=1)并且我们的训练集结果为向量 y,则利用正规方程解出向量:
注意:此处θ为一个向量,描述θ1-θn具体值,而非单一数值。
上标 T 代表矩阵转置,上标-1 代表矩阵的逆。设矩阵 A=XTX,则:(XTX)-1=A-1以下表示数据为例:
即:
运用正规方程方法求解参数:
梯度下降与正规方程的比较:
这里的n是特征值的数量
总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数 θ 的替代方法。具体地说,只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法。
随着我们要讲的学习算法越来越复杂,例如,当我们讲到分类算法,像逻辑回归算法,我们会看到,实际上对于那些算法,并不能使用标准方程法。对于那些更复杂的学习算法,
我们将不得不仍然使用梯度下降法。因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。或者在以后的博文中,会讲到的一些其他的算法,因为标
准方程法不适合或者不能用在它们上。但对于这个特定的线性回归模型,标准方程法是一个比梯度下降法更快的替代算法。所以,根据具体的问题,以及你的特征变量的数量,这两种
算法都是值得学习的。