梯度方法
通过不断向梯度下降(上升)方向移动,从而不断得到新的系数,当带入测试数据的系数与测试结果误差小于指定误差时,得到模型系数。
梯度下降
最小化损失函数
数学化含义
导数代表J增大方向,故移动的步长为,即取新的点值为 x-η(dJ/dθ),则新点向方向导数减少的方向移动。最终得到导数最小点。
线性回归中的梯度下降
对累和的导数值过大,所以进行/m的操作
关于η的讨论
在一元二次方程线性回归不同η带来的下降图像,图中eta即η
当η过大时,导致下降会不收敛从而无结果
简单代码实现
二次曲线举例:方程为 y=(x-2.5)^2-1
梯度下降运算矩阵化
梯度下降优缺点评价
比回归方程更快
样本量较大时因为要计算每个样本梯度,速度会拉慢
随机梯度下降法
原理
不再取全部样本的元素计算θ,而只取一个样本中的所有元素
对多元的数据,theta = theta-eta*gradient,gradient中是每个元的梯度,最后得到的θ是一元的
求梯度公式变形
学习率改动
由于随机取数,梯度下降的判断可能不在最小值点就有最小差值,故不在取这个判断方式,按循环 次数来决定何时停止。同时学习率也不能再固定,需要随循环变小
随机梯度下降,若学习率固定,由于随机性可能到了最小值附近后又走出去,故学习率要随着循环变小,即模拟退火思想
i_iters是循环数,t0、t1是超参数,控制η变小
代码实现
GradientDescent中实现
修改:拿数据
因为skilearn版本变化,一些参数名称改变
重查参数名称
对梯度debug
原理
所求的点的梯度值应该和他两边点的切线近似,点越近值越近
计算量比较大,拿部分样本试试就行,适合debug
梯度上升
最大化效用函数