Was ist Bagging?
Bagging bezeichnet eine Abkürzung des Begriffs „Bootstrap Aggregating“ und stellt ein Verfahren zur Varianzreduktion bei Verwendung von verschiedenen Klassifikations- und Regressionsbäumen im Rahmen des maschinellen Lernens dar.
Neben dieser Erhöhung der Genauigkeit von Klassifikations- und Regressionsproblemen, wird Bagging auch genutzt, um das bekannte Problem des Overfitting zu lösen. Die Ergebnisse des Algorithmus sind besonders gut, wenn die einzelnen Lerner der Klassifikations- und Regressionsbäume instabil sind und eine hohe Varianz aufweisen.
Gemäß der Wortbestandteile wird bei dieser Methode das Bootstrap Aggregating in zwei Prozessschritten durchlaufen. Bootstrapping beschreibt grundsätzlich ein Verfahren in der Statistik, bei welcher wiederholt Zufallsstichproben aus einem definierten Datensatz gezogen werden, um eine unbekannte Verteilungsfunktion des Datensatzes zu identifizieren. Somit ist dieses Bootstrapping-Verfahren dem Resampling zuzuordnen, da auf Basis einer Stichprobe (Datensatz) wiederholt Unterstichproben gezogen werden. Diese einzelnen Stichproben werden anschließend mit dem Vorhersagemodell bzw. schwachen Klassifizierern trainiert und anschließend zu einem Vorhersagewert aggregiert.
Daraus leitet sich auch der Name Bootstrap Aggregating ab, indem Daten anfangs durch wiederholte Stichproben gezogen werden (mittels des Bootstrapping-Verfahrens) und anschließend die Vorhersagemodelle vereinigt (aggregiert) werden. Somit ist es möglich, dass diese Methodik zu einer Informationsfusion führt und sich dadurch die Klassifikations- bzw. Regressionsleistung erhöht.
Wie funktioniert die Ensemblemethode?
Bei einer Ensemblemethode bzw. dem Ensemble Learning spricht man grundsätzlich davon, wenn mehrere (schwache) Lerner bzw. Klassifizierer zusammengeschaltet und durchlaufen werden und dadurch ein sogenanntes Ensemble entsteht. Dahin gehend spricht man bei den Ensemblemethoden auch von einem Meta-Ansatz des maschinellen Lernens, da mehrere Modelle zu einem Vorhersagewert zusammengefasst werden.
Wie eingangs beschrieben, werden beim Bagging (Bootstrap Aggregating) mehrfach Stichproben eines Datensatzes gezogen und anschließend derselbe Algorithmus mit den Stichprobendaten parallel trainiert und getestet. Dabei werden im Regelfall Zufallsstichproben des Datensatzes gezogen, jedoch wäre es auch möglich, den gesamten Datensatz zu verteilen und daraus die Aufteilung der Daten zu generieren. Bei der Auswahl der Daten durch eine Zufallsstichprobe entspricht es dem Modell „Ziehen mit Zurücklegen“. Dies bedeutet, dass bestimmte Datenpunkte mehrfach (über mehrmalige zufällige Selektion) in das Modell einfließen können, andere hingegen gar nicht.
Nach der Generierung der Stichprobe erfolgt die Anwendung des Lernalgorithmus für jedes Ensemblemitglied. Dabei geschieht dies parallel zueinander. Abschließend werden die einzelnen Vorhersagemodelle aggregiert, wodurch ein endgültiger Ensemble-Klassifizierer entsteht. Die einzelnen Modelle bzw. Algorithmen können entweder mit gleich großen Gewichten in den Klassifizierer einfließen oder aber auch unterschiedlich hohe Gewichte besitzen.
Was unterscheidet Bagging von Boosting?
Neben dem Bagging stellt auch das sogenannte Boosting eine Ensemblemethode im maschinellen Lernen dar.
Dabei werden im Gegensatz zum Bagging die (schwachen) Klassifizierer nicht parallel durchlaufen, sondern sequenziell. Bei beiden dargestellten Methoden wird zu Beginn eine Basisstichprobe gezogen. Aufgrund der iterativen und sequenziellen Vorgehensweise der Ensemblemethode ist es möglich, dass die Erkenntnisse aus den vorherigen Schritten auf nachfolgende Schritte angewandt wird. Dies wird erreicht, indem falsch klassifizierte Iterationen anders gewichtet werden als richtig klassifizierte Iterationen.
Ziel von Boosting ist es, dass aus einer Vielzahl von schwachen Klassifizierern schlussendlich ein starker Klassifizierer entsteht. Während beim Bagging grundsätzlich auch Gewichte zur Anwendung kommen können, unterscheiden sich diese beim Boosting dahin gehend, dass ihre Größe vom bisherigen sequenziellen Fortschritt abhängen, während die Gewichte beim Bagging bereits im Vorhinein definiert werden, da der Prozess parallel abläuft.
Ein weiterer Unterschied zwischen den beiden Methoden besteht in der Zielsetzung. Das Ziel von Bagging besteht darin, durch Kombination die Varianz der einzelnen Klassifizierer zu reduzieren, während Boosting darauf abzielt, den systematischen Fehler bzw. die Verzerrung der Verteilung (=Bias) zu verringern. Dahin gehend kann Bagging dabei helfen, das Overfitting-Problem zu lösen, während dies beim Boosting keine Zielsetzung darstellt.
Beide Verfahren lassen sich mit Python umsetzen, wobei die scikit-learn-Bibliothek eine Implementierung für Ensemblemethoden bereitstellt und somit relativ einfach umgesetzt werden kann.