least angle regression (LARS)
给定线性无关按行排列的数据
X=(x1,...,xn)T
,数据label
y
。不妨假设
目标是找到一个 β^ 为下问题的解:
β^=argminβ∥y−μ^∥,s.t.∥β∥1≤t
其中 μ^=Xβ , t 越小,解越稀疏。
LARS的过程如下:
1.初始化
2.计算相关系数:
c=c(μ)=XT(y−μ)
3.计算最大相关度和对应的下标集合
C=maxj{|cj|},A={j||cj|=C}
4.计算
XA=(...,xj,...)j∈A
GA=XTAXA,AA=(1TG−1A1)−1/2
uA=XAωA,ωA=AAG−1A1
5.更新
μ+=μ+γμA
其中
a=XTμA
γ=min+j∈AC{C−cjAA−aj,C+cjAA+aj}
A=A∪{j},j=argmin+j∈AC{C−cjAA−aj,C+cjAA+aj}
C=C−γAA
6.更新 β
β+=β+γδA
其中 δA 是上面 ωA 通过填充0( j∉A,δA(j)=0 ),将其扩展成和数据个数一样维度。
7.如果 β 满足约束,转到4.
过程解释
最小角回归的过程,和forward stagewise(见[2])的区别在于方向和步长的更新选择上。最小角回归选择的方向,使得更新方向总是位于已选择的特征的角平分线上。
具体为什么,等看到再补充
正确性:正确性比较复杂,详见文章[1]
参考:
[1]Hastie T, Efron B. lars: Least Angle Regression, Lasso and Forward Stagewise[J]. 2013.
[2]http://blog.csdn.net/xbinworld/article/details/44284293