Ik probeer de logica achter voorwaarts-achterwaartse selectie te begrijpen (hoewel ik weet dat er betere methoden zijn voor modelselectie). Bij voorwaartse modelselectie wordt het selectieproces gestart met een leeg model en worden variabelen opeenvolgend toegevoegd. Bij achterwaartse selectie wordt het selectieproces gestart met het volledige model en worden variabelen sequentieel uitgesloten.

Vraag: Met welk model start de voorwaarts-achterwaartse selectie?

Is dit het volledige model? Het lege model? Iets ertussenin? Wikipedia en Hastie et al. (2009) – De elementen van statistisch leren, pagina 60 leggen de methode uit, maar ik “kon niets vinden over het startmodel. Voor mijn analyse gebruik ik de functie stepAIC van het R pakket MASS.

UPDATE:

Hieronder vindt u een voorbeeld in R. De stepAIC-functie drukt automatisch elke stap af van het selectieproces in de console en het lijkt erop dat de selectie begint met het volledige model. Op basis van het antwoord van jjet weet ik echter niet zeker of ik iets verkeerd heb gedaan.

# 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") 

Opmerkingen

  • Lees de handleiding: je kunt de object scope argumenten om te beginnen met welk model je maar wilt: stepAIC(lm(y~1, data), scope=~x1+x2+x3+x4+x5, direction = "both"). Ik don ' Ik weet niet of er ' s een gezaghebbend antwoord op de vraag of " vooruit-achteruit " een bepaald startmodel impliceert, of welke; maar zelfs als dat het geval is, is het ' verstandig om niet aan te nemen dat andere mensen hiervan op de hoogte zijn wanneer ze de uitdrukking gebruiken.
  • Bedankt voor je antwoord Scortchi! Ik heb de handleiding eerder gelezen, maar het lijkt alsof ik een aantal dingen heb gemist. Op basis van jouw opmerking en jjet ' s antwoord kon ik mijn probleem oplossen.

Antwoord

Ik geloof dat “vooruit-achteruit” selectie een andere naam is voor “vooruit-stapsgewijze” selectie. Dit is de standaardaanpak die wordt gebruikt door stepAIC. In deze procedure begin je met een leeg model en bouw je opeenvolgend op, net als bij voorwaartse selectie. Het enige voorbehoud is dat elke keer dat u een nieuwe variabele toevoegt, $ X_ {new} $, u moet controleren of een van de andere variabelen die al in het model aanwezig zijn, moet worden verwijderd nadat $ X_ {new} $ is opgenomen . In deze benadering kun je uiteindelijk “niet-lineair” zoeken in alle verschillende modellen.

——– EDIT ——–

De de volgende R-code illustreert het verschil tussen de drie selectiestrategieën:

# 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)) 

Ik heb je voorbeeld in deze code een klein beetje gewijzigd. Eerst heb ik een seed zo ingesteld dat je dezelfde gegevens kunt zien die ik heb gebruikt. Ik heb ook N kleiner gemaakt, zodat het algoritme iets sneller werkt. Ik heb al je variabelen hetzelfde gehouden, behalve x6. x6 is nu de meest voorspellende van y afzonderlijk – hierdoor wordt het de eerste variabele gekozen in voorwaartse en voorwaartse stapsgewijze selectie. Maar zodra x1, x2 en x3 het model binnenkomen, wordt x6 onafhankelijk van y en moet worden uitgesloten. Je zult zien dat voorwaarts stapsgewijs precies dit doet. Het begint met x6, gaat verder met x1, x2 en x3, gaat dan terug en laat x6 vallen en eindigt. Als je gewoon forward gebruikt, blijft x6 in het model omdat het algoritme nooit teruggaat naar dit soort multicollineariteitscontrole.

Opmerkingen

  • Bedankt jij voor je antwoord jjet! Het is volkomen logisch wat u zegt, maar als u de code uitvoert die ik hierboven heb bijgewerkt, lijkt het alsof de selectie begint met het volledige model. Heb ik iets verkeerds gedaan?
  • Slechts een klein probleempje met uw code. Je hebt mod < – lm (y ~., Data) geschreven gevolgd door stepAIC (mod, direction = " beide "). In uw eerste regel heeft u ' een initieel model gedefinieerd dat alle variabelen omvat door " y ~ te schrijven. ". Dit is nu uw startpunt voor voorwaartse selectie. In plaats daarvan wil je ' schrijven " y ~ 1 " wat gewoon een onderscheppingsmodel – het startpunt waarnaar u ' zoekt. Ik ' heb de bovenstaande bewerkingen uitgevoerd met R-code die dit voor je zouden moeten verduidelijken.
  • Heel erg bedankt voor de geweldige hulp!Nog een laatste vraag: als ik mijn voorbeeld houd zoals het is zonder het bereikargument en met mod <- lm(y ~., data), voert het dan een normale achterwaartse selectie uit of voert het een voorwaarts-achterwaartse selectie uit met een volledig startmodel?
  • Dat laatste. Het ' doet vooruit-achteruit met behulp van een initieel model dat alle variabelen bevat. Als u de scope-lijst niet ' hebt gedefinieerd, wordt ervan uitgegaan dat uw " lagere " model is het model dat u in eerste instantie hebt opgegeven en uw " bovenste " model is het volledige model.

Answer

Voorwaarts-achterwaartse modelselectie zijn twee hebzuchtige benaderingen om het combinatorische optimalisatieprobleem op te lossen, namelijk het vinden van de optimale combinatie van functies (waarvan bekend is dat NP-compleet). Daarom moet u zoeken naar suboptimale, computationeel efficiënte strategieën. Zie bijvoorbeeld Zwevende zoekmethoden bij het selecteren van objecten door Pudil et. al.

In de Forward-methode begin je met een leeg model en herhaal je alle features. Voor elk kenmerk traint u een model en selecteert u het kenmerk dat het beste model oplevert volgens uw metriek. Op een vergelijkbare manier gaat u verder door de volgende functie toe te voegen die de beste verbetering oplevert in combinatie met de reeds geselecteerde.

Bij de achterwaartse methode keert u de procedure gewoon om: begin met alle functies en verwijder die iteratief wiens verwijdering de prestatie het minst schaadt, of tot de grootste verbetering leidt.

Reacties

  • Bedankt voor je antwoord jpmuc! Ik weet echter niet zeker of dit mijn oorspronkelijke vraag beantwoordt, namelijk: " Met welk model begint de voorwaarts-achterwaartse selectie? " Mis ik iets in je antwoord of wilde je gewoon de procedure van voor-achterwaartse selectie in het algemeen verduidelijken?
  • Bij deze feature-selectiemethode ben je niet gebonden aan een concreet model of een set parameters. U selecteert de set features waarmee u het beste model van een bepaald type (in uw geval een lineair model) kunt bouwen. Dit wordt beter geïllustreerd in deze twee links: stat.columbia.edu/~martin/W2024/R10.pdf en rstudio-pubs-static.s3.amazonaws.com/ …

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *