Losowy las na danych o strukturze wielopoziomowej / hierarchicznej

13

Jestem całkiem nowy w uczeniu maszynowym, technikach CART i tym podobnych, i mam nadzieję, że moja naiwność nie jest zbyt oczywista.

Jak Random Forest obsługuje wielopoziomowe / hierarchiczne struktury danych (na przykład, gdy interesująca jest interakcja między poziomami)?

Oznacza to, że zestawy danych z jednostkami analizy na kilku poziomach hierarchicznych ( np. Uczniowie zagnieżdżeni w szkołach, z danymi o uczniach i szkołach).

Jako przykład weźmy pod uwagę wielopoziomowy zestaw danych z osobami na pierwszym poziomie ( np. Z danymi dotyczącymi głosowania, danymi demograficznymi itp.) Zagnieżdżonymi w krajach na drugim poziomie (z danymi na poziomie kraju; np. Populacja):

ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54

Powiedzmy, że votedjest to zmienna odpowiedzi / zależna, a pozostałe to zmienne predykcyjne / niezależne. W tego rodzaju przypadkach, marginesu krańcowych skutków zmiennej (częściowy) na zależność od pewnego zmiennej wyższego poziomu ( na przykład , population) dla różnych zmiennych, na poziomie indywidualnym, itd., Mogą być bardzo interesujące. W przypadku podobnym do tego glmjest oczywiście bardziej odpowiednie - ale gdy istnieje wiele zmiennych, interakcji i / lub brakujących wartości i / lub zestawów danych na bardzo dużą skalę itp., glmNie jest tak wiarygodny.

Podpytania: Czy Random Forest może w jakiś sposób jawnie poradzić sobie z tego rodzaju strukturą danych? Jeśli zastosuje się go niezależnie, jaki rodzaj uprzedzenia to wprowadza? Jeśli Losowy Las nie jest odpowiedni, czy istnieje jakakolwiek inna metoda typu zespołu?

(Pytanie Losowy las na zgrupowane dane jest może podobny, ale tak naprawdę nie odpowiada na to.)

Mikael Poul Johannesson
źródło
Cześć @MikaelAndersson, czy znalazłeś rozwiązanie zadawanych pytań? Mam do czynienia z podobną sytuacją i mam nadzieję usłyszeć wasze doświadczenia. Dzięki.
NoviceProg,

Odpowiedzi:

4

Losowe lasy działałyby dobrze, ale musisz dostrajać hiperparametry (szczególnie jeśli chcesz realistycznej miary wydajności uogólnienia). Tradycyjne oszacowania błędów OOB będą zdecydowanie optymistyczne, ponieważ w twoich danych szerzy się „twinning”.

Aby uzyskać prawidłowe dostrajanie i szacunki uogólnienia, musisz zrozumieć, jakie są cechy charakterystyczne wszelkich nowych danych, które możesz napotkać. Jeśli chcesz ekstrapolować na nowe kraje, musisz skonfigurować jakiś sposób strojenia oparty na ponownym próbkowaniu (taki jak k-krotna walidacja krzyżowa), w którym próbkowanie warstwowe według kraju.

Musisz także uważać, jak kodujesz dane w losowym lesie. Wygląda na countryto, że jest to zmienna kategoryczna. Podanie go w postaci liczbowej byłoby trochę szorstkie, ale nie beznadziejne (szczególnie jeśli zamówiłeś identyfikatory według czegoś przydatnego).

Shea Parkes
źródło
Czy możesz trochę wyjaśnić, dlaczego szacunki błędów OOB będą zbyt optymistyczne?
dmartin
2
Przypuszczam, że ich optymizm zależy od tego, jak mogą wyglądać nowe dane. Gdyby nowe dane pochodziły z innych hrabstw, ten losowy las prawdopodobnie nie działałby tak dobrze, jak wskazują na to błędy OOB. Jest tak, ponieważ na przykład błędy OOB wciąż pochodzą z próbek z tego samego zestawu powiatów.
Shea Parkes
3

Właściwie pracuję nad pakietem R, który uruchamia randomForest jako lokalny klasyfikator zgodnie ze wstępnie zdefiniowaną hierarchią klas. Pakiet można znaleźć w R Forge w „hie-ran-forest”. Pakiet już działa, chociaż nie przejdzie jednego z testów żurawia (dla MAC), nie jestem pewien, dlaczego. Poza faktycznym uruchomieniem funkcji randomForest dla każdego węzła nadrzędnego w dół hierarchii, pakiet zawiera także funkcje przewidywania i funkcje wydajności. Jedna z miar wydajności odpowiada hierarchicznej strukturze klas.

Pakiet rozwiązuje interakcję między poziomami, uruchamiając najpierw losowy las jako lokalny klasyfikator w każdym węźle nadrzędnym w hierarchii klas. Następnie funkcja przewidywania pobiera proporcję głosów „out-bag”, które otrzymano w każdej sprawie w każdym lokalnym klasyfikatorze. Następnie są dwa sposoby, aby zmienić proporcję głosów na wyraźną klasyfikację: 1. zasada krokowej większości - Zacznij od lokalnego klasyfikatora najbliższego korzenia drzewa i wybierz dziecko tego klasyfikatora, który uzyskał najwyższy odsetek głosów. Następnie spójrz na wszystkie dzieci wybranego węzła i ponownie wybierz dziecko, które otrzymało najwyższy odsetek głosów w odpowiednim lokalnym klasyfikatorze. Kontynuuj, aż osiągnięty zostanie terminal. 2)

Mnożnikowa proporcja głosów jest porównywalna z proporcją głosów generowanych przez zwykły losowy Las

Yoni Gavish
źródło
2
Czy możesz wyjaśnić, że twój pakiet dotyczy „interakcji między poziomami”, a jeśli tak, to w jaki sposób? Samo stwierdzenie, że pakiet istnieje, nie jest zbyt dużą odpowiedzią (nie chcę tu być zbyt krytyczny, ale CV chce zbudować trwałe repozytorium wysokiej jakości informacji ML, a fakt, że pakiet istnieje całkiem spełniają ten standard.)
gung - Przywróć Monikę
Uwaga: Twoja nazwa użytkownika, w tym link do strony użytkownika, jest automatycznie dołączana do każdego posta, który tu opublikujesz. Więc nie ma potrzeby podpisywania swoich postów - w rzeczywistości wolimy, żebyś tego nie robił. Jeśli chcesz, aby ludzie mogli się z tobą skontaktować, możesz opublikować metodę (np. Adres e-mail) na swojej stronie użytkownika.
gung - Przywróć Monikę
To świetnie, dzięki @YoniGavish. Dlaczego nie edytować swojej odpowiedzi i dodać do niej te informacje?
Gung - Przywróć Monikę
Czy to jest lepsze @gung?
Yoni Gavish
Tak, to zrobi, @YoniGavish, +1. Witamy na stronie.
gung - Przywróć Monikę
3

W jednym drzewie klasyfikacyjnym grupy te są kodowane tak samo, jak każda inna zmienna kategorialna. Często odbywa się to albo jako kodowanie binarne, albo po prostu za pomocą liczby całkowitej. Istnieją różne argumenty za użyciem obu. W losowych lasach, jeśli używasz kodowania binarnego, niektóre grupy zostaną uwzględnione / wykluczone dla dowolnego drzewa. Więc możesz mieć wskaźnik dla, country_2ale nie country_3. Jeśli pozostawisz zmienną grupy jako liczbę całkowitą, kolejność może również wpłynąć na wynik. Co to oznacza dla country > 5i country < 12? Jak to się zmieni, jeśli losowo ponownie oznaczysz kraje nowymi liczbami całkowitymi?

Na każdym etapie uprawy drzewa algorytm szuka podziału optymalizującego kryteria. Jeśli istnieją duże różnice między grupami, zmienna grupowania będzie ważna, ale jeśli jest tylko umiarkowanie ważna i przycinasz drzewo, to zmienna może być zasadniczo wykluczona.

Podobnie jak większość innych algorytmów uczenia maszynowego, CART i losowe lasy niekoniecznie uwzględniają zależność między obserwacjami w grupach, jak można oczekiwać w hierarchicznym modelu regresji. Jeśli tam jest zależność między obserwacjami, powinna ona zostać przechwycone przez algorytm lasu losowego poprzez generowanie wielu drzew, które wykorzystują zmienną grupującą. Jeśli jednak inne zmienne wykazują większą dyskryminację, zmienna grupująca może zostać zignorowana.

W twoim przypadku, countryi populationsą idealnie współliniowe. Brak informacji uzyskanych dzięki zastosowaniu obu zmiennych w modelu. Możesz więc pomyśleć o tym, jak przypadkowy model lasu traktowałby te zmienne w twoich danych.

Ellis Valentiner
źródło