Chciałbym zaimplementować algorytm automatycznego wyboru modelu. Zastanawiam się nad regresją stopniową, ale wszystko się uda (musi to być jednak regresja liniowa).
Mój problem polega na tym, że nie jestem w stanie znaleźć metodologii ani implementacji typu open source (budzę się w java). Metodologia, którą mam na myśli, mogłaby wyglądać następująco:
- obliczyć macierz korelacji wszystkich czynników
- wybierz czynniki, które mają niską korelację ze sobą
- usuń czynniki, które mają niską statystykę
- dodaj inne czynniki (nadal oparte na niskim współczynniku korelacji znalezionym w 2.).
- powtarzaj kilkakrotnie, aż pewne kryterium (np. AIC) przekroczy określony próg lub nie może lub nie możemy znaleźć większej wartości.
Zdaję sobie sprawę z tego, że istnieje implementacja R (stepAIC), ale kod jest trudny do zrozumienia. Nie znalazłem też artykułów opisujących regresję krokową.
Odpowiedzi:
Myślę, że takie podejście jest błędne, ale być może będzie bardziej pomocne, jeśli wyjaśnię dlaczego. Chęć poznania najlepszego modelu z pewnymi informacjami o dużej liczbie zmiennych jest dość zrozumiała. Co więcej, jest to sytuacja, w której ludzie wydają się regularnie znajdować. Ponadto wiele podręczników (i kursów) na temat regresji obejmuje metody selekcji krokowej, co oznacza, że muszą być one zgodne z prawem. Niestety tak nie jest, a parowanie tej sytuacji i celu jest dość trudne do pomyślnej nawigacji. Poniżej znajduje się lista problemów z automatycznymi procedurami wyboru modelu krokowego (przypisanymi do Franka Harrella i skopiowanymi stąd ):
Pytanie brzmi: co jest tak złego w tych procedurach / dlaczego te problemy występują? Większość osób, które ukończyły podstawowy kurs regresji, zna pojęcie regresji do średniej , dlatego używam jej do wyjaśnienia tych problemów. (Chociaż może to początkowo wydawać się nie na temat, proszę o wyrozumiałość, obiecuję, że ma to znaczenie.)
Wyobraź sobie szkolnego trenera torów pierwszego dnia prób. Pojawia się trzydzieści dzieci. Te dzieci mają pewien podstawowy poziom wewnętrznej zdolności, do którego ani trener, ani nikt inny nie ma bezpośredniego dostępu. W rezultacie trener robi jedyne, co może zrobić, a mianowicie, że wszyscy biegną na 100 metrów. Czasy są prawdopodobnie miarą ich wewnętrznej zdolności i są traktowane jako takie. Są jednak probabilistyczne; pewna część tego, jak dobrze robi ktoś, zależy od jego faktycznej zdolności, a inna część jest losowa. Wyobraź sobie, że prawdziwa sytuacja jest następująca:
Wyniki pierwszego wyścigu pokazano na poniższym rysunku wraz z komentarzami trenera dla dzieci.
Pamiętaj, że podział dzieci według czasu wyścigu nakłada się na ich wewnętrzne zdolności - ten fakt jest kluczowy. Po chwaleniu niektórych i krzyczeniu na innych (jak to zwykle robią trenerzy), każe im biegać ponownie. Oto wyniki drugiego wyścigu z reakcjami trenera (symulowane z tego samego modelu powyżej):
Zauważ, że ich wewnętrzna zdolność jest identyczna, ale czasy odbijają się w stosunku do pierwszej rasy. Z punktu widzenia trenera ci, na których krzyczał, mieli tendencję do poprawy, a ci, których chwalił, mieli tendencję do gorszych (zaadaptowałem ten konkretny przykład z cytatu Kahnemana wymienionego na stronie wiki), chociaż tak naprawdę regresja do średniej jest prostą matematyką konsekwencja faktu, że trener wybiera sportowców do drużyny na podstawie częściowo losowego pomiaru.
Co to ma wspólnego z automatycznymi (np. Krokowymi) technikami wyboru modelu? Opracowanie i potwierdzenie modelu opartego na tym samym zestawie danych jest czasem nazywane pogłębianiem danych. Chociaż istnieje pewna zależność między zmiennymi i oczekuje się, że silniejsze relacje przyniosą lepsze wyniki (np. Wyższe statystyki t), są to zmienne losowe, a zrealizowane wartości zawierają błąd. Zatem, gdy wybierzesz zmienne w oparciu o posiadanie wyższych (lub niższych) wartości zrealizowanych, mogą one być takie z powodu ich prawdziwej wartości, błędu lub obu. Jeśli będziesz postępować w ten sposób, będziesz równie zaskoczony, jak trener po drugim wyścigu. Dzieje się tak niezależnie od tego, czy wybierasz zmienne w oparciu o wysokie statystyki t, czy niskie współzależności. To prawda, że użycie AIC jest lepsze niż użycie wartości p, ponieważ karze model za złożoność, ale sam AIC jest zmienną losową (jeśli uruchomisz badanie kilka razy i dopasujesz ten sam model, AIC odbije się tak samo jak wszystko inne). Niestety,
Mam nadzieję, że to jest pomocne.
źródło
Sprawdź pakiet karetki w R. Pomoże ci to w krzyżowej weryfikacji modeli regresji krokowej (użyj
method='lmStepAIC'
lubmethod='glmStepAIC'
) i może pomóc ci zrozumieć, w jaki sposób tego rodzaju modele mają słabą wydajność predykcyjną. Ponadto można użyćfindCorrelation
funkcji w karetce do identyfikacji i eliminacji zmiennych współliniowych, arfe
funkcji w karetce do eliminacji zmiennych o niskiej statystyce t (użycierfeControl=rfeControl(functions=lmFuncs)
).Jednak, jak wspomniano w poprzednich odpowiedziach, te metody wyboru zmiennych mogą wpędzić cię w kłopoty, szczególnie jeśli wykonasz je iteracyjnie. Bądź absolutnie pewien, że ocenisz swoje wyniki na CAŁKOWICIE przeprowadzonym zestawie testowym. Nawet nie patrz na zestaw testowy, dopóki nie będziesz zadowolony ze swojego algorytmu!
Wreszcie może być lepiej (i prościej) zastosować model predykcyjny z „wbudowanym” wyborem funkcji, takim jak regresja kalenicy, lasso lub siatka elastyczna. W szczególności wypróbuj
method=glmnet
argument „daszek” i porównaj potwierdzoną krzyżowo dokładność tego modelu zmethod=lmStepAIC
argumentem. Domyślam się, że ten pierwszy zapewni ci znacznie wyższą dokładność poza próbą i nie będziesz musiał się martwić implementacją i weryfikacją algorytmu wyboru zmiennych niestandardowych.źródło
r
lubpython
? Chciałbym to wypróbować.W pełni zgadzam się z problemami przedstawionymi przez @gung. Mówiąc realistycznie, wybór modelu jest prawdziwym problemem wymagającym prawdziwego rozwiązania. Oto coś, czego mógłbym użyć w praktyce.
Na przykład zastosowania tej metody w prawdziwym świecie uważam, że została ona zastosowana w konkursie na nagrodę Netflix.
źródło
Aby odpowiedzieć na pytanie, istnieje kilka opcji: 1) cały podzbiór według AIC / BIC 2) krok po kroku według wartości p 3) stopniowo według AIC / BIC 4) regularyzacji, takiej jak LASSO (może być oparty na AIC / BIC lub CV 5) algorytm genetyczny (GA) 6) inne? 7) stosowanie nieautomatycznej selekcji zorientowanej na teorię („wiedzę przedmiotową”)
Następnym pytaniem byłoby, która metoda jest lepsza. Ten dokument (doi: 10.1016 / j.amc.2013.05.016) wskazuje, że „wszystkie możliwe regresje” dały takie same wyniki w stosunku do proponowanej przez nich nowej metody, a krok po kroku jest gorszy. Prosta GA jest między nimi. Ten dokument (DOI: 10.1080 / 10618600.1998.10474784) porównuje regresję karną (Bridge, Lasso itp.) Z „skokami do przodu” (wydaje się wyczerpującym algorytmem wyszukiwania, ale szybszym), a także stwierdził, że „model mostu zgadza się z najlepszym modelem z wybór podzbioru metodą przeskakiwania ”. Ten artykuł (doi: 10.1186 / 1471-2105-15-88) pokazuje, że GA jest lepszy niż LASSO. W tym dokumencie (DOI: 10.1198 / jcgs.2009.06164) zaproponowano metodę - zasadniczo podejście obejmujące wszystkie podzbiory (oparte na BIC), ale sprytnie skracające czas obliczeń. Pokazują, że ta metoda jest lepsza niż LASSO. Co ciekawe, ten dokument (DOI: 10.1111 / j.1461-0248.2009.01361.
Ogólnie rzecz biorąc, wyniki są mieszane, ale mam wrażenie, że GA wydaje się bardzo dobre, chociaż stopniowe może nie być tak złe i szybkie.
Jeśli chodzi o 7), zastosowanie nieautomatycznej selekcji zorientowanej na teorię („wiedzę przedmiotową”). Jest to czasochłonne i niekoniecznie lepsze niż metoda automatyczna. Faktycznie w literaturze szeregów czasowych ustalono, że zautomatyzowana metoda (zwłaszcza oprogramowanie komercyjne) przewyższa ludzkich ekspertów „o znaczny margines” (doi: 10.1016 / S0169-2070 (01) 00119-4, strona 561, np. Wybierając różne wygładzanie wykładnicze i modele ARIMA).
źródło
Oto odpowiedź z lewego pola - zamiast regresji liniowej użyj drzewa regresji (pakiet rpart). Jest to odpowiednie do automatycznego wyboru modelu, ponieważ przy odrobinie pracy można zautomatyzować wybór cp, parametru stosowanego w celu uniknięcia nadmiernego dopasowania.
źródło
model liniowy można zoptymalizować poprzez wdrożenie algorytmu genetycznego w celu wyboru najbardziej wartościowych zmiennych niezależnych. Zmienne są reprezentowane jako geny w algorytmie, a najlepszy chromosom (zestaw genów) jest następnie wybierany po operatorach krzyżowania, mutacji itp. Opiera się na doborze naturalnym - wtedy najlepsze „generowanie” może przetrwać, innymi słowy, algorytm optymalizuje funkcję estymacji, która zależy od konkretnego modelu.
źródło
Mamy funkcję w pakiecie podstawowych statystyk R, o nazwie step (), która dokonuje wyboru modeli do przodu, do tyłu lub krokowo na podstawie najniższego AIC. Działa to również w przypadku zmiennych czynnikowych. Czy to nie służy tutaj celowi ?.
źródło
Widzę, że moje pytanie wzbudziło duże zainteresowanie i interesującą debatę na temat ważności automatycznego wyboru modelu. Chociaż zgadzam się, że przyjmowanie za pewnik wyniku automatycznego wyboru jest ryzykowne, może być ono wykorzystane jako punkt wyjścia. Oto, w jaki sposób wdrożyłem go dla mojego konkretnego problemu, którym jest znalezienie najlepszych czynników wyjaśniających daną zmienną
Ponownie, jest to bardzo trudne, mogą istnieć sposoby na ulepszenie metodologii, ale to jest mój punkt wyjścia. Publikuję tę odpowiedź, mając nadzieję, że może być przydatna dla kogoś innego. Komentarze są mile widziane!
źródło