Vorrei confrontare i modelli selezionati con la cresta, il lazo e la rete elastica. La Fig. Sotto mostra i percorsi dei coefficienti usando tutti e 3 i metodi: cresta (Fig A, alfa = 0), lazo (Fig B; alfa = 1) e rete elastica (Fig C; alfa = 0,5). La soluzione ottimale dipende dal valore selezionato di lambda, che viene scelto in base alla convalida incrociata.
Osservando questi grafici, mi aspetto che la rete elastica (Fig. C) presenti un effetto di raggruppamento. Tuttavia, non è chiaro nel caso presentato. I percorsi dei coefficienti per il lazo e la rete elastica sono molto simili. Quale potrebbe essere la ragione di ciò? È solo un errore di codifica? Ho usato il seguente codice in 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)
Il codice utilizzato per tracciare percorsi di coefficienti di rete elastica è esattamente lo stesso di cresta e lazo. L'unica differenza è nel valore di alfa. Il parametro alfa per la regressione della rete elastica è stato selezionato in base all'MSE più basso (errore quadratico medio) per i corrispondenti valori lambda.
Grazie per l'aiuto !