作者:Adarsh Menon
在这个教程中,你可以理解梯度低落算法将如何事情,并在python中从头开始实现。首先我们看一下线性回归是什么,然后定义丢失函数。我们学习了梯度低落算法的事情事理,末了我们将在给定的数据集上实现它,并进行预测。
在每次迭代时更新m和c的值以得到最优解
线性回归
在统计学中,线性回归是一种线性方法,用于对因变量与一个或多个自变量之间的关系进行建模。设X为自变量,Y为因变量。我们将在这两个变量之间定义一个线性关系,如下所示:
这是你在高中学习的线性方程。m是直线的斜率,c是y截距。如今我们将利用这个方程用给定的数据集演习我们的模型,并预测任何给定X值的Y值。我们本日的寻衅是确定m和c的值,使得对应于这些值的线是最佳拟合直线或给出最小偏差。
丢失函数
丢失是我们预测的m和c值的偏差。我们的目标是最小化这个偏差,以得到最准确的m和c值。
我们将利用均方偏差函数来打算丢失。这个函数有三个步骤:
对付给定x,找到实际y和预测y值之间的差值(y=mx+c)。把这个差值进行平方。找出X中每个值的平方均值。均方偏差方程
这是yi实际值,ȳ i是预测值。让我们更换ȳ i的值:
更换 ȳ i的值
以是我们将偏差平方并找出均值。因此,名称均方偏差。现在我们已经定义了丢失函数,让我们进入有趣的部分 - 最小化它,并找到m和c。
梯度低落算法
梯度低落是探求函数最小值的迭代优化算法。这里的函数是我们的丢失函数。
理解梯度低落
解释梯度低落算法的事情事理
想象一个山谷和一个没有方向感的人想要到达山谷的底部。当斜坡陡峭时,他沿着斜坡走下坡时,步幅较大,当斜坡不那么陡峭时,步幅较小。他根据自己目前的位置决定下一个位置,并在他到达山谷底部时停下来,这是他的目标。
让我们考试测验将梯度低落算法运用于m和c,并逐步逼近它:
1.最初让m = 0和c = 0。设L是我们的学习率。这可以掌握m值随每一步的变革程度。 L可以是0.0001的这样小的数值,以得到良好的准确性。
2.打算丢失函数相对付m的偏导数,并插入个中x,y,m和c确当前值,得到导数值D。
关于m的导数
Dc 是相对付m的偏导数的值。类似地,我们找到关于c,Dc的偏导数:
关于c的导数
3.现在我们利用以下等式更新m和c确当前值:
4.我们重复这个过程,直到我们的丢失函数是一个非常小的值或空想情形下为0(这意味着0偏差或100%准确度)。我们现在剩下的m和c的值将是最佳值。
现在回到我们的类比,m可以被认为是图中职员确当前位置。D即是斜率的陡度,L是他移动的速率。现在我们利用上面的等式打算的m的新值将是他的下一个位置,并且L×D将是步幅的大小。当斜率更陡(D更大)时,他须要迈出更大的步幅,当它更陡(D更小)时,他迈出更小的步幅。末了他到达山谷的底部,相称于我们的丢失= 0。
现在有了m和c的最佳值,我们的模型已经准备好进行预测了。
履行模型
现在让我们将上面的所有内容转换为代码并查看我们的模型!
梯度低落算法是机器学习中最大略、运用最广泛的算法之一,紧张是由于它可以运用于任何函数来优化它。学习它为节制机器学习奠定了根本。你可以在这里找到数据集和代码:
https//github.com/chasinginfinity/ml-from-scratch/tree/master/02%20Linear%20Regression%20using%20Gradient%20Descent