最小角回归(Least Angle Regression)

来源:互联网 发布:mysql数据库的安装步骤 编辑:程序博客网 时间:2024/05/29 04:33

最小角回归和其他方法的比较

逐步选择(forward selection)算法(例如forward stepwise regression)在进行子集选择的时候可能会显得太具有“侵略性”(aggressive),因为每次在选择一个变量后都要重新拟和模型,比如我们第一步选择了一个变量x1,在第二步中可能就会删除掉一个和x1相关但也很重要的变量。
Forward Stagewise是一种比起上面的逐步选择方法更谨慎的方法,但是可能要经过很多步才能到达最后的模型。具体来说,算法每次在变量的solution path上前进一小步,而forward stepwise regression每次都前进一大步。这样一来,Forward Stagewise可以避免漏掉某些重要的和响应相关的变量,但也带来了高昂的计算代价。
Forwad Stagewise有着和Lasso很大的相似性,下图是二者的参数估计,其中 stepwise每次都进行6000步。可以看到,尽管二者的定义看起来完全不同,但是却有着相似的结果。
这里写图片描述

Forward Stagewise和Lasso都可以看做是最小角回归(Least Angle Regression)的变体,事实上缩写LARS中的s就暗示着Lasso和stagewise。
最小角回归(Least Angle Regression)算法加速了计算过程,只需m步(m是自变量的个数)得到参数的估计值。

算法描述

首先简单的描述一下最小角回归,算法从所有系数都为零开始(X标准化,Y中心化),首先找到和响应y最相关的预测变量xj1,在这个已经选择的变量的solution path上前进直到有另一个变量xj2,使得这两个变量与当前残差的相关系数相同。
然后重复这个过程,LARS保证了所有入选回归模型的变量在solution path上前进的时候,与当前残差的相关系数都是一样的。
下面是考虑只有两个变量的情景:
这里写图片描述

μ^为当前拟合值,初始化为0向量,定义c(μ^
c^=c(μ^)=XT(yμ^) (1)
所以c^j正比于变量 xj和当前残差向量的相关度。

可以看到,在只有两个变量的情况下,当前的残差(1)只与yx1,x2生成的空间上的投影y¯2有关,即
cμ^=XT(yμ)=XT(y2μ)
因为x1y2μ的角度更小,即c1(μ^0)>c2(μ^0)
LARS算法更新当前拟合值,
μ^1=μ^0+γ^1x1

注意到这里如果是stagewise算法,那么γ^1是一个很小的常数,然后算法重复进行此步骤;如果是逐步选择算法,γ^1是使得μ^1等于y¯1的值;而LARS算法采取了二者的一个折中,选取γ^1使得y¯2μ^x1,x2的相关度相等,也就是说,使得y2μ^平分x1x2的夹角。

定义μ2为角平分线方向上的单位向量 ,则 下一步的LARS估计是
μ^2=μ^1+γ^2μ2
因为这里只有两个变量,所以我们选择γ^2,使得μ2=y¯2
如果这里不止两个变量,那么我们还是要像上一步一样选择一个较小的值,使得当前集合中变量的相关度与下一个方向的相关度相等。
上图中的蓝色阶梯型前进路线是stagewise所采取的方案。

现在考虑如何选取μγ,使得μ是当前集合中所有向量的角平分线,并选取合适γ值使得当前集合中向量的相关度和下一个进入集合的相关度相等。
我们假设自变量x1,x2...xm是线性无关的,对于下标集合1,2...m的一个子集,定义矩阵
XA={...sjxj...}jA2
在这里sj表示符号,值为1或者-1。
在这里,可以得到一个使得集合中所有向量相关度相等的向量,
μA=XA(XTAXA)11A
这是因为XTAμ=1A
其中1A是长度和集合A的大小相同的由1组成的列向量。

可以看到似乎我们可以有很多μ的选择使得所有向量相关度相等,但是要注意这其中只有一个是在XA列向量生成的空间中的,即这个向量要满足,
pμ=μ
其中p是这个XA列空间的投影向量XA(XTAXA)1XTA,
这样看来,我们上面得到的μA确实是正确的方向。
μA单位化后就得到了新的角平分线向量(equiangular vector),它与XA中的向量的夹角相等。

下面形式化的描述一下这个过程:

GA=XTAXA3
AA=(1TAG1A1A)1/24

那么
μA=XAωA5
其中ωA=AAG1A1TA
是使得角度相等的单位向量,即
XTAμA=AA1Aand||μA||2=1

现在考虑选取合适的γ使得下一个列向量与当前集合A中向量与残差相关度相等。
当前相关度为
c^=XT(yμ^A)
当前活跃集合A中的向量满足如下条件
C^=maxj{|c^j|}andA={j:|c^j|=C^}

sj=sign(c^j)forjA
我们按照上面说讲的公式2345计算
XAAAμAa=XTμA
在LARS算法要更新拟合值,也就是
μ^A+=μ^A+γ^μA
我们希望找到下一个相关度绝对值相等的向量xj
即对任意的xXA,有
x(yμ^A+)=xj(yμ^A+)
这里假设xj与残差相关度为正
所以
x(yμ^AγμA)=xj(μ^AγμA)
进一步推导出
C^γAA=c^jγaj
得到
γ=C^c^jAAaj
所以我们可以得到γ^的值
γ^=min+jAc(C^c^jAAaj,C^+c^jAA+aj)
这里min+是指要取正值里的最小值。

LARS和OLS的联系和区别

在LARS的每一步中(除了最后一步),当前拟合值都向ols的估计值y¯靠近,但是不相等,如下图所示
这里写图片描述
在LARS的最后一步中,当前活跃集合中包括了所有的自变量,所以步长是任意的,LARS最后一步使得拟合值和OLS的估计值相等。

LARS算法具有较低的计算复杂度,m步的计算开销和OLS的解是同阶的

1 0