本文介绍LAR(Least angle regression,最小角回归),由Efron等(2004)提出。这是一种非常有效的求解LASSO的算法,可以得到LASSO的解的路径。
1 算法介绍
我们直接看最基本的LAR算法,假设有NNN个样本,自变量是ppp维的:
- 先对XXX(N×pN\times pN×p)做标准化处理,使得每个predictor(XXX的每列)满足x⋅j′1N=0x_{\cdot j}' 1_N=0x⋅j′1N=0,∥x⋅j∥=1\Vert x_{\cdot j}\Vert=1∥x⋅j∥=1。我们先假设回归模型中只有截距项,则β0=1Ny′1N\beta_0=\dfrac{1}{N} y' 1_Nβ0=N1y′1N,记残差r=y−1Nβ0r=y-1_N \beta_0r=y−1Nβ0,而其他的系数β1=⋯=βp=0\beta_1=\cdots=\beta_p=0β1=⋯=βp=0;
- 找出与rrr相关性最大的x⋅jx_{\cdot j}x⋅j,加入active set;
- 将βj\beta_jβj从000逐步向LS系数x⋅j′rx_{\cdot j}'rx⋅j′r变动,直到有另一个x⋅kx_{\cdot k}x⋅k,它与rrr的相关系数绝对值,和x⋅jx_{\cdot j}x⋅j与rrr的相关系数绝对值一样大;
- 将βj\beta_jβj和βk\beta_kβk同时向二者的联合LS系数变动,直到再出现下一个x⋅lx_{\cdot l}x⋅l,它与rrr的相关系数满足上一步的条件;
- 重复上述过程,min(N−1,p)\min(N-1,p)min(N−1,p)步后,就得到完整的LS解。
2 算法性质
2.1 保持最小角
我们先来看LS估计量的一个性质:若每个predictor与yyy的相关系的数绝对值相等,从此时开始,将所有系数的估计值同步地从000移向LS估计量,在这个过程中,每个predictor与残差向量的相关系数会同比例地减少。
假设我们标准化了每个predictor和yyy,使他们均值为000,标准差为111。在这里的设定中,对于任意j=1,…,pj=1,\ldots,pj=1,…,p,都有∣x⋅j′y∣/N=λ\left|x_{\cdot j}'y\right|/N=\lambda∣∣x⋅j′y∣∣/N=λ,其中λ\lambdaλ为常数。LS估计量β^=(X′X)−1X′y\hat\beta=(X'X)^{-1}X'yβ^=(X′X)−1X′y,当我们将系数从000向β^\hat\betaβ^移动了α\alphaα(α∈[0,1]\alpha\in[0,1]α∈[0,1])比例时,记拟合值为u(α)=αXβ^u(\alpha)=\alpha X\hat\betau(α)=αXβ^。
另外,记ℓp(j)\ell_p^{(j)}ℓp(j)为只有第jjj个元素为111、其他元素均为000的ppp维向量,则x⋅j=Xℓp(j)x_{\cdot j}=X\ell_p^{(j)}x⋅j=Xℓp(j),再记RSS=∥y−Xβ^∥2\text{RSS}=\Vert y-X\hat\beta\Vert^2RSS=∥y−Xβ^∥2,记投影矩阵P=X(X′X)−1X′P=X(X'X)^{-1}X'P=X(X′X)−1X′。
这里的问题是,在α\alphaα变大过程中,每一个x⋅jx_{\cdot j}x⋅j与新的残差的相关系数绝对值,是否始终保持相等?且是否会减小?
由于∣x⋅j′[y−u(α)]∣=∣x⋅j′y−ℓp(j)′X′u(α)∣=(1−α)Nλ\left| x_{\cdot j}' [y-u(\alpha)]\right|=\left|x_{\cdot j}'y - \ell_p^{(j)\prime} X' u(\alpha)\right|=(1-\alpha)N\lambda∣∣x⋅j′[y−u(α)]∣∣=∣∣∣x⋅j′y−ℓp(j)′X′u(α)∣∣∣=(1−α)Nλ,即内积与jjj</