λ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_uncorr
ont 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_corr
a 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)
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)
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.
- Comme vous le dites, le
wt
pré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, am
en particulier semble avoir un effet drastique quand il pénètre.
am
est également important. Il arrive plus tard et est corrélé avec wt
, car il affecte la pente de wt
manière violente. Il est également corrélé avec carb
et 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
cyl
et wt
.
cyl
est assez fascinant. Il entre en deuxième position, il est donc important pour les petits modèles. Après d'autres variables, et surtout am
entrer, ce n'est plus si important, et sa tendance s'inverse, finissant par être presque supprimée. Il semble que l'effet de cyl
puisse ê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 wt
et am
sont clairs, ils sont importants. cyl
est 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
, am
etcyl
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.
-1
dansglmnet(as.matrix(mtcars[-1]), mtcars[,1])
.