Próbuję zrozumieć logikę stojącą za selekcją naprzód-wstecz (chociaż wiem, że istnieją lepsze metody wyboru modelu). W przypadku wyboru modelu w przód, proces wyboru rozpoczyna się od modelu pustego, a zmienne są dodawane sekwencyjnie. W przypadku selekcji wstecznej proces selekcji rozpoczyna się od pełnego modelu, a zmienne są wykluczane po kolei.

Pytanie: Od którego modelu rozpoczyna się selekcja w przód-wstecz?

Czy jest to pełny model? Pusty model? Coś pomiędzy? Wikipedia i Hastie i in. (2009) – The Elements of Statistical Learning, strona 60 wyjaśniają tę metodę, ale nie byłem w stanie znaleźć nic na temat modelu wyjściowego. Do analizy używam funkcji stepAIC z R pakietu MASS.

UPDATE:

Poniżej znajduje się przykład w R. Funkcja stepAIC automatycznie drukuje każdy krok procesu selekcji w konsoli i wygląda na to, że selekcja zaczyna się od pełnego modelu. Jednak na podstawie odpowiedzi jjet nie jestem pewien, czy zrobiłem coś złego.

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

Komentarze

  • Przeczytaj instrukcję: możesz użyć object & scope argumenty rozpoczynające się od dowolnego modelu: stepAIC(lm(y~1, data), scope=~x1+x2+x3+x4+x5, direction = "both"). Nie ' Nie wiem, czy istnieje ' to autorytatywna odpowiedź, czy " forward-backward " implikuje konkretny model początkowy, czy też; ale nawet jeśli tak jest, ' nie zakładaj, że inni o tym wiedzą, kiedy używają wyrażenia.
  • Dziękuję za odpowiedź Scortchi! Przeczytałem instrukcję wcześniej, ale wygląda na to, że przegapiłem kilka rzeczy. Na podstawie Twojego komentarza i odpowiedzi jjet ' udało mi się rozwiązać problem.

Odpowiedź

Uważam, że wybór „do przodu-do tyłu” to inna nazwa wyboru „do przodu-krokowo”. Jest to domyślne podejście stosowane przez stepAIC. W tej procedurze zaczynasz od pustego modelu i budujesz sekwencyjnie, tak jak w przypadku selekcji do przodu. Jedynym zastrzeżeniem jest to, że za każdym razem, gdy dodajesz nową zmienną, $ X_ {new} $, musisz sprawdzić, czy którakolwiek z innych zmiennych, które są już w modelu, powinna zostać usunięta po uwzględnieniu $ X_ {new} $ . W tym podejściu możesz zakończyć przeszukiwanie wszystkich różnych modeli „nieliniowo”.

——– EDYCJA ——–

następujący kod R ilustruje różnicę między trzema strategiami selekcji:

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

W tym kodzie nieznacznie zmodyfikowałem twój przykład. Najpierw ustawiłem ziarno, więc że możesz zobaczyć te same dane, których użyłem. Zmniejszyłem również N, więc algorytm działa trochę szybciej. Wszystkie twoje zmienne pozostały takie same, z wyjątkiem x6. x6 jest teraz najbardziej przewidywalnym z y indywidualnie – to uczyni go pierwszym zmienna wybrana w selekcji krokowej naprzód i naprzód. Ale kiedy x1, x2 i x3 wejdą do modelu, x6 staje się niezależne od y i powinno zostać wykluczone. Zobaczysz, że krok naprzód robi dokładnie to. Zaczyna się od x6, przechodzi do uwzględnienia x1, x2 i x3, potem wraca i upuszcza x6 i kończy. Jeśli użyjesz tylko forward, to x6 pozostanie w modelu, ponieważ algorytm nigdy nie wróci do tego rodzaju kontroli współliniowości.

Komentarze

  • Dziękuję ty za twoją odpowiedź jjet! To, co mówisz, ma sens, ale jeśli uruchomisz kod, który zaktualizowałem powyżej, wygląda na to, że wybór zaczyna się od pełnego modelu. Czy zrobiłem coś złego?
  • Tylko niewielki problem z kodem. Napisałeś mod < – lm (y ~., Data), a następnie stepAIC (mod, direction = " oba "). W pierwszej linii ' skutecznie zdefiniowałeś początkowy model obejmujący wszystkie zmienne, pisząc " y ~. ". To jest teraz twój punkt wyjścia do wyboru do przodu. Zamiast tego ' będziesz chciał napisać " y ~ 1 ", czyli po prostu model przechwycenia – punkt początkowy, którego ' szukasz. ' Powyżej dokonałem zmian z kodem R, które powinny to wyjaśnić.
  • Dziękuję bardzo za wspaniałą pomoc!Ostatnie pytanie: jeśli zachowam swój przykład tak, jak jest bez argumentu zasięgu i z mod <- lm(y ~., data), to czy jest to normalna selekcja wstecz, czy też selekcja do przodu i do tyłu z pełny model początkowy?
  • Ten drugi. ' wykonuje operacje do przodu-do tyłu przy użyciu początkowego modelu, który zawiera wszystkie zmienne. Jeśli ' nie masz zdefiniowanej listy zakresów, zostanie przyjęta " niższa " model to dowolny model, który określiłeś na początku, a Twój " górny " model to pełny model.

Odpowiedź

Wybór modelu naprzód-wstecz to dwa chciwe podejścia do rozwiązania problemu optymalizacji kombinatorycznej polegającego na znalezieniu optymalnej kombinacji cech (która jest znana jako NP-kompletny). Dlatego musisz szukać nieoptymalnych, wydajnych obliczeniowo strategii. Zobacz na przykład Pływające metody wyszukiwania w wyborze cech autorstwa Pudil et. al.

W metodzie Forward zaczynasz od pustego modelu i iterujesz po wszystkich funkcjach. Dla każdej cechy trenujesz model i wybierz cechę, która daje najlepszy model według Twoich danych. W podobny sposób postępujesz, dodając następną funkcję, która daje najlepszą poprawę w połączeniu z już wybranymi.

W metodzie wstecznej po prostu odwracasz procedurę: zacznij od wszystkich funkcji i iteracyjnie usuwaj tę. których usunięcie najmniej zaszkodziło wydajności lub prowadzi do największej poprawy.

Komentarze

  • Dziękuję za odpowiedź jpmuc! Nie jestem jednak pewien, czy to odpowiada na moje pierwotne pytanie, które brzmiało: " Od którego modelu rozpoczyna się wybór do przodu i do tyłu? " Czy brakuje mi czegoś w Twojej odpowiedzi, czy po prostu chciałeś ogólnie wyjaśnić procedurę wyboru do przodu i do tyłu?
  • W tej metodzie wyboru funkcji nie jesteś związany z konkretnym modelem lub zestawem parametrów. Wybierasz zestaw cech, za pomocą których możesz zbudować najlepszy model określonego typu (w Twoim przypadku model liniowy). Lepiej ilustrują to te dwa linki: stat.columbia.edu/~martin/W2024/R10.pdf i rstudio-pubs-static.s3.amazonaws.com/ …

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *