Random Forest
Random Forest (pol. las losowy) jest jednym z najpopularniejszych algorytmów w dziedzinie uczenia maszynowego. Należy do grupy metod ensemble, które budują silny klasyfikator (lub regresor) poprzez połączenie wielu słabszych modeli – w tym przypadku licznych drzew decyzyjnych.
Historia
Metoda została opracowana w połowie lat 90. XX wieku przez amerykańskiego statystyka Leo Breimana i współpracownika Adele Cutler. Pierwszy artykuł opisujący koncepcję pojawił się w 2001 roku i od tego czasu technika szybko zyskała uznanie wśród praktyków i badaczy.
Podstawowa idea
Random Forest tworzy dużą liczbę drzew decyzyjnych, z których każde jest budowane na podstawie:
- losowego podzbioru przykładów treningowych (tzw. bootstrap),
- losowego wyboru podzbioru atrybutów przy podziale w każdym węźle drzewa.
Dzięki temu poszczególne drzewa są od siebie nieco różne, a ich głosowanie (w klasyfikacji) lub średnia (w regresji) daje stabilny i odporny na przeuczenie wynik.
Budowa modelu
- Wybór liczby drzew n_estimators (zazwyczaj setki lub tysiące).
- Dla każdego drzewa:
- Losowy dobór przykładów z zestawu treningowego z zastąpieniem (metoda bootstrap).
- Budowa drzewa decyzyjnego, przy każdym podziale losując podzbiór atrybutów mtry i wybierając najlepszy split tylko spośród nich.
- Drzewa nie są przycinane (ang. unpruned), co zwiększa ich różnorodność.
- Agregacja wyników:
- Klasyfikacja – większość głosów (majority vote).
- Regresja – średnia przewidywań.
Kluczowe parametry
| Parametr | Opis | Typowa wartość domyślna |
|---|---|---|
n_estimators | Liczba drzew w lesie | 100 |
max_depth | Maksymalna głębokość pojedynczego drzewa (brak limitu = None) | Brak |
max_features | Liczba atrybutów brana pod uwagę przy każdym podziale (sqrt dla klasyfikacji, log2 lub liczba całkowita) | sqrt(n_features) |
min_samples_split | Minimalna liczba próbek wymagana do podziału węzła | 2 |
bootstrap | Czy używać próbkowania ze zwracaniem | true |
oob_score | Obliczanie błędu na out‑of‑bag próbkach | false |
Właściwości i zalety
- Odporność na przeuczenie – dzięki losowości i agregacji model jest mniej podatny na dopasowanie do szumu w danych.
- Możliwość oceny ważności cech – ważność atrybutów może być wyznaczona na podstawie spadku dokładności po losowym przetasowaniu danej cechy.
- Obsługa danych mieszanych (liczbowych i kategorycznych) bez konieczności skalowania.
- Wydajność przy dużych zbiorach – drzewa można budować równolegle, co przyspiesza trening.
Ograniczenia
- Modele mogą być czarne skrzynki – interpretacja pojedynczego drzewa jest łatwa, ale całego lasu trudna.
- Wymagają więcej pamięci niż pojedyncze drzewo decyzyjne, szczególnie przy dużej liczbie
n_estimators. - W pewnych sytuacjach (np. bardzo silnie skorelowane cechy) mogą nie przynieść znaczącej przewagi nad innymi metodami.
Przykładowe zastosowania
Random Forest znajduje zastosowanie w wielu dziedzinach, m.in.:
- Biologia – klasyfikacja gatunków, analiza ekspresji genów (bioinformatyka).
- Finanse – ocena ryzyka kredytowego, wykrywanie oszustw.
- Medicina – prognozowanie przebiegu chorób, segmentacja obrazów medycznych.
- Ekologia – modelowanie siedlisk i prognozowanie zmian klimatycznych.
- Marketing – segmentacja klientów, prognozowanie popytu.
Implementacje
W najpopularniejszych bibliotekach programistycznych dostępne są gotowe implementacje:
- scikit-learn – klasa
RandomForestClassifieriRandomForestRegressor. - R – pakiet
randomForest. - Apache Spark MLlib –
RandomForestClassifieriRandomForestRegressor. - TensorFlow Decision Forests – integracja z ekosystemem TensorFlow.
Powiązane pojęcia
Warto zapoznać się także z następującymi artykułami:
Bibliografia
- Breiman, L. (2001). Random Forests. Machine Learning, 45(1), 5–32.
- Hastie, T., Tibshirani, R., & Friedman, J. (2009). Elements of Statistical Learning. (Rozdział 15 – Random Forests).
- Cutler, A., et al. (2007). Random Forests for Classification in Ecology. Ecology, 88(11), 2783–2792.