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

Mayou
la source

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.

David Marx
la source
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