Jeg prøver at forstå logikken bag valg fremad (selvom jeg ved, at der er bedre metoder til modelvalg). Ved fremadgående modelvalg startes udvælgelsesprocessen med en tom model, og variabler tilføjes sekventielt. Ved bagudvalg startes udvælgelsesprocessen med den fulde model, og variabler udelukkes sekventielt.

Spørgsmål: Med hvilken model starter fremad-bagud valg?

Er det den fulde model? Den tomme model? Noget derimellem? Wikipedia og Hastie et al. (2009) – Elements of Statistical Learning, side 60 forklarer metoden, men jeg kunne ikke finde noget om startmodellen. Til min analyse bruger jeg funktionen stepAIC af R pakke MASS.

UPDATE:

Nedenfor kan du finde et eksempel i R. StepAIC-funktionen udskriver automatisk hvert trin af udvælgelsesprocessen i konsollen, og det ser ud til, at udvælgelsen starter med den fulde model. Baseret på svaret fra jjet er jeg imidlertid ikke sikker på, om jeg har gjort noget forkert.

# 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

  • Læs vejledningen: du kan bruge object & scope argumenter til at starte med hvilken model du vil: stepAIC(lm(y~1, data), scope=~x1+x2+x3+x4+x5, direction = "both"). Jeg don ' t ved, om der ' er et autoritativt svar på, om " fremad-bagud " indebærer en bestemt startmodel, eller hvilken; men selvom der er, ville det ' være fornuftigt ikke at antage, at andre mennesker kender til det, når de bruger udtrykket.
  • Tak for dit svar Scortchi! Jeg har læst manualen før, men det ser ud til, at jeg savnede nogle ting. Baseret på din kommentar og jjet ' s svar kunne jeg løse mit problem.

Svar

Jeg mener, at “fremad-bagud” valg er et andet navn for “fremad-trinvis” valg. Dette er standardmetoden, der anvendes af stepAIC. I denne procedure starter du med en tom model og opbygges sekventielt ligesom i fremadgående valg. Den eneste advarsel er, at hver gang du tilføjer en ny variabel, $ X_ {new} $, skal du kontrollere, om nogen af de andre variabler, der allerede er i modellen, skal droppes, når $ X_ {new} $ er inkluderet . I denne tilgang kan du ende med at søge “ikke-lineært” gennem alle de forskellige modeller.

——– EDIT ——–

følgende R-kode illustrerer forskellen mellem de tre markeringsstrategier:

# 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 ændret dit eksempel bare lidt i denne kode. Først satte jeg et frø så at du kan se de samme data, som jeg brugte. Jeg gjorde også N mindre, så algoritmen kører lidt hurtigere. Jeg holdt alle dine variabler ens bortset fra x6. x6 er nu den mest forudsigelige for y individuelt – dette vil gøre det til det første variabel valgt i fremad og fremad trinvis markering. Men når x1, x2 og x3 kommer ind i modellen, bliver x6 uafhængig af y og bør ekskluderes. Det starter med x6, fortsætter med at omfatte x1, x2 og x3, så går det tilbage og falder x6 og slutter. Hvis du bare bruger fremad, forbliver x6 i modellen, fordi algoritmen aldrig går tilbage til denne form for multikollinearitetskontrol.

Kommentarer

  • Tak dig for dit svar jjet! Det giver perfekt mening, hvad du siger, men hvis du kører koden, som jeg opdaterede ovenfor, ser det ud til, at udvælgelsen starter med den fulde model. Har jeg gjort noget forkert?
  • Bare et lille problem med din kode. Du skrev mod < – lm (y ~., Data) efterfulgt af stepAIC (mod, retning = " begge "). I din første linje har du ' effektivt defineret en indledende model til at inkludere alle variabler ved at skrive " y ~. ". Dette er nu dit udgangspunkt for fremadgående valg. I stedet vil du ' vil skrive " y ~ 1 " som bare er en aflytningsmodel – det startpunkt, du ' leder efter. Jeg ' har foretaget ændringer ovenfor med R-kode, som skulle rydde op for dig.
  • Mange tak for den store hjælp!Et sidste spørgsmål: Hvis jeg holder mit eksempel, som om det er uden omfangsargumentet, og med mod <- lm(y ~., data), udfører det derefter et normalt bagudvalg eller udfører det et valg bagud med en fuld startmodel?
  • Sidstnævnte. Det ' gør fremad-bagud ved hjælp af en indledende model, der inkluderer alle variabler. Hvis du ikke ' ikke har defineret omfangslisten, antager det, at din " lavere " model er den model, du oprindeligt angav, og din " øvre " -model er den fulde model.

Svar

Fremadvendt modelvalg er to grådige tilgange til at løse det kombinatoriske optimeringsproblem ved at finde den optimale kombination af funktioner (som man ved er NP-komplet). Derfor skal du kigge efter suboptimale, beregningseffektive strategier. Se for eksempel Flydende søgemetoder i funktionsvalg af Pudil et. al.

I Fremad-metoden starter du med en tom model og gentager over alle funktioner. For hver funktion træner du en model og vælger den funktion, der giver den bedste model i henhold til din metric. På en lignende måde fortsætter du med at tilføje den næste funktion, der giver den bedste forbedring, når den kombineres med de allerede valgte.

I tilbagestående metode vender du bare proceduren: start med alle funktioner, og fjern den iterativt hvis fjernelse mindst skader præstationen eller fører til den største forbedring.

Kommentarer

  • Tak for dit svar jpmuc! Jeg er dog ikke sikker på, om dette svarer på mit originale spørgsmål, som var: " Med hvilken model starter fremad-bagud valg? " Mangler jeg noget i dit svar, eller ville du bare afklare proceduren for fremad-tilbagevalg generelt?
  • I denne metode til valg af funktioner er du ikke bundet til en konkret model eller et sæt parametre. Du vælger det sæt funktioner, som du kan bygge den bedste model af en bestemt type (i dit tilfælde en lineær model). Dette illustreres bedre i disse to links: stat.columbia.edu/~martin/W2024/R10.pdf og rstudio-pubs-static.s3.amazonaws.com/ …

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *