这是一个奇怪的问题,我不确定发生了什么。当我使用cv.glmnet时,我输入了一系列lambda,但有时似乎在拟合模型中给出了不同的序列。我试图从一堆k-fold运行中找到一条平均的MSE vs lambda曲线,所以这给我带来了很多问题。现在,我有:
ridge = function(trax, tray, lambda, folds)
{
folds_ids = array(dim=length(tray))
for (f in 1:length(folds))
{
folds_ids[folds[[f]]] = f
}
cvfit = cv.glmnet(trax,
tray,
alpha=0,
lambda=lambda,
family='binomial',
foldid=folds_ids,
parallel=TRUE)
return(cvfit)
}
ridge_lambda = seq(5e-1,1e-5,length=100)
ridge_result = ridge(trax=training_featr,
tray=training_class,
lam = ridge_lambda,
folds = kfolds)
现在,ridge_result $ lambda和ridge_result $ cvm有时会给出99个元素而不是100个向量。我不知道为什么。我感谢任何帮助。
答案 0 :(得分:0)
glmnet
写得很好,幕后有很多事情要努力让你的生活更轻松。在这种情况下,我认为有两个因素在起作用:
将您最终获得的套餐的这两项功能与您所看到的结果相结合。
在实践中,我建议提供和nlambda
而不是您自己的系列,因为这是作者推荐的,因为cv.glmnet
将为您生成对数刻度的lambda系列。 / p>