Que conclure de cette intrigue au lasso (glmnet)

19

Voici le tracé de glmnet avec alpha par défaut (1, donc lasso) en utilisant mtcarsl'ensemble de données dans R avec mpgcomme DV et d'autres comme variables prédictives.

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

entrez la description de l'image ici

Que pouvons-nous conclure de ce graphique concernant différentes variables, en particulier am, cylet wt(lignes rouges, noires et bleu clair)? Comment formulerions-nous le résultat dans un rapport à publier?

J'ai pensé à suivre:

  1. wtest le prédicteur le plus important de mpg. Il affecte négativement le mpg.

  2. cylest un faible prédicteur négatif de mpg.

  3. ampeut être un prédicteur positif de mpg.

  4. D'autres variables ne sont pas des prédicteurs robustes de mpg.

Merci pour vos réflexions à ce sujet.

(Remarque: cylest la ligne noire qui n'atteint pas 0 jusqu'à ce qu'elle soit très proche.)

Edit: ce qui suit est un tracé (mod, xvar = 'lambda') qui montre l'axe des x dans l'ordre inverse du tracé ci-dessus:

entrez la description de l'image ici

(PS: Si vous trouvez cette question intéressante / importante, veuillez la voter;)

rnso
la source
On dirait que vous avez oublié une virgule avant -1dans glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Richard Hardy
Si la virgule n'est pas donnée, R suppose que le nombre est un numéro de colonne, donc cela fonctionne.
rnso
Sympa, je n'avais pas fait ça avant.
Richard Hardy
2
@RichardHardy soyez prudent; ce comportement est différent pour les trames de données et les matrices. Un bloc de données est une liste, et chaque colonne est un élément de cette liste, my_data_frame[1]renvoie donc un bloc de données avec une colonne, tandis que my_data_frame[[1]]et les my_data_frame[, 1]deux renvoient un vecteur qui est pas "contenu" par un bloc de données. Matrices, cependant, sont en fait des vecteurs juste à plat avec un attribut spécial qui permet d'y accéder R comme une grille, donc my_matrix[1], my_matrix[1, 1]et my_matrix[[1]]retournerez tous le premier élément de my_matrix. my_matrix[, 1] renvoie la première colonne.
shadowtalker
2
Je viens de mentionner que la fonction plot_glmnet dans le package plotmo donne des tracés de coefficient légèrement meilleurs car elle prend en charge le surplotage des étiquettes et d'autres détails. Des exemples peuvent être trouvés dans le chapitre 6 dans la vignette plotres .
Stephen Milborrow

Réponses:

39

λJournal(λ)je|βje|

À cette fin, j'ai créé des données corrélées et non corrélées pour démontrer:

x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]

sigma <- matrix(c(  1, -.5,   0,
                  -.5,   1, -.5,
                    0, -.5,   1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]

Les données x_uncorront des colonnes non corrélées

> round(cor(x_uncorr), 2)
     [,1]  [,2]  [,3]
[1,] 1.00  0.01  0.00
[2,] 0.01  1.00 -0.01
[3,] 0.00 -0.01  1.00

tout x_corra une corrélation prédéfinie entre les colonnes

> round(cor(x_corr), 2)
      [,1]  [,2]  [,3]
[1,]  1.00 -0.49  0.00
[2,] -0.49  1.00 -0.51
[3,]  0.00 -0.51  1.00

Voyons maintenant les tracés du lasso pour ces deux cas. D'abord les données non corrélées

gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)

entrez la description de l'image ici

Quelques caractéristiques se démarquent

  • Les prédicteurs entrent dans le modèle dans l'ordre de leur amplitude de véritable coefficient de régression linéaire.
  • je|βje|je|βje|
  • Lorsqu'un nouveau prédicteur entre dans le modèle, il affecte de manière déterministe la pente du chemin de coefficient de tous les prédicteurs déjà présents dans le modèle. Par exemple, lorsque le deuxième prédicteur entre dans le modèle, la pente du premier chemin de coefficient est réduite de moitié. Lorsque le troisième prédicteur entre dans le modèle, la pente du chemin de coefficient est un tiers de sa valeur d'origine.

Ce sont tous des faits généraux qui s'appliquent à la régression au lasso avec des données non corrélées, et ils peuvent tous être prouvés à la main (bon exercice!) Ou trouvés dans la littérature.

Permet maintenant de faire des données corrélées

gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)

entrez la description de l'image ici

Vous pouvez lire certaines choses de ce complot en le comparant au cas non corrélé

  • Les premier et deuxième trajets de prédicteurs ont la même structure que le cas non corrélé jusqu'à ce que le troisième prédicteur entre dans le modèle, même s'ils sont corrélés. C'est une particularité du cas des deux prédicteurs, que je peux expliquer dans une autre réponse s'il y a un intérêt, cela m'emmènerait un peu loin de la discussion actuelle.
  • |βje|est trouvé.

