Zum Inhalt springen

Was ist der AdaBoost?

AdaBoost ist die Abkürzung für Adaptive Boosting und ist eine Methode aus dem Bereich des Ensemble Learnings, welche beschreibt, wie man aus mehreren sogenannten schwachen Lernern ein starkes Modell mit guten Ergebnissen formen kann.

Was ist Ensemble Learning und Boosting im Machine Learning?

Im Machine Learning kommen nicht immer nur einzelne Modelle zum Einsatz. Um die Leistung des gesamten Programms zu verbessern, werden teilweise auch mehrere einzelne Modelle zu einem sogenannten Ensemble zusammengefasst. Ein Random Forest beispielsweise besteht aus vielen, einzelnen Decision Trees, deren Ergebnisse dann zu einem Resultat vereint werden. Die Grundidee dahinter ist die sogenannte “Wisdom of Crowds“, die besagt, dass der Erwartungswert von mehreren unabhängigen Schätzungen besser ist, als jede einzelne Schätzung. Diese Theorie wurde formuliert, nachdem auf einer mittelalterlichen Messe das Gewicht eines Ochsen von keiner Einzelperson so genau geschätzt wurde, wie vom Durchschnitt der Einzelschätzungen.

Das Boosting beschreibt die Vorgehensweise wie mehrere Modelle zu einem Ensemble zusammengefasst werden. Am Beispiel von Decision Trees, werden die Trainingsdaten genutzt, um einen Baum zu trainieren. Für alle die Daten, für die der erste Decision Tree schlechte oder falsche Ergebnisse liefert, wird ein zweiter Decision Tree gebildet. Dieser wird dann ausschließlich mit den Daten trainiert, die der erste falsch klassifiziert hat. Diese Kette wird weitergeführt und der nächste Baum wiederum nutzt die Informationen, die bei den ersten beiden Bäumen zu schlechten Ergebnissen geführt haben.

Das Bild zeigt den Gradient Boosting Prozess, wie er bei XGBoost genutzt wird.
Gradient Boosting Prozess

Das Ensemble aus all diesen Decision Trees kann dann für den gesamten Datensatz gute Ergebnisse liefern, da jedes einzelne Modell die Schwächen der anderen kompensiert. Man spricht auch davon, dass viele “schwache Lerner” (english: weak learners) zu einem “starken Lerner” (english: “strong learner”) zusammengefasst werden.

Man spricht von schwachen Lernern, da diese in vielen Fällen nur eher schlechte Ergebnisse liefern. Ihre Genauigkeit ist in vielen Fällen zwar besser als einfaches Raten, aber auch nicht deutlich besser. Sie bieten jedoch den Vorteil, dass sie in vielen Fällen einfach zu berechnen sind und dadurch sich einfach und kostengünstig kombinieren lassen.

Wie funktioniert der Algorithmus?

Das Adaptive Boosting, kurz AdaBoost, ist eine spezielle Variante des Boostings. Es wird also versucht, mehrere schwache Lerner zu einem starken Modell zusammenzufügen. In der Grundform funktioniert Adaptive Boost am Besten mit Decision Trees. Jedoch nutzen wir nicht die “ausgewachsenen” Bäume mit teilweise mehreren Verzweigungen, sondern lediglich die Stümpfe, also Bäume mit nur einer Verzweigung. Diese nennt man im Englischen die sogenannten “Decision Stumps”.

AdaBoost
Unterschied Decision Tree und Decision Stump | Quelle: Autor

Für unser Beispiel wollen wir eine Klassifikation trainieren, die vorhersagen kann, ob eine Person gesund ist oder nicht. Dazu nutzen wir insgesamt drei Features: Alter, Gewicht, und die Anzahl der Sportstunden pro Woche. In unserem Datensatz befinden sich insgesamt 20 untersuchte Personen. Der Adaptive Boost Algorithmus funktioniert nun in mehreren Schritten:

  • Schritt 1: Für jedes Feature wird ein Decision Stump mit dem gewichteten Datensatz trainiert. Am Anfang haben alle Datenpunkte noch dasselbe Gewicht. In unserem Fall bedeutet dies, dass wir für Alter, Gewicht und die Sportstunden jeweils einen einzelnen Stumpf haben, der anhand des Features direkt die Gesundheit klassifiziert.
  • Schritt 2: Aus den drei Decision Stumps wählen wir das Modell, welches die beste Erfolgsrate hatte. Angenommen der Stumpf mit den Sportstunden hat am Besten abgeschnitten. Von den 20 Personen konnte er bereits 15 richtig klassifizieren. Die fünf falsch klassifizierten bekommen nun im Datensatz eine höhere Gewichtung, damit sichergestellt, dass sie im nächsten Modell auf jeden Fall richtig klassifiziert werden.
  • Schritt 3: Der neu gewichtete Datensatz wird nun genutzt, um wieder drei neue Decision Stumps zu trainieren. Mit dem “neuen” Datensatz” hat diesmal der Stumpf mit dem Feature “Alter” am Besten abgeschnitten und lediglich drei Personen falsch klassifiziert.
  • Schritt 4: Die Schritte zwei und drei werden nun so lange wiederholt bis entweder alle Datenpunkte richtig klassifiziert wurden oder die maximale Zahl an Iterationen erreicht wurde. Das heißt das Modell wiederholt die neue Gewichtung des Datensatzes und das Training von neuen Decision Stumps.

Nun verstehen wir auch woher der Name “Adaptive” bei AdaBoost kommt. Durch das neue gewichten des ursprünglichen Datensatzes “adaptiert” sich das Ensemble immer mehr an den konkreten Use Case.

Was sind die Vor- und Nachteile von Boosting im Allgemeinen?

Der allgemeine Vorteil von Boosting ist, dass viele schwache Lerner zu einem starken und leistungsfähigen Modell kombiniert werden. Trotz der großen Anzahl der kleinen Modelle sind diese Boosting Algorithmen meist einfacher zu berechnen als vergleichbare Neuronale Netzwerke. Das muss jedoch nicht bedeuten, dass sie auch schlechtere Ergebnisse liefern. Teilweise können Ensemble Modelle die komplexeren Netzwerke sogar im Hinblick auf die Genauigkeit schlagen. Somit sind sie auch interessante Kandidaten für Text- oder Bildklassifikationen.

Darüber hinaus neigen Boosting Algorithmen, wie beispielsweise auch AdaBoost, auch weniger zu Overfitting. Dies bedeutet einfach gesagt, dass sie nicht nur mit dem Trainingsdatensatz gute Ergebnisse liefern, sondern auch mit neue Daten mit einer hohen Genauigkeit gut klassifizieren. Man geht davon aus, dass die mehrstufige Modellberechnung von Boosting Algorithmen nicht so anfällig für Abhängigkeiten, wie die Schichten in einem Neuronalen Netzwerk, da die Modelle nicht zusammenhängend optimiert werden, wie dies bei der Backpropagation im Modell der Fall ist.

Durch das schrittweise Trainieren von Einzelmodellen haben Boosting Modelle oft eine relativ langsame Lernrate und benötigen dadurch mehr Iterationen um gute Ergebnisse zu liefern. Des Weiteren benötigen sie sehr gute Datensätze, da die Modelle sehr sensibel auf Noise reagieren und dieses somit im Data Preprocessing entfernt werden sollte.

Random Forest vs. AdaBoost

Der Random Forest nutzt zwar auch viele Decision Trees, wie AdaBoost, jedoch mit dem Unterschied, dass diese alle dieselben Trainingsdaten bekommen und auch dasselbe Gewicht in der schlussendlichen Vorhersage. Außerdem können die Bäume viele Entscheidungspfade enthalten und sind nicht wie bei AdaBoost lediglich auf eine Stufe limitiert. Zusätzlich wird bei AdaBoost die Gewichtungen einzelner Datenpunkte geändert, wenn diese vom vorherigen Modell nicht richtig klassifiziert wurden. Dadurch werden die einzelnen “Decision Stumps” auf leicht unterschiedlichen Datensätzen trainiert, anders als beim Random Forest.

Diese kleinen Änderungen an der Architektur haben in der Praxis jedoch mitunter große Auswirkungen:

  • Trainingsgeschwindigkeit: Dadurch, dass die Decision Trees im Random Forest unabhängig voneinander sind, lässt sich das Training der Bäume parallelisieren und auf verschiedene Server verteilen. Dadurch verringert sich die Trainingszeit. Der AdaBoost Algorithmus hingegen kann aufgrund der sequenziellen Anordnung nicht parallelisiert werden, da der nächste Decision Stump erst trainiert werden kann, wenn der vorherige abgeschlossen wurde.
  • Vorhersageschwindigkeit: Wenn es dann jedoch in die tatsächliche Anwendung geht, also wenn die Modelle austrainiert sind und neue Daten klassifizieren sollen, dreht sich das ganze um. Das heißt, für Inference ist AdaBoost schneller als Random Forest, da die Vorhersagen in ausgewachsenen Bäume und das auch noch in der Vielzahl deutlich mehr Zeit in Anspruch nimmt als bei AdaBoost.
  • Overfitting: Der Decision Stump im AdaBoost, der wenige Fehler produziert, hat eine hohe Gewichtung für die schlussendliche Vorhersage, während ein anderer Stump, der viele Fehler produziert nur wenig Aussagekraft hat. Beim Random Forest hingegen ist die Aussagekraft aller Bäume identisch, unabhängig davon, wie gut oder schlecht deren Ergebnisse waren. Somit ist die Chance von Overfitting bei Random Forest deutlich geringer als bei einem AdaBoost Modell.

Gradient Boosting vs. AdaBoost

Bei AdaBoost werden viele verschiedene Decision Trees mit nur einer Entscheidungsebene, also sogenannte Decision Stumps, sequenziell mit den Fehlern der vorherigen Modelle zu trainieren. Beim Gradient Boosting hingegen wird versucht durch die sequenzielle Anordnung die Verlustfunktion immer weiter zu minimieren, indem nachfolgende Modelle darauf trainiert werden das sogenannte Residual, also die Differenz zwischen Vorhersage und dem tatsächlichen Wert, weiter zu verringern.

Dadurch lassen sich mit dem Gradient Boosting Regressionen, also die Vorhersage von stetigen Werten, als auch Klassifikationen, also die Einordnung in Gruppen, vornehmen. Der AdaBoost Algorithmus hingegen kann nur für Klassifizierungen genutzt werden. Dies ist tatsächlich auch der Hauptunterschied zwischen diesen beiden Boosting Algorithmen, denn im Kerngedanken versuchen beide durch sequenzielles Lernen und die höhere Gewichtung von falschen Vorhersagen, schwache Lerner zu einem starken Modell zu kombinieren.

Welchen Boosting Algorithmus soll man wählen?

Die Wahl des richtigen Boosting-Algorithmus hängt von mehreren Faktoren ab, z. B. von der Größe und Komplexität des Datensatzes, dem erforderlichen Grad der Interpretierbarkeit und den verfügbaren Rechenressourcen.

Im Folgenden findeest Du einen kurzen Überblick über die drei von Ihnen erwähnten gängigen Boosting-Algorithmen:

  • AdaBoost (Adaptive Boosting) ist ein weit verbreiteter Boosting-Algorithmus, der mehrere schwache Klassifikatoren zu einem starken Klassifikator kombiniert. Er weist den Trainingsproben Gewichte zu und passt diese Gewichte in jeder Iteration an, um sich auf die falsch klassifizierten Proben zu konzentrieren. AdaBoost ist eine gute Wahl für einfache Klassifizierungsaufgaben mit mittelgroßen Datensätzen.
  • XGBoost (Extreme Gradient Boosting) ist ein beliebter und leistungsfähiger Boosting-Algorithmus, der Entscheidungsbäume als Basis-Lernprogramme verwendet. Er verwendet einen regularisierten Ansatz, um eine Überanpassung zu verhindern, und kann große Datensätze mit hochdimensionalen Merkmalen verarbeiten. XGBoost ist rechnerisch effizient und kann sowohl für Regressions- als auch für Klassifikationsprobleme verwendet werden.
  • Gradient Boosting ist ein allgemeiner Boosting-Algorithmus, der mit verschiedenen Verlustfunktionen und Basislernern verwendet werden kann. Er funktioniert durch iteratives Hinzufügen schwacher Lerner, um einen starken Lerner zu bilden, der die Verlustfunktion minimiert. Gradient Boosting ist flexibel und kann verschiedene Datentypen verarbeiten, einschließlich kategorischer Merkmale.

Zusammenfassend lässt sich sagen, dass AdaBoost eine gute Wahl sein kann, wenn Sie eine einfache Klassifizierungsaufgabe mit mittelgroßen Datensätzen haben. Wenn Sie einen großen Datensatz mit hochdimensionalen Merkmalen haben und eine Überanpassung verhindern wollen, könnte XGBoost die bessere Wahl sein. Gradient Boosting ist ein vielseitiger Algorithmus, der für verschiedene Arten von Daten und Verlustfunktionen verwendet werden kann.

Wie kann AdaBoost bei verzerrten Daten helfen?

Einer der wesentlichen Vorteile von AdaBoost ist die Fähigkeit, mit verzerrten Daten oder Klassenungleichgewichten effektiv umzugehen. In realen Datensätzen kommt es häufig zu Situationen, in denen eine Klasse die andere deutlich überwiegt, was zu einer verzerrten Datenverteilung führt. Verzerrte Daten können herkömmliche maschinelle Lernmodelle vor Herausforderungen stellen, da sie dazu neigen, die Mehrheitsklasse zu bevorzugen, was zu schlechten Vorhersagen für die Minderheitsklasse führt. Der adaptive Boosting-Mechanismus von AdaBoost eignet sich jedoch besonders gut zur Lösung dieses Problems.

AdaBoost geht das Problem des Klassenungleichgewichts an, indem es die Gewichte falsch klassifizierter Proben während des Trainingsprozesses anpasst. In jeder Iteration weist AdaBoost den Proben, die von dem vorherigen schwachen Lerner falsch klassifiziert wurden, höhere Gewichte zu. Auf diese Weise konzentriert sich AdaBoost stärker auf die Proben aus der Minderheitenklasse und macht das Modell während des Trainings empfindlicher für die unterrepräsentierte Klasse.

Wenn AdaBoost in den nachfolgenden Iterationen weiterhin schwache Lerner trainiert, legt es folglich einen größeren Schwerpunkt auf die korrekte Klassifizierung der Stichproben aus der Minderheitenklasse. Durch diese Anpassungsfähigkeit werden die Auswirkungen der Stichproben der Mehrheits- und der Minderheitsklasse effektiv ausgeglichen, so dass das AdaBoost-Modell genauere Vorhersagen für beide Klassen machen kann.

Wenn AdaBoost fortschreitet, führt der kombinierte Effekt der gewichteten falsch klassifizierten Proben zu einem starken Lerner, der selbst bei einem Klassenungleichgewicht in beiden Klassen gut abschneidet. Die schwachen Lerner, bei denen es sich um einfache Klassifikatoren handelt, sind gezwungen, der Minderheitsklasse mehr Aufmerksamkeit zu schenken, wodurch sich ihre Vorhersageleistung für diese Klasse deutlich verbessert.

Letztendlich ist der von AdaBoost erzeugte Ensemble-Klassifikator besser für den Umgang mit verzerrten Daten gerüstet als einzelne schwache Lerner oder andere traditionelle Klassifikatoren. Die Fähigkeit, sich an die Unausgewogenheit von Klassen anzupassen, in Verbindung mit der Aggregation mehrerer schwacher Lerner, macht AdaBoost zu einer robusten und zuverlässigen Wahl für Klassifizierungsaufgaben auf unausgewogenen Datensätzen.

AdaBoost ist zwar effektiv im Umgang mit unausgewogenen Daten, aber es gibt einige Vorbehalte, die beachtet werden müssen. Wenn das Klassenungleichgewicht extrem ist und die Minderheitsklasse nur einen winzigen Teil des Datensatzes ausmacht, kann AdaBoost immer noch vor Herausforderungen stehen. In solchen Fällen müssen andere spezialisierte Techniken, wie z.B. Resampling-Methoden (z.B. Oversampling der Minderheitenklasse oder Undersampling der Mehrheitsklasse) oder die Verwendung anderer Leistungsmetriken, in Verbindung mit AdaBoost in Betracht gezogen werden, um optimale Ergebnisse zu erzielen.

Der adaptive Boosting-Mechanismus von AdaBoost macht es zu einem leistungsstarken Werkzeug für den Umgang mit verzerrten Daten und Klassenungleichgewichten bei Klassifizierungsaufgaben. Durch die Zuweisung höherer Gewichte für falsch klassifizierte Proben aus der Minderheitsklasse während des Trainings gleicht AdaBoost die Auswirkungen der verschiedenen Klassen effektiv aus und verbessert die Vorhersageleistung in unterrepräsentierten Klassen. Diese Eigenschaft und der Ensemble-Charakter von AdaBoost machen ihn zu einem wertvollen und vielseitigen Algorithmus für eine breite Palette von realen Anwendungen, die mit unausgewogenen Datensätzen zu tun haben.

Wie kann man den AdaBoost Algorithmus in Python umsetzen?

AdaBoost ist ein leistungsfähiges Ensemble-Lernverfahren, das sich mit gängigen Bibliotheken wie scikit-learn leicht in Python implementieren lässt. In diesem Abschnitt werden wir Dich durch die Schritte zur Verwendung von AdaBoost mit einem öffentlich verfügbaren Datensatz führen.

Schritt 1: Datenvorbereitung
Wähle einen öffentlich zugänglichen Datensatz, der sich für die Klassifizierung eignet. Für dieses Beispiel werden wir den berühmten Iris-Datensatz verwenden, der in scikit-learn verfügbar ist. Teile den Datensatz in Merkmale (X) und Zielbeschriftungen (y) auf.

AdaBoost

Schritt 2: Importieren und Initialisieren des AdaBoost-Klassifikators
Als nächstes importiere den AdaBoost-Klassifikator aus scikit-learn und initialisiere ihn. AdaBoost kann mit verschiedenen Basisklassifikatoren verwendet werden, aber für dieses Beispiel werden wir den DecisionTreeClassifier als schwachen Lerner verwenden.

AdaBoost

Schritt 3: Modelltraining und Auswertung
Trainiere den AdaBoost-Klassifikator anhand der Trainingsdaten und bewerte seine Leistung anhand der Testdaten.

AdaBoost

Schritt 4: Vorhersagen und Leistungsmetriken
Treffe Vorhersagen mit dem trainierten AdaBoost-Klassifikator und berechne Leistungsmetriken wie Präzision, Recall und F1-Score.

AdaBoost

Schritt 5: Feinabstimmung des Modells (optional)
Optional kannst Du eine Feinabstimmung des Modells vornehmen, indem Du Hyperparameter wie die Anzahl der schwachen Lerner (n_estimators), die Lernrate oder den Basisschätzer anpasst.

AdaBoost

Wenn Du diese Schritte befolgst, kannst Du AdaBoost problemlos in Python mit einem öffentlich verfügbaren Datensatz verwenden. AdaBoost ist ein vielseitiges Ensemble-Lernverfahren, das auf verschiedene Klassifizierungsprobleme angewendet werden kann. Seine Implementierung in Python durch Bibliotheken wie scikit-learn macht es sowohl für Anfänger als auch für erfahrene Datenwissenschaftler zugänglich und effektiv.

Das solltest Du mitnehmen

  • AdaBoost ist die Abkürzung für Adaptive Boosting und ist eine Methode aus dem Bereich des Ensemble Learnings, welche beschreibt, wie man aus mehreren sogenannten schwachen Lernern ein starkes Modell mit guten Ergebnissen formen kann.
  • Im Kern werden dazu Decision Trees genutzt, die sequenziell trainiert werden. Das bedeutet, dass ein Baum immer mit denselben Daten wie der vorherige trainiert wird, mit dem Unterschied, dass die falsch vorhergesagten Datenpunkte des vorangegangenen Modells nun höher gewichtet werden.
  • Die Vorgehensweise von AdaBoost ist zwar ähnlich zu der des Random Forest, hat jedoch die Hauptunterschiede, dass die Bäume lediglich eine Verzweigung haben und nicht parallel, sondern sequenziell, also Hintereinander, trainiert werden müssen.
Decentralised AI / Decentralized AI

Was ist Decentralised AI?

Das Potenzial von decentralised AI freisetzen: Transformation der Technologie durch verteilte Intelligenz und kollaborative Netzwerke.

Ridge Regression

Was ist die Ridge Regression?

Erforschung der Ridge Regression: Vorteile, Implementierung in Python und die Unterschiede zu Ordinary Least Squares (OLS).

Aktivierungsfunktion / Activation Function

Was ist eine Aktivierungsfunktion?

Erfahren Sie mehr über die Bausteine des Deep Learnings: Maximieren Sie die Modellleistung mit der richtigen Aktivierungsfunktion.

Regularization / Regularisierung

Was ist die Regularisierung im Machine Learning?

Regularisierung verstehen: Erfahren Sie, wie Regularisierungstechniken die Modellleistung verbessern und eine Überanpassung verhindern.

Conditional Random Field

Was ist ein Conditional Random Field (CRF)?

Entfesseln Sie die Macht der Conditional Random Fields: Entdecken Sie fortgeschrittene Techniken und Anwendungen in diesem Leitfaden.

Swarm Intelligence / Schwarmintelligenz

Was ist die Schwarmintelligenz?

Entdecken Sie die Kraft der Schwarmintelligenz - ein System, das von der kollektiven Intelligenz sozialer Lebewesen inspiriert ist.

Andere Beiträge zum Thema AdaBoost

Die Scikit-Learn Dokumentation zu AdaBoost findest Du hier.

Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner