利用回归预测数值型数据
线性回归
前面讲的都是监督学习中的分类,训练出可以判断样本类别的模型,而回归的目的是预测数值型的目标值,最直接的办法是依据输入写出一个目标值的计算公式,将自变量代入后就能根据函数得到因变量的预测值。
先讲最简单的回归方法:最小二乘法。
我们被给予二维平面内的一系列点,我们希望画出一条直线,根据直线的方程(回归方程)能够以较小的误差预测点所在的位置。
仍然按照前面提到过的思考方法,最小二乘法模型的优化目标是什么?希望回归方程的预测目标值与真实目标值之差的平方和最小。那最小二乘法的损失函数的是什么?平方损失函数,表达式如下:
那用什么方法去优化目标函数?我们先将目标函数改为矩阵表示,再对w
求导,令其导数为零,然后解得w
如下:
w
上方的小标记表示那是w
的最佳估计值,可能不是真实值。上面的公式中还用到了X
的逆矩阵,所以这个方程只在X
存在逆矩阵的时候适用。计算出w
就得到了回归直线,下图是示例:
不过看上图的样本点似乎还有更好的拟合方式。最小二乘法这样纯粹的线性回归往往会出现欠拟合现象,所以我们期望在估计中引入一些偏差,从而降低预测的均方误差。
下面讲的是局部加权线性回归(LWLR),它的思想在于,我们给所有的样本点赋予一定权重,并且认为离待预测点更近的样本点所拥有的权重应该更高。
这样解出回归系数w
的形式如下:
式子中的W
是一个矩阵,为每个数据样本点赋予一定权重。那W
怎么确定?怎样实现离待预测点更近则权重越高呢,这里我们使用核函数,与SVM中的核函数类似,高斯核是比较常用的一种核,对应的权重公式如下:
这样就满足了离待预测样本点越近,权重越高的要求,k
是需要我们设置的参数,它用来调节『权重值在近样本点的集中程度』:
k
越小,权重值就越集中在近的样本点。k
越大,权重分布就越分散。
通过最小二乘法和局部加权线性回归的回归系数w
求解公式可以发现我们都需要求X'X
的逆矩阵,如果训练样本的特征比样本数还多,或者某些列之间存在着线性相关关系,都会导致X
不再是列满秩矩阵,进而导致X'X
的行列式近乎为0,也即X'X
近乎为奇异矩阵、非满秩矩阵、不可逆矩阵,如果对这样的X'X
求逆矩阵,就会找不到最优解或者误差很大。为了解决这样的情况,我们引入几种缩减方法,第一个介绍『岭回归』。
岭回归就是在原来最小二乘法式子求逆之前先加上一个阶数与样本数相同的对角矩阵,也即加上一个正则项,使矩阵为奇异的风险大降低,损失了无偏性,来换取高的数值稳定性。计算公式如下:
λ
是常数,I
是主对角线元素全为1的单位矩阵。在原有基础上加上正则项后,还可以在样本数过少的时候对系数进行惩罚,限制了所有w
之平方和(系数越大、模型越复杂,越容易过拟合),防止过拟合,提高了泛化能力。为什么说系数越大越容易过拟合,因为系数往往是函数求导后的式子中所包含的,系数越大,则整个函数的导数越大,导数越大,整个模型就越有可能做一些激烈的变化去拟合所有的点,我们控制系数大小,即控制了整个函数导数的大小,使得曲线相对平滑,防止了过拟合,也就有了更高的泛化能力。
所以当λ
比较小时,系数与普通回归一样,而λ
非常大时,所有回归系数缩减为0,我们在中间某处选择一个合适的λ
值,使得预测结果最好。