Interprétation des tracés de traces variables LASSO


15

Je suis nouveau dans le glmnetpackage et je ne sais toujours pas comment interpréter les résultats. Quelqu'un pourrait-il m'aider à lire le tracé de trace suivant?

Le graphique était obtenu en exécutant ce qui suit:

library(glmnet)
return <- matrix(ret.ff.zoo[which(index(ret.ff.zoo)==beta.df$date[2]), ])
data   <- matrix(unlist(beta.df[which(beta.df$date==beta.df$date[2]), ][ ,-1]), 
                 ncol=num.factors)
model  <- cv.glmnet(data, return, standardize=TRUE)

op <- par(mfrow=c(1, 2))
plot(model$glmnet.fit, "norm",   label=TRUE)
plot(model$glmnet.fit, "lambda", label=TRUE)
par(op)

entrez la description de l'image ici

Réponses:


20

Dans les deux tracés, chaque ligne colorée représente la valeur prise par un coefficient différent dans votre modèle. Lambda est le poids donné au terme de régularisation (la norme L1), donc à mesure que lambda approche zéro, la fonction de perte de votre modèle se rapproche de la fonction de perte OLS. Voici une façon de spécifier la fonction de perte LASSO pour rendre cela concret:

βlunesso=argmin [RSS(β)+λL1-Norm(β)]

Par conséquent, lorsque lambda est très petit, la solution LASSO doit être très proche de la solution OLS et tous vos coefficients sont dans le modèle. À mesure que lambda grandit, le terme de régularisation a un effet plus important et vous verrez moins de variables dans votre modèle (car de plus en plus de coefficients auront une valeur nulle).

Comme je l'ai mentionné ci-dessus, la norme L1 est le terme de régularisation pour LASSO. Une meilleure façon de voir les choses est peut-être que l'axe des x est la valeur maximale autorisée que la norme L1 peut prendre . Donc, quand vous avez une petite norme L1, vous avez beaucoup de régularisation. Par conséquent, une norme L1 de zéro donne un modèle vide, et lorsque vous augmentez la norme L1, les variables "entreront" dans le modèle car leurs coefficients prennent des valeurs non nulles.

L'intrigue de gauche et l'intrigue de droite vous montrent essentiellement la même chose, à différentes échelles.


2
Réponse très soignée, merci! Est-il possible de déduire les "meilleurs prédicteurs" des graphiques ci-dessus, c'est-à-dire un modèle final?
Mayou

4
Non, vous devrez effectuer une validation croisée ou une autre procédure de validation pour cela; il vous indiquera quelle valeur de la norme L1 (ou de manière équivalente, quel log (lambda)) donne au modèle la meilleure capacité prédictive.
JAW

11
Si vous essayez de déterminer vos prédicteurs les plus solides, vous pouvez interpréter le graphique comme la preuve que les variables qui entrent tôt dans le modèle sont les plus prédictives et les variables qui entrent dans le modèle plus tard sont moins importantes. Si vous voulez le «meilleur modèle», celui-ci est généralement trouvé via la validation croisée. Une méthode courante pour y parvenir à l'aide du package glmnet vous a été suggérée ici: stats.stackexchange.com/a/68350/8451 . Je vous recommande fortement de lire le court chapitre du Lasso dans ESLII (3.4.2 et 3.4.3), qui peut être téléchargé gratuitement: www-stat.stanford.edu/~tibs/ElemStatLearn
David Marx

@David Marx, à quoi se réfèrent les chiffres en haut de l'intrigue? comment choisir le meilleur modèle via la validation croisée.
jeza

@DavidMarx fait un bout de temps, mais pour quiconque se pose la question, c'est le nombre de coefficients à ce poids qui ne sont pas à valeur nulle.
Ian Belcher
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.