Kursinhalt
Ensemble-Lernen
Ensemble-Lernen
1. Grundprinzipien des Aufbaus von Ensemble-Modellen
Adaboost-Klassifikator
AdaBoost ist ein Ensemble-Lernalgorithmus, der darauf abzielt, die Leistung schwacher Lerner zu verbessern. Er funktioniert, indem er iterativ eine Sequenz schwacher Klassifikatoren auf gewichteten Versionen der Trainingsdaten trainiert. Die endgültige Vorhersage ist eine gewichtete Kombination der Vorhersagen dieser schwachen Klassifikatoren. AdaBoost weist den falsch klassifizierten Proben höhere Gewichte zu, sodass nachfolgende Modelle sich auf die schwer zu klassifizierenden Instanzen konzentrieren können.
Wie funktioniert AdaBoost?
- Gewichte initialisieren: Weisen Sie allen Trainingsproben gleiche Gewichte zu;
- Schwachen Klassifikator trainieren: Trainieren Sie einen schwachen Klassifikator auf den Trainingsdaten unter Verwendung der aktuellen Probengewichte. Der schwache Klassifikator zielt darauf ab, die gewichtete Fehlerrate zu minimieren, wobei die Gewichte die falsch klassifizierten Proben betonen;
- Klassifikatorgewicht berechnen: Berechnen Sie das Gewicht des trainierten Klassifikators basierend auf seiner Genauigkeit. Bessere Klassifikatoren erhalten höhere Gewichte;
- Probengewichte aktualisieren: Aktualisieren Sie die Probengewichte, indem Sie den falsch klassifizierten Proben aus dem aktuellen Klassifikator höhere Gewichte zuweisen;
- Wiederholen: Wiederholen Sie die Schritte 2-4 für eine vordefinierte Anzahl von Iterationen (oder bis ein bestimmter Schwellenwert erreicht ist);
- Endgültige Vorhersage: Kombinieren Sie die Vorhersagen aller schwachen Klassifikatoren, indem Sie die gewichteten Vorhersagen summieren. Die Klasse mit der Mehrheit der Stimmen wird zur endgültigen Vorhersage.
Beispiel
Wir können die AdaBoostClassifier
-Klasse in Python verwenden, um ein AdaBoost-Modell zu trainieren und Vorhersagen auf echten Daten zu liefern:
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.ensemble import AdaBoostClassifier from sklearn.metrics import f1_score # 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 a Logistic Regression base model base_model = LogisticRegression() # Create and train the AdaBoost Classifier with Logistic Regression as base model classifier = AdaBoostClassifier(base_model, n_estimators=50) classifier.fit(X_train, y_train) # Make predictions y_pred = classifier.predict(X_test) # Calculate F1 score 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 1