LASSO souffre-t-il des mêmes problèmes que la régression pas à pas?

18

Les méthodes algorithmiques de sélection des variables par étapes tendent à sélectionner des modèles qui biaisent plus ou moins toutes les estimations dans les modèles de régression ( β s et leurs SE, valeurs p , statistiques F , etc.), et sont à peu près aussi susceptibles d'exclure les vrais prédicteurs qu'incluent de faux prédicteurs selon une littérature de simulation raisonnablement mature.

Le LASSO souffre-t-il de la même manière spécifique lorsqu'il est utilisé pour sélectionner des variables?

Alexis
la source
3
Je pense que oui. Frank Harrell a quelques articles à ce sujet, je pense, et il pourrait y avoir du matériel pertinent dans son livre "Stratégies de modélisation de la régression".
Richard Hardy
2
@RichardHardy +1 Je serais ravi que FrankHarrell passe et commente ou réponde. :)
Alexis
5
J'ai un nouveau discours qui aborde ce sujet. Conclusion: le lasso a une faible probabilité de sélectionner les variables "correctes". Les diapositives sont sur fharrell.com/talk/stratos19
Frank Harrell
4
Relatif à "Conclusion: le lasso a une faible probabilité de sélectionner les" bonnes "variables": il y a une section sur le même sujet dans Statistical Learning with Sparsity ( web.stanford.edu/~hastie/StatLearnSparsity_files/… ),11.4.1 Variable-Selection Consistency for the Lasso
Adrian
2
Également lié à "Conclusion: le lasso a une faible probabilité de sélectionner les variables" correctes "": voir statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf études de cas 1 et 2
Adrian

Réponses:

3

L'interprétation des probabilités des expressions fréquentistes de vraisemblance, les valeurs de p, etc. pour un modèle LASSO et la régression pas à pas ne sont pas correctes.

Ces expressions surestiment la probabilité. Par exemple, un intervalle de confiance à 95% pour un paramètre est censé dire que vous avez une probabilité de 95% que la méthode aboutisse à un intervalle avec la vraie variable de modèle à l'intérieur de cet intervalle.

