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)]
作るために必ず結果が再現可能Iですset.seed(1)
。結果は大きく変わります。まったく同じコード100を実行して、結果がどの程度変動するかを確認しました。98/100の実行では、1つの特定の予測子が常に選択されていました(時にはそれだけで); 通常は50/100回、他の予測変数が選択されました(係数はゼロ以外)。
だから、クロス検証が実行されるたびに、おそらくフォールドの最初のランダム化が重要であるため、異なる最良のラムダを選択するだろうと私に言います。他の人はこの問題を見ました(CV.glmnet結果)が、提案された解決策はありません。
私はおそらく、98/100を示すものはおそらく他のすべてと非常に高い相関関係があると考えていますか?LOOCV()を実行するだけで結果は安定しますが、\ text {nfold} <nの場合になぜこれらの変数が変動するのか興味があります。
set.seed(1)
一度あなたがcv.glmnet()
100回実行するということですか それは再現性のための素晴らしい方法論ではありません。より良いset.seed()
各実行の前に右、または他の実行間foldidsを一定に保ちます。への各呼び出しcv.glmnet()
は、sample()
N回呼び出しています。したがって、データの長さが変わると、再現性が変わります。