Ich versuche, die Logik hinter der Vorwärts-Rückwärts-Auswahl zu verstehen (obwohl ich weiß, dass es bessere Methoden für die Modellauswahl gibt). Bei der Vorwärtsmodellauswahl wird der Auswahlprozess mit einem leeren Modell gestartet und Variablen werden nacheinander hinzugefügt. Bei der Rückwärtsauswahl wird der Auswahlprozess mit dem vollständigen Modell gestartet und Variablen werden nacheinander ausgeschlossen.

Frage: Mit welchem Modell beginnt die Vorwärts-Rückwärts-Auswahl?

Ist es das vollständige Modell? Das leere Modell? Etwas dazwischen? Wikipedia und Hastie et al. (2009) – Die Elemente des statistischen Lernens, Seite 60 erläutern die Methode, aber ich konnte nichts über das Startmodell finden. Für meine Analyse verwende ich die Funktion des R -Pakets MASS.

UPDATE:

Unten finden Sie ein Beispiel in R. Die stepAIC-Funktion druckt automatisch jeden Schritt des Auswahlprozesses in der Konsole und es scheint, dass die Auswahl mit dem vollständigen Modell beginnt. Aufgrund der Antwort von jjet bin ich mir jedoch nicht sicher, ob ich etwas falsch gemacht habe.

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

Kommentare

  • Lesen Sie das Handbuch: Sie können die object scope Argumente, um mit dem gewünschten Modell zu beginnen: stepAIC(lm(y~1, data), scope=~x1+x2+x3+x4+x5, direction = "both"). Ich ziehe ' weiß nicht, ob es ' ist eine maßgebliche Antwort darauf, ob " vorwärts-rückwärts " ein bestimmtes Startmodell impliziert oder welches; Aber selbst wenn dies der Fall ist, wäre es ' sinnvoll, nicht anzunehmen, dass andere Personen davon erfahren, wenn sie den Ausdruck verwenden.
  • Vielen Dank für Ihre Antwort, Scortchi! Ich habe das Handbuch schon einmal gelesen, aber anscheinend habe ich einige Dinge verpasst. Aufgrund Ihres Kommentars und der Antwort von jjet ' konnte ich mein Problem lösen.

Antwort

Ich glaube, die Auswahl „vorwärts-rückwärts“ ist ein anderer Name für die Auswahl „vorwärts-schrittweise“. Dies ist der Standardansatz von stepAIC. In diesem Verfahren beginnen Sie mit einem leeren Modell und bauen es wie bei der Vorwärtsauswahl nacheinander auf. Die einzige Einschränkung besteht darin, dass Sie jedes Mal, wenn Sie eine neue Variable, $ X_ {new} $, hinzufügen, überprüfen müssen, ob eine der anderen Variablen, die bereits im Modell enthalten sind, gelöscht werden sollte, nachdem $ X_ {new} $ enthalten ist . Bei diesem Ansatz können Sie am Ende „nichtlinear“ durch alle verschiedenen Modelle suchen.

——– BEARBEITEN ——–

Die Der folgende R-Code veranschaulicht den Unterschied zwischen den drei Auswahlstrategien:

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

Ich habe Ihr Beispiel in diesem Code nur geringfügig geändert. Zuerst habe ich einen Startwert festgelegt dass Sie die gleichen Daten sehen können, die ich verwendet habe. Ich habe auch N kleiner gemacht, damit der Algorithmus etwas schneller läuft. Ich habe alle Ihre Variablen bis auf x6 gleich gehalten. x6 ist jetzt die prädiktivste von y einzeln – dies macht es zum ersten Variable, die in der Vorwärts- und Vorwärts-Schritt-Auswahl ausgewählt wird. Sobald jedoch x1, x2 und x3 in das Modell eintreten, wird x6 unabhängig von y und sollte ausgeschlossen werden. Sie werden sehen, dass Vorwärts-Schritt-genau dies tut. Es beginnt mit x6, schließt x1, x2 und x3 ein, geht dann zurück und lässt x6 fallen und endet. Wenn Sie nur vorwärts verwenden, bleibt x6 im Modell, da der Algorithmus nie zu dieser Art von Multikollinearitätsprüfung zurückkehrt.

