0Pricing
Learn AI with Python · Lektion

Random Forests und Bagging

Ensemble-Konzept, RandomForestClassifier, n_estimators, Feature-Wichtigkeit und OOB-Score.

Random Forests und Bagging ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Das Problem einzelner Bäume

Ein einzelner Entscheidungsbaum weist eine hohe Varianz auf: Beim erneuten Training mit leicht anderen Daten kann ein völlig anderer Baum entstehen. Ensembles lösen dieses Problem, indem sie viele Bäume kombinieren.

Bagging (Bootstrap-Aggregation)

Bagging trainiert viele Modelle mit unterschiedlichen Bootstrap-Stichproben der Daten, also mit zufälligen Stichproben mit Zurücklegen, und mittelt anschließend deren Vorhersagen.

Das Mitteln vieler Modelle mit hoher Varianz reduziert die Gesamtvarianz, ohne den Bias stark zu erhöhen.

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

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

Von Bagging zu Random Forests

Ein Random Forest verwendet Bagging für Bäume und ergänzt einen weiteren Trick: Bei jeder Aufteilung wird nur eine zufällige Teilmenge der Features berücksichtigt.

Dadurch werden die Bäume weniger stark miteinander korreliert, sodass sich ihre Fehler besser ausgleichen und das Ensemble leistungsfähiger wird.

Grundlagen von RandomForestClassifier

Verwenden Sie RandomForestClassifier. Der wichtigste Parameter n_estimators legt fest, wie viele Bäume erstellt werden. Mehr Bäume = stabiler, aber langsamer.

from sklearn.ensemble import RandomForestClassifier

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

Paralleles Training mit n_jobs

Die Bäume eines Forests sind unabhängig und können daher parallel trainiert werden. Setzen Sie n_jobs=-1, um alle CPU-Kerne zu verwenden und das Training deutlich zu beschleunigen.

from sklearn.ensemble import RandomForestClassifier

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

Out-of-Bag-(OOB-)Score

Jeder Baum lässt ungefähr ein Drittel der Samples aus, weil das Bootstrap-Verfahren sie nicht ausgewählt hat. Diese Out-of-Bag-Samples bilden einen integrierten Validierungssatz.

Setzen Sie oob_score=True, um ohne separate Aufteilung eine kostenlose Schätzung des Generalisierungsfehlers zu erhalten.

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_)

Baumtiefe im Forest steuern

Es gelten dieselben Baumparameter: max_depth, min_samples_leaf und max_features (wie viele Features pro Aufteilung ausprobiert werden).

max_features="sqrt" ist der übliche Standardwert für Klassifikation.

from sklearn.ensemble import RandomForestClassifier

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

Integrierte Feature-Importances

Wie einzelne Bäume stellen auch Forests feature_importances_ bereit, gemittelt über alle Bäume. Diese auf der Unreinheit basierende Wichtigkeit ist schnell zu berechnen, kann aber Features mit hoher Kardinalität bevorzugen.

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])

Permutation Importance

Permutation Importance ist zuverlässiger: Dabei wird eine Feature-Spalte zufällig neu angeordnet und gemessen, wie stark der Score sinkt. Ein großer Rückgang bedeutet, dass das Feature wichtig war.

Diese Methode ist modellunabhängig und vermeidet die Verzerrung durch die Unreinheit.

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)

Permutationsergebnisse interpretieren

permutation_importance gibt über mehrere Wiederholungen hinweg importances_mean und importances_std zurück. Berechnen Sie die Werte auf einem Hold-out-Datensatz, damit Sie den Einfluss auf die Generalisierung und nicht nur die Anpassung an die Trainingsdaten messen.

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}")

Wann Sie Random Forests verwenden sollten

Random Forests sind eine gute Standardwahl: Sie sind robust, benötigen wenig Abstimmung, verarbeiten Nichtlinearitäten und Wechselwirkungen und sind unempfindlich gegenüber Overfitting. Nachteile sind der höhere Speicherbedarf, langsamere Vorhersagen als bei einem einzelnen Baum und die geringere Interpretierbarkeit.

Schnelltest

Überprüfen Sie Ihr Verständnis von Bagging und Random Forests.

Rückblick

Rückblick: Bagging trainiert Modelle mit Bootstrap-Stichproben und mittelt ihre Ergebnisse, um die Varianz zu reduzieren. Random Forests ergänzen zufällige Feature-Teilgruppen bei jeder Aufteilung. Stimmen Sie sie mit n_estimators ab, verwenden Sie für mehr Geschwindigkeit n_jobs=-1, erhalten Sie mit oob_score eine integrierte Validierung und bevorzugen Sie für zuverlässige Rangfolgen permutation_importance gegenüber der auf Unreinheit basierenden Wichtigkeit.

Häufig gestellte Fragen

Ist die Lektion „Random Forests und Bagging“ kostenlos?

Ja — der vollständige Text von „Random Forests und Bagging“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Random Forests und Bagging“?

Ensemble-Konzept, RandomForestClassifier, n_estimators, Feature-Wichtigkeit und OOB-Score. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Random Forests und Bagging“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Entscheidungsbäume: Theorie und Implementierung
  2. Random Forests und Bagging
  3. Gradient Boosting: GBM und XGBoost
  4. LightGBM und CatBoost
← Zurück zu Learn AI with Python