Przejdź do głównej zawartości

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? ⭐

  1. Bootstrap sampling: Tworzenie wielu podzbiorów danych przez losowanie z powtórzeniami.
  2. Feature sampling: Dla każdego podziału wybieranie losowego podzbioru cech.
  3. Trenowanie drzew: Każde drzewo jest trenowane niezależnie.
  4. 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