HyperAI

Boosting

Beim maschinellen LernenBoosting ist ein integrierter Metaalgorithmus, der hauptsächlich zur Reduzierung von Verzerrungen und Varianzen beim überwachten Lernen verwendet wird, sowie eine Reihe von Algorithmen des maschinellen Lernens, die schwache Lerner in starke Lerner umwandeln. Boosting basiert auf der Frage von Kearns und Valiant (1988, 1989): „Kann aus einer Gruppe schwacher Lerner ein starker Lerner hervorgehen?“ Ein schwacher Lerner ist definiert als ein Klassifikator, der nur geringfügig mit der wahren Klassifizierung korreliert (er kann Beispiele besser kennzeichnen als durch zufälliges Raten). Im Gegensatz dazu ist ein starker Lerner ein Klassifikator, der beliebig gut mit der wahren Klassifizierung korreliert. Beim Boosting werden zufällig ausgewählte Datenstichproben an Modelle angepasst und diese dann sequenziell trainiert – das heißt, jedes Modell versucht, die Schwächen seines Vorgängers auszugleichen. In jeder Iteration werden die schwachen Regeln jedes einzelnen Klassifikators zu einer starken Vorhersageregel kombiniert. 

Drei Methoden zur Steigerung

Verschiedene Boosting-Algorithmen können sich in der Art und Weise unterscheiden, wie sie schwache Lerner in einem sequenziellen Prozess erstellen und aggregieren. Zu den drei beliebtesten Hebemethoden gehören: 

  • Adaptive Boosting, auch bekannt als AdaBoost:Der AdaBoost-Algorithmus wurde von Yoav Freund und Robert Schapire entwickelt. Dieser Ansatz läuft iterativ ab, erkennt falsch klassifizierte Datenpunkte und passt ihre Gewichte an, um den Trainingsfehler zu minimieren. Dieses Modell wird kontinuierlich sequentiell optimiert, bis der stärkste Prädiktor erstellt ist.  
  • Gradientenverstärkung:Aufbauend auf der Arbeit von Leo Breiman entwickelte Jerome H. Friedman das Gradient Boosting, bei dem einem Ensemble nacheinander Prädiktoren hinzugefügt werden, wobei jeder Prädiktor die Fehler seines Vorgängers korrigiert. Allerdings trainiert Gradient Boosting mit den Residuen des vorherigen Prädiktors, anstatt die Gewichte der Datenpunkte zu ändern, wie es AdaBoost tut. Der Name Gradient Boosting wird verwendet, weil es den Gradientenabstiegsalgorithmus mit der Boosting-Methode kombiniert.  
  • Extreme Gradient Boosting oder XGBoost: XGBoost ist eine Implementierung von Gradient Boosting, die auf Rechengeschwindigkeit und Skalierbarkeit ausgelegt ist. XGBoost nutzt mehrere Kerne der CPU, um das Lernen während des Trainings zu parallelisieren. 

Boosting Vorteile

  • Einfach umzusetzen:Boosting kann mit mehreren Hyperparameter-Tuning-Optionen verwendet werden, um die Anpassung zu verbessern. Der Boosting-Algorithmus verfügt über integrierte Routinen zur Behandlung fehlender Daten, sodass keine Datenvorverarbeitung erforderlich ist. In Python erleichtert die scikit-learn-Bibliothek für Ensemble-Methoden (auch bekannt als sklearn.ensemble) die Implementierung beliebter Boosting-Methoden, darunter AdaBoost, XGBoost und andere.  
  • Voreingenommenheit reduzieren:Der Boosting-Algorithmus kombiniert mehrere schwache Lerner nacheinander, um die Beobachtungen iterativ zu verbessern. Dieser Ansatz trägt dazu bei, die hohe Verzerrung zu reduzieren, die häufig bei flachen Entscheidungsbaum- und logistischen Regressionsmodellen auftritt. 
  • Rechenleistung:Da der Boosting-Algorithmus während des Trainings nur Merkmale auswählt, die seine Vorhersagekraft verbessern, trägt er zur Reduzierung der Dimensionalität und Verbesserung der Rechenleistung bei.  

Herausforderungen des Boostings  

  • Überanpassung:In verschiedenen Studien (Link außerhalb von ibm.com) herrscht Uneinigkeit darüber, ob Boosting zur Reduzierung von Overfitting beiträgt oder es verschlimmert. Wir haben dies in die Herausforderung aufgenommen, da es vorkommen kann, dass die Vorhersagen nicht auf neue Datensätze verallgemeinert werden können.  
  • Intensive Berechnung:  Das sequentielle Training im Boosting-Verfahren ist schwer skalierbar. Da jede imputierte Variable auf ihrer Vorgängerin aufbaut, sind Boosting-Modelle rechenintensiv, obwohl XGBoost versucht, die Skalierbarkeitsprobleme zu lösen, die bei anderen Boosting-Typen auftreten. Im Vergleich zum Bagging kann das Trainieren von Boosting-Algorithmen aufgrund der großen Anzahl von Parametern, die auch das Verhalten des Modells beeinflussen, langsamer sein. 

Verweise

【1】https://www.ibm.com/cn-zh/topics/boosting