cv.glmnet
Öngörüleri bulmak için kullanıyorum . Kullandığım kurulum aşağıdaki gibidir:
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)]
Sonuçların tekrarlanabilir olduğundan emin olmak için I set.seed(1)
. Sonuçlar oldukça değişkendir. Sonuçların ne kadar değişken olduğunu görmek için aynı kodu 100 koştum. 98/100 çalışmalarında her zaman belirli bir öngörücü seçildi (bazen sadece kendi başına); diğer belirleyiciler genellikle 50/100 kez seçildi (eş-etkin sıfır değildi).
Bu yüzden bana çapraz doğrulama her çalıştığında muhtemelen farklı bir en iyi lambda seçeceğini söylüyor, çünkü kıvrımların ilk randomizasyonu önemli. Diğerleri bu sorunu gördü ( CV.glmnet sonuçları ), ancak önerilen bir çözüm yok.
Ben belki 98/100 gösteren biri muhtemelen diğerleriyle oldukça yüksek ilişkili olduğunu düşünüyorum? Sonuçlar do Sadece (LOOCV çalıştırırsanız stabilize ), ancak bunlar değişken yüzden neden merak ediyorum nfold < n .
set.seed(1)
kezcv.glmnet()
100 kez koştun mu demek istiyorsun ? Bu tekrarlanabilirlik için mükemmel bir metodoloji değildir;set.seed()
her çalışmadan önce sağa doğru daha iyi , ya da katları çalışma boyunca sabit tutun. İçin yaptığınız aramaların her biri N kezcv.glmnet()
arıyorsample()
. Dolayısıyla, verilerinizin uzunluğu değişirse, yeniden üretilebilirlik değişir.