Kursinhalt
Ensemble-Lernen
Ensemble-Lernen
1. Grundprinzipien des Aufbaus von Ensemble-Modellen
Gradient Boosting
Gradient Boosting ist eine leistungsstarke Boosting-Ensemble-Lerntechnik für Klassifikations- und Regressionsaufgaben.
Wie funktioniert Gradient Boosting?
- Initialisierung des Basismodells: Der Prozess beginnt mit der Initialisierung eines Basismodells als erster schwacher Lerner. Dieses anfängliche Modell macht Vorhersagen, die jedoch möglicherweise nicht sehr genau sind;
- Berechnung der Residuen: Der Unterschied zwischen den tatsächlichen Zielwerten und den Vorhersagen des aktuellen Modells wird berechnet. Diese Unterschiede, bekannt als Residuen oder Fehler, stellen die "Residuen" dar, die das nächste Modell zu korrigieren versucht;
- Anpassung eines neuen Modells: Ein neuer schwacher Lerner wird angepasst, um die Residuen aus dem vorherigen Schritt vorherzusagen. Dieses neue Modell zielt darauf ab, die Fehler des vorherigen Modells zu korrigieren;
- Kombinieren der Vorhersagen: Die Vorhersagen des neuen Modells werden zu den Vorhersagen des vorherigen Modells hinzugefügt. Die kombinierten Vorhersagen beginnen, die tatsächlichen Zielwerte genauer zu approximieren;
- Iterativer Prozess: Die Schritte 3 und 4 werden für eine festgelegte Anzahl von Iterationen (oder bis ein Abbruchkriterium erreicht ist) wiederholt. In jeder Iteration wird ein neues Modell angepasst, um die Residuen der kombinierten Vorhersagen aus den vorherigen Iterationen vorherzusagen;
- Endgültige Vorhersage: Nach Abschluss aller Iterationen wird die endgültige Vorhersage durch Addition der Vorhersagen der schwachen Lerner erhalten. Dieses Ensemble von Modellen bildet einen starken Lerner, der gelernt hat, die Fehler der vorherigen Modelle zu korrigieren.
Hinweis
Wir können auch die Feature-Wichtigkeit mit dem
.feature_importances_
Attribut des trainierten Modells berechnen.
Beispiel
Hinweis
Es ist wichtig zu beachten, dass die Klassen
GradientBoostingRegressor
undGradientBoostingClassifier
in Python so konzipiert sind, dass sie nurDecisionTreeRegressor
undDecisionTreeClassifier
als Basismodelle eines Ensembles verwenden!
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingClassifier from sklearn.metrics import f1_score import seaborn as sns # Load the Iris dataset data = load_iris() X = data.data y = data.target # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Create and train the Gradient Boosting classifier clf = GradientBoostingClassifier(n_estimators=100) clf.fit(X_train, y_train) # Make predictions y_pred = clf.predict(X_test) # Calculate accuracy f1 = f1_score(y_test, y_pred, average='weighted') print(f'F1 score: {f1:.4f}')
War alles klar?
Danke für Ihr Feedback!
Abschnitt 3. Kapitel 4