基于Cross Validation方法的岭回归参数计算

  • 一、Ridge regression
  • 二、Cross validation
  • 2.1 交叉验证方法介绍
  • 2.2 基于LOOCV的岭参数 λ \lambda λ求解
  • 三、Generalized cross validation


在利用岭回归(ridge regression)求解回归模型(egression model)时,岭参数的确定可以采用交叉验证(cross validation)方法来确定。很多文献提到交叉验证法求岭参数的目标函数的矩阵表达形式(如下),但未具体描述如何推导这样的表达,本文主要详细论述该过程,以供参考!

我们先不加说明地描述通过cross validation 求解岭回归参数岭回归和线性回归的区别 岭回归的参数_交叉验证的最终目标函数的形式:
岭回归和线性回归的区别 岭回归的参数_交叉验证_02

一、Ridge regression

考虑标准回归模型:
岭回归和线性回归的区别 岭回归的参数_最小二乘_03
其中,岭回归和线性回归的区别 岭回归的参数_算法_04为已知的设计矩阵(design matrix),岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_05为响应向量(response vector) , 岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_06 为 随机白噪声,满足岭回归和线性回归的区别 岭回归的参数_交叉验证_07岭回归和线性回归的区别 岭回归的参数_算法_08未知.

最小二乘估计的目标函数为如下形式:
岭回归和线性回归的区别 岭回归的参数_交叉验证_09
上式关于向量岭回归和线性回归的区别 岭回归的参数_算法_10求导,并令导数等于岭回归和线性回归的区别 岭回归的参数_最小二乘_11,可以求解得到:
岭回归和线性回归的区别 岭回归的参数_最小二乘_12
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_13为半正定矩阵时,上式中逆无法获得。针对这个问题,引入了岭回归的方法.

岭回归在最小二乘估计的基础上加入了一个扰动项(或岭回归和线性回归的区别 岭回归的参数_最小二乘_14惩罚项, 岭回归和线性回归的区别 岭回归的参数_算法_15). 一方面保证可以求矩阵逆,另一方面控制最优解不会过大. 具体目标函数如下形式:
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_16
同样对上式关于岭回归和线性回归的区别 岭回归的参数_算法_10求导,并令导数等于0,可以求解得到:
岭回归和线性回归的区别 岭回归的参数_算法_18

说明:

  • 岭回归和线性回归的区别 岭回归的参数_岭回归_19惩罚项的加入,使得岭回归和线性回归的区别 岭回归的参数_最小二乘_20满秩,保证可逆;
  • 单位矩阵对角线全为岭回归和线性回归的区别 岭回归的参数_算法_21, 像一条山岭一样,这也是岭回归的由来;
  • 岭回归方法由于惩罚项的加入使得回归系数岭回归和线性回归的区别 岭回归的参数_最小二乘_22的估计不是无偏的,因此岭回归方法是一种以降低精度为代价解决病态 (ill-condition) 矩阵问题或者非适定(ill-posed)问题的回归方法.

二、Cross validation

首先引入两个概念:

  • 模型方差:回归系数岭回归和线性回归的区别 岭回归的参数_最小二乘_22的方差;
  • 模型偏差:岭回归和线性回归的区别 岭回归的参数_最小二乘_22的预测值与真实值的偏差;

观察(5)式中回归系数岭回归和线性回归的区别 岭回归的参数_算法_10的估计值与岭参数岭回归和线性回归的区别 岭回归的参数_交叉验证的取值相关. 当岭回归和线性回归的区别 岭回归的参数_交叉验证增大时,岭回归和线性回归的区别 岭回归的参数_交叉验证_28就越大,岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_29就越小,此时模型的方差就越小;而岭回归和线性回归的区别 岭回归的参数_交叉验证越大,岭回归和线性回归的区别 岭回归的参数_算法_10的估计值就越偏离真实值,因此模型的偏差就越大.

因此,岭回归方法的关键是找到一个合理的岭回归和线性回归的区别 岭回归的参数_交叉验证值来平衡模型的方差和偏差。而针对岭回归和线性回归的区别 岭回归的参数_交叉验证的估计有大量的文献对其进行了研究,具体可以参考[1]中提到的参考文献。

2.1 交叉验证方法介绍

本文主要介绍交叉验证法。[Wiki]中针对交叉验证方法的介绍包括两大类:

  • Exhaustive cross-validation
  • Leave-p-out cross-validation (LPOCV)
  • Leave-one-out cross-validation (LOOCV) 又称留一交叉验证
  • Non-exhaustive cross-validation
  • k-fold cross-validation 又称岭回归和线性回归的区别 岭回归的参数_交叉验证_34-折交叉验证
  • Holdout method
  • Repeated random sub-sampling validation

本文使用的方法是留一交叉验证法(LOOCV),其大体思想:将数据集拆分为岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35组数据,从岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35组数据中挑选出岭回归和线性回归的区别 岭回归的参数_算法_37组用于模型的训练,剩下一组用于模型的测试。这样一共有岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35个(训练集,测试集)对,而每一对训练集和测试集下都会有对应的模型及模型评分(如均方误差),进而可以得到一个平均得分。对于岭回归和线性回归的区别 岭回归的参数_交叉验证的取值,选择平均得分最优的岭回归和线性回归的区别 岭回归的参数_交叉验证的值。

2.2 基于LOOCV的岭参数岭回归和线性回归的区别 岭回归的参数_交叉验证求解

David M. Allen在文献[2]中提出求解岭回归和线性回归的区别 岭回归的参数_交叉验证的Prediction Sum of Squares (PRESS)判据。该判据利用就是LOOCV的思想,具体地讲,就是对于岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_43个观测值来说,第岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35个观测值可以用余下的岭回归和线性回归的区别 岭回归的参数_最小二乘_45个观测值来预测。

文献[1]中有这样的论述:If 岭回归和线性回归的区别 岭回归的参数_交叉验证 is a good choice, then the 岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35-th component 岭回归和线性回归的区别 岭回归的参数_最小二乘_48 of 岭回归和线性回归的区别 岭回归的参数_最小二乘_49 should be a good predictor of 岭回归和线性回归的区别 岭回归的参数_岭回归_50. 这里岭回归和线性回归的区别 岭回归的参数_最小二乘_49 表示利用除了第岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35个观测值外的岭回归和线性回归的区别 岭回归的参数_最小二乘_45个观测值得到的岭回归和线性回归的区别 岭回归的参数_算法_54的预测值。

因此最小化如下函数即可得到理想的岭回归和线性回归的区别 岭回归的参数_交叉验证
岭回归和线性回归的区别 岭回归的参数_岭回归_56
(注:需要注意的是,变量岭回归和线性回归的区别 岭回归的参数_最小二乘_57随着岭回归和线性回归的区别 岭回归的参数_最小二乘_58的变化而变化,换句话说岭回归和线性回归的区别 岭回归的参数_岭回归_59每次取得是不同向量的不同分量.或者说岭回归和线性回归的区别 岭回归的参数_算法_60.)
其中,岭回归和线性回归的区别 岭回归的参数_岭回归_61表示忽略第岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35次观测值(也即,将岭回归和线性回归的区别 岭回归的参数_岭回归_63岭回归和线性回归的区别 岭回归的参数_算法_54的第岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_35行元素全部置为岭回归和线性回归的区别 岭回归的参数_最小二乘_111)时利用(5)式计算得到的岭回归和线性回归的区别 岭回归的参数_算法_10的估计值. 可以用如下形式表达[2] 2
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_68
其中,岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_69表示矩阵岭回归和线性回归的区别 岭回归的参数_交叉验证_70的第岭回归和线性回归的区别 岭回归的参数_岭回归_71列, 也可以用岭回归和线性回归的区别 岭回归的参数_算法_72来表示.

下面我们证明(6)式可以表述为文章开头(*)中的表达形式。
在正式开始证明之前,先补充一个著名的矩阵逆公式(Sherman-Woodbury-Morrison公式) .

(Sherman-Woodbury-Morrison公式) 已知岭回归和线性回归的区别 岭回归的参数_最小二乘_73非奇异,岭回归和线性回归的区别 岭回归的参数_岭回归_74, 有下式成立:
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_75

