在线性模型之中,除了线性回归之外,最知名的就是岭回归与Lasso了。这两个算法非常神秘,他们的原理和应用都不像其他算法那样高调,学习资料料也很少。这可能是因为这两个算法不是为了提升模型表现,而是为了修复漏洞而设计的(实际上,使用岭回归或者Lasso,模型的效果往往会下降一些,因为删除了一小部分信息),因此在结果为上的机器学习领域颇有些被冷落的意味。本文介绍一下岭回归。

岭回归,又称为吉洪诺夫正则化(Tikhonov regularization)。通常来说,大部分的机器学习教材会使用代数的形式来展现岭回归的原理,这个原理和线性回归非常相似,都是将求解的过程转化为一个带条件的最优化问题,然后用最小二乘法求解。然而,岭回归可以做到的事其实可以用矩阵非常简单地表达出来。

岭回归在多元线性回归的损失函数上加上了正则项,表达为系数的L2范式(即系数的平方项)乘以正则化系数岭回归的交叉 岭回归问题_岭回归的交叉。其他教材中的代数推导,正则化系数会写作岭回归的交叉 岭回归问题_统计_02,用以和Lasso区别,不过在sklearn中由于是两个不同的算法,因此正则项系数都使用岭回归的交叉 岭回归问题_岭回归的交叉。岭回归的损失函数的完整表达式写作:

岭回归的交叉 岭回归问题_岭回归的交叉_04

这个操作看起来简单,其实带来了巨大的变化。在线性回归中,通过在损失函数上对岭回归的交叉 岭回归问题_统计_05求导来求解极值,这里虽然加上了正则项,依然使用最小二乘法来求解。假设特征矩阵结构为(m,n),系数岭回归的交叉 岭回归问题_统计_05的结构是(1,n),则可以有:

岭回归的交叉 岭回归问题_算法_07

岭回归的交叉 岭回归问题_机器学习_08

前半部分在本博客的博文《用最小二乘法求解多元线性回归的参数》中推导过,后半部分对岭回归的交叉 岭回归问题_统计_05求导:

岭回归的交叉 岭回归问题_机器学习_10

将含有岭回归的交叉 岭回归问题_统计_05的项合并,其中,岭回归的交叉 岭回归问题_岭回归的交叉为常数

为实现矩阵相加,让它乘以一个结构为岭回归的交叉 岭回归问题_统计_13的单位矩阵岭回归的交叉 岭回归问题_岭回归的交叉_14

岭回归的交叉 岭回归问题_统计_15

岭回归的交叉 岭回归问题_正则项_16

则,只要岭回归的交叉 岭回归问题_算法_17存在逆矩阵,就可以求出岭回归的交叉 岭回归问题_统计_05。一个矩阵存在逆矩阵的充分必要条件是:这个矩阵的行列式不为0。假设原本的特征矩阵中存在共线性,则方阵岭回归的交叉 岭回归问题_正则项_19就会不满秩(存在全为零的行):

此时方阵岭回归的交叉 岭回归问题_正则项_19没有逆,最小二乘法无法使用。然而,加上岭回归的交叉 岭回归问题_机器学习_21之后,矩阵就不一样了:

岭回归的交叉 岭回归问题_机器学习_22


最后得到的这个行列式还是一个梯形行列式,然而已经不存在全0行或全0列,除非:

(1) 岭回归的交叉 岭回归问题_岭回归的交叉等于0,或者

(2) 矩阵岭回归的交叉 岭回归问题_正则项_19中存在对角线上元素为岭回归的交叉 岭回归问题_算法_25,其他元素都为0的行或列

否则矩阵永远都是满秩。在sklearn中,岭回归的交叉 岭回归问题_岭回归的交叉的值可以自由控制,可以让它不为0,以避免第一种情况。而第二种情况,如果发现某个岭回归的交叉 岭回归问题_岭回归的交叉的取值下模型无法求解,只需要换一个岭回归的交叉 岭回归问题_岭回归的交叉的取值就可以。也就是说,矩阵的逆是永远存在的。有了这个保障,岭回归的交叉 岭回归问题_统计_05就可以写作:

岭回归的交叉 岭回归问题_统计_30

如此,正则化系数就非常爽快地避免了”精确相关关系“带来的影响,至少最小二乘法在存在的情况下是一定可以使用的。对于存在”高度相关关系“的矩阵,也可以通过调岭回归的交叉 岭回归问题_岭回归的交叉大,让矩阵岭回归的交叉 岭回归问题_算法_32的行列式变大,从而让逆矩阵变小,以此控制参数向量岭回归的交叉 岭回归问题_统计_05的偏移。岭回归的交叉 岭回归问题_岭回归的交叉越大,模型越不容易受共线性影响。

岭回归的交叉 岭回归问题_算法_35

如此,多重共线性就被控制住了:最小二乘法一定有解,并且这个解可以通过来岭回归的交叉 岭回归问题_岭回归的交叉进行调节,以确保不会偏离太多。当然,岭回归的交叉 岭回归问题_岭回归的交叉挤占了岭回归的交叉 岭回归问题_统计_05中由原始的特征矩阵贡献的空间,因此如果岭回归的交叉 岭回归问题_岭回归的交叉太大,也会导致岭回归的交叉 岭回归问题_统计_05的估计出现较大的偏移,无法正确拟合数据的真实面貌。所以,使用中需要找出让模型效果变好的最佳岭回归的交叉 岭回归问题_岭回归的交叉值。