Kommentare

  • Vielen Dank Sie für Ihre Antwort jjet! Es macht durchaus Sinn, was Sie sagen, aber wenn Sie den oben aktualisierten Code ausführen, scheint die Auswahl mit dem vollständigen Modell zu beginnen. Habe ich etwas falsch gemacht?
  • Nur ein kleines Problem mit Ihrem Code. Sie haben mod < – lm (y ~., Daten) gefolgt von stepAIC (mod, direction = " beide ). In Ihrer ersten Zeile haben Sie ' effektiv ein Anfangsmodell definiert, das alle Variablen enthält, indem Sie " y ~ schreiben. ". Dies ist jetzt Ihr Ausgangspunkt für die Vorauswahl. Stattdessen möchten Sie ' " y ~ 1 " schreiben, was nur ein ist Intercept-Modell – der Ausgangspunkt, den Sie ' suchen. Ich ' habe oben Änderungen mit R-Code vorgenommen, die dies für Sie klären sollen.
  • Vielen Dank für die großartige Hilfe!Eine letzte Frage: Wenn ich mein Beispiel so halte, wie es ohne das Gültigkeitsbereichsargument und mit mod <- lm(y ~., data) ist, führt es dann eine normale Rückwärtsauswahl durch oder führt es eine Vorwärts-Rückwärts-Auswahl mit a durch Vollstartmodell?
  • Letzteres. ' arbeitet vorwärts und rückwärts unter Verwendung eines Anfangsmodells, das alle Variablen enthält. Wenn Sie ' die Bereichsliste nicht definiert haben, wird davon ausgegangen, dass Ihre " niedriger " Modell ist das Modell, das Sie ursprünglich angegeben haben, und Ihr " oberes " Modell ist das vollständige Modell.

Antwort

Vorwärts-Rückwärts-Modellauswahl sind zwei gierige Ansätze zur Lösung des kombinatorischen Optimierungsproblems, die optimale Kombination von Merkmalen zu finden (was bekannt ist) NP-vollständig). Daher müssen Sie nach suboptimalen, rechnerisch effizienten Strategien suchen. Siehe zum Beispiel Floating Search-Methoden in der Feature-Auswahl von Pudil et. al.

Bei der Weiterleitungsmethode beginnen Sie mit einem leeren Modell und durchlaufen alle Features. Für jedes Feature trainieren Sie ein Modell und wählen das Feature aus, das das beste Modell gemäß Ihrer Metrik liefert. In ähnlicher Weise fügen Sie das nächste Feature hinzu, das in Kombination mit den bereits ausgewählten die beste Verbesserung erzielt.

Bei der Rückwärtsmethode kehren Sie einfach die Prozedur um: Beginnen Sie mit allen Features und entfernen Sie dieses iterativ deren Entfernung die Leistung am wenigsten beeinträchtigt oder zur größten Verbesserung führt.

Kommentare

  • Vielen Dank für Ihre Antwort jpmuc! Ich bin mir jedoch nicht sicher, ob dies meine ursprüngliche Frage beantwortet: " Mit welchem Modell beginnt die Vorwärts-Rückwärts-Auswahl? " Fehlt mir etwas in Ihrer Antwort oder wollten Sie nur das Verfahren der Vorwärts-Rückwärts-Auswahl im Allgemeinen klären?
  • Bei dieser Funktionsauswahlmethode sind Sie nicht an ein konkretes Modell oder einen Satz von Parametern gebunden. Sie wählen die Features aus, mit denen Sie das beste Modell eines bestimmten Typs erstellen können (in Ihrem Fall ein lineares Modell). Dies wird in diesen beiden Links besser veranschaulicht: stat.columbia.edu/~martin/W2024/R10.pdf und rstudio-pubs-static.s3.amazonaws.com/ …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.