Las losowy

Zespół wielu drzew decyzyjnych, których wyniki są łączone dla lepszej i stabilniejszej predykcji. Ogranicza przeuczenie pojedynczego drzewa.

Las losowy (ang. Random Forest) to algorytm uczenia maszynowego, który buduje wiele drzew decyzyjnych i łączy ich głosy w jedną predykcję. Zamiast polegać na jednym drzewie — które łatwo „uczy się na pamięć” danych treningowych — bierzesz ich setki, każde nieco inne, i pytasz o zdanie cały zespół. Przy klasyfikacji wygrywa odpowiedź większości, przy regresji liczy się średnia. Dzięki temu model jest stabilniejszy i mniej podatny na overfitting niż pojedyncze drzewo.

Jak to działa

Sekret tkwi w dwóch porcjach losowości. Po pierwsze bagging (bootstrap aggregating): każde drzewo trenuje się na innej, losowo wylosowanej ze zwracaniem próbce danych. Po drugie, przy każdym podziale węzła drzewo rozważa tylko losowy podzbiór cech, a nie wszystkie naraz. Efekt: drzewa są od siebie „odklejone” i nie powielają tych samych błędów. Pojedyncze drzewo może się mylić, ale uśrednienie wielu niezależnych pomyłek zwykle daje trafniejszy wynik — to ta sama intuicja, co „mądrość tłumu”.

Las losowy świetnie radzi sobie z danymi tabelarycznymi, miesza cechy liczbowe i kategoryczne, nie wymaga skalowania i daje gratis ranking ważności cech (feature_importances_). To częsty pierwszy wybór na danych w tabelce, zanim sięgniesz po cięższe armaty.

Przykład z praktyki

W Pythonie używasz scikit-learn. Klasyfikator odpalasz dosłownie w trzech linijkach:

  • from sklearn.ensemble import RandomForestClassifier
  • model = RandomForestClassifier(n_estimators=300, random_state=42)
  • model.fit(X_train, y_train)

Typowy scenariusz: przewidujesz churn klientów (kto odejdzie z abonamentu) na podstawie historii płatności i aktywności. Las losowy wskaże też, które cechy najmocniej wpływają na decyzję — np. że liczba logowań w ostatnim miesiącu waży więcej niż wiek konta.

Częste błędy i mity

  • „Im więcej drzew, tym lepiej” — w pewnym sensie tak, ale powyżej kilkuset drzew zyskujesz głównie dłuższy czas treningu, nie celność. n_estimators 100–500 zwykle wystarcza.
  • Las losowy się nie przeucza — mit. Ogranicza overfitting, ale przy bardzo głębokich drzewach i zaszumionych danych nadal potrafi. Kontroluj max_depth i min_samples_leaf.
  • To nie jest model „wyjaśnialny”. Dostajesz ważność cech, ale nie prześledzisz logiki jak w jednym drzewie. Setki drzew to czarna skrzynka.
  • Na ogromnych zbiorach i w konkursach często przegrywa z gradient boosting (XGBoost, LightGBM).

Pojęcia powiązane

Drzewo decyzyjne, bagging, gradient boosting (XGBoost, LightGBM), overfitting, ensemble learning, feature importance, scikit-learn.