解释 LASSO 变量跟踪图

机器算法验证 r 数据可视化 解释 套索 网络
2022-01-21 16:11:41

我是这个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)

在此处输入图像描述

1个回答

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

βlasso=argmin [RSS(β)+λL1-Norm(β)]

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

正如我上面提到的,L1 范数是 LASSO 的正则化项。也许更好的看待它的方式是 x 轴是L1 范数可以采用的最大允许值所以当你有一个小的 L1 范数时,你有很多正则化。因此,L1 范数为零会给出一个空模型,并且当您增加 L1 范数时,变量将“进入”模型,因为它们的系数采用非零值。

左边的情节和右边的情节基本上向你展示了相同的东西,只是在不同的尺度上。