【发布时间】:2013-02-08 10:50:41
【问题描述】:
我对 cv.lars 有疑问。下面是我使用的数据的描述:
is.numeric(Y$Y1)
[1] TRUE
length(Y$Y1)
[1] 589
dim(Training_XX[7:ncol(Training_XX)])
[1] 589 5677
我已经使用 lars 包运行了 lasso。我的代码如下:
LASSO_1<-lars(as.matrix(X[7:ncol(X)]),
Y$Y1,type=c("lasso"),
normalize=TRUE, use.Gram=FALSE).
上述过程似乎运行良好。但是,当我尝试对 lambda 值进行 交叉验证 时,我收到以下错误:
Error in if (zmin < gamhat) { : missing value where TRUE/FALSE needed
我的交叉验证代码是:
CV<-cv.lars(as.matrix(X[7:ncol(X)]),Y$Y1,use.Gram=FALSE,max.steps=500)
lambda_Y1=CV$index[which.min(CV$cv)]
有人知道发生了什么吗?我真的不知道那个错误是什么意思,我的数据(和/或代码)有什么问题。
【问题讨论】:
-
不是您问题的答案,而是尝试使用glmnet。它有套索(作为弹性网的一个特例),而且速度更快。
-
你说的太对了!!!没想到……
-
我只设置了 a=1 就得到了套索,对吗?如果 glmnet lasso 和 lars lasso 给出相同或非常相似的结果(它们应该),你现在是否?而且计算时间...lars 需要这么长时间!!GLMNET 非常快,非常感谢!
-
阅读
?glmnet中的文档,它非常具体地说明了获取套索所需的alpha的值。另外,关于这两种算法的相似性,也可以通过一些小的测试示例轻松验证。并不是我不想回答你的问题,而是当你自己很容易回答这些问题时,你应该更喜欢这样,而不是像我这样在互联网上信任一些随机的人。享受新发现的速度! :-)
标签: r lasso-regression lars