斯坦福机器学习(一)单变量线性回归

约定符号

$m$ —— 训练集中训练样本个个数
$x’s$ —— 输入变量/特征量(即$features$,用$X_i$刻画样本数)
$y’s$ —— 输出变量/约定变量

监督学习与回归问题

监督学习指机器能够通过使用包含特征量、已知结果的训练集训练,具备能够对问题给出“正确答案”的能力。
回归问题指能够机器能够对问题给出一个预计的真值输出(相对于分类问题)。

单变量线性回归要解决的问题

$Hypothesis: h_\theta(x) = \theta_0 + \theta_1x$
$\theta_i’s: Parameters$
$How\ to\ choose\ \theta_i’s?$

代价函数

为了解决$\theta_0$和$\theta_1$的选择问题,使它能够很好地拟合训练集的已知数据,我们必须引入评判模型误差的手段,这就是将要说明的代价函数,即Cost Function。
针对前面的公式,我们现在要解决两个参数$\theta_0$和$\theta_1$的选取,而代价函数定义为:

可以从公式看出,其做的是计算当前的确定的预测函数与精确已知值的方差。
我们构造模型的目标就是
当仅有一个参数$\theta_1$时的代价函数图:

两个参数$\theta_0$和$\theta_1$时的代价函数立体图

两个参数$\theta_0$和$\theta_1$时的代价函数轮廓图

其最中心点就是为局部最优点取值对应的点位。

梯度下降法

梯度下降法能通过下山得到问题的一个最优解,其大多数情况是局部最优解,不一定为全局最优解。
梯度下降法的算法方程如下:

公式中的$\theta_0$和$\theta_1$的每次更新都是同步的,写代码的时候不能够拆分成先后写,这样有时虽然也可能得到正确结果,但也可能导致不可预知的错误。
正确的同步更新写法可以写为:

梯度下降(也称下山)图解:

注意,其中:
$\alpha$ —— 学习速率(即learning rate),其决定了下山的步子迈多大,如果$\alpha$大的话说明迈的是大步子,其收敛速度快,但是如果过快的话会导致无法收敛的问题,而$\alpha$选取过小的话又会导致收敛速度过慢的问题。

学习速率的选取


由图可以得出如下结论:
1.如果$\alpha$选取过小,则下降会非常缓慢,迟迟无法收敛。
2.如果$\alpha$选取过小,则步子过大会迈过最优点不断迭代发散导致振荡、溢出,得不到最优解。
为了选择最佳的学习速率,我们可以通过Octave画图观察不同迭代速率收敛的速度来选取,若每次迭代代价函数的值都在下降,即单调递减,再次基础上保证循环次数最少,即是我们想要的$\alpha$值。
尝试$\alpha$的时候可以从0.01、0.03、0.1、0.3、1……来进行粗调,再进行微调即可。

单变量线性回归的梯度下降法运用

对前面的代价公式求导后,得到算法流程如下:

注意,实现时一定要避免使用for循环结构,直接利用向量化解决问题会使得算法效率极大提高。
在变量$x$的矩阵当中,一定要记得添加一列全为1的伴随矩阵于最左边。所以我们可以得到$X * \theta = h_{\theta}(x)$,其中X为特征矩阵。

总结

至此,单变量线性回归问题的知识点全部介绍完,利用训练集求出的参数值就可以把模型应用于解决实际问题,它是之后多变量线性回归(多于一个特征值)的基础,需要牢固掌握,以及能够熟练编写代码解决实际问题。同时要注意编写程序的时候一定要应用向量化提高代码的执行效率,这需要对线性代数知识有扎实的基础。