Algorytmy automatycznego wyboru modelu

193

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:

  1. obliczyć macierz korelacji wszystkich czynników
  2. wybierz czynniki, które mają niską korelację ze sobą
  3. usuń czynniki, które mają niską statystykę
  4. dodaj inne czynniki (nadal oparte na niskim współczynniku korelacji znalezionym w 2.).
  5. 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ą.

S4M
źródło
72
Szczerze mówiąc, uważam, że jest to katastrofalny pomysł, który prawie doprowadzi do wielu fałszywych wniosków.
gung
4
@gung: chociaż zgadzam się, że ślepe śledzenie wyniku wyboru modelu jest złym pomysłem, myślę, że może być przydatne jako punkt wyjścia analizy. W moim przypadku mam kilkaset dostępnych czynników i chciałbym wybrać 5-10 najbardziej odpowiednie. Nie rozumiem, jak mógłbym to zrobić bez automatycznego wyboru modelu (który później zostanie ręcznie zmieniony).
S4M,
12
Wszystkie procedury wyboru modelu podlegają problemom, które omawiam w mojej odpowiedzi poniżej. Ponadto, im większa liczba możliwych czynników, które chcesz przeszukać, tym bardziej skrajne stają się te problemy, a wzrost nie jest liniowy. Chociaż istnieją pewne lepsze podejścia (omówione przez @Zach), które powinny być stosowane w połączeniu z walidacją krzyżową (omówione przez @JackTanner), wybieranie na podstawie t, r i AIC nie jest wśród nich. Co więcej, przy setkach czynników ilość potrzebnych danych może być z łatwością w milionach. Niestety masz przed sobą bardzo trudne zadanie.
gung
7
Jaki jest cel wyboru modelu? Czy jest to model predykcyjny / prognostyczny, czy szukasz ważnych zmiennych? Jak duży jest zestaw danych, z którego korzystasz - ile obserwacji i ile zmiennych?
probabilityislogic
6
Interesujące widoki tutaj, ale myślę, że negatywne spojrzenie na procedury wyboru modelu algorytmicznego jest nieco przestarzałe. Weźmy na przykład niedawną pracę Davida Hendry'ego w dziedzinie ekonometrii, szczególnie jego pracę nad oprogramowaniem PcGive i metodami nasycenia. Wykład zawierający przegląd jego podejścia można znaleźć tutaj . Jak zauważył @MichaelChernick (i zrobiłby to również Hendry!), Wiedza na temat przedmiotu jest (ogromnie) ważna. Właśnie dlatego specjaliści przedmiotowi mają wartość - pozwolić algorytmom działać samemu jest błędem.
Graeme Walsh

Odpowiedzi:

333

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

  1. Daje wartości R do kwadratu, które są źle nastawione, aby były wysokie.
  2. Testy F i chi-kwadrat podane przy każdej zmiennej na wydruku nie mają deklarowanego rozkładu.
  3. Metoda daje przedziały ufności dla efektów i przewidywane wartości, które są fałszywie wąskie; patrz Altman i Andersen (1989).
  4. Daje wartości p, które nie mają właściwego znaczenia, a odpowiednia ich korekta jest trudnym problemem.
  5. Daje tendencyjne współczynniki regresji, które wymagają skurczu (współczynniki pozostałych zmiennych są zbyt duże; patrz Tibshirani [1996]).
  6. Ma poważne problemy w obecności kolinearności.
  7. Opiera się na metodach (np. Testach F dla modeli zagnieżdżonych), które zostały przeznaczone do testowania wcześniej określonych hipotez.
  8. Zwiększenie wielkości próbki niewiele pomaga; patrz Derksen i Keselman (1992).
  9. Pozwala nam nie myśleć o problemie.
  10. Zużywa dużo papieru.

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:

set.seed(59)
intrinsic_ability = runif(30, min=9, max=10)
time = 31 - 2*intrinsic_ability + rnorm(30, mean=0, sd=.5)

Wyniki pierwszego wyścigu pokazano na poniższym rysunku wraz z komentarzami trenera dla dzieci.

pierwszy wyścig

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

drugi wyścig

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.

