Czy LASSO cierpi na te same problemy co regresja krokowa?

18

Krokowe algorytmiczne metody selekcji zmiennych mają tendencję do wybierania dla modeli, które mniej lub bardziej uwzględniają każde oszacowanie w modelach regresji ( β i ich SE, wartości p , statystyki F itp.) I prawdopodobnie wykluczą prawdziwe predyktory, takie jak obejmują fałszywe predyktory zgodnie z dość dojrzałą literaturą symulacyjną.

Czy LASSO cierpi w ten sam konkretny sposób, gdy używa się go do wybierania zmiennych?

Alexis
źródło
3
Myślę, że tak. Frank Harrell ma na ten temat kilka postów, a jego książka „Strategie modelowania regresji” może zawierać odpowiedni materiał.
Richard Hardy
2
@RichardHardy +1 Byłbym zachwycony, gdyby FrankHarrell przechodził obok i komentował lub odpowiadał. :)
Alexis
5
Mam nową rozmowę na ten temat. Konkluzja: lasso ma małe prawdopodobieństwo wybrania „poprawnych” zmiennych. Slajdy są na stronie fharrell.com/talk/stratos19
Frank Harrell
4
Powiązane z „Konkluzja: lasso ma małe prawdopodobieństwo wybrania„ poprawnych ”zmiennych”: istnieje sekcja na ten sam temat w Nauce statystycznej ze sparsity ( web.stanford.edu/~hastie/StatLearnSparsity_files/… ),11.4.1 Variable-Selection Consistency for the Lasso
Adrian
2
Również powiązany z „Konkluzja: lasso ma małe prawdopodobieństwo wybrania„ poprawnych ”zmiennych”: patrz statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf studia przypadków 1 i 2
Adrian

Odpowiedzi:

3

Interpretacja prawdopodobieństwa częstych wyrażeń prawdopodobieństwa, wartości p itp. Dla modelu LASSO i regresji krokowej nie jest poprawna.

Te wyrażenia przeceniają prawdopodobieństwo. Np. 95% przedział ufności dla jakiegoś parametru ma powiedzieć, że masz 95% prawdopodobieństwo, że metoda spowoduje interwał z prawdziwą zmienną modelu w tym przedziale.

Jednak dopasowane modele nie wynikają z typowej pojedynczej hipotezy, a zamiast tego wybieramy wiśnie (wybieramy spośród wielu możliwych alternatywnych modeli), gdy przeprowadzamy regresję krokową lub regresję LASSO.


  1. Ocena poprawności parametrów modelu nie ma większego sensu (szczególnie gdy prawdopodobne jest, że model nie jest poprawny).

    (XTX)1

    X

    Przykład: poniższy wykres przedstawiający wyniki modelu zabawki dla pewnego sygnału, który jest sumą liniową 10 krzywych Gaussa (może to na przykład przypominać analizę chemiczną, w której sygnał dla widma jest uważany za sumę liniową kilka elementów). Sygnał 10 krzywych jest wyposażony w model 100 elementów (krzywe Gaussa z inną średnią) przy użyciu LASSO. Sygnał jest dobrze oszacowany (porównaj czerwoną i czarną krzywą, które są dość blisko). Ale rzeczywiste podstawowe współczynniki nie są dobrze oszacowane i mogą być całkowicie błędne (porównaj czerwone i czarne paski z kropkami, które nie są takie same). Zobacz także ostatnie 10 współczynników:

                  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

    Model LASSO wybiera współczynniki, które są bardzo przybliżone, ale z perspektywy samych współczynników oznacza to duży błąd, gdy szacuje się, że współczynnik, który powinien być niezerowy, wynosi zero, a sąsiedni współczynnik, który powinien wynosić zero, jest szacowany na niezerowa. Wszelkie przedziały ufności dla współczynników miałyby bardzo niewielki sens.

    Mocowanie LASSO

    przykład lasso / glmnet

    Stopniowe dopasowanie

    Dla porównania tę samą krzywą można wyposażyć w algorytm krokowy prowadzący do obrazu poniżej. (z podobnymi problemami, że współczynniki są bliskie, ale nie pasują)

    przykład nnls

  2. Nawet jeśli weźmiesz pod uwagę dokładność krzywej (a nie parametry, które w poprzednim punkcie wyjaśniono, że nie ma to sensu), musisz poradzić sobie z nadmiernym dopasowaniem. Kiedy wykonujesz procedurę dopasowania z LASSO, korzystasz z danych treningowych (aby dopasować modele o różnych parametrach) i danych testowych / walidacyjnych (aby dostroić / znaleźć najlepszy parametr), ale powinieneś również użyć trzeciego oddzielnego zestawu danych testowych / walidacyjnych w celu ustalenia wydajności danych.

    Wartość p lub coś podobnego nie zadziała, ponieważ pracujesz nad tuningowanym modelem, który jest wybieraniem wiśni i różni się (znacznie większy stopień swobody) od zwykłej metody dopasowania liniowego.


cierpisz na te same problemy, co regresja krokowa?

R2

Pomyślałem, że głównym powodem zastosowania LASSO zamiast regresji krokowej jest to, że LASSO pozwala na mniej chciwy wybór parametrów, na który mniejszy wpływ ma multikolinarność. (więcej różnic między LASSO i krokowym: Przewaga LASSO nad wyborem do przodu / eliminacją do tyłu pod względem błędu prognozy walidacji krzyżowej modelu )


Kod przykładowego obrazu

# 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
źródło
+1 Dziękuję Martjin Wterings. Czy możesz trochę wzmocnić wykres? Co jest pokazane na osiach, jaki kolor reprezentuje itp.?
Alexis
W rzeczywistości wykres nie jest przypadkiem LASSO. Jest to jednak przykład, w jaki sposób model może być sumą kilku składników, powiedzmy krzywych Gaussa (gdzie krzywe z nieco inną średnią są bardzo skorelowane), a przesunięcie średniej tych składników oznacza dużą zmianę współczynnika ale nie tyle w przypadku krzywej.
Sextus Empiricus
1
Słupki to wartości współczynników dla modelu prawdziwego i dopasowanego. To obraz, dla którego pamiętam, że ta zasada się pojawiła. Zrobię sam przykład, który może to pokazać jaśniej (podejrzewam, że LASSO, będąc mniej chciwym, może nieco lepiej reprezentować prawdziwe współczynniki).
Sextus Empiricus
0

Mam nową rozmowę na ten temat. Konkluzja: lasso ma małe prawdopodobieństwo wybrania „poprawnych” zmiennych. Slajdy znajdują się na stronie http://fharrell.com/talk/stratos19

- Frank Harrell

Powiązane z „Konkluzja: lasso ma małe prawdopodobieństwo wyboru„ poprawnych ”zmiennych”: istnieje sekcja na ten sam temat w Nauce statystycznej ze sparsity ( https://web.stanford.edu/~hastie/StatLearnSparsity_files/SLS_corrected_1. 4.16.pdf ), 11.4.1 Variable-Selection Consistency for the Lasso

- Adrian

Powiązane również z „Konkluzja: lasso ma małe prawdopodobieństwo wyboru„ poprawnych ”zmiennych”: patrz https://statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf studia przypadków 1 i 2

- Adrian

mkt - Przywróć Monikę
źródło
1
Skopiowałem te komentarze jako odpowiedź wiki społeczności, ponieważ są one mniej więcej odpowiedziami na to pytanie. Mamy dramatyczną lukę między odpowiedziami a pytaniami. Przynajmniej część problemu polega na tym, że na niektóre pytania odpowiedziano w komentarzach: jeśli komentarze, które odpowiedziały na pytanie, byłyby odpowiedziami, mielibyśmy mniej pytań bez odpowiedzi.
mkt - Przywróć Monikę
1
Są to komentarze i nie zapewniają odpowiedzi, nawet zbiorczo, zgodnie ze standardami CV (np. Linki nie są odpowiedziami). Ponadto: Nie zgadzam się stanowczo z zadawaniem doskonale poprawnych pytań na wiki społeczności z powodu własnego niezadowolenia z szybkości odpowiedzi na pytania.
Alexis
1
Ponadto: Zostałem pouczony o wiki społeczności i odpowiedziach na wiki społeczności i wycofuję tam swój spór (choć nadal nie sądzę, że to odpowiedź :).
Alexis
1
@Alexis Fair Fair - sam pomyślałem, że to szara strefa, ale mogłem to źle ocenić.
mkt - Przywróć Monikę
1
Wszyscy się uczymy. :)
Alexis