【发布时间】:2018-08-19 19:51:37
【问题描述】:
我正在做 lasso 回归,我想通过使用 Leave one out cross validation 选择一些最能解释我的模型的 beta 系数。 这是我的代码:
library(glmnet)
set.seed(19875)
n=100
p=500
real_p=15
x=matrix(rnorm(n*p), nrow=n, ncol=p)
y=as.matrix(apply(x[, 1:real_p], 1, sum) + rnorm(n))
lasso=glmnet(x,y,alpha = 1)
plot(lasso)
#computing loocv
cvlassofit<-cv.glmnet(x,y, nfolds =n, grouped = FALSE )
plot(cvlassofit)
然后我想添加一条垂直线,用于选择均方误差较小的最佳系数。情节应如下所示:
在我执行 CV 的代码部分中,我得到了具有最小 mse(均方误差) 的最佳 lambda。 剧情如下:
现在,我能否以某种方式基于 lambda 获得 L1 范数的值,以便在第一个图中添加一条垂直线?或者在最后一个情节中,我可以做一个 L1 norm 来代替 log(lambda) 吗?
【问题讨论】:
标签: r glmnet lasso-regression