4

glmnetパッケージは初めてで、公開された研究論文の提案に基づいて関数をR指定したいと考えていました。ドキュメントは、パラメーターとして減少するシーケンスを提供できることを示唆しています。ただし、ドキュメントには、これを行う方法の例はありません。 lambdaglmnet.cvlambdas

誰かがこれを行う方法を提案できれば、非常に感謝しています。関数に 100 個の奇数値 ( の既定値nlambda) のベクトルを渡す必要がありますか? このベクトルの最小値と最大値にはどのような制限が必要ですか? また、ベクトルを指定する際の注意点nvarsなどはありますか?nobs

前もって感謝します。

4

2 に答える 2

7

次のようにグリッドを定義できます。

    grid=10^seq(10,-2,length=100) ##get lambda sequence
    ridge_mod=glmnet(x,y,alpha=0,lambda=grid)
于 2015-02-28T08:40:45.830 に答える
0

元のドキュメントでは十分に説明されていませんが、これはかなり簡単です ;)

以下ではcoxファミリーを使用しましたが、必要に応じて変更できます

my_cvglmnet_fit <- cv.glmnet(x=regression_data, y=glmnet_response, family="cox", maxit = 100000)

次に、cv.glmnet によって作成された適合オブジェクトをプロットできます。プロットでは、ラムダが最小の場所を簡単に確認できます。これらの縦の点線の 1 つは最小ラムダで、もう 1 つは 1se です。

plot(my_cvglmnet_fit)

次の行は、ゼロ以外の係数とそれに対応する値を確認するのに役立ちます。

coef(my_cvglmnet_fit, s = "lambda.min")[which(coef(my_cvglmnet_fit, s = "lambda.min") != 0)]  # the non zero coefficients
colnames(regression_data)[which(coef(my_cvglmnet_fit, s = "lambda.min") != 0)]  # The features that are selected

ここに役立つリンクがいくつかあります:
http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
http://blog.revolutionanalytics.com/2013/05/hastie-glmnet.html

于 2015-01-15T15:29:47.537 に答える