リッジ、なげなわ、エラスティックネットで選択したモデルを比較したいと思います。以下の図は、3つの方法すべてを使用した係数パスを示しています。リッジ(図A、アルファ= 0)、投げ縄(図B、アルファ= 1)、弾性ネット(図C、アルファ= 0.5)。最適なソリューションは、クロス検証に基づいて選択されたラムダの選択値に依存します。
これらのプロットを見ると、エラスティックネット(図C)がグループ化効果を示すことが予想されます。ただし、提示されたケースでは明確ではありません。投げ縄とエラスティックネットの係数パスは非常に似ています。この理由は何でしょうか?それは単なるコーディングミスですか?Rで次のコードを使用しました。
library(glmnet)
X<- as.matrix(mydata[,2:22])
Y<- mydata[,23]
par(mfrow=c(1,3))
ans1<-cv.glmnet(X, Y, alpha=0) # ridge
plot(ans1$glmnet.fit, "lambda", label=FALSE)
text (6, 0.4, "A", cex=1.8, font=1)
ans2<-cv.glmnet(X, Y, alpha=1) # lasso
plot(ans2$glmnet.fit, "lambda", label=FALSE)
text (-0.8, 0.48, "B", cex=1.8, font=1)
ans3<-cv.glmnet(X, Y, alpha=0.5) # elastic net
plot(ans3$glmnet.fit, "lambda", label=FALSE)
text (0, 0.62, "C", cex=1.8, font=1)
エラスティックネット係数のパスをプロットするために使用されるコードは、ridgeおよびlassoの場合とまったく同じです。唯一の違いはアルファの値です。エラスティックネット回帰のアルファパラメーターは、対応するラムダ値の最小MSE(平均二乗誤差)に基づいて選択されました。
ご協力ありがとうございました !