Cependant, les modèles ajustés ne résultent pas d'une seule hypothèse typique, et au lieu de cela, nous sélectionnons les cerises (sélectionnez parmi de nombreux modèles alternatifs possibles) lorsque nous effectuons une régression pas à pas ou une régression LASSO.


  1. Il est peu logique d'évaluer l'exactitude des paramètres du modèle (en particulier lorsqu'il est probable que le modèle n'est pas correct).

    Dans l'exemple ci-dessous, expliqué plus loin, le modèle est adapté à de nombreux régresseurs et il «souffre» de la multicolinéarité. Il est donc probable qu'un régresseur voisin (qui est fortement corrélé) soit sélectionné dans le modèle au lieu de celui qui est réellement dans le modèle. La forte corrélation fait que les coefficients ont une grande erreur / variance (relative à la matrice (XTX)-1 ).

    Cependant, cette variance élevée due à la multicolionarité n'est pas `` vue '' dans les diagnostics comme les valeurs p ou l'erreur standard des coefficients, car ceux-ci sont basés sur une matrice de conception X plus petite avec moins de régresseurs. (et il n'y a pas de méthode simple pour calculer ce type de statistiques pour LASSO)

    Exemple: le graphique ci-dessous qui affiche les résultats d'un modèle de jouet pour un signal qui est une somme linéaire de 10 courbes gaussiennes (cela peut par exemple ressembler à une analyse en chimie où un signal pour un spectre est considéré comme une somme linéaire de plusieurs composants). Le signal des 10 courbes est équipé d'un modèle de 100 composantes (courbes gaussiennes de moyenne différente) utilisant LASSO. Le signal est bien estimé (comparer les courbes rouge et noire qui sont raisonnablement proches). Mais, les coefficients sous-jacents réels ne sont pas bien estimés et peuvent être complètement faux (comparer les barres rouges et noires avec des points qui ne sont pas les mêmes). Voir aussi les 10 derniers coefficients:

                  91     91     92     93     94     95     96     97     98     99     100
     true model   0      0      0      0      0      0      0      142.8  0      0      0
     fitted       0      0      0      0      0      0      129.7  6.9    0      0      0

    Le modèle LASSO sélectionne des coefficients qui sont très approximatifs, mais du point de vue des coefficients eux-mêmes, cela signifie une grande erreur lorsqu'un coefficient qui devrait être non nul est estimé à zéro et un coefficient voisin qui devrait être nul est estimé à être non nul. Tout intervalle de confiance pour les coefficients n'aurait que très peu de sens.

    Raccord LASSO

    exemple lasso / glmnet

    Ajustement pas à pas

    A titre de comparaison, la même courbe peut être équipée d'un algorithme pas à pas conduisant à l'image ci-dessous. (avec des problèmes similaires, les coefficients sont proches mais ne correspondent pas)

    exemple nnls

  2. Même lorsque vous considérez la précision de la courbe (plutôt que les paramètres, qui, au point précédent, est clair que cela n'a aucun sens), vous devez faire face au sur-ajustement. Lorsque vous effectuez une procédure d'ajustement avec LASSO, vous utilisez des données de formation (pour ajuster les modèles avec différents paramètres) et des données de test / validation (pour régler / trouver le meilleur paramètre), mais vous devez également utiliser un troisième ensemble séparé des données de test / validation pour connaître les performances des données.

    Une valeur de p ou quelque chose de simulaire ne fonctionnera pas parce que vous travaillez sur un modèle réglé qui est la cueillette des cerises et différent (degrés de liberté beaucoup plus grands) de la méthode d'ajustement linéaire régulière.


souffrir des mêmes problèmes que la régression pas à pas?

R2

Je pensais que la principale raison d'utiliser LASSO au lieu d'une régression pas à pas est que LASSO permet une sélection de paramètres moins gourmande, moins influencée par la multicollinarité. (plus de différences entre LASSO et pas à pas: Supériorité de LASSO sur la sélection avant / élimination arrière en termes d'erreur de prédiction de validation croisée du modèle )


Code pour l'exemple d'image

# settings
library(glmnet)
n <- 10^2        # number of regressors/vectors
m <- 2         # multiplier for number of datapoints
nel <- 10        # number of elements in the model
set.seed(1)   
sig <- 4
t <- seq(0,n,length.out=m*n)

# vectors
X <- sapply(1:n, FUN <- function(x) dnorm(t,x,sig))

# some random function with nel elements, with Poisson noise added
par <- sample(1:n,nel)
coef <- rep(0,n)
coef[par] <- rnorm(nel,10,5)^2
Y <- rpois(n*m,X %*% coef)

# LASSO cross validation
fit <- cv.glmnet(X,Y, lower.limits=0, intercept=FALSE, 
                 alpha=1, nfolds=5, lambda=exp(seq(-4,4,0.1)))
plot(fit$lambda, fit$cvm,log="xy")
plot(fit)
Yfit <- (X %*% coef(fit)[-1])

# non negative least squares 
# (uses a stepwise algorithm or should be equivalent to stepwise)
fit2<-nnls(X,Y)


# plotting
par(mgp=c(0.3,0.0,0), mar=c(2,4.1,0.2,2.1))
layout(matrix(1:2,2),heights=c(1,0.55))


plot(t,Y,pch=21,col=rgb(0,0,0,0.3),bg=rgb(0,0,0,0.3),cex=0.7,
     xaxt = "n", yaxt = "n", 
     ylab="", xlab = "",bty="n")      
#lines(t,Yfit,col=2,lwd=2)                        # fitted mean
lines(t,X %*% coef,lwd=2)                        # true mean
lines(t,X %*% coef(fit2), col=3,lwd=2)           # 2nd fit

  # add coefficients in the plot
for (i in 1:n) {
  if (coef[i] > 0) {
    lines(c(i,i),c(0,coef[i])*dnorm(0,0,sig))
    points(i,coef[i]*dnorm(0,0,sig), pch=21, col=1,bg="white",cex=1)
  }
  if (coef(fit)[i+1] > 0) {
#    lines(c(i,i),c(0,coef(fit)[i+1])*dnorm(0,0,sig),col=2)
#    points(i,coef(fit)[i+1]*dnorm(0,0,sig), pch=21, col=2,bg="white",cex=1)
  }
  if (coef(fit2)[i+1] > 0) {
    lines(c(i,i),c(0,coef(fit2)[i+1])*dnorm(0,0,sig),col=3)
    points(i,coef(fit2)[i+1]*dnorm(0,0,sig), pch=21, col=3,bg="white",cex=1)
  }

}

#Arrows(85,23,85-6,23+10,-0.2,col=1,cex=0.5,arr.length=0.1)
#Arrows(86.5,33,86.5-6,33+10,-0.2,col=2,cex=0.5,arr.length=0.1)
#text(85-6,23+10,"true coefficient", pos=2, cex=0.7,col=1)
#text(86.5-6,33+10, "fitted coefficient", pos=2, cex=0.7,col=2)

text(0,50, "signal versus position\n true mean (black), fitted with nnls (green)", cex=1,col=1,pos=4, font=2)



plot(-100,-100,pch=21,col=1,bg="white",cex=0.7,type="l",lwd=2,
     xaxt = "n", yaxt = "n", 
     ylab="", xlab = "",
     ylim=c(0,max(coef(fit)))*dnorm(0,0,sig),xlim=c(0,n),bty="n") 
#lines(t,X %*% coef,lwd=2,col=2)      

for (i in 1:n) {
  if (coef[i] > 0) {
    lines(t,X[,i]*coef[i],lty=1)
  }
  if (coef(fit)[i+1] > 0) {
#    lines(t,X[,i]*coef(fit)[i+1],col=2,lty=1)
  }
  if (coef(fit2)[i+1] > 0) {
    lines(t,X[,i]*coef(fit2)[i+1],col=3,lty=1)
  }

}

text(0,33, "illustration of seperate components/curves", cex=1,col=1,pos=4, font=2)
Sextus Empiricus
la source
+1 Merci Martjin Wterings. Pouvez-vous amplifier un peu le graphique? Qu'est-ce qui est montré sur les axes, quelle couleur représente, etc.?
Alexis
En fait, le graphique n'est pas un cas de LASSO. Cependant, c'est un exemple de la façon dont un modèle peut être une somme de plusieurs composantes, par exemple une courbe gaussienne (où les courbes avec une moyenne légèrement différente sont très corrélées) et un changement dans la moyenne de ces composantes signifie un grand changement pour le coefficient mais pas tant pour la courbe.
Sextus Empiricus
1
Les barres sont les valeurs des coefficients pour le modèle vrai et le modèle ajusté. C'est l'image pour laquelle je me souviens de ce principe. Je vais faire un exemple moi-même, qui peut le montrer plus clairement (je soupçonne que LASSO, étant moins gourmand, pourrait mieux performer en représentant les vrais coefficients).
Sextus Empiricus
0

J'ai un nouveau discours qui aborde ce sujet. Conclusion: le lasso a une faible probabilité de sélectionner les variables "correctes". Les diapositives sont disponibles sur http://fharrell.com/talk/stratos19

- Frank Harrell

Relatif à "Conclusion: le lasso a une faible probabilité de sélectionner les" bonnes "variables": il y a une section sur le même sujet dans Statistical Learning with Sparsity ( https://web.stanford.edu/~hastie/StatLearnSparsity_files/SLS_corrected_1. 4.16.pdf ), 11.4.1 Variable-Selection Consistency for the Lasso

- Adrian

Également lié à "Conclusion: le lasso a une faible probabilité de sélectionner les variables" correctes "": voir https://statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf études de cas 1 et 2

- Adrian

mkt - Réintégrer Monica
la source
1
J'ai copié ces commentaires comme une réponse wiki communautaire parce qu'ils sont, plus ou moins, des réponses à cette question. Nous avons un écart dramatique entre les réponses et les questions. Au moins une partie du problème est que certaines questions reçoivent une réponse dans les commentaires: si les commentaires qui ont répondu à la question étaient des réponses à la place, nous aurions moins de questions sans réponse.
mkt
1
Ce sont des commentaires et ne fournissent pas, même globalement, une réponse selon les normes du CV (par exemple, les liens ne sont pas des réponses). Aussi: Je ne suis pas du tout d'accord avec l'idée de transformer une question parfaitement valide en wiki communautaire en raison de votre propre mécontentement quant au taux de réponse aux questions.
Alexis
1
Aussi: J'ai été éduqué sur le wiki communautaire et les réponses au wiki communautaire, et j'y retire mon désaccord (bien que je ne pense toujours pas que ce soit une réponse :).
Alexis
1
@Alexis Assez juste - je pensais que c'était moi-même une zone grise, mais j'aurais peut-être mal jugé cela.
mkt
1
Nous apprenons tous. :)
Alexis