我cv.glmnet
用来寻找预测因子。我使用的设置如下:
lassoResults<-cv.glmnet(x=countDiffs,y=responseDiffs,alpha=1,nfolds=cvfold)
bestlambda<-lassoResults$lambda.min
results<-predict(lassoResults,s=bestlambda,type="coefficients")
choicePred<-rownames(results)[which(results !=0)]
为了确保结果是可重复的,我set.seed(1)
。结果是高度可变的。我将完全相同的代码运行了 100 次,以查看结果的可变性。在 98/100 次运行中,总是选择一个特定的预测器(有时只是单独选择);选择其他预测变量(系数非零)通常为 50/100 次。
所以它告诉我,每次运行交叉验证时,它可能会选择一个不同的最佳 lambda,因为折叠的初始随机化很重要。其他人已经看到了这个问题(CV.glmnet results),但没有建议的解决方案。
我在想也许那个显示为 98/100 的那个可能与所有其他的高度相关?如果我只运行 LOOCV ( ),结果确实会时它们如此多变。