LASSO

感谢博客:http://blog.sina.com.cn/s/blog_e386b39f0102vzsj.html

概要:前文已经分析完岭回归在多元线性回归分析中的作用和使用方法,也发现其存在大量不足,在本博文中会介绍和学习岭回归的改进方法:Lasso。

    先来看一下Lasso的官方定位:

LASSO ​

Tibshirani(1996)提出了Lasso(The Least Absolute Shrinkage and  Selectionator operator)算法。 ​

    通过构造一个一阶惩罚函数获得一个精炼的模型;通过最终确定一些指标(变量)的系数为零(岭回归估计系数等于0的机会微乎其微,造成筛选变量困难),解释力很强. 擅长处理具有多重共线性的数据,跟岭回归一样是有偏估计。

    来解释一下主要表达的意思,首先Lasso是一种最小绝对收缩选择算法(直译),跟岭回归一样是有偏估计,但比岭回归好的是可以方便删除无效变量(系数为零即无效),因此不用靠人眼去主观筛选变量。

LASSO vs 岭回归   

                 

岭回归,Lasso和LAR学习(二)

                   

岭回归,Lasso和LAR学习(二)

      图3.41和3.42是岭回归的两种表现形式,3.51和3.52图是Lasso的两种表达方式,这里的λ就是岭参数k。我们发现Lasso与岭回归的区别就是约束条件(subject to)不一样,但Lasso的约束条件是线性的,肯定比非线性计算方便。因此我们选择Lasso作为删选方法。(Lasso的解比岭回归容易最为判断依据,但求解构过程也很复杂,具体求解方法会在下文提及)。

    来看一下岭回归岭迹图

岭回归,Lasso和LAR学习(二)

                                   λ即k,该图的纵坐标表示不同变量(指标)的系数,横坐标表示λ的变化

 

   Lasso的岭迹图

岭回归,Lasso和LAR学习(二)

横坐标收缩因子s即λ

性质:变量系数为0即可说明该变量无效。

分析两个岭迹图,结论:

1,岭回归的变量无效删选更复杂。

2,岭回归存在变量系数从0变大又变0的无用过程(变量无贡献到有贡献又回到无贡献)。

3,Lasso岭迹图的0点明显,容易挑选。

综上所述,用Lasso作为删选变量的工具更有可实际操作性。那么问题又来了,如何求出Lasso的解呢?或如何得到Lasso的岭迹图?这里就要介绍一个求解Lasso的机智方法:LAR。

        在介绍LAR之前,先要说明一下有关相关系数的知识补充(自信的朋友可以略过):

岭回归,Lasso和LAR学习(二)



       r表示X,Y的相关性,r越高,X,Y就越相关,若X,Y是二维向量,就说明X,Y两个向量越接近(可以被互相表示)

通常情况下通过以下取值范围判断变量的。

相关系数     相关强度:

0.8-1.0     极强相关   

0.6-0.8     强相关                

0.4-0.6     中等程度相关                

0.2-0.4     弱相关              

0.0-0.2     极弱相关或无相关

 

 

    好了,如果这里我们假设Xi,Yi与,计算的结果为二维单位向量,再反观r的计算公式:

 岭回归,Lasso和LAR学习(二)岭回归,Lasso和LAR学习(二)

        该手稿转自http://f.dataguru.cn/thread-448966-1-1.html(炼数成金),可以发现r最终就是X,Y标准化后的夹角余弦值。 所以夹角越小,cosθ就越大,越接近1,即表示相关系数越大。(也可以解释相关系数的取值范围[-1,1])

好了解释完相关系数,就让我们正式进入LAR的学习。

LAR(最小角回归) 

    Least Angel Regression Efron于2004年提出的一种变量选择的方法,类似于向前逐步回(Forward Stepwise)的形式。是lasso regression的一种高效解法。

向前逐步回归(Forward Stepwise)不同点在于,Forward Stepwise 每次都是根据选择的变量子集,完全拟合出线性模型,计算出RSS,再设计统计量(如AIC)对较高的模型复杂度作出惩罚

LAR每次先找出和因变量相关度最高的那个变量, 再沿着LSE的方向一点点调整这个predictor的系数,在这个过程中,这个变量和残差的相关系数会逐渐减小,等到这个相关性没那么显著的时候,就要选进新的相关性最高的变量,然后重新沿着LSE的方向进行变动。而到最后,所有变量都被选中,就和LSE相同了。

这里的LSE我觉得就是Least-Squares Coefficient

岭回归,Lasso和LAR学习(二)

翻译算法:

1,样本因变量r=Y-向量(中心化),.

2,找到和r向量夹角最小的向量Xi,记最初夹角为θ0(图中即角1),βi记为(r-Xi)和Xi的余弦值记为cosθi=。当βi(Xi的系数,用于控制Xi的长短)从cosθ0到cos90的范围内变化时(途中X1长度由0到垂直交点),θ也会变大。

3,这时,当夹角θj (图中角2) βiXi,Xj> 和θi(角3)一样大时(三维坐标),就把Xj向量也加入模型。同时改变βi,βj的系数,即在θj  >的角平分线上继续前进。

4,重复3步骤,直到所有X分量都被包含。

解释图:

岭回归,Lasso和LAR学习(二)

岭回归,Lasso和LAR学习(二)

   这里说明一个问题,由于开始找的X1向量是与r夹角最小的,在角3变化时,一定能达到角2的值(假设X分量与r都是正相关)。

        如此如此,就可以依次求出相关性由高到低的X变量,得到最优解。观察过程图可以发现几个变量正好是逐个合并,按照新的方向前进。

        解释完LAR算法,我们来比较一下,Lasso的普通求解方式和LAR的区别:

        发现两种求解的结果近似相同,但LAR的求解方法效率更高,速度更快。至于背后的原理,这里略过不提。

接下来,我们用统计语言R进行实际操作一下。​

    首先要在R语言中安装LARS包​​

>install.packages("lars")​

>library(lars)​

    用Longley数据​​

>w=as.matrix(longley)

> laa=lars(x=w[, 2:7],y=w[,1])​

> plot(laa)​

    得到lasso图​

岭回归,Lasso和LAR学习(二) 填写图片摘要(选填)

可以调用laa模型,观察去除的变量的过程。​

>laa​

岭回归,Lasso和LAR学习(二) 填写图片摘要(选填)

上图可以发现,在第6步后,出现反复进出的变量值,说明这些变量存在震荡,应该去除。最后观察残差值​

>summary(laa)​

岭回归,Lasso和LAR学习(二) 填写图片摘要(选填)  

cp​值越小越好,最后看第8步,去掉5,6号变量。至此,删选变量过程结束。最终我们需要的变量是1,2,3,4。岭回归,Lasso和LAR学习(二)

    部分内容参考《炼数成金》机器学习,M03课程pdf。炼数成金网站:http://www.dataguru.cn/

猜你喜欢

转载自blog.csdn.net/u012559269/article/details/80554804