本文为学习记录,写的不好请大家指正见谅,互相学习,也为自己巩固学习成果包括后续复习所用!
梯度下降法介绍:
1.batch gradient descent(批量梯度下降法)
在一个二维平面上,和线性回归图像不同,线性回归图像是用特征作为坐标轴,而绘制梯度下降图像的时候,我们将损失函数J作为我们的纵坐标,参数theta作为我们的横坐标,图像如下:

在图中我们可以看到,在蓝点中,dJ/dt 为负数,也就是这个点的导数为负,表示在这个蓝点上移动往导数为0点移动最快的方向,
随着theta的增大,导数不断的增大,所以我们在导数公式前加上一个 -eta 变量,这个-eta表示移动的距离,反之,在导数为正的点也可以用这个公式表示 .
所以梯度下降法就是找到参数theta,使我们的损失函数J达到最小值
我们扩展到多特征样本,这个时候我们的theta就会变成一个向量

所以对J进行求导,如下图
最后得出对我们损失函数求导结果为
2/m * X_b.T.(X_b - y)
X_b为对我们的样本X增加一列特征值全为1的样本数据。接下去用代码去实现这个梯度下降法


这里可以得出,我们的算出来的theta截距为4,第一个theta为3,符合我们的式子。
2.stochastic gradient descent(随机梯度下降法)
如果有的时候我们的样本数和特征都很多,使用批量梯度下降法的话,时间就很久,所以这时候需要我们采用随用随机梯度下降法。随机梯度下降法的思想也很简单
就是我们随机的在里面取一个样本,然后对这个样本求导,使我们的J慢慢的下降,但是不能不是沿着最快方向下降。
直接给出我们的代码

包括我们的scikit-learn中,梯度下降法也是使用我们的随机梯度下降法来实现
3.关于梯度的调试

我们需要取样本,对梯度进行调试,来测试我们的梯度下降法是否正确,根据图中公式,我们可以得知,两个蓝色点连成的直线,我们可以近似的认为这条直线与红色点的切线平行,只要 我们的取得值够小。
下面来看看我们的代码

本文是关于梯度下降法的学习记录。介绍了批量梯度下降法,通过将损失函数J作为纵坐标、参数theta作为横坐标绘图,找到使J最小的theta;样本和特征多时可采用随机梯度下降法;还提到对梯度进行调试,以测试梯度下降法的正确性,并给出了相关代码。
311

被折叠的 条评论
为什么被折叠?



