decision_trees
czym są drzewa decyzyjne? ⭐
- Drzewa decyzyjne to model uczenia maszynowego, który tworzy strukturę podobną do drzewa z węzłami decyzyjnymi i liśćmi.
- Każdy węzeł wewnętrzny reprezentuje test na jednej z cech (np. "czy wiek > 30?").
- Każda gałąź reprezentuje wynik testu (np. "tak" lub "nie").
- Każdy liść reprezentuje przewidywaną klasę lub wartość.
- Działa poprzez rekurencyjne dzielenie danych na podstawie najlepszych cech.
jak działają drzewa decyzyjne? ⭐
- Wybór najlepszej cechy: Algorytm znajduje cechę, która najlepiej dzieli dane (np. Information Gain, Gini Index).
- Podział danych: Dane są dzielone na podstawie wartości tej cechy.
- Rekurencja: Proces powtarza się dla każdego podzbioru danych.
- Kryterium stopu: Zatrzymuje się, gdy wszystkie próbki należą do tej samej klasy lub osiągnięto maksymalną głębokość.
przykładowy kod (scikit-learn)
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
# Generowanie danych
X, y = make_classification(n_samples=100, n_features=2, 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 = DecisionTreeClassifier(max_depth=3, 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}")
# Wizualizacja drzewa
plt.figure(figsize=(10, 8))
plot_tree(model, filled=True, rounded=True, feature_names=['Feature 1', 'Feature 2'])
plt.show()
praktyczne ćwiczenia
- Zastosuj drzewo decyzyjne do klasyfikacji danych iris.
- Eksperymentuj z różnymi parametrami:
max_depth
,min_samples_split
,min_samples_leaf
. - Porównaj wyniki z różnymi kryteriami podziału (gini, entropy).
- Wizualizuj drzewo i interpretuj jego strukturę.
- Zaimplementuj prosty algorytm drzewa decyzyjnego od podstaw.
dobre praktyki
- Kontrola głębokości: Używaj
max_depth
aby uniknąć overfitting. - Minimalna liczba próbek: Ustaw
min_samples_split
imin_samples_leaf
. - Feature importance: Analizuj znaczenie cech po trenowaniu.
- Walidacja: Używaj cross-validation do oceny modelu.
wady i zalety
Zalety:
- Łatwy do zrozumienia i interpretacji
- Może obsługiwać dane kategoryczne i numeryczne
- Nie wymaga skalowania danych
- Może wykrywać nieliniowe zależności
Wady:
- Podatne na overfitting
- Mało stabilne (małe zmiany w danych mogą znacząco zmienić drzewo)
- Może być złożone dla dużych zbiorów danych
- Nie radzi sobie dobrze z zależnościami między cechami
polecane źródła
- Decision Trees – scikit-learn
- Decision Tree Algorithm – Towards Data Science
- Decision Trees – StatQuest (YouTube)
- Decision Tree Tutorial – Machine Learning Mastery