机器学习中的监督学习分为回归和分类,而线性回归(Linear Regreesion)是回归问题中最基础的模型。所谓线性回归,简单的说就是在假设特征满足线性关系的前提下,通过样本数据的来拟合出一条直线,然后用该直线来预测输入的结果。这里拟合所得的曲线我们叫做模型,而拟合的整个过程叫做训练。
下面用一个简单的例子来阐述线性回归的过程。
假设通过调研我们得到了一组住房面积以及对应房价的数据,在坐标轴上的分布情况如下图所示:
而我只想买一套100平的房子,但是收集的数据中恰好没有100平直接对应的房价,这就很尴尬。但是仔细观察这些数据的分布,似乎满足一条的直线的关系,像这样:
这时,100㎡的房价就可以通过该条直线的对应关系得到,在图中的位置大概是280万。
那么如何计算得到该条直线呢?在数学中,常常通过最小二乘法的方法来确定直线的方程。我们把采集的样本数据记作,其中m为样本数据的总个数。假设直线方程为,我们的目标是确定系数、。为了使所得的直线最接近样本数据的分布情况,可以用衡量每一个样本点同拟合直线的偏离大小,即预测值与实际值得差值,对这些差值进行求和,再求平均,可以得到:, 其中m为样本数据的总个数。考虑到后续计算的方便,我们可以用平方代替绝对值的计算,这样就有:,再在最前面乘以 (方便后面求导计算),最后可以得到:
我们把这个函数称作代价函数(cost function),现在推出的只是一维特征向量下的形式。有了这个函数之后,我们的问题就又转化成求代价函数取得最小值时、的值。
仔细观察上式,该式似乎是一个关于、的二元函数。在微积分中,求二元函数的极值点通常是通过求偏导数为零的点而获得的。而类似的,在机器学习中,要求解这个问题,引入了一种叫做梯度下降(Gradient Descent)的方法。在讲述原理前,先把梯度下降的公式列出如下:
,j=1或2。式中被称作学习速率,即为梯度。下面以下图为例,讲述公式的大致原理。
想象一下,我们现在站在A点的山坡上,我们想要往最低点(图中为B点)走去,每次往下走的步长是固定的,而每走一步我们都要确定好行走的方向,以便能快速走向B点而少走弯路。这里的步长就是公式中的学习速率,而每次行走的方向就是梯度,:=的意思是每次计算完之后,把值进行更新,并循环计算。当梯度为零时,我们就会发现值不会变化,此时的即为我们所求的最优值。
上图中显示的函数似乎很复杂,存在许多的局部最优解,通过梯度下降法可能会求出多个,实际上,真正的代价函数,通常是如下图所示:
此函数其是一个凸函数,只有一个全局最优解,所以不用担心像上图一样会找到局部的最优解。
好了,求得的过程大致如此。然而这仅仅是一维特征向量的情况,很多时候,我们采集的样本数据含有多个特征,此时特征向量是多维的,这样我们的直线可能是这样子的:,以X表示特征向量的话,上式就变成了:,代价函数就变成了:,利用梯度下降法求解的过程还是一样的。