解读LASSO变量迹线图


15

我是该glmnet软件包的新手,但仍不确定如何解释结果。谁能帮助我阅读以下跟踪图?

通过运行以下命令获得该图:

library(glmnet)
return <- matrix(ret.ff.zoo[which(index(ret.ff.zoo)==beta.df$date[2]), ])
data   <- matrix(unlist(beta.df[which(beta.df$date==beta.df$date[2]), ][ ,-1]), 
                 ncol=num.factors)
model  <- cv.glmnet(data, return, standardize=TRUE)

op <- par(mfrow=c(1, 2))
plot(model$glmnet.fit, "norm",   label=TRUE)
plot(model$glmnet.fit, "lambda", label=TRUE)
par(op)

在此处输入图片说明

Answers:


20

在两个图中,每条彩色线代表模型中不同系数所取的值。Lambda是赋予正则化项(L1范数)的权重,因此当lambda接近零时,模型的损失函数将接近OLS损失函数。这是您可以指定LASSO损失函数以使其具体的一种方法:

β一种ssØ=精氨酸 [[R小号小号β+λL1-标准β]

因此,当λ非常小时,LASSO解应与OLS解非常接近,并且所有系数都在模型中。随着lambda的增长,正则化项会产生更大的影响,并且您会在模型中看到更少的变量(因为越来越多的系数将为零)。

如上所述,L1规范是LASSO的正则化术语。也许更好的观察方法是x轴是L1规范可以采用最大允许值。因此,当您的L1范数较小时,您将进行很多正则化。因此,L1范数为零将给出一个空模型,并且随着L1范数的增加,变量将“输入”模型,因为它们的系数采用非零值。

左边的图和右边的图基本上是向您显示同一事物,只是比例不同。


2
非常简洁的答案,谢谢!是否可以从上面的图表中得出“最佳预测变量”,即最终模型?
Mayou

4
不,您需要为此进行交叉验证或其他验证程序;它会告诉您L1范数的哪个值(或等效地,哪个logλ)产生具有最佳预测能力的模型。
凌晨

11
如果您要确定最强的预测因子,则可以将图解释为证据,即早进入模型的变量具有最高的预测性,而晚进入模型的变量则不那么重要。如果您想要“最佳模型”,通常可以通过交叉验证找到。在这里向您建议了使用glmnet软件包实现此目的的常用方法:stats.stackexchange.com/a/68350/8451。我强烈建议您阅读ESLII中的套索短篇(3.4.2和3.4.3),可以免费下载:www-stat.stanford.edu/~tibs/ElemStatLearn
David Marx

@David Marx,情节顶部的数字是什么?如何通过交叉验证选择最佳模型。
jeza

@DavidMarx已经有一段时间了,但是对于其他任何人都想知道的,那就是该权重下的系数的数量不为零。
伊恩·贝尔彻
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.