机器学习1_线性回归梯度下降算法
机器学习1_线性回归梯度下降算法
开始接触机器学习与python,之前研究的普通方法解决原始胎心音的信号处理与计算瞬时心率没有得到理想的结果,所以想通过目前大热的机器学习与深度的方法试一试,不过不知道能不能行,先试着接触一下这些方面的知识。目前的学习资料是吴恩达的机器学习视频还有python的《LearnPython the Hard Way, 3rd Edition》,还有 IanGoodfellow, Yoshua Bengio, Aaron Courville 的《DeepLearning》,李航的《统计学习》,资料也会上传到我的CSDN上。博客基本上写给自己看,督促自己弄出点东西,也适时的总结一下学到的知识,不要马上忘了。
训练模型
在线性回归问题中用监督学习的方法处理,使用梯度下降或者标准方程拟合方程,得到最好的预测结果。
单变量和多变量线性回归
在线性回归中,我们要解决的是一个最小化的问题,关于参数
的最小化,当只包含一个特征/输入变量时,即单变量线性回归问题,表达式可能为:
当包含多个特征/输入变量时,表达式为:
单变量线性回归
设表达式为:
,若设y为目标变量/实际输出变量,则由预测值
,可得出预测误差:
,即下图右中的蓝色线。
令 为训练集中的实例,
为第i 个观察实例, 表示训练集中实例的数量,形象表示如下图。
令其回归问题的平方误差代价函数为 ,则
即误差平方和均值的一半。关于参数
,对函数
求最小值。
总结一下:
找到最优的参数,实现代价函数最小, 先考虑一个参数的情况,令
,只有 一个参数
,则
,存在
使得代价函数最小。
当有两个参数时,他们的函数关系图为3D曲面(下图左),等高线图(下图右)。在曲面上,最低点就是代价函数的最小值,在等高线图上,最小的椭圆就是代价函数
的最小值。
用梯度下降的算法得出使
,让代价函数最小。
梯度下降
梯度下降是一个用来求函数最小值的算法,用这个方法来找我们的代价函数的最小值。它的思想是:①:选择一个参数的组合
,计算
,②:寻找另一个能使代价函数下降更多地参数组合
,③:循环①②,得到一个局部最小值。由于没有尝试完所有的参数组合,所以不知道得到的局部最优是不是全局最优,选择的不同的参数组合,可能会得到不同的局部最小值。
总结一下:
梯度下降:
“ :=” 运算符:赋值,例如:
,即把b 的值赋给a ,传统的 a=b可能会被当成判断,最终值为真假。
对于导数项的理解,相对于单独的
,即该点的切线,斜率值,比如:令
,则偏导变为导数,
,在图中看导数项对于
大小变化的影响。
当斜率大于0时,
,
减一个正数,
变小,往左移,往靠近谷底的方式更新,正确。
当斜率小于0时,
,
减一个负数,
变大,往右移,往靠近谷底的方式更新,正确。
当 在最优位置,谷底时,导数为0 ,值不变化。
这样就可以达到梯度下降的目的。
关于学习速率 ,其实是对
更新步子的大小进行设定,当
过大时,可能会错失
最优值,进而错失代价函数的最小值,导致无法收敛,甚至发散,如下图左;当
过小时,
步子迈的太小,耗费了资源,如下图右。
所以适当的学习效率值的设置很重要,再则,我们可以发现在梯度下降算法中,当我们接近局部最优值时,梯度下降算法会自动采取更小的幅度,因为越往下走,曲线越来越平缓,导数绝对值越来越小,所以变化也越来越小。因此梯度下降将自动采取更小的幅度。
梯度下降的线性回归
此梯度下降算法也称“批量梯度下降算法”,即在梯度下降的每一步中,都用到了所有的训练样本,在求和运算中,所以,在每一个单独的梯度下降中,我们最终都要计算,这个项需要对所有m个训练样本求和。
将批量梯度算法运用到线性回归中,即线性回归的梯度下降法。
下面还有泛化的梯度下降算法,即多元线性回归与特征缩放。
运用正规方程法可以一步到位直接求得最优的
使得代价函数最小,但是只能处理有限的特征,当特征多时还是使用梯度下降。具体“多”的程度,以10000为界。
最后PS:简直有毒,我用word写的,然后mythtype编辑器编辑公式,都显示不出来,哭死算了,要用latex重新编辑或者截图插入,算了,有空再弄,我上传word到我的资源先
实验部分之后更新