random_forests
czym są lasy losowe? ⭐
- Lasy losowe (Random Forest) to metoda ensemble, która łączy wiele drzew decyzyjnych.
- Każde drzewo jest trenowane na losowym podzbiorze danych (bootstrap sample).
- Każde drzewo używa losowego podzbioru cech do podziałów.
- Końcowe przewidywanie to głosowanie większościowe (klasyfikacja) lub średnia (regresja).
- Łączy prostotę drzew decyzyjnych z stabilnością ensemble.
jak działają lasy losowe? ⭐
- Bootstrap sampling: Tworzenie wielu podzbiorów danych przez losowanie z powtórzeniami.
- Feature sampling: Dla każdego podziału wybieranie losowego podzbioru cech.
- Trenowanie drzew: Każde drzewo jest trenowane niezależnie.
- Agregacja wyników: Głosowanie większościowe lub średnia z wszystkich drzew.
przykładowy kod (scikit-learn)
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.metrics import accuracy_score, classification_report
import matplotlib.pyplot as plt
import numpy as np
# Generowanie danych
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Tworzenie i trenowanie modelu
model = RandomForestClassifier(
n_estimators=100, # liczba drzew
max_depth=10, # maksymalna głębokość każdego drzewa
random_state=42
)
model.fit(X_train, y_train)
# Przewidywanie
y_pred = model.predict(X_test)
print(f"Dokładność: {accuracy_score(y_test, y_pred):.3f}")
print("\nRaport klasyfikacji:")
print(classification_report(y_test, y_pred))
# Feature importance
feature_importance = model.feature_importances_
plt.figure(figsize=(10, 6))
plt.bar(range(len(feature_importance)), feature_importance)
plt.title('Feature Importance')
plt.xlabel('Feature Index')
plt.ylabel('Importance')
plt.show()
praktyczne ćwiczenia
- Porównaj wyniki lasu losowego z pojedynczym drzewem decyzyjnym.
- Eksperymentuj z różnymi parametrami:
n_estimators
,max_depth
,min_samples_split
. - Analizuj feature importance i zidentyfikuj najważniejsze cechy.
- Użyj lasu losowego do regresji (RandomForestRegressor).
- Zaimplementuj prosty las losowy od podstaw.
dobre praktyki
- Liczba drzew: Zazwyczaj 100-500 drzew wystarcza.
- Głębokość drzew: Pozwól drzewom rosnąć do pełnej głębokości.
- Feature importance: Używaj do selekcji cech.
- Out-of-bag score: Sprawdzaj OOB score jako miarę walidacji.
wady i zalety
Zalety:
- Bardzo stabilne i odporne na overfitting
- Może obsługiwać dane kategoryczne i numeryczne
- Dostarcza feature importance
- Działa dobrze z brakującymi danymi
- Może wykrywać nieliniowe zależności
Wady:
- Mniej interpretowalne niż pojedyncze drzewa
- Wolniejsze w trenowaniu i przewidywaniu
- Może być złożone dla bardzo dużych zbiorów danych
- Wymaga więcej pamięci
zastosowania
- Klasyfikacja obrazów
- Przewidywanie cen
- Wykrywanie anomalii
- Analiza medyczna
- Systemy rekomendacji
polecane źródła
- Random Forest – scikit-learn
- Random Forest Algorithm – Towards Data Science
- Random Forest – StatQuest (YouTube)
- Random Forest Tutorial – Machine Learning Mastery