2015-07-10 13 views
5

Próbuję zrozumieć, jak losowy las działa w języku angielskim, a nie w matematyce. Czy ktokolwiek może mi wyjaśnić, jak działa ten algorytm?Proste wyjaśnienie losowego lasu

O ile rozumiem, podajemy funkcje i etykiety bez informowania algorytmu, która z funkcji powinna zostać sklasyfikowana jako etykieta? Tak jak robiłem Naive Bayes, która opiera się na prawdopodobieństwie, musimy powiedzieć, która cecha powinna być jaką etykietą. Czy jestem całkowicie daleko?

Jeśli mogę uzyskać bardzo proste wyjaśnienie w języku angielskim, będę bardzo wdzięczny.

+5

https: //www.quora.com/Random-Forests/How-do-losowy-las-work-in-laymans-terms – CoryKramer

Odpowiedz

4

RandomForest wykorzystuje tak zwane podejście do pakowania. Pomysł opiera się na klasycznym rozwiązaniu wariancji. Załóżmy, że mamy zestaw (na przykład N) nadmiarowych estymatorów, które mają niskie odchylenie, ale wysoką różnicę między próbkami. Niskie odchylenie jest dobre i chcemy je zachować, wysoka wariancja jest zła i chcemy ją zmniejszyć. RandomForest próbuje to osiągnąć, wykonując tak zwane bootstraps/sub-sampling (jak wspomniano przez @Alexander, jest to połączenie próbkowania początkowego zarówno w obserwacjach, jak i funkcjach). Prognozowanie jest średnią z poszczególnych estymatorów, więc właściwość o niskiej wartości biasu jest z powodzeniem zachowywana. A dalej za pomocą Twierdzenia o granice centralne wariancja tej średniej próbki ma wariancję równą variance of individual estimator divided by square root of N. Teraz ma on zarówno właściwości niskiego odchylenia, jak i niskiej wariancji, dlatego też RandomForest często przewyższa niezależny estymator.

+0

Aby nieco rozszerzyć doskonałe podsumowanie Jianxun powyżej, RandomForest zwykle wybiera losowo jedną trzecią atrybutów w każdym węźle w drzewie dla problemu regresyjnego (i pierwiastka kwadratowego liczby atrybutów dla problemu klasyfikacji). Jest to więc kombinacja workowania (pobierania losowych próbek początkowych danych) i losowego wyboru atrybutów. – Alexander

8

Spróbuję przedstawić dodatkowe wyjaśnienie za pomocą prostych słów.

Losowy las to zbiór losowych drzew decyzyjnych (o numerze n_estimators w sklearn). Musisz zrozumieć, jak zbudować jedno drzewo losowej decyzji.

Mówiąc krótko, aby zbudować losowe drzewo decyzyjne, zacznij od podzbioru próbek treningowych. W każdym węźle losujesz podzbiór funkcji (liczba określona przez max_features w sklearn). Dla każdej z tych funkcji przetestujesz różne progi i zobaczysz, jak dzielą one twoje próbki według podanego kryterium (ogólnie entropia lub gini, criterion parametr w sklearn). Następnie zachowasz funkcję i jej próg, który najlepiej podzieli dane i zapisze je w węźle. Kiedy kończy się budowa drzewa (może być z różnych powodów: maksymalna głębokość jest osiągnięta (max_depth w sklearn), osiągnięto minimalną liczbę próbek (min_samples_leaf w sklearn) itp.) Patrzysz na próbki w każdym liściu i zachowujesz częstotliwość etykiet. W rezultacie wygląda to tak, jakby drzewo zawierało partię próbek treningowych zgodnie z istotnymi funkcjami.

Ponieważ każdy węzeł jest zbudowany z elementów wybranych losowo, rozumiesz, że każde drzewo zbudowane w ten sposób będzie inne. Przyczynia się to do dobrego kompromisu między uprzedzeniami a wariancją, jak wyjaśnił @Jianxun Li.

Następnie w trybie testowym próbka przejdzie przez każde drzewo, podając częstotliwości etykiet dla każdego drzewa. Najbardziej reprezentowana etykieta jest zazwyczaj ostatecznym wynikiem klasyfikacji.

4

Dodając do powyższych dwóch odpowiedzi, ponieważ wspomniałeś proste wyjaśnienie. Oto zapis, który moim zdaniem jest najprostszym sposobem wyjaśnienia losowych lasów.

Kredyty otrzymują Edwin Chen za proste wyjaśnienie w odniesieniu do losowych lasów: here. Zamieszczam to samo poniżej.

Załóżmy, że jesteś bardzo niezdecydowany, więc gdy chcesz obejrzeć film, poprosić znajomego Willow czy ona myśli, że Ci się spodoba. Aby odpowiedzieć, Willow najpierw musi dowiedzieć się, jakie filmy Ci się podobają, więc dajesz jej kilka filmów i mówisz jej, czy podobał ci się każdy, czy nie (tj. Dajesz jej etykietowany zestaw treningowy). Kiedy zapytasz ją, czy myśli, że spodoba ci się film X, czy nie, gra z IMDB na 20 pytań, zadając pytania typu "Czy X to romantyczny film?", "Czy Johnny Depp jest gwiazdą w X?" , i tak dalej. Najpierw prosi o więcej informacji (tzn. Maksymalizuje zysk z informacji każdego pytania) i daje odpowiedź tak/nie na końcu.

W ten sposób Willow jest drzewem decyzyjnym dla Twoich preferencji filmowych.

Ale Willow jest tylko człowiekiem, więc nie zawsze bardzo dobrze uogólnia twoje preferencje (to znaczy, ona się nadaje). Aby uzyskać dokładniejsze rekomendacje, chciałbyś zapytać kilku znajomych i obejrzeć film X, jeśli większość z nich twierdzi, że ci się spodoba. To znaczy, zamiast pytać tylko Willow, chcesz zapytać także Woody'ego, Apple'a i Cartmana, i głosują na to, czy spodoba ci się film (np. W tym przypadku budujesz klasyfikator zespołu, czyli las).

Teraz nie chcesz, aby każdy z twoich znajomych robił to samo i dawał ci tę samą odpowiedź, więc najpierw podaj każdemu z nich nieco inne dane. W końcu nie jesteś absolutnie pewien własnych preferencji - powiedziałeś Willow, że kochasz Titanica, ale może byłeś po prostu szczęśliwy tego dnia, ponieważ to były twoje urodziny, więc może niektórzy z twoich znajomych nie powinni używać tego, co ci się podobało Titanic w tworzeniu ich zaleceń. A może powiedziałeś jej, że kochasz Kopciuszek, ale tak naprawdę to naprawdę ci się podobało, więc niektórzy z twoich znajomych powinni dać Kopciuszkowi więcej wagi. Więc zamiast dawać przyjaciołom te same dane, które dałeś Willow, dajesz im nieco zirytowane wersje. Nie zmieniasz decyzji dotyczących miłości/nienawiści, po prostu mówisz, że kochasz/nienawidzisz niektórych filmów trochę mniej więcej (formalnie, dajesz każdemu z twoich przyjaciół bootstrapową wersję oryginalnych danych treningowych). Na przykład, podczas gdy powiedziałeś Willow, że lubisz Czarnego Łabędzia i Harry'ego Pottera i nie lubisz Avatar'a, mówisz Woody'emu, że podobał Ci się Czarny Łabędź tak bardzo, że oglądałeś go dwa razy, nie lubiłeś Avatar'a i w ogóle nie wspominasz o Harrym Potterze.

Korzystając z tego zestawu, masz nadzieję, że podczas gdy każdy z twoich znajomych daje nieco idiosynkratyczne rekomendacje (Willow uważa, że ​​lubisz filmy o wampirach bardziej niż ty, Woody myśli, że lubisz filmy Pixar, a Cartman myśli, że po prostu nienawidzisz wszystkiego), błędy zostaną anulowane w większości. W związku z tym Twoi znajomi tworzą teraz upakowany (bootstrap) las Twoich preferencji filmowych.

Jednak wciąż istnieje jeden problem z Twoimi danymi. Podczas gdy kochałeś zarówno Titanic, jak i Inception, nie dlatego, że lubisz filmy z Leonardo DiCaprio. Może podobały ci się oba filmy z innych powodów. W związku z tym nie chcesz, aby Twoi przyjaciele opierali swoje zalecenia na tym, czy Leo jest w filmie, czy nie. Tak więc, gdy każdy przyjaciel zadaje IMDB pytanie, dozwolony jest tylko losowy podzbiór możliwych pytań (np. Kiedy budujesz drzewo decyzyjne, w każdym węźle używasz losowości przy wybieraniu atrybutu do podziału, powiedzmy losowo wybierając atrybut lub wybór atrybutu z losowego podzbioru). Oznacza to, że Twoi znajomi nie mogą pytać, czy Leonardo DiCaprio jest w filmie, kiedy tylko chce. Więc podczas gdy wcześniej wstrzykiwałeś przypadkowość na poziomie danych, nieco zakłócając twoje preferencje filmowe, teraz wstrzykujesz przypadkowość na poziomie modelu, sprawiając, że twoi przyjaciele zadają różne pytania w różnym czasie.

Tak więc twoi przyjaciele tworzą teraz losowy las.