线性回归这个问题可能算是机器学习总最简单的一个问题了,线性回归特别是一元变量的线性回归在日常学习中最为常见,如图1所示一元回归其实就是通过对原始数据进行分析然后拟合出一条最好的直线,也就是找出应变量y同自变量x之间的关系。
图1 单变量线性回归
那么一个单变量线性回归的问题就可以归结为通过对原始数据的处理找出拟合函数的问题,对公式进一步思考我们归结问题也就是找出合适的参数。对图1进一步观察我们可以猜想如果所有的红叉叉都聚集在蓝线上那便是最好的拟合,这个观察用也即:最小化。整个单变量线性回归模型可以描述如下:
图2.线性回归模型
从Cost Function中我们可以看到我们的需要解决的问题就是关于变量theta0,theta1二元二次函数的最小值问题。对这个问题的求解有两个一个就是传统的最小二乘法,另一个就是梯度下降算法。其中最小二乘法比较容易理解也就是分别对两个变量求导然后令其值为0,这样联立两个二元一次方程就可以求得在最小值的时候的两个参数值。本文着重介绍梯度下降算法。首先还是来看一下J这个函数的图像吧,如下图:其实这个算法的思想也很简单,即通过不断调整两个参数值从而找到一条最快的下降路径,降到最低时候的参数值即为所求。
个人觉得作者在具体调整参数值的时候使用了一个非常妙的技巧,作者利用斜率的方向特性通过下面的式子调整thetaj能够获取J(thetaj)的值不断下降的目标,具体的读者可以画一个一元二次函数简单的看看即可。到是对a参数的选取不宜过大或者过小,过小的话会使得下降速度过慢,过大的话会错过最低点从而找不到最优解。具体该取什么样的值合适,我还得研究研究。读者如果知道比较好的方式的话也可以留言。本文主要简要介绍了一元线性回归的模型以及梯度下降优化算法的基本原理。关于代码的实现和多元线性回归将在下一节中进行介绍。