2016-07-15 9 views
1

これは私が何が起きているのか不明確な不思議な問題です。私がcv.glmnetを使用するとき、lambdaのシーケンスを入力しますが、時には適合モデルで異なるシーケンスを与えるように見えることがあります。私は平均MSE vsラムダカーブをk-foldランからたくさん見つけようとしているので、これは私のために多くの問題を引き起こしています。今、私が持っている:入力よりもラムダ値が異なるシーケンスを与えるglmnet

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 $ラムダとridge_resultます$ CVM時々99個の要素の代わりに、100 Iがなぜ分からないですベクトルを与えます。私が得ることができるどんな助けにも感謝します。

答えて

0

glmnetは非常によく書かれており、あなたの人生をより楽にしようとしている背景がたくさんあります。

  1. 折り目がランダムにあなたはこの時々ではなく他の人を見ている理由を説明するたびに、選択されています。この場合、私が遊んで二つの要因があると思います。 glmnet vignetteから
  2. 、「プログラムは `%devの%は、次の1つのラムダからsufficently変更しない初期の場合は停止します(通常はパスの終わり近く。)」

のこれら2つの機能を組み合わせあなたが見ている結果に結びつきます。

実際には、cv.glmnetはログスケールでラムダスケールを生成するので、自分のシリーズではなく、nlambdaを提供することをお勧めします。

関連する問題