Czy optymalna liczba drzew w losowym lesie zależy od liczby predyktorów?

46

Czy ktoś może wyjaśnić, dlaczego potrzebujemy dużej liczby drzew w losowym lesie, gdy liczba predyktorów jest duża? Jak możemy ustalić optymalną liczbę drzew?

Z Khan
źródło

Odpowiedzi:

70

Losowy las używa workowania (wybieranie próbki obserwacji zamiast wszystkich) i losowej metody podprzestrzeni (wybieranie próbki cech zamiast wszystkich, innymi słowy - spakowanie atrybutów ), aby wyhodować drzewo. Jeśli liczba obserwacji jest duża, ale liczba drzew jest zbyt mała, wówczas niektóre obserwacje zostaną przewidziane tylko raz lub wcale. Jeśli liczba predyktorów jest duża, ale liczba drzew jest zbyt mała, wówczas (teoretycznie) niektórych funkcji można pominąć we wszystkich używanych podprzestrzeniach. Oba przypadki powodują zmniejszenie losowej mocy predykcyjnej lasu. Ale ten ostatni przypadek jest raczej ekstremalny, ponieważ wybór podprzestrzeni odbywa się w każdym węźle.

Podczas klasyfikacji wymiarowość podprzestrzeni jest domyślnie (raczej mała, jest całkowitą liczbą predyktorów), ale drzewo zawiera wiele węzłów. Podczas regresji wymiarowość podprzestrzeni jest domyślnie (wystarczająco duża), chociaż drzewo zawiera mniej węzłów. Zatem optymalna liczba drzew w losowym lesie zależy od liczby predyktorów tylko w skrajnych przypadkach.ppp/3

Oficjalna strona algorytmu państw, które losowo las nie nadmierne dopasowanie, można użyć jako dużo drzew, jak chcesz. Ale Mark R. Segal (14 kwietnia 2004 r., „Benchmark uczenia maszynowego i losowa regresja lasu”. Centrum Bioinformatyki i Biostatyki Molekularnej) stwierdził, że nie pasuje do niektórych hałaśliwych zbiorów danych. Aby więc uzyskać optymalną liczbę, możesz wypróbować losowy las na siatce ntreeparametrów (prosty, ale bardziej obciążający procesor) lub zbudować jeden losowy las z wieloma drzewami keep.inbag, obliczyć wskaźniki błędów braku pamięci (OOB) dla pierwszych drzew (gdzie zmienia się z na ) i wykreślanie wskaźnika błędów OOB względem liczby drzew (bardziej złożone, ale mniej obciążające procesor).nn1ntree

O_Devinyak
źródło
-2

Zgodnie z tym artykułem

Sugerują, że losowy las powinien mieć liczbę drzew od 64 do 128 drzew . Dzięki temu powinieneś zachować równowagę między AOC ROC a czasem przetwarzania.

silviomoreto
źródło
10
Wydaje się dziwne, że ich wyniki nie zależą od liczby funkcji w zbiorze danych ...
naught101
-5

Chcę coś dodać, jeśli masz więcej niż 1000 funkcji i 1000 wierszy, nie możesz po prostu wziąć liczby drzew w rondom.

sugeruję, że powinieneś najpierw wykryć liczbę procesorów i pamięci RAM przed próbą uruchomienia weryfikacji krzyżowej, aby znaleźć stosunek między nimi a liczbą drzew

jeśli korzystasz z sikit learn w Pythonie, masz opcję n_jobs=-1użycia całego procesu, ale koszt każdego rdzenia wymaga kopii danych, po czym możesz wypróbować tę formułę

ntree = sqrt (liczba wierszy * liczba kolumn) / numberofcpu

Malouke
źródło
6
Myślę, że musisz to zmienić, aby przedstawić dowody i uzasadnienie swoich oświadczeń.
mdewey