机器学习:线性模型-多重共线性问题的解决-岭回归

在线性模型之中,除了线性回归之外,最知名的就是岭回归与Lasso了。这两个算法非常神秘,他们的原理和应用都不像其他算法那样高调,学习资料料也很少。这可能是因为这两个算法不是为了提升模型表现,而是为了修复漏洞而设计的(实际上,使用岭回归或者Lasso,模型的效果往往会下降一些,因为删除了一小部分信息),因此在结果为上的机器学习领域颇有些被冷落的意味。本文介绍一下岭回归。
岭回归,又称为吉洪诺夫正则化(Tikhonov regularization)。通常来说,大部分的机器学习教材会使用代数的形式来展现岭回归的原理,这个原理和线性回归非常相似,都是将求解的过程转化为一个带条件的最优化问题,然后用最小二乘法求解。然而,岭回归可以做到的事其实可以用矩阵非常简单地表达出来。
岭回归在多元线性回归的损失函数上加上了正则项,表达为系数的L2范式(即系数的平方项)乘以正则化系数α\alpha。其他教材中的代数推导,正则化系数会写作λ\lambda,用以和Lasso区别,不过在sklearn中由于是两个不同的算法,因此正则项系数都使用α\alpha。岭回归的损失函数的完整表达式写作:
minωXωy22+αω22\large\boldsymbol{\mathop{min}\limits_\omega||X\omega-y||_2\,^2+\alpha||\omega||_2\,^2}
这个操作看起来简单,其实带来了巨大的变化。在线性回归中,通过在损失函数上对ω\omega求导来求解极值,这里虽然加上了正则项,依然使用最小二乘法来求解。假设特征矩阵结构为(m,n),系数ω\omega的结构是(1,n),则可以有:
(RSS+αω22)ω=(yXω22+αω22)ω\large\boldsymbol{\frac{\partial(RSS+\alpha||\omega||_2\,^2)}{\partial{\omega}}=\frac{\partial(||y-X\omega||_2\,^2+\alpha||\omega||_2\,^2)}{\partial{\omega}}}
=(yXω)T(yXω)ω+αω22ω\qquad\large\boldsymbol{=\frac{\partial{(y-X\omega)^T(y-X\omega)}}{\partial{\omega}}+\frac{\partial\alpha||\omega||_2\,^2}{\partial{\omega}}}
前半部分在本博客的博文《用最小二乘法求解多元线性回归的参数》中推导过,后半部分对ω\omega求导:
=02XTy+2XTXω+2αω\large\boldsymbol{=0-2X^Ty+2X^TX\omega+2\alpha\omega}
将含有ω\omega的项合并,其中,α\alpha为常数
为实现矩阵相加,让它乘以一个结构为nnn*n的单位矩阵II
=(XTX+αI)ωXTy\large\boldsymbol{=(X^TX+\alpha{I})\omega-X^Ty}
(XTX+αI)ω=XTy\large\boldsymbol{(X^TX+\alpha{I})\omega=X^Ty}
则,只要(XTX+αI)(X^TX+\alpha{I})存在逆矩阵,就可以求出ω\omega。一个矩阵存在逆矩阵的充分必要条件是:这个矩阵的行列式不为0。假设原本的特征矩阵中存在共线性,则方阵XTXX^TX就会不满秩(存在全为零的行):
此时方阵XTXX^TX没有逆,最小二乘法无法使用。然而,加上αI\alpha{I}之后,矩阵就不一样了:
机器学习:线性模型-多重共线性问题的解决-岭回归
最后得到的这个行列式还是一个梯形行列式,然而已经不存在全0行或全0列,除非:
(1) α\alpha等于0,或者
(2) 矩阵XTXX^TX中存在对角线上元素为α-\alpha,其他元素都为0的行或列
否则矩阵永远都是满秩。在sklearn中,α\alpha的值可以*控制,可以让它不为0,以避免第一种情况。而第二种情况,如果发现某个α\alpha的取值下模型无法求解,只需要换一个α\alpha的取值就可以。也就是说,矩阵的逆是永远存在的。有了这个保障,ω\omega就可以写作:
ω=(XTX+αI)1XTy\large\boldsymbol{\omega=(X^TX+\alpha{I})^{-1}X^Ty}
如此,正则化系数就非常爽快地避免了”精确相关关系“带来的影响,至少最小二乘法在存在的情况下是一定可以使用的。对于存在”高度相关关系“的矩阵,也可以通过调α\alpha大,让矩阵XTX+αIX^TX+\alpha{I}的行列式变大,从而让逆矩阵变小,以此控制参数向量ω\omega的偏移。α\alpha越大,模型越不容易受共线性影响。
(XTX+αI)1=1XTX+αI(XTX+αI)\large\boldsymbol{(X^TX+\alpha{I})^{-1}=\frac1{|X^TX+\alpha{I}|}(X^TX+\alpha{I})^*}
如此,多重共线性就被控制住了:最小二乘法一定有解,并且这个解可以通过来α\alpha进行调节,以确保不会偏离太多。当然,α\alpha挤占了ω\omega中由原始的特征矩阵贡献的空间,因此如果α\alpha太大,也会导致ω\omega的估计出现较大的偏移,无法正确拟合数据的真实面貌。所以,使用中需要找出让模型效果变好的最佳α\alpha值。