Warum Random Forests funktionieren
Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 42 von 58.
Die Bäume eines Waldes unterscheiden sich absichtlich. Jeder wird mit einer Bootstrap-Stichprobe trainiert: zufällig mit Zurücklegen gezogene Zeilen, sodass einige mehrfach vorkommen und andere nicht ausgewählt werden.
Jede Frage berücksichtigt außerdem einige zufällig ausgewählte Merkmale. Die Bäume machen unterschiedliche Fehler, und durch die Abstimmung heben sie sich gegenseitig auf. Zwei Glühwürmchenarten:
Der Wald behält einen Streifen nur dort, wo die meisten Bäume übereinstimmen.
Die Bäume befinden sich in forest.estimators_:
third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))Dies gibt 0.737 aus. Der gesamte Wald erzielt 0.895.
Aufgabe
MittelSchlägt ein Wald seine eigenen Bäume? Der Starter trainiert forest mit riders.csv, den Fahrern, die eine 160-km-Fahrt in unter 6 Stunden beendeten oder nicht beendeten, und richtet das Diagramm ein.
- Berechne den Score jedes Baums im Wald anhand der Testzeilen.
- Stelle die Scores als Histogramm dar, mit
bins=10, und markiereforest_accmit einer roten vertikalen Linie. - Gib aus, wie viele Bäume der Wald schlägt.
Bei einer anderen Fahrt wurde The forest beats 88 of its 100 trees ausgegeben und Folgendes gezeichnet:
Coddy beschreibt dann dein Diagramm.
Probier es selbst
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# Teilnehmende einer 160 km langen Benefizfahrt: in weniger als 6 Stunden ins Ziel gekommen (1) oder nicht (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy() # ein einfaches Array, das Format, das die Bäume des Waldes erwarten
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)
fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")
# Schreibe deinen Code unten
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler