Jeg prøver å forstå logikken bak valg bakover (selv om jeg vet at det finnes bedre metoder for modellvalg). I fremover modellvalg startes utvelgelsesprosessen med en tom modell og variabler legges til sekvensielt. Ved tilbakevalg startes utvelgelsesprosessen med hele modellen, og variabler ekskluderes sekvensielt.

Spørsmål: Med hvilken modell starter valg bakover?

Er det hele modellen? Den tomme modellen? Noe i mellom? Wikipedia og Hastie et al. (2009) – The Elements of Statistical Learning, side 60 forklarer metoden, men jeg kunne ikke finne noe om startmodellen. For analysen min bruker jeg funksjonen stepAIC av R -pakken MASS.

UPDATE:

Nedenfor finner du et eksempel i R. StepAIC-funksjonen skriver automatisk ut hvert trinn av valgprosessen i konsollen, og det virker som om utvalget starter med hele modellen. Basert på svaret fra jjet er jeg ikke sikker på om jeg har gjort noe galt.

# Example data N <- 1000000 y <- rnorm(N) x1 <- y + rnorm(N) x2 <- y + rnorm(N) x3 <- y + rnorm(N) x4 <- rnorm(N) x5 <- rnorm(N) x6 <- rnorm(N) data <- data.frame(y, x1, x2, x3, x4, x5, x6) # Selection library("MASS") mod <- lm(y ~., data) stepAIC(mod, direction = "both") 

Kommentarer

  • Les manualen: du kan bruke object & scope argumenter for å starte med hvilken modell du vil: stepAIC(lm(y~1, data), scope=~x1+x2+x3+x4+x5, direction = "both"). Jeg don ' t vet om det ' er et autoritativt svar på om " bakover " innebærer en bestemt startmodell, eller hvilken; men selv om det er det, ville det være ' å ikke anta at andre vet om det når de bruker uttrykket.
  • Takk for svaret ditt Scortchi! Jeg leste manualen før, men det virker som om jeg savnet noen ting. Basert på kommentaren din og jjet ' sitt svar klarte jeg å løse problemet mitt.

Svar

Jeg tror «fremover-bakover» -valg er et annet navn for «fremover-trinnvis» -valg. Dette er standardmetoden som brukes av stepAIC. I denne prosedyren starter du med en tom modell og bygger opp sekvensielt akkurat som i fremovervalg. Den eneste advarselen er at hver gang du legger til en ny variabel, $ X_ {new} $, må du sjekke om noen av de andre variablene som allerede er i modellen skal slippes etter at $ X_ {new} $ er inkludert . I denne tilnærmingen kan du ende opp med å søke «ikke-lineært» gjennom alle de forskjellige modellene.

——– EDIT ——–

The følgende R-kode illustrerer forskjellen mellom de tre valgstrategiene:

# library(MASS) set.seed(1) N <- 200000 y <- rnorm(N) x1 <- y + rnorm(N) x2 <- y + rnorm(N) x3 <- y + rnorm(N) x4 <- rnorm(N) x5 <- rnorm(N) x6 <- x1 + x2 + x3 + rnorm(N) data <- data.frame(y, x1, x2, x3, x4, x5, x6) fit1 <- lm(y ~ ., data) fit2 <- lm(y ~ 1, data) stepAIC(fit1,direction="backward") stepAIC(fit2,direction="forward",scope=list(upper=fit1,lower=fit2)) stepAIC(fit2,direction="both",scope=list(upper=fit1,lower=fit2)) 

Jeg har endret eksemplet ditt bare litt i denne koden. Først satte jeg et frø så at du kan se de samme dataene som jeg brukte. Jeg gjorde også N mindre, så algoritmen løper litt raskere. Jeg holdt alle variablene dine like bortsett fra x6. x6 er nå den mest forutsigende for y individuelt – dette vil gjøre det til det første variabel valgt i trinn fremover og fremover. Men når x1, x2 og x3 kommer inn i modellen, blir x6 uavhengig av y og bør ekskluderes. Du ser at trinnvis fremover gjør akkurat dette. Det starter med x6, fortsetter å inkludere x1, x2 og x3, så går det tilbake og faller x6 og avsluttes. Hvis du bare bruker fremover, vil x6 forbli i modellen fordi algoritmen aldri går tilbake til denne typen multikollinearitetskontroll.

Kommentarer

  • Takk deg for svaret jjet! Det er helt fornuftig hva du sier, men hvis du kjører koden som jeg oppdaterte ovenfor, virker det som om utvalget starter med hele modellen. Har jeg gjort noe galt?
  • Bare et lite problem med koden din. Du skrev mod < – lm (y ~., Data) etterfulgt av stepAIC (mod, direction = " begge "). På første linje definerte du ' effektivt en innledende modell for å inkludere alle variablene ved å skrive " y ~. ". Dette er nå ditt utgangspunkt for fremovervalg. I stedet vil du ' vil skrive " y ~ 1 " som bare er en avskjæringsmodell – utgangspunktet du ' du leter etter. Jeg ' har gjort endringer ovenfor med R-kode som skal rydde opp i dette for deg.
  • Tusen takk for god hjelp!Et siste spørsmål: Hvis jeg holder eksemplet mitt som om det er uten omfangsargumentet og med mod <- lm(y ~., data), er det da å utføre et normalt bakovervalg eller utfører det et valg bakover med en full startmodell?
  • Sistnevnte. Det ' gjør fremover-bakover ved hjelp av en innledende modell som inkluderer alle variabler. Hvis du ikke har ' ikke definert omfangslisten, vil den anta at " lavere " modellen er den modellen du spesifiserte i utgangspunktet, og " øvre " -modellen er den fulle modellen.

Svar

Fremover-bakover modellvalg er to grådige tilnærminger for å løse det kombinatoriske optimaliseringsproblemet med å finne den optimale kombinasjonen av funksjoner (som er kjent for å være NP-komplett). Derfor må du se etter suboptimale, beregningseffektive strategier. Se for eksempel Flytende søkemetoder i funksjonsvalg av Pudil et. al.

I Fremover-metoden starter du med en tom modell, og gjentas over alle funksjonene. For hver funksjon trener du en modell, og velger den funksjonen som gir den beste modellen i henhold til beregningen din. På en lignende måte fortsetter du med å legge til den neste funksjonen som gir best forbedring når du kombinerer de allerede valgte.

I bakovermetoden inverterer du bare prosedyren: begynn med alle funksjoner, og fjern den iterativt hvis fjerning minst skadet ytelsen, eller fører til den største forbedringen.

Kommentarer

  • Takk for svaret jpmuc! Jeg er imidlertid ikke sikker på om dette svarer på det opprinnelige spørsmålet mitt, som var: " Med hvilken modell starter valg bakover? " Mangler jeg noe i svaret ditt, eller ville du bare avklare fremgangsmåten for fremover-tilbakevalg generelt?
  • I denne funksjonsvalgmetoden er du ikke bundet til en konkret modell eller et sett med parametere. Du velger settet med funksjoner som du kan bygge den beste modellen av en bestemt type (i ditt tilfelle en lineær modell). Dette illustreres bedre i disse to lenkene: stat.columbia.edu/~martin/W2024/R10.pdf og rstudio-pubs-static.s3.amazonaws.com/ …

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *