glmnet
R のパッケージを使用して、0から1のグリッドでラムダ値を選択することにより、ヘルスケアデータセットに対してElastic-Netロジスティック回帰を実行しています。短縮コードは次のとおりです。
alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}
これは、からの増分でのアルファの各値の平均交差検証誤差を出力します。1.0 0.1
[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874
私が文献で読んだものに基づいて、最適な選択は、cvエラーが最小化される場所です。しかし、アルファの範囲にわたってエラーには多くの変動があります。私はいくつかの局所的な最小値を見ていますが、グローバルな最小誤差はfor です。0.1942612
alpha=0.8
一緒に行くのは安全alpha=0.8
ですか?又は、変形所与、Iは、再実行する必要がありcv.glmnet
、よりクロスバリデーションひだ(例えば、との代わりに)、または、おそらくより多くのの間のインクリメント及びCVエラーパスの鮮明な画像を取得しますか?10 αalpha=0.0
1.0
cv.glmnet()
を渡さずに実行しないでfoldids
ください。
caret
アルファ&ラムダの両方のための品種とチューニングを繰り返し行うことができ、パッケージを(支持体には、処理をマルチコア!)。記憶から、glmnet
ドキュメントのアドバイスは、あなたがここで行っている方法でのアルファのチューニングに対するアドバイスだと思う。が提供するラムダのチューニングに加えて、ユーザーがアルファのチューニングを行っている場合は、foldidsを固定しておくことをお勧めしcv.glmnet
ます。