http://mlnotes.com/2013/08/21/lars.html
背景知识
最小角回归和模型选择比较像,是一个逐步的过程,每一步都选择一个相关性最大的特征,总的运算步数只和特征的数目有关,和训练集的大小无关。最小角回归训练时的输入为特征矩阵 X={X1,X2,...,XP},和期输出向量Y={y1,y2,...,yN},Xi 是长度为N的矩阵,N表示训练集的大小,P则是特征的数目。还有一点需要注意的是,向量Xi 和 Y 都是正则化之后的向量,即它们的元素的均值为0,且每个向量的长度都是1,这样做的目的是为了后面计算相关性以及角度的方便。
相关性
相关性一般是用来衡量两个向量之间的相关程度,通常采用相关性公式进行计算,其中A,B为向量:
corr=Cov(A,B)√Var(A)Var(B)=E[(A−ˉA)(B−ˉB)]√E[(A−ˉA)2]E[(B−ˉB)2]corr的绝对值越大,表示A,B的相关性越大,反之则越小。corr的符号则表示这两个向量是正相关还是负相关。由于最小回归的训练数据是经过正则化的,即ˉA=ˉB=0,|A|=|B|=1,所以上面的计算公式可以进行简化。
corr=E(AB)√E(A2)E(B2)=E(AB)√1∗1=E(AB)在最小角回归中,E(AB)=ABn,其中n是向量A或B中元素的个数,因而n是定值,所以为了方便计算,在计算向量的相关性时,我们只需要计算AB即可。为了计算每个特征和期望输出的相关性,我们需要计算每个Xi 与 Y的相关性,这种情况下,我们可以采用矩阵和向量的乘法来进行运算,这里X是N×P的特征矩阵,Y则是大小为N的期望输出向量。
Corr=XTY这里的Corr是一个大小为P的向量,且 Corri表示特征Xi与Y的相关性。
参数选择过程
在最小角回归中,参数选择的准则就是相关性,每次都选择和期望输出相关性最大的特征,即max(|Corri|)。不过需要注意的是,在具体计算时,期望输出并不总是Y,而是Y与已选择路径的差向量。
前进路径
在我们的特征矩阵中,共有P个特征向量,每个向量都是N维的,期望输出矩阵Y也是N维的,因此我们可以将这些特征向量以及期望输出向量看作是N维空间中的点,而我们的目的就是在这个空间中找到一条从原点到Y的路径。需要满足的条件就是这条路径可以使用特征矩阵的线性组来合表示,而这些特征矩阵的系数就是线性回归的权重向量。
ˆuA 表示从原点出发的一条路径,其初始值为→0,我们的目的是在经过若干步之后,使得ˆuA=Y。每一步中,ˆuA的增量为 ˆγuA,其中uA 为单位向量,它指明了 ˆuA 的前进方向,ˆγ 则是前进的距离。
前进方向
在最小角回归的计算过程中,每一步都会选择一个和期望输出Y−^uA(也可以称作残值),最相关的特征Xi,可以用矩阵 XA 表示被选中的特征的集合,XA=(...,sjXj,...),sj 表示Xj 与期望输出相关性的符号。选择完变量之后,就是计算前进方向。由于是最小角回归,所以其选择方向的策略就是选择等分XA中所有向量的角的方向,也就是说uA和XA中所有的列向量所成的角相等,那么只需要保证他们之间的cos值相等即可。因为cos(A,B)=AB|A||B|,而所有的|sjXj|=1, 因此为了保证所有的cos(sjXj,uA)都相等,只需要保证所有的(sjXj)uA 都相等即可,也就是说要保证XTAuA=AA1A,其中AA为实数。我们知道方阵与其逆矩阵的乘积为单位矩阵,我们可以利用这个性质来构造uA,然而我们无法保证XTA是方阵,但我们可以保证XTAXA为方阵,因此我们可以令 uA=XA(XTAXA)−1AA1A,此时XTAuA=AA1A。同时,因为uA是单位向量,因此 |uA|=1,也就是说 uTAuA=1,由此可以得到 AA=(1TA(XTAXA)−11A)0.5。至此,我们得到以下公式:GA=XTAXAAA=(1TAG−1A1A)12uA=XAG−1AAA1A
前进距离
在确定了前进方向之后,我们就可以沿着uA的方向前进了,但应该前进多少呢?这是我们现在需要解决的问题。一直前进,直到有没被选中的向量与(Y−ˆuA−ˆγuA) 所成角的绝对值等于选中的向量与 (Y−ˆuA−ˆγuA) 所成角的绝对值。这里涉及到上面提到的相关性计算以及特征的选择,之前我们说在最小角回归中,每一步都会选择一个变量,在实际操作中,我们并不是在每一步中只选择一个变量,而是选中所有相关性的绝对值等于最大值的特征,不过这个操作和每一步选择一个变量的效果是一样,后面会有解释。在每一步中,我们具体的计算过程如下:
- 计算特征向量和残值的相关性,并选择最相关的特征向量组成相关特征矩阵XACorr=XT(Y−^uA)ˆC=maxj|Corrj|sj=sign(Corrj)A={j:|Corrj|=ˆC}XA={sjXj:j∈A}
- 计算前进方向,上面已经经过,至此,我们得到了uA
- 计算前进距离,上面已经讲过前进的终止条件,那么在计算中如何体现呢?即存在Xj其和当前残值所成角的绝对值等于被选中的特征于残值所成的角,为了方便计算,我们可以先计算 a=XTuA,同时我们令 Ac={1,2,...,P}−A。|XTAi(Y−ˆuA−ˆγuA)|=|XTj(Y−ˆuA−ˆγuA)|ˆC−ˆγAA=|Corrj−ˆγaj|ˆγ=min+j∈Ac{ˆC−CorrjAA−aj,ˆC+CorrjAA+aj} min右上角的+号,表示取最小的正数。
为什么说每步选择一个参数
在最小角回归的文字描述中,我们说每一步都会选择相关性最大的特征加入到XA中,而在实际计算时,我们却在每一步都重新构建了XA,那这两种方式得到的矩阵XA是否相等呢?实际上它们是相等,下面我们就可以来进行验证。
假设在第k步中选中了m个特征XA1,XA2,...,XAm被选中,此时我们需要验证就是在第k+1步之后,原来被选中的特征还需要被选中。在第k中,ˆuAk沿着uAk的方向前进了ˆγk距离,因此在第k+1步中,ˆuA(k+1)=ˆuAk+ˆγkuAk。由于在第k步的前进过程中,XAi与Y−ˆuAk−ˆγuA所成角的绝对值都相等,其逐渐减小,Xj与残值所成角的绝对值则逐渐增大,一旦XAi与残值所成角的绝对值等于Xj与残值所成角的绝对值,立即停止前进。因此Xj与残值所成角的绝对值是所有未被选中的特征中与残值所成角的绝对值最大的特征,所以在第k+1步中
Corr=XT(Y−ˆuk+1)=XT(Y−ˆuk−ˆγkuAk)其中绝对值最大的必然是第k步中被选中的特征以及Xj,由此我们知道第k步选中的特征在第k+1步中仍然会被选中,因而这两个方式构建的XA是等价的,且有如下关系
ˆCk+1=ˆCk−ˆγkAAk