Menu
CoddyTech

Gradient Boosting

Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 43 von 58.

Ein Wald lässt seine Bäume Seite an Seite wachsen. Gradient Boosting lässt sie nacheinander wachsen: Jeder neue Baum lernt, was die vorherigen Bäume noch falsch machen.

Hier werden die Verkäufe einer Smoothie-Bar Baum für Baum angepasst:

Graue Punkte für die Smoothie-Verkäufe an 40 Tagen in Abhängigkeit von der Temperatur, ansteigend von etwa 20 auf 135. Eine gepunktete Linie nach 1 Baum bildet einen flachen, groben Schritt, eine gestrichelte Linie nach 3 Bäumen folgt den Punkten besser, und eine durchgezogene Linie nach 15 Bäumen verläuft durch die Punkte

Für Klassen ist das Modell GradientBoostingClassifier:

from sklearn.ensemble import GradientBoostingClassifier

boost = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0)
boost.fit(X_train, y_train)

learning_rate legt fest, wie viel von jeder Korrektur übernommen wird. Kleine Schritte sind vorsichtig, daher werden mehr Bäume benötigt.

challenge icon

Aufgabe

Mittel

Ein Orchideenzüchter möchte wissen, welche Pflanzen blühen werden. Das Starterprogramm teilt orchids.csv auf, bewertet einen Random Forest und liest die Anzahl der Bäume ein.

  1. Trainiere für jede Rate in rates ein Boosting-Modell mit dieser Anzahl an Bäumen (random_state=0) und gib dessen Genauigkeit auf den Testdaten aus.
  2. Gib die beste Rate aus. Bei Gleichstand behalte die frühere.

Für einen anderen Züchter und 20:

Forest: 0.860
Boosting at rate 0.01: 0.600
Boosting at rate 0.1: 0.860
Boosting at rate 1.0: 0.900
Best rate for 20 trees: 1.0

Probiere dann einige Baumanzahlen aus: Ab wann ist Boosting besser als der Random Forest?

Probier es selbst

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier

# Orchideen auf den Regalen eines Züchters: dieses Jahr geblüht (1) oder nicht (0)
orchids = pd.read_csv("orchids.csv")
X = orchids.drop(columns="bloomed")
y = orchids["bloomed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
rates = [0.01, 0.1, 1.0]

# Die folgenden Zeilen nicht ändern: der Wald zum Vergleich
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(f"Forest: {forest.score(X_test, y_test):.3f}")

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Überwachtes Lernen

Übe selbstständig: Online-Python-Compiler