假设函数:
在给定训练集的情况下,学习函数h:X→Y,使得h(x)是y的相应值的“好”预测器。由于历史原因,这个函数h被称为假设。
通过输入住房面积 x,通过学习好的函数,输出房子的估价。
一种可能的表达方式为:,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
代价函数:
代价函数是线性回归中的一个应用,在线性回归中,要解决的一个问题就是最小化问题。
假设在一元线性回归中,在一个训练集中,我们需要找到一条直线能和该训练集中的点最接近。假设直线方程为
如何选择 、
,使得
更接近于训练集 (x,y) ?
上述问题可以转换为求求最小值
梯度下降:
梯度下降的主要思想:
- 初始化
和
,
= 0 ,
= 0
- 不断的改变
和
值,不断减少
直至达到最小值(或者局部最小)。
想象成下山,如何下山的速度最快?这里涉及到了下山的速度,即步长。
有趣的是换旁边一个点,下山,找到的最优解可能就是另一个了。这也是梯度下降的一个特点。它会找到所有的局部最优解出来。
梯度下降算法,不断更新:
直到收敛。注意 和
值要同时更新,切记不要求一次导更新一次!
被称作为学习速率。
如果 被设置的很小,需要很多次循环才能到底最低点。 如果
被设置的很大,来来回回可能就会离最低点越来越远,会导致无法收敛,甚至发散。
当快要到最低点的时候,梯度下降会越来越慢,因为 越来越小。
回顾一下,在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小 。
梯度的一些数学理解:
函数在某一点处的方向导数在其梯度方向上达到最大值,此最大值即梯度的模数。
这就是说,沿梯度方向,函数值增加最快。同样可知,方向导数的最小值在梯度的相反方向取得,此最小值为最大值的相反数,从而沿梯度相反方向函数值的减少最快。
梯度下降的线性回归
梯度下降是很常用的算法,它不仅被用在线性回归上和线性回归模型、平方误差代价函数。我们还可以将梯度下降和代价函数结合。运用梯度下降算法,将其应用于具体的拟合直线的线性回归算法里。
梯度下降算法和线性回归算法比较如图:
对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
令 j = 0,则有
令 j = 1,则有
则算法改成: