Trajectoires des coefficients - comparaison de la crête, du lasso et de la régression nette élastique


13

Je voudrais comparer des modèles sélectionnés avec faîtage, lasso et filet élastique. La figure ci-dessous montre les chemins des coefficients en utilisant les 3 méthodes: crête (figure A, alpha = 0), lasso (figure B; alpha = 1) et filet élastique (figure C; alpha = 0,5). La solution optimale dépend de la valeur sélectionnée de lambda, qui est choisie en fonction de la validation croisée.

Profils de coefficients pour la régression de la crête (A, alpha = 0), du lasso (B, alpha = 1) et du filet élastique (C, alpha = 0,5).  Les nombres en haut du graphique représentent la taille des modèles. La solution optimale dépend de la valeur sélectionnée de lambda.  La sélection de lambda est basée sur une validation croisée.

En regardant ces graphiques, je m'attendrais à ce que le filet élastique (figure C) présente un effet de regroupement. Cependant, ce n'est pas clair dans le cas présenté. Le chemin des coefficients pour le lasso et le filet élastique sont très similaires. Quelle pourrait être la raison de cela ? Est-ce juste une erreur de codage? J'ai utilisé le code suivant dans 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)

Le code utilisé pour tracer les chemins des coefficients nets élastiques est exactement le même que pour l'arête et le lasso. La seule différence réside dans la valeur de l'alpha. Le paramètre alpha pour la régression nette élastique a été sélectionné sur la base du MSE (erreur quadratique moyenne) le plus bas pour les valeurs lambda correspondantes.

Merci de votre aide !

Réponses:


5

p<npn

Si les caractéristiques d'origine ne sont pas très corrélées, je dirais qu'il est raisonnable que Lasso fonctionne de manière similaire à Elastic Net en termes de chemin de coefficients. En regardant la documentation du paquet glmnet , je ne vois pas non plus d'erreur dans votre code.


Merci beaucoup pour votre commentaire. J'ai commencé à penser à l'approche de régularisation pour sélectionner le meilleur modèle, car j'ai observé une multicolinéarité sévère entre mes variables (VIF >> 10). Beaucoup d'entre eux étaient corrélés au niveau de> 0,8. Je m'attendais donc à ce que le filet élastique fonctionne différemment du lasso et montre un effet de regroupement (dans le cas de variables corrélées).
débutant

Vous devrez peut-être simplement utiliser une pénalité de crête plus forte?
dcl

avez-vous vérifié la multicolinéarité ajustée df? les variables de facteur ont normalement une multicolinéarité car elles s'excluent mutuellement. Je ne sais pas si ce type de multicolinéarité pose des problèmes avec le lasso.
Bakaburg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.