第四篇 2.2-线性回归中使用梯度下降法及原理

本文为学习记录,写的不好请大家指正见谅,互相学习,也为自己巩固学习成果包括后续复习所用!

梯度下降法介绍:

1.batch gradient descent(批量梯度下降法)

在一个二维平面上,和线性回归图像不同,线性回归图像是用特征作为坐标轴,而绘制梯度下降图像的时候,我们将损失函数J作为我们的纵坐标,参数theta作为我们的横坐标,图像如下:

第四篇 2.2-线性回归中使用梯度下降法及原理_第1张图片

在图中我们可以看到,在蓝点中,dJ/dt 为负数,也就是这个点的导数为负,表示在这个蓝点上移动往导数为0点移动最快的方向,

随着theta的增大,导数不断的增大,所以我们在导数公式前加上一个 -eta 变量,这个-eta表示移动的距离,反之,在导数为正的点也可以用这个公式表示 .

所以梯度下降法就是找到参数theta,使我们的损失函数J达到最小值

 

我们扩展到多特征样本,这个时候我们的theta就会变成一个向量

第四篇 2.2-线性回归中使用梯度下降法及原理_第2张图片

所以对J进行求导,如下图

第四篇 2.2-线性回归中使用梯度下降法及原理_第3张图片 

最后得出对我们损失函数求导结果为

2/m * X_b.T.(X_b - y)

X_b为对我们的样本X增加一列特征值全为1的样本数据。接下去用代码去实现这个梯度下降法

第四篇 2.2-线性回归中使用梯度下降法及原理_第4张图片

这里可以得出,我们的算出来的theta截距为4,第一个theta为3,符合我们的式子。

2.stochastic gradient descent(随机梯度下降法)

如果有的时候我们的样本数和特征都很多,使用批量梯度下降法的话,时间就很久,所以这时候需要我们采用随用随机梯度下降法。随机梯度下降法的思想也很简单

就是我们随机的在里面取一个样本,然后对这个样本求导,使我们的J慢慢的下降,但是不能不是沿着最快方向下降。

直接给出我们的代码

第四篇 2.2-线性回归中使用梯度下降法及原理_第5张图片

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

第四篇 2.2-线性回归中使用梯度下降法及原理_第6张图片 3.关于梯度的调试

 

第四篇 2.2-线性回归中使用梯度下降法及原理_第7张图片

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

下面来看看我们的代码

第四篇 2.2-线性回归中使用梯度下降法及原理_第8张图片

 

你可能感兴趣的:(机器学习)