Comment estimer le paramètre de retrait dans la régression de Lasso ou de crête avec des variables> 50K?

36

Je souhaite utiliser la régression de Lasso ou de crête pour un modèle comportant plus de 50 000 variables. Je souhaite utiliser un logiciel en mode R. Comment puis-je estimer le paramètre de retrait ( λ )?

Modifications:

Voici le point je me suis levé à:

set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000,  replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)

mydf <- data.frame(Y, X)

require(MASS)
lm.ridge(Y ~ ., mydf)

plot(lm.ridge(Y ~ ., mydf,
              lambda = seq(0,0.1,0.001)))

entrez la description de l'image ici

Ma question est la suivante: comment savoir quel est le mieux pour mon modèle?λ

John
la source
3
Le paramètre de lissage n'est pas statistiquement estimable, mais utilise pour optimiser l'ajustement hors échantillon en utilisant, par exemple, une validation croisée. Je pense que les packages standard pour LASSO et Ridge Regression in R intègrent des fonctionnalités permettant de le faire à votre place - avez-vous examiné cela?
Macro
4
Je ne suis pas d'accord - vous pouvez estimer le paramètre de lissage en utilisant une approche de modèle mixte. Les méthodes Reml existent, tout comme les méthodes bayes hiérarchiques. Vous n'avez pas besoin d'une validation croisée coûteuse.
probabilityislogic
1
@probabilityislogic merci pour l'information Ce serait bien s'il y a peu de détails dans le script pour savoir comment faire cela avec reml
John
2
Pour la régression de la crête, la validation croisée «laissez-le-sortir» est essentiellement libre (statistique PRESS d'Allen) et j'ai trouvé qu'il s'agissait d'une méthode raisonnablement bonne. Cependant, avec de telles fonctionnalités, pratiquement toutes les méthodes que vous utiliserez seront instables et une approche entièrement bayésienne marginalisant à la fois les paramètres et les paramètres de régularisation sera probablement une solution plus fiable (comme je le suggérai, probislogic). Si vous n'aimez pas les méthodes bayésiennes, utilisez ensachage et ré-estimez lambda à chaque fois.
Dikran Marsupial
2
λβklog(λ)log|XTX+λI|kβN(0,σ2λ1)σ2β=β^

Réponses:

25

La fonction cv.glmnetdu paquet R glmnetλ112α

λλcv.glmnetλlambda.minlambda.1seλtype.measure

Alternativement, le package R mgcv contient de nombreuses possibilités d’estimation avec pénalisation quadratique, y compris la sélection automatique des paramètres de pénalité. Les méthodes implémentées incluent la validation croisée généralisée et REML, comme mentionné dans un commentaire. Plus de détails peuvent être trouvés dans le livre des auteurs de package: Wood, SN (2006) Modèles additifs généralisés: une introduction avec R, CRC.

NRH
la source
1
cv.glmnetλ , lambda.minet lambda.1se(règle « un standard d'erreur »).
chl
@chl, merci pour la suggestion. J'aurais dû ajouter ça.
NRH
15

Cette réponse est spécifique à MATLAB, cependant, les concepts de base devraient être assez similaires à ceux auxquels vous êtes habitué avec R ...

Dans le cas de MATLAB, vous avez la possibilité d'exécuter le lasso avec la validation croisée activée.

Si vous le faites, la fonction lasso signalera deux valeurs de paramètre critiques

  1. La valeur lambda qui minimise l’erreur quadratique moyenne validée par la croix
  2. La valeur lambda avec la plus grande quantité de retrait dont CVMSE est dans les limites d'une erreur standard du minimum.

Vous obtenez également un joli petit tableau que vous pouvez utiliser pour inspecter la relation entre lambda et CVMSE.

entrez la description de l'image ici

En général, vous choisissez une valeur de lambda comprise entre la ligne bleue et la ligne verte.

La publication de blog suivante inclut du code de démonstration basé sur des exemples de

Tibshirani, R. (1996). Régression retrait et de la sélection via le lasso. J. Royal. Statist. Soc B., Vol. 58, n ° 1, pages 267 à 288).

http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/

Richard Willey
la source