Random Forest
Ein Random Forest bildet den Durchschnitt vieler Entscheidungsbäume. Jeder Baum wird anhand einer Bootstrap-Stichprobe mit zufälligen Merkmalsaufteilungen erstellt und für Klassifikation und Regression genutzt.
Random Forest ist ein Algorithmus für überwachtes Lernen. Er trainiert viele Entscheidungsbäume mit zufälligen Varianten derselben Daten und kombiniert ihre Vorhersagen: bei der Klassifikation per Abstimmung oder durch Mittelung der Klassenwahrscheinlichkeiten, bei der Regression durch Mittelwertbildung. Leo Breiman beschrieb das Verfahren 2001 in seiner Arbeit Random Forests und baute dabei auf seiner früheren Bagging-Technik auf. Ein einzelner tiefer Baum merkt sich seine Trainingszeilen, sodass seine Vorhersagen bei kleinen Änderungen der Daten stark schwanken. Die Mittelung von Hunderten Bäumen, die jeweils unterschiedliche Fehler machen, gleicht einen Großteil dieser Varianz aus. Dadurch ist Random Forest eines der zuverlässigsten Standardmodelle für Tabellendaten. Das Verfahren benötigt keine Merkmalsskalierung, bewältigt nichtlineare Wechselwirkungen zwischen Merkmalen und sein Testfehler stabilisiert sich, wenn weitere Bäume hinzukommen.
So funktioniert Random Forest#
Random Forest bringt beim Trainieren der Bäume zwei Zufallsquellen ein, denn ein Ensemble ist nur dann hilfreich, wenn seine Mitglieder unterschiedliche Fehler machen. Anschließend werden die Bäume kombiniert:
- Bootstrap-Aggregation (Bagging): Jeder Baum wird mit einer Bootstrap-Stichprobe trainiert, also einer gleich großen Stichprobe aus den Trainingsdaten, in der Zeilen mit Zurücklegen gezogen werden. Manche Zeilen kommen mehrmals vor, und etwa 37 % der Zeilen (der Anteil 1/e) fehlen in jeder einzelnen Stichprobe.
- Zufällige Merkmalsauswahl: Bei jeder Aufteilung berücksichtigt ein Baum nur eine zufällige Auswahl der Merkmale. Der Klassifikator von Scikit-learn verwendet standardmäßig die Quadratwurzel der Anzahl der Merkmale. Bei einem Datensatz mit 100 Merkmalen stehen daher pro Aufteilung 10 Kandidaten zur Wahl. Der Regressor berücksichtigt standardmäßig alle Merkmale. Ein dominantes Merkmal kann somit nicht in jedem Baum an der Spitze stehen, wodurch die Korrelation zwischen den Bäumen sinkt.
- Aggregation: Bei Breimans ursprünglichem Verfahren stimmen die Bäume mit Mehrheit ab. Die Implementierung von Scikit-learn mittelt stattdessen die Klassenwahrscheinlichkeiten aller Bäume. Bei Random-Forest-Regressoren werden die numerischen Vorhersagen der Bäume gemittelt.
Die Bäume wachsen tief und werden nicht beschnitten, sodass jeder einzelne eine geringe Verzerrung und eine hohe Varianz aufweist. Durch die Mittelung vieler wenig korrelierter Bäume sinkt die Varianz, während die Verzerrung gering bleibt. Das ist ein günstiger Schritt auf dem Kompromiss zwischen Verzerrung und Varianz. Da die Bäume unabhängig sind, können sie auch parallel auf CPU-Kernen trainiert werden.
Out-of-Bag-Fehler und Merkmalswichtigkeit#
Die Zeilen, die ein Baum nie gesehen hat, dienen als integrierter Testsatz. Der Out-of-Bag-Wert (OOB) sagt jede Trainingszeile nur anhand der Bäume voraus, in deren Bootstrap-Stichprobe sie nicht enthalten war. So lässt sich die Genauigkeit auf unbekannten Daten schätzen, ohne einen separaten Validierungssatz zurückzuhalten. Random-Forest-Modelle geben außerdem die Merkmalswichtigkeit an. Die standardmäßige, auf der Unreinheit basierende Wichtigkeit misst, wie stark jedes Merkmal die Unreinheit über alle Aufteilungen hinweg verringert. Sie bevorzugt Merkmale mit vielen eindeutigen Werten. Verlässlicher für die Rangfolge von Merkmalen ist daher die Permutationswichtigkeit: der Rückgang des Werts, nachdem ein Merkmal zufällig umgeordnet wurde.
Dieses Beispiel vergleicht einen vollständig gewachsenen Einzelbaum mit einem Random-Forest-Modell von scikit-learn anhand des mitgelieferten Brustkrebs-Datensatzes, verwendet dafür eine 5-fache Kreuzvalidierung und liest anschließend den OOB-Wert des Random Forest aus:
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
# 569 tumors described by 30 numeric features, labeled malignant or benign
X, y = load_breast_cancer(return_X_y=True)
# One fully grown tree vs. a forest of 300 trees on bootstrap samples
tree = DecisionTreeClassifier(random_state=0)
forest = RandomForestClassifier(n_estimators=300, oob_score=True, random_state=0)
# Compare 5-fold cross-validated accuracy
print(f"Single tree: {cross_val_score(tree, X, y, cv=5).mean():.3f}")
print(f"Forest: {cross_val_score(forest, X, y, cv=5).mean():.3f}")
# Out-of-bag score: each row is predicted only by trees that never trained on it
forest.fit(X, y)
print(f"OOB score: {forest.oob_score_:.3f}")Das Skript gibt für den Einzelbaum 0.917, für den Random Forest 0.963 und als OOB-Wert 0.965 aus. Der Random Forest senkt die Fehlerrate des Baums von 8,3 % auf 3,7 %. Der OOB-Schätzwert liegt bei einem einzelnen Trainingslauf nur 0.002 unter der kreuzvalidierten Genauigkeit.
Anwendungen in der Praxis#
- Kreditrisiko und Betrugserkennung: Banken bewerten Kreditanträge und Transaktionen anhand tabellarischer Datensätze mit Merkmalen wie Einkommen, Kontolaufzeit und Ausgabeverhalten. Anhand der Wahrscheinlichkeitsausgabe des Random Forest wird der Entscheidungsschwellenwert festgelegt.
- Vorhersage von Gesundheitsrisiken: Klinische Modelle sagen anhand von Patientendaten Ergebnisse wie eine erneute Aufnahme ins Krankenhaus voraus. Die Permutationswichtigkeit zeigt, welche Messwerte die jeweilige Vorhersage beeinflussen.
- Satellitenbildanalyse: Random Forest ist seit Langem ein bewährtes Verfahren zur Kartierung der Landbedeckung. Dabei wird jedes Pixel oder Feld anhand seiner Spektralbandwerte und Vegetationsindizes klassifiziert.
- Modellierung des Ernteertrags: Ein YOLO26-Detektor zählt Früchte oder Pflanzen auf Feldbildern, wobei jedes Objekt einer Erkennung entspricht. Diese Zählungen pro Feld werden zusammen mit Boden- und Wetterdaten als Spalten in einem Random Forest erfasst, der den Ertrag vorhersagt.
Random Forest im Vergleich zu verwandten Verfahren#
- Einzelner Entscheidungsbaum: Ein Baum lässt sich leicht als eine Reihe von Wenn-dann-Regeln lesen, doch kleine Datenänderungen können zu einem völlig anderen Baum führen. Ein Random Forest ist weniger gut lesbar, weist dafür aber eine deutlich geringere Varianz auf.
- Gradient Boosting: XGBoost, LightGBM und CatBoost bauen nacheinander flache Bäume, wobei jeder die Fehler der vorherigen Bäume korrigiert. Nach der Feinabstimmung schneiden Boosting-Verfahren bei tabellarischen Benchmarks oft besser ab. Die unabhängigen Bäume eines Random Forests lassen sich dagegen parallel trainieren und liefern mit den Standardeinstellungen gute Ergebnisse.
- Grundmodelle für Tabellendaten: Vortrainierte Transformer treffen in einem einzigen Vorwärtsdurchlauf Vorhersagen für eine neue Tabelle, ohne für jeden Datensatz ein Modell anzupassen. Bei kleinen Tabellen können sie inzwischen mit fein abgestimmten Baum-Ensembles mithalten.
- Extrem zufällige Bäume: Für jedes mögliche Merkmal ziehen Extra Trees einen zufälligen Schwellenwert, statt nach dem besten zu suchen, und wählen den besten dieser zufälligen Aufteilungspunkte aus. Scikit-learn trainiert sie standardmäßig ohne Bootstrap-Stichproben mit dem vollständigen Datensatz. Da die Suche nach dem Schwellenwert entfällt, lassen sie sich schneller trainieren als ein gleich großer Random Forest.










