【问题标题】:Error in cv.lars in RR中的cv.lars错误
【发布时间】: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


【解决方案1】:

我遇到了同样的错误,问题(至少在我的情况下)是我的数据矩阵的两列是相等的。看来 lars 不能很好地处理这个问题。只需过滤相关性非常高的列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-17
    • 2018-01-31
    • 2013-07-06
    • 2015-11-04
    • 2014-10-22
    • 2015-01-29
    • 2014-09-09
    • 2018-04-17
    相关资源
    最近更新 更多