Alors maintenant, regardons votre tracé à partir du jeu de données des voitures et lisons certaines choses intéressantes (j'ai reproduit votre tracé ici afin que cette discussion soit plus facile à lire):

Un mot d'avertissement : j'ai écrit l'analyse suivante basée sur l'hypothèse que les courbes montrent les coefficients standardisés , dans cet exemple, ils ne le font pas. Les coefficients non normalisés ne sont pas sans dimension et ne sont pas comparables, de sorte qu'aucune conclusion ne peut en être tirée en termes d'importance prédictive. Pour que l'analyse suivante soit valide, veuillez faire comme si le tracé correspond aux coefficients standardisés, et veuillez effectuer votre propre analyse sur des chemins de coefficients standardisés.

entrez la description de l'image ici

  • Comme vous le dites, le wtprédicteur semble très important. Il entre en premier dans le modèle et descend lentement et régulièrement jusqu'à sa valeur finale. Il a quelques corrélations qui en font un trajet légèrement cahoteux, amen particulier semble avoir un effet drastique quand il pénètre.
  • amest également important. Il arrive plus tard et est corrélé avec wt, car il affecte la pente de wtmanière violente. Il est également corrélé avec carbet qsec, car nous ne voyons pas le ramollissement prévisible de la pente lorsque ceux-ci entrent. Une fois ces quatre variables entrées, nous faisons voyons le beau modèle décorrélé, il semble donc être décorrélée avec tous les facteurs prédictifs à la fin.
  • Quelque chose entre à environ 2,25 sur l'axe des X, mais son chemin lui-même est imperceptible, vous ne pouvez le détecter que par son affect aux paramètres cylet wt.
  • cylest assez fascinant. Il entre en deuxième position, il est donc important pour les petits modèles. Après d'autres variables, et surtout amentrer, ce n'est plus si important, et sa tendance s'inverse, finissant par être presque supprimée. Il semble que l'effet de cylpuisse être complètement capturé par les variables qui entrent à la fin du processus. Qu'il soit plus approprié d'utiliser cyl, ou le groupe complémentaire de variables, dépend vraiment du compromis biais-variance. Le fait d'avoir le groupe dans votre modèle final augmenterait considérablement sa variance, mais il se peut que le biais le plus faible le compense!

C'est une petite introduction à la façon dont j'ai appris à lire les informations de ces tracés. Je pense que ce sont des tonnes de plaisir!

Merci pour une excellente analyse. Pour faire un rapport en termes simples, diriez-vous que wt, am et cyl sont les 3 prédicteurs les plus importants du mpg. De plus, si vous souhaitez créer un modèle de prédiction, lesquels inclurez-vous en fonction de cette figure: wt, am et cyl? Ou une autre combinaison. De plus, vous ne semblez pas avoir besoin du meilleur lambda pour l'analyse. N'est-ce pas important comme dans la régression de crête?

Je dirais que les arguments en faveur wtet amsont clairs, ils sont importants. cylest beaucoup plus subtil, il est important dans un petit modèle, mais pas du tout pertinent dans un grand.

Je ne serais pas en mesure de déterminer quoi inclure sur la seule base du chiffre, il faut vraiment répondre au contexte de ce que vous faites. On pourrait dire que si vous voulez un modèle à trois prédicteurs wt, ametcyl sont de bons choix, car ils sont pertinents dans le grand schéma des choses, et devrait finir par avoir la taille des effets raisonnables dans un petit modèle. Ceci est basé sur l'hypothèse que vous avez une raison externe de vouloir un petit modèle à trois prédicteurs.

Il est vrai que ce type d'analyse couvre l'ensemble du spectre des lambdas et vous permet de supprimer les relations sur une gamme de complexités de modèle. Cela dit, pour un modèle final, je pense que le réglage d'un lambda optimal est très important. En l'absence d'autres contraintes, j'utiliserais certainement la validation croisée pour trouver où le long de ce spectre se trouve la lambda la plus prédictive, puis j'utiliserais cette lambda pour un modèle final et une analyse finale.

λ

Dans l'autre sens, il existe parfois des contraintes extérieures sur la complexité d'un modèle (coûts de mise en œuvre, systèmes hérités, minimalisme explicatif, interprétabilité commerciale, patrimoine esthétique) et ce type d'inspection peut vraiment vous aider à comprendre la forme de vos données, et les compromis que vous faites en choisissant un modèle plus petit qu'optimal.

Matthew Drury
la source
Merci pour une excellente analyse. Pour faire un rapport en termes simples, diriez-vous que wt, am et cyl sont les 3 prédicteurs les plus importants du mpg. De plus, si vous souhaitez créer un modèle de prédiction, lesquels inclurez-vous en fonction de cette figure: wt, am et cyl? Ou une autre combinaison. De plus, vous ne semblez pas avoir besoin du meilleur lambda pour l'analyse. N'est-ce pas important comme dans la régression de crête?
rnso
@rnso J'ai joint une réponse à ma réponse.
Matthew Drury
Peut-être que «patrimoine» est censé être «parcimonie»?
Hatshepsut
@Matthew Drury, j'ai peu de choses dont je ne suis pas sûr, je vous serais reconnaissant de votre clarification, # vous avez écrit "par exemple lorsque le deuxième prédicteur entre" comment puis-je savoir à partir de l'intrigue le deuxième prédicteur ou le troisième prédicteur / entre . ## quand puis-je dire que ces prédicteurs sont importants ou non. ### enfin, comment choisir le meilleur modèle ce raccord. De plus, la légende / étiquette est-elle incluse automatiquement. (J'ai implémenté cet exemple dans R)
jeza
5
+6, j'ai évidemment manqué cela quand il est sorti. Un travail vraiment sympa.
gung - Rétablir Monica