单变量线性回归(梯度下降、正规方程组法)
假设函数:
参数 :
代价函数:
(关于为什么是除以2m而不是m,应该是为了后续求导方便。实际上无论除以几都并不影响结果,就好像 在x=0处取得最小值,而
也在x=0处取得最小值一样)
目标函数:
接下来就是最小化目标函数,这里采用梯度下降法。
梯度下降法,举一个简单的例子,一个人站在山顶,朝四周望去,找出最佳下山方向,朝着该方向行走一小段距离,接着以此为起点,再次朝四周望去,找出最佳下山方向,继续行走一段距离,直到到达山底。
算法:
注意要做到同步更新,以下做法是错误的:
其中是学习速率,最后一项是偏导数,对应于
图像上横坐标为
点的斜率,当
位于图像局部最优点右侧时,偏导数大于0,且
大于0,
减小。反之,位于左侧时
增大。
关于的大小选取问题,当
取值过小时,迭代次数较多,更新缓慢;当
取值过大时,可能会导致发散(吴恩达机器学习讲的是“And so if alpha is too large it can fail to converge or even diverge"。翻译过来就是 所以如果
太大,它会导致无法收敛甚至发散,我认为这里不严谨,应该是不收敛就一定发散,例如1,-1,1,-1,...在数学上讲就是发散的。)
过小的情况:
过大的情况:
事实上,梯度下降法可适用于其他代价函数。
求解代价函数最小值还有正规方程组的方法,梯度下降法迭代次数较多,但是适合于大量数据集。因为当数据集很大时候(上百万),正规方程组的矩阵维数过大,占用很大内存。
附:正规方程组法(多元回归)
对于m组样例,n个属性的数据,是
的矩阵,
是
的矩阵,
是
的矩阵。
其中是系数矩阵,假设
,则有
.
记得在学数值分析时讲的一元线性回归是这样计算的:(n组数据,一个属性,每组数据的权重一样,如果权重不一样则不能直接求和,而要加权求和)
带入数据,用一个二元一次方程组就能手算求出。(专门应对考试的方法)
现在终于明白这个式子的原理了,其实就是 .
另外,对于非线性的,要先转化为线性的也可用此法计算。