岭回归和线性回归的区别 岭回归的参数_岭回归_76 以及 岭回归和线性回归的区别 岭回归的参数_岭回归_77,考虑如下向量:
岭回归和线性回归的区别 岭回归的参数_最小二乘_78
考虑上述向量的第岭回归和线性回归的区别 岭回归的参数_岭回归_71个分量,也即在上述向量左侧乘岭回归和线性回归的区别 岭回归的参数_最小二乘_80, 可得:
岭回归和线性回归的区别 岭回归的参数_交叉验证_81
因此,
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_82
所以结合(6)式有如下表达式 (类似于文献[3]中3.1.1节中岭回归和线性回归的区别 岭回归的参数_岭回归_83的表达形式):
岭回归和线性回归的区别 岭回归的参数_交叉验证_84
其中, 岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_85表示分量除(component-wise division).
或者,等价地写为如下表达形式(类似于文献[1]中公式(2.2)的结果):
岭回归和线性回归的区别 岭回归的参数_交叉验证_86
其中,
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_87

三、Generalized cross validation

Cross validation在大多数情况是适用的. 但是,一些极端情况是不适用的,如当矩阵岭回归和线性回归的区别 岭回归的参数_岭回归_63为对角矩阵时,此时(6)式中岭回归和线性回归的区别 岭回归的参数_最小二乘_48岭回归和线性回归的区别 岭回归的参数_最小二乘_11, 也即此时(6)式变为:
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_91
此时,岭回归和线性回归的区别 岭回归的参数_交叉验证_92不存在唯一最小值. 因此,我们可以简单总结为:Cross validation 对于岭回归和线性回归的区别 岭回归的参数_交叉验证_93近似对角阵时不适用.

Golub等人在[1]中提出了Generalized cross validation方法. 以下只简单介绍相关思想,具体可参考文献[1]中的介绍.
假设矩阵岭回归和线性回归的区别 岭回归的参数_岭回归_63的SVD分解为:
岭回归和线性回归的区别 岭回归的参数_交叉验证_95
假设岭回归和线性回归的区别 岭回归的参数_最小二乘_96为可以将循环矩阵变化为对角矩阵的酉矩阵,其中矩阵岭回归和线性回归的区别 岭回归的参数_最小二乘_96岭回归和线性回归的区别 岭回归的参数_最小二乘_98项为:
岭回归和线性回归的区别 岭回归的参数_最小二乘_99
对模型做如下变化:
岭回归和线性回归的区别 岭回归的参数_岭回归_100
其中岭回归和线性回归的区别 岭回归的参数_算法_101.
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_102岭回归和线性回归的区别 岭回归的参数_算法_103代入(10)式,并记岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_104为如下形式:
岭回归和线性回归的区别 岭回归的参数_岭回归_105
其中岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_106表示岭回归和线性回归的区别 岭回归的参数_算法_103的共轭转置. 岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_104为循环矩阵且对角元常数,并且岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_109岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_104具有相同的特征值.
岭回归和线性回归的区别 岭回归的参数_交叉验证_92变为岭回归和线性回归的区别 岭回归的参数_岭回归_112,具体表达如下:
岭回归和线性回归的区别 岭回归的参数_岭回归和线性回归的区别_113


参考文献:
[1] Gene H. Golub, Michael Heath, Grace Wahba. Generalized cross-validation as a method for choosing a good ridge parameter. Technometrics, 21:2, 215-223, 1979.
[2] David M. Allen. The relationship between variable selection and data agumentation and a method for prediction. Technomerics, 16, 125-127, 1974.
[3] Bryan J. Kaperick. Diagonal Estimation with probing methods. 2019 [D]


  1. 文献[1]中错误描述为只忽略岭回归和线性回归的区别 岭回归的参数_最小二乘_114(岭回归和线性回归的区别 岭回归的参数_算法_115with the 岭回归和线性回归的区别 岭回归的参数_交叉验证_34th data point 岭回归和线性回归的区别 岭回归的参数_最小二乘_114, omitted). ↩︎
  2. 文献[2]在第二节Choosing a predictor中描述PRESS时,岭回归和线性回归的区别 岭回归的参数_交叉验证_118的表达式左侧少乘了矩阵岭回归和线性回归的区别 岭回归的参数_最小二乘_119. ↩︎