说明:本博客中的分析思路、举例、部分插图等均来源于吴恩达教授在斯坦福大学公开课《机器学习》中的讲解内容!
一、概述
单变量线性回归算法属于监督学习的一类,所谓回归是指我们根据之前的数据预测一个较为准确的输出值。即我们给算法一定的训练集,训练集中的每一个训练样本均为“正确答案”,算法通过对训练集的学习而建立起合适的模型用以预测新的输入值对应的输出值。
二、从一个例子说起
在斯坦福公开课中,通过这么一个例子引入单变量线性回归算法的问题,即“根据房子面积预测房子售价”。如图2.1所示,我们已知一组数据集,数据集中的数据描述了房屋面积与价格的对应关系,且该数据集中的每一个样本都是正确的。我们现在要做的就是根据已有训练集去建立起一个合适的模型,让我们可以通过这个模型去预测一些数据集中所没有的房屋面积对相应的房屋价格。在单变量线性回归算法中,这个所谓的“模型”便是一条“一元一次方程”直线。因此,通俗的讲,我们要做的就是寻找一条与已有数据集尽量拟合的一元一次方程。这里要提到一点,所谓“回归”与“拟合”并不完全等同,但作为初学者来说难以对两者进行明确的区分,且个人认为,在初学阶段,用“拟合”来帮助理解“回归”并无不妥。至于两者间的区别可参考文章线性回归中“回归”的含义,文章作者从历史发展的角度解读了“拟合”与“回归”。
图2.1 面积-价格对应离散图
三、获得模型的宏观过程
根据上述可以知道,我们所要建立的模型形式为一元一次方程,我们不妨将其设为h(x)=θ0+ θ1 *x,h(x)称为“假设(hypothesis)”,也就是我们要求的模型。设置好假设形式后,我们从更宏观的角度看一下我们得到最终h(x)的整个过程。如图3.1所示,我们将训练集(Training Set)输入学习算法(Learning Algorithm),经过训练之后得到假设h(x)。然后,我们便可通过假设h(x)对其他面积的房屋价格进行预测。
图3.1 宏观过程
四、对“假设”拟合程度的考察——代价函数(cost function)
在二维平面上有着无数条一元一次方程直线,那么该如何判断哪条直线是最合适、是跟训练集拟合程度最高的呢?这里就引入了“代价函数”的概念。顾名思义,一条直线的代价函数所描述的是“用这条直线代替训练集中的点后引起的误差”,我们将这个“误差”称为“代价”。
我们首先引入代价函数的形式,再对代价函数进行分析。代价函数形式如图4.1。
图 4.1 代价函数的形式图中,x^(i)代表训练集中第i个样本的输入值,y^(i)代表训练集中第i个样本的输出值,hθ (x^(i))代表“假设函数对应于训练集中第i个样本输入值的输出值”,m代表训练样本的数量。在整个代价函数的公式中,不可知的量只有θ0与 θ1,也就是最终决假设函数的两个量。为了更直观的理解该公式,我们引入图4.2
图 4.2在图4.2中,×所对应的坐标即为x^(i)与y^(i),由×向x轴做垂线,垂线与斜线的交点对应的y轴坐标即为hθ (x^(i)),因此公式中的“hθ(x^(i))-y^(i)”就是用拟合直线值代替离散值后在第i个样本处引起的误差。那么明显可以看出,代价函数所求的是“用拟合直线代替离散点后在所有训练样本处引起的误差的平方和的均值”。当该代价函数值越小,说明假设函数与训练集的拟合程度越高,也就是说假设函数越“合适”。
接下来的思路就很明确了——求代价函数的极小值点,将代价函数在极小值点对应的θ0与 θ1代入假设,就可以得到拟合程度最高的假设函数了。值得强调的是,代价函数公式中,求和符号前面乘了1/2m,而求误差均值的应该乘1/m,这里纯粹是为了后续计算方便。实际上,我们接下来的操作是求代价函数的极小值点,所以在求和符号前乘以任意一个不为零的常数都对求代价函数的极小值点是没影响的。
五、求代价函数极小值点——梯度下降算法
(一)梯度下降算法的形象理解
在求代价函数极小值的过程中用到了“梯度下降”算法,我们可以用下山来比较形象的理解梯度下降的原理:我们首先选定山上的某一点作为起点,然后环视四周,选择一个能让自己高度下降的方向向前走一步,然后重复上述过程,那我们就能逐步的到达山的最低点。但很明显的是,梯度下降算法存在一定的缺陷,即当我们选定的初始点不同时,到达的最低点也可能不同,即我们的算法可能陷入局部极小值点而无法到达全局极小值点或者说最小值点,如图5.1所示。但是在单变量线性回归算法中,我们的代价函数图像是一个凹图像,如图5.2所示,因此在本文章中就可以暂且不考虑这个问题。
图 5.1 图 5.2与此同理,首先我们随意给定θ0与θ1 一个初始值,然后不断迭代执行梯度下降算法,最终即可到达代价函数的最小值点。
(二)梯度下降算法的公式及分析
首先引入单变量线性回归算法中梯度下降公式,如图5.3
图5.3公式中的