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?
źródło
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?
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.
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 ntree
parametró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).ntree
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=-1
uż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
źródło