0Pricing
Learn AI with Python · Lekcja

Lasy losowe i bagging

Koncepcja zespołów, RandomForestClassifier, n_estimators, ważność cech i wynik OOB.

Lasy losowe i bagging to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Problem z pojedynczymi drzewami

Pojedyncze drzewo decyzyjne ma dużą wariancję: ponowne trenowanie na nieco innych danych może doprowadzić do powstania zupełnie innego drzewa. Metody zespołowe rozwiązują ten problem, łącząc wiele drzew.

Bagging (agregacja bootstrapowa)

Bagging polega na trenowaniu wielu modeli na różnych próbkach bootstrapowych danych, czyli próbkach losowanych ze zwracaniem, a następnie uśrednianiu ich predykcji.

Uśrednianie wielu modeli o dużej wariancji zmniejsza wariancję całkowitą bez znacznego zwiększania obciążenia.

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

bag = BaggingClassifier(
    estimator=DecisionTreeClassifier(),
    n_estimators=100,
    random_state=0,
)
bag.fit(Xtr, ytr)

Od baggingu do lasów losowych

Las losowy to bagging drzew z dodatkowym mechanizmem: przy każdym podziale brany jest pod uwagę tylko losowy podzbiór cech.

Zmniejsza to korelację między drzewami, dzięki czemu ich błędy lepiej się wzajemnie kompensują, co poprawia działanie całego zespołu.

Podstawy RandomForestClassifier

Należy użyć klasy RandomForestClassifier. Kluczowy parametr n_estimators określa liczbę tworzonych drzew. Większa liczba drzew oznacza większą stabilność, ale także wolniejsze działanie.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(n_estimators=200, random_state=0)
rf.fit(Xtr, ytr)
print("Accuracy:", rf.score(Xte, yte))

Trenowanie równoległe za pomocą n_jobs

Drzewa w lesie są niezależne, dlatego można je trenować równolegle. Ustawienie n_jobs=-1 pozwala użyć wszystkich rdzeni CPU i znacznie przyspieszyć dopasowywanie modelu.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=500,
    n_jobs=-1,        # use all cores
    random_state=0,
)
rf.fit(Xtr, ytr)

Wynik out-of-bag (OOB)

Każde drzewo pomija około jednej trzeciej próbek, których nie wybrano podczas próbkowania bootstrapowego. Te próbki out-of-bag tworzą wbudowany zbiór walidacyjny.

Ustawienie oob_score=True pozwala uzyskać bezpłatne oszacowanie błędu uogólniania bez wydzielania osobnego zbioru.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=300,
    oob_score=True,
    random_state=0,
)
rf.fit(Xtr, ytr)
print("OOB score:", rf.oob_score_)

Kontrolowanie głębokości drzew w lesie

Obowiązują te same parametry co dla pojedynczego drzewa: max_depth, min_samples_leaf i max_features (liczba cech sprawdzanych przy każdym podziale).

max_features="sqrt" to często użyślna wartość domyślna w klasyfikacji.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=300,
    max_depth=12,
    max_features="sqrt",
    random_state=0,
)

Wbudowana ważność cech

Podobnie jak pojedyncze drzewa, lasy udostępniają atrybut feature_importances_, uśredniony dla wszystkich drzew. Ta ważność oparta na nieczystości jest szybka do obliczenia, ale może faworyzować cechy o dużej liczbie różnych wartości.

from sklearn.ensemble import RandomForestClassifier
import numpy as np

rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(Xtr, ytr)
order = np.argsort(rf.feature_importances_)[::-1]
for i in order[:5]:
    print(i, rf.feature_importances_[i])

Ważność permutacyjna

Ważność permutacyjna jest bardziej wiarygodna: tasuje jedną kolumnę cechy i mierzy, o ile spada wynik. Duży spadek oznacza, że cecha była ważna.

Ta metoda nie zależy od modelu i pozwala uniknąć obciążenia związanego z nieczystością.

from sklearn.inspection import permutation_importance

result = permutation_importance(
    rf, Xte, yte, n_repeats=10, random_state=0, n_jobs=-1
)
print(result.importances_mean)

Interpretacja wyników permutacji

permutation_importance zwraca wartości importances_mean i importances_std obliczone na podstawie powtórzeń. Należy obliczać je na wydzielonym zbiorze, aby zmierzyć wpływ na uogólnianie, a nie dopasowanie do danych treningowych.

import numpy as np

means = result.importances_mean
stds = result.importances_std
for i in np.argsort(means)[::-1]:
    print(f"feature {i}: {means[i]:.3f} +/- {stds[i]:.3f}")

Kiedy używać lasów losowych

Lasy losowe to dobry wybór domyślny: są odporne, wymagają niewielkiego dostrajania, obsługują nieliniowości i interakcje oraz są odporne na przeuczenie. Ich wadami są większe zużycie pamięci, wolniejsze predykcje niż w przypadku pojedynczego drzewa oraz mniejsza interpretowalność.

Szybkie sprawdzenie

Sprawdźmy Państwa zrozumienie baggingu i lasów losowych.

Podsumowanie

Podsumowanie: Bagging trenuje modele na próbkach bootstrapowych i uśrednia ich wyniki, aby zmniejszyć wariancję. Lasy losowe dodatkowo wykorzystują losowe podzbiory cech przy każdym podziale. Modele można dostrajać za pomocą n_estimators, używać n_jobs=-1 w celu przyspieszenia, uzyskiwać bezpłatną walidację dzięki oob_score oraz wybierać permutation_importance zamiast ważności opartej na nieczystości, aby otrzymywać wiarygodne rankingi.

Często zadawane pytania

Czy lekcja „Lasy losowe i bagging” jest bezpłatna?

Tak — pełny tekst „Lasy losowe i bagging” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Lasy losowe i bagging”?

Koncepcja zespołów, RandomForestClassifier, n_estimators, ważność cech i wynik OOB. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Lasy losowe i bagging”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Drzewa decyzyjne: teoria i implementacja
  2. Lasy losowe i bagging
  3. Gradient boosting: GBM i XGBoost
  4. LightGBM i CatBoost
← Powrót do Learn AI with Python