线性回归(梯度下降法)- 02

梯度下降法

梯度下降法是一个优化算法

梯度下降法应用的范围很广,并不只是在线性回归中间会使用到

在上面的这个图中间,首先我们初始化这两个变量值,之后对这个点进行求导,获取到变化最大的方向,之后向这个方向进行移动,直到移动到一个全局最小值或局部最小值的位置;当我们定义的初始值不一样的时候,可能就会影响变化的方向,如下图所示

这个图和上面的图相比,我们能够看到,这个取值并不是全局最小值,而仅仅只是一个局部最小值

上面的这个其实是梯度下降法的一个缺点

在上面的公式中间,学习率的选择也是很重要的,不能太小和不能太大(0到1之间);太小了每次下降的步长可能会很短,太大了可能会导致最后在最小值之间震荡

上面的这个图就能够看出来,当学习率的选择不同的值时候,直接会影响梯度下降的步长

前面已经给出了梯度下降法的优化算法,这里对梯度下降法中间的内容进行计算(求导)

梯度下降法-实战

在上面的例子中,需要用到两个python模块(numpy、matplotlib),首先使用numpy中间的genfromtxt将文件进行载入,并指定分隔符为逗号;之后分别获取到第0列和第1列的数据作为x和y对应的值,最后使用pyplot将这个图形画出来

有了上面的点分布之后,就能够开始指定这样的一个代价函数了,如下所示

在上面的代价函数中,有一个 ** 2 的式子,这个表示的是2次方,同样也会有3次方或者其他

在上面的式子中间,定义的就是一个梯度算法

如上图,就是在进行50次递归之后,形成的一张回归直线

猜你喜欢

转载自blog.csdn.net/Escid/article/details/89845835