Kursinhalt
Ensemble-Lernen
Ensemble-Lernen
1. Grundprinzipien des Aufbaus von Ensemble-Modellen
Stacking-Klassifikator
Stacking-Klassifikator ist ein Stacking-Ensemble-Modell, das zur Lösung von Klassifikationsaufgaben verwendet wird. Es zielt darauf ab, die Stärken einzelner Modelle auszunutzen, indem es deren Vorhersagen als Eingabe für ein höherstufiges Modell verwendet, das als Meta-Klassifikator oder zweistufiges Modell bekannt ist. Der Meta-Klassifikator lernt, wie man die Vorhersagen der Basismodelle kombiniert, um die endgültige Klassifikationsentscheidung zu treffen.
Wie funktioniert der Stacking-Klassifikator?
- Basismodelle: Mehrere verschiedene Klassifikationsmodelle werden unabhängig voneinander auf den Trainingsdaten trainiert. Diese vielfältigen Modelle können verschiedene Algorithmen, Architekturen oder Parametereinstellungen nutzen;
- Vorhersagegenerierung: Nach dem Training der Basismodelle werden diese verwendet, um Vorhersagen sowohl auf den Trainingsdaten zu treffen. Diese Vorhersagen dienen als Merkmale (Meta-Merkmale) für die nächste Modellierungsebene;
- Meta-Klassifikator: Ein höherstufiger Klassifikator (Meta-Klassifikator) wird unter Verwendung der von den Basismodellen generierten Meta-Merkmale trainiert. Der Meta-Klassifikator lernt, die Vorhersagen der Basismodelle zu kombinieren, um eine endgültige Klassifikationsentscheidung zu treffen;
- Endgültige Vorhersage: Die Basismodelle generieren Vorhersagen für die neuen Eingabedaten während der Vorhersage. Diese Vorhersagen werden dann als Eingabemerkmale für den Meta-Klassifikator verwendet, der die endgültige Klassifikationsvorhersage liefert.
Beispiel
import numpy as np from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC from sklearn.neural_network import MLPClassifier from sklearn.ensemble import StackingClassifier from sklearn.metrics import f1_score import warnings warnings.filterwarnings('ignore') # Load the Breast Cancer dataset data = load_breast_cancer() 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) # Define base models base_models = [] for i in range(5): # Create 5 different Decision Tree models base_models.append(('decision_tree_' + str(i), DecisionTreeClassifier())) for i in range(3): # Create 3 different SVM models base_models.append(('svm_' + str(i), SVC(probability=True))) # Define meta-classifier meta_classifier = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=200) # Create the stacking ensemble stacking_classifier = StackingClassifier(estimators=base_models, final_estimator=meta_classifier) # Train the stacking classifier stacking_classifier.fit(X_train, y_train) # Make predictions y_pred = stacking_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 4. Kapitel 1