gung
źródło
43
Fenomenalne wyjaśnienie pogłębiania danych.
Frank Harrell,
17
-2)L.+kpP.r(χ12)>k)
7
pk2)logN.-2)L.
9
(-2)L.1+2)p0+2))-(-2)L.0+2)p0)=-2)(L.1-L.0)+2). Teraz pierwszym terminem jest statystyka wskaźnika prawdopodobieństwa, na której opiera się wartość p. Dlatego dodajemy dodatkowy parametr, jeśli statystyka wskaźnika prawdopodobieństwa jest większa niż jakiś poziom odcięcia. Jest to to samo, co robi podejście oparte na wartości p. Jest tylko różnica konceptualna
prawdopodobieństwo jest
2
dla ilustracji, dlaczego AIC nie rozwiązuje problemu, patrz: Mundry, R. (2011). Zagadnienia wnioskowania statystycznego opartego na teorii informacji - komentarz z perspektywy częstego. Behavioural Ecology and Sociobiology, 65 (1), 57-68.
Jan
70

Sprawdź pakiet karetki w R. Pomoże ci to w krzyżowej weryfikacji modeli regresji krokowej (użyj method='lmStepAIC'lub method='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ć findCorrelationfunkcji w karetce do identyfikacji i eliminacji zmiennych współliniowych, a rfefunkcji w karetce do eliminacji zmiennych o niskiej statystyce t (użycie rfeControl=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=glmnetargument „daszek” i porównaj potwierdzoną krzyżowo dokładność tego modelu z method=lmStepAICargumentem. 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.

Zach
źródło
1
log(λ2)+β2))
2
@probabilityislogic Czy znasz jakieś dobre implementacje kary za podwójne pareto, w języku takim jak rlub python? Chciałbym to wypróbować.
Zach
1
Z tego, co rozumiem, wybór modelu przez AIC i walidacja krzyżowa z pominięciem jednego jest zasadniczo tym samym (równoważność asymptotyczna, patrz Stone, 1977) , więc AIC i niektóre rodzaje walidacji krzyżowej prawdopodobnie doprowadzą do bardzo podobnych wyniki. Jednak nie użyłem pakietu daszka i z wywołań metod wydaje się, że AIC jest rzeczywiście używany w niektórych przypadkach.
fileunderwater
38

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.

  1. Podziel dane na zestawy szkoleniowe, walidacyjne i testowe.
  2. Trenuj modele na zestawie treningowym.
  3. Zmierz wydajność modelu w zestawie sprawdzania poprawności za pomocą metryki, takiej jak predykcja RMSE, i wybierz model z najniższym błędem predykcji.
  4. W razie potrzeby opracuj nowe modele, powtórz kroki 2–3.
  5. Zgłoś, jak dobrze model działa na zestawie testowym.

Na przykład zastosowania tej metody w prawdziwym świecie uważam, że została ona zastosowana w konkursie na nagrodę Netflix.

Jack Tanner
źródło
15
n>20000
5
@Frank: Jak myślisz, dlaczego N musi być tak wysoka?
rolando2
14
Z powodu niskiej precyzji. Jeśli podzielisz się ponownie, możesz uzyskać bardzo różne wyniki. Dlatego ludzie robią 100 powtórzeń 10-krotnej weryfikacji krzyżowej lub ładowania początkowego.
Frank Harrell
10
@FrankHarrell Od czego zależy liczba n> 20000? Czy opiera się na komentarzu oryginalnego autora o „ kilkuset czynnikach ”? Czy jest to niezależne od jakiegokolwiek aspektu danych?
Darren Cook
33
Rodzaj ustawienia, na którym testowałem podział danych, to n = 17000 z ułamkiem 0,3 mającym zdarzenie i posiadającym około 50 parametrów zbadanych lub dopasowanych do binarnego modelu logistycznego. Użyłem losowego podziału 1: 1. Zweryfikowany obszar ROC w próbce testowej zmienił się istotnie, kiedy ponownie podzieliłem dane i zacząłem od nowa. Zajrzyj do Studium metod stosowanych w tekście w biostat.mc. vanderbilt.edu/rms, aby zapoznać się z badaniami symulacyjnymi i powiązanymi pracami, podając więcej informacji.
Frank Harrell,
15

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

heran_xp
źródło
6
Należy pamiętać, że można uzyskać różną wydajność w badaniach symulacyjnych różnych algorytmów wyboru, zmieniając proces generowania danych, aby faworyzować (nawet jeśli nie umyślnie) określoną procedurę. Kwestia tego, które podejście będzie szybsze lub wolniejsze, jest wyraźna, ale potencjalnie wciąż ważna.
gung
2
W rzeczywistości przykłady w oryginalnej pracy Tibshirani na temat LASSO dobrze ilustrują punkt widzenia @ gunga . To samo dotyczy badań porównawczych różnych metod na rzeczywistych danych. BTW, czy twoje ostatnie referencje są prawidłowe? Artykuł Clements & Hendry z DOI, który podajesz, nie twierdzi, że zautomatyzowane metody przewyższają ludzkich ekspertów, ani w ogóle nie używa słów „z dużym marginesem”. (Byłoby miło, gdybyś podał pełne referencje.)
Scortchi
Znaleziono: Goodrich (2001), „Oprogramowanie komercyjne w konkursie M3”, Int. J. Forecast., 17, s. 560–565. Znajduje się pod tą samą kolekcją „Komentarze do zawodów M3”, co artykuł Clements & Hendry, dlatego właśnie go tam wysłałem do Googling z DOI.
Scortchi
W każdym razie nie jest wcale jasne, czy komentarz Goodricha ma coś wspólnego z wiedzą merytoryczną .
Scortchi
1
@Scortchi może być bardziej zrozumiały artykuł zaczynający się od strony 581 na ten numer czasopisma. Jest to bardziej związane z „konkursem M2”, w którym porównano automatyczne metody prognozowania z zaproszonymi ludzkimi ekspertami (w tym kilkoma dużymi nazwiskami w literaturze szeregów czasowych), którzy znali kontekst gospodarczy / branżowy i mogli nawet poprosić o dodatkowe informacje od firm, które dostarczyły dane.
heran_xp
6

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.

JenSCDC
źródło
3

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.

pianka
źródło
2
To wybrałoby „najlepsze” zmienne w danych , niekoniecznie najlepsze zmienne w procesie / populacji generowania danych, ponieważ ma on tylko dostęp do danych. Tak naprawdę nie różni się od metody krokowej, jakiej chciał PO.
gung
0

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 ?.

Praveen
źródło
-51

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ą

  1. wykonaj wszystkie zmienne regresji względem poszczególnych czynników
  2. posortuj regresję według określonego kryterium (powiedz AIC)
  3. usuń czynniki, które mają niską statystykę t: są one bezużyteczne w wyjaśnianiu naszej zmiennej
  4. w kolejności podanej w 2. spróbuj dodać czynniki jeden po drugim do modelu i zachowaj je, gdy poprawią nasze kryterium. iteracja dla wszystkich czynników.

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!

S4M
źródło
47
(1) Nie byłem świadkiem żadnej „debaty” w tym wątku: wszystkie odpowiedzi i komentarze przedstawiają tę samą podstawową wiadomość. (2) Twoje wdrożenie wydaje się być doraźną wersją regresji krokowej . Zgadzam się, że może być przydatny jako punkt wyjścia, pod warunkiem że nie zostanie automatycznie zaakceptowany jako cel sam w sobie.
whuber
28
faktycznie zaakceptowałeś własną odpowiedź, która porusza każdy argument wysunięty przez społeczność. Nic dziwnego, że można zobaczyć tutaj negatywy ...
Jan
23
Myślę, że po raz pierwszy widzę tak wiele głosów negatywnych. @SAM dlaczego nie akceptujesz innych doskonałych odpowiedzi i nie usuwasz swojej „odpowiedzi”?
marbel
Czy ta najbardziej negatywna odpowiedź w historii SE?
mkt
2
Wydaje się, że odpowiedziałeś na ważne pytanie @probabilityislogic, mówiąc, że Twoim celem jest „znaleźć najlepsze n czynników do wyjaśnienia danej zmiennej”. Budowanie modeli w celu wyjaśnienia (w celu zrozumienia związku przyczynowego) musi być wykonywane bardziej celowo i zwykle znacznie intensywniej niż budowanie modelu w celu przewidywania.
rolando2