Weiter zum Inhalt

AdaBoost-Klassifikator in Python

Verstehe den Ensemble-Ansatz, die Funktionsweise von AdaBoost und lerne, ein AdaBoost-Modell in Python zu bauen.
Aktualisiert 18. Sept. 2026  · 8 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

In den letzten Jahren haben Boosting-Algorithmen in Data Science und Machine-Learning-Wettbewerben enorm an Popularität gewonnen. Die meisten Gewinner solcher Wettbewerbe setzen Boosting ein, um hohe Genauigkeit zu erzielen. Diese Data-Science-Wettbewerbe bieten eine weltweite Bühne, um zu lernen, zu experimentieren und Lösungen für Geschäfts- und Regierungsprobleme zu entwickeln. Boosting-Algorithmen kombinieren mehrere Modelle mit geringer Genauigkeit (\"schwache\" Modelle) zu einem Modell mit hoher Genauigkeit (\"starkes\" Modell). Sie lassen sich in vielen Bereichen einsetzen, etwa im Kreditwesen, in der Versicherung, im Marketing und im Vertrieb. Boosting-Algorithmen wie AdaBoost, Gradient Boosting und XGBoost gehören zu den meistgenutzten Verfahren, um Datenwettbewerbe zu gewinnen. In diesem Tutorial lernst du den Ensemble-Boosting-Algorithmus AdaBoost kennen. Wir behandeln folgende Themen:

Ensemble-Ansatz im Machine Learning

Ein Ensemble ist ein Verbundmodell, das eine Reihe schwächerer Klassifikatoren kombiniert, um einen besseren Klassifikator zu erzeugen. Dabei stimmen die einzelnen Klassifikatoren ab, und das endgültige Prädiktionslabel ergibt sich per Mehrheitsentscheid. Ensembles liefern in der Regel höhere Genauigkeit als einzelne Basisklassifikatoren. Ensemble-Methoden lassen sich parallelisieren, indem man jedem Basislernenden eine andere Maschine zuweist. Kurz gesagt: Ensemble-Lernen sind Meta-Algorithmen, die mehrere Machine-Learning-Verfahren zu einem einzigen Vorhersagemodell kombinieren, um die Leistung zu steigern. Ensembles können die Varianz per Bagging reduzieren, den Bias per Boosting verringern oder Vorhersagen per Stacking verbessern.

Ensemble-Ansatz im Machine Learning
  1. Bagging steht für Bootstrap Aggregating. Mehrere Lerner werden so kombiniert, dass die Varianz der Schätzungen sinkt. Beispiel Random Forest: Du trainierst M Entscheidungsbäume auf unterschiedlichen, zufällig gezogenen Teilmengen der Daten und stimmst dann für die finale Vorhersage ab. Typische Bagging-Methoden sind Random Forest und Extra Trees.

  2. Boosting-Algorithmen setzen eine Reihe schwächerer Klassifikatoren zu einem sehr genauen Klassifikator zusammen. Ein schwacher Klassifikator liegt nur knapp über Zufall, ein starker erreicht eine sehr geringe Fehlerrate. Boosting kann gezielt die Fälle adressieren, bei denen das Modell falsch lag. Boosting ist zudem weniger anfällig für Overfitting. Die folgenden drei Verfahren sind in Data-Science-Wettbewerben besonders populär:

    • AdaBoost (Adaptive Boosting)
    • Gradient Tree Boosting
    • XGBoost
  3. Stacking (oder Stacked Generalization) ist eine Ensemble-Technik, die die Vorhersagen mehrerer Basisklassifikatoren zu einem neuen Datensatz bündelt. Diese neuen Merkmale dienen dann als Eingabe für einen weiteren Klassifikator, der das eigentliche Problem löst. Stacking wird häufig auch Blending genannt.

Ensemble-Ansatz im Machine Learning

Nach der Anordnung der Basislernenden lassen sich Ensemble-Methoden in zwei Gruppen einteilen: Parallele Ensembles erzeugen Basislernende parallel, z. B. Random Forest. Sequenzielle Ensembles erzeugen Basislernende nacheinander, z. B. AdaBoost.

Nach dem Typ der Basislernenden unterscheidet man: Homogene Ensembles nutzen in jeder Iteration denselben Lerner-Typ, heterogene Ensembles setzen unterschiedliche Lerner-Typen ein.

AdaBoost-Klassifikator

AdaBoost (Adaptive Boosting) ist ein Ensemble-Boosting-Klassifikator, vorgeschlagen von Yoav Freund und Robert Schapire im Jahr 1996. Er kombiniert mehrere Klassifikatoren, um deren Genauigkeit zu steigern. AdaBoost ist ein iteratives Ensemble-Verfahren. Der AdaBoost-Klassifikator baut einen starken Klassifikator aus mehreren schwachen auf, sodass du am Ende hohe Genauigkeit erreichst. Die Grundidee hinter AdaBoost ist, in jeder Iteration Gewichte für Klassifikatoren und Trainingsbeispiele so zu setzen, dass ungewöhnliche Beobachtungen korrekt vorhergesagt werden. Jeder ML-Algorithmus, der Beispielgewichte akzeptiert, kann als Basisklassifikator dienen. AdaBoost sollte zwei Bedingungen erfüllen:

  1. Der Klassifikator wird wiederholt auf verschieden gewichteten Trainingsbeispielen trainiert.
  2. In jeder Iteration wird versucht, diese Beispiele durch Minimierung des Trainingsfehlers möglichst gut zu treffen.

Wie funktioniert der AdaBoost-Algorithmus?

Er arbeitet in folgenden Schritten:

  1. Zu Beginn wählt AdaBoost zufällig eine Trainings-Teilmenge aus.
  2. Das Modell wird iterativ trainiert, wobei der Trainingssatz anhand der korrekten bzw. falschen Vorhersagen der letzten Iteration neu gewichtet wird.
  3. Falsch klassifizierte Beobachtungen erhalten ein höheres Gewicht, damit sie in der nächsten Iteration mit höherer Wahrscheinlichkeit korrekt klassifiziert werden.
  4. Auch der trainierte Klassifikator bekommt pro Iteration ein Gewicht entsprechend seiner Genauigkeit. Genauere Klassifikatoren erhalten höhere Gewichte.
  5. Dieser Prozess läuft weiter, bis die Trainingsdaten fehlerfrei angepasst sind oder die angegebene maximale Anzahl an Basislernenden erreicht ist.
  6. Für die Klassifikation wird über alle gelernten Modelle \"abgestimmt\".
Wie funktioniert der AdaBoost-Algorithmus?

Modellaufbau in Python

Benötigte Bibliotheken importieren

Lass uns zuerst die erforderlichen Bibliotheken laden.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets
# Import train_test_split function
from sklearn.model_selection import train_test_split
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics

Datensatz laden

Für den Modellaufbau verwenden wir den IRIS-Datensatz, ein sehr bekanntes Multiclass-Klassifikationsproblem. Der Datensatz umfasst 4 Merkmale (Kelchlänge, Kelchbreite, Kronblattlänge, Kronblattbreite) und ein Ziel (die Blumenart). Es gibt drei Klassen: Setosa, Versicolour und Virginica. Der Datensatz ist in der scikit-learn-Bibliothek verfügbar; alternativ kannst du ihn aus der UCI Machine Learning Library herunterladen.

# Load data
iris = datasets.load_iris()
X = iris.data
y = iris.target

Datensatz aufteilen

Um die Modellleistung zu verstehen, ist es sinnvoll, den Datensatz in Trainings- und Testsatz zu trennen.

Wir teilen den Datensatz mit der Funktion train_test_split(). Du übergibst drei Parameter: Features, Zielvariable und die Größe des Testsatzes.

# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 70% training and 30% test

AdaBoost-Modell erstellen

Erstellen wir das AdaBoost-Modell mit Scikit-learn. Standardmäßig verwendet AdaBoost den DecisionTreeClassifier als Basisklassifikator.

# Create adaboost classifer object
abc = AdaBoostClassifier(n_estimators=50,
                         learning_rate=1)
# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)

\"Die wichtigsten Parameter sind base_estimator, n_estimators und learning_rate.\" (Adaboost Classifier, Chris Albon)

  • base_estimator: Schwacher Lerner zum Trainieren des Modells. Standard ist der DecisionTreeClassifier. Du kannst auch andere ML-Algorithmen angeben.
  • n_estimators: Anzahl der schwachen Lerner, die iterativ trainiert werden.
  • learning_rate: Steuert die Gewichte der schwachen Lerner. Standardwert ist 1.

Modell bewerten

Schätzen wir ab, wie genau der Klassifikator die Blumenarten vorhersagt.

Die Genauigkeit berechnest du, indem du echte Testwerte mit den Vorhersagen vergleichst.

# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.8888888888888888

Du erreichst eine Genauigkeit von 88,88 % – ein guter Wert.

Für eine weitergehende Bewertung kannst du auch unterschiedliche Basisschätzer ausprobieren.

Andere Basislernende verwenden

Hier verwende ich SVC als Basisschätzer. Du kannst jeden ML-Lerner einsetzen, der Beispielgewichte akzeptiert, zum Beispiel Decision Tree oder Support Vector Classifier.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier

# Import Support Vector Classifier
from sklearn.svm import SVC
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics
svc=SVC(probability=True, kernel='linear')

# Create adaboost classifer object
abc =AdaBoostClassifier(n_estimators=50, base_estimator=svc,learning_rate=1)

# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)


# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.9555555555555556

Dies ergibt eine Klassifikationsrate von 95,56 % – ebenfalls ein sehr guter Wert.

In diesem Fall liefert der SVC als Basisschätzer eine bessere Genauigkeit als der Decision Tree.

Vorteile

AdaBoost ist leicht umzusetzen. Es korrigiert iterativ die Fehler der schwachen Klassifikatoren und steigert die Genauigkeit durch ihre Kombination. Du kannst viele verschiedene Basisklassifikatoren mit AdaBoost nutzen. AdaBoost ist tendenziell wenig anfällig für Overfitting. Das zeigen empirische Ergebnisse, auch wenn es keine harte theoretische Begründung dafür gibt.

Nachteile

AdaBoost ist empfindlich gegenüber Rauschen in den Daten. Ausreißer wirken sich stark aus, weil das Verfahren versucht, jeden Punkt perfekt zu treffen. Außerdem ist AdaBoost langsamer als XGBoost.

Fazit

Glückwunsch, du hast das Ende dieses Tutorials erreicht!

Du hast den Ensemble-Ansatz im Machine Learning, den AdaBoost-Algorithmus, seine Funktionsweise sowie den Modellaufbau und die Bewertung mit Python und Scikit-learn kennengelernt. Außerdem haben wir Vor- und Nachteile diskutiert.

Ich freue mich über Feedback oder Fragen. Stell sie gern in den Kommentaren – ich gebe mein Bestes, sie zu beantworten.

Wenn du mehr über Machine Learning mit Python lernen möchtest, schau dir DataCamps Kurs Extreme Gradient Boosting with XGBoost und das Python Machine Learning: Scikit-Learn Tutorial an.

Themen
Python

Python-Kurse

Kurs

Einführung in Python

4 Std.
7M
Lerne in nur vier Stunden die Grundlagen der Datenanalyse mit Python und entdecke beliebte Python-Pakete.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Abstrakte Klassen in Python: Ein umfassender Leitfaden mit Beispielen

Lerne mehr über abstrakte Klassen in Python, wozu sie gut sind und wie du mit dem Modul „abc“ einheitliche Schnittstellen sicherstellen kannst. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Derrick Mwiti's photo

Derrick Mwiti

10 Min.

Tutorial

Python Datenstrukturen Tutorial

Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Sejal Jaiswal's photo

Sejal Jaiswal

24 Min.

Tutorial

Python-Lambda-Funktionen: Ein Leitfaden für Anfänger

Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Mark Pedigo's photo

Mark Pedigo

10 Min.

Tutorial

Python-Tutorial zum Verknüpfen von Zeichenfolgen

Lerne verschiedene Methoden zum Verknüpfen von Zeichenfolgen in Python kennen, mit Beispielen, die jede Technik zeigen.
DataCamp Team's photo

DataCamp Team

5 Min.

Tutorial

Python-Listenfunktionen und -Methoden – Tutorial und Beispiele

Lerne die Funktionen und Methoden von Python-Listen kennen. Schau dir jetzt die Code-Beispiele für list() und andere Python-Funktionen und -Methoden an!
Abid Ali Awan's photo

Abid Ali Awan

7 Min.

Tutorial

Python-Arrays

Python-Arrays mit Code-Beispielen. Lerne noch heute, wie du mit Python NumPy Arrays erstellen und ausdrucken kannst!
DataCamp Team's photo

DataCamp Team

3 Min.

Mehr AnzeigenMehr Anzeigen