Ensembling von Methoden und Modellen - Bagging, Boosting und Stacking zur Verbesserung der Ergebnisse von Deep Learning und maschinellem Lernen
Der Ensemble-Ansatz ermöglicht es uns, die Genauigkeit unserer Modelle für maschinelles Lernen zu verbessern, indem wir ihre Vorhersagen zusammenfassen oder in einem Ensemble zusammenfassen. Wenn die einzelnen Basismodelle ausreichend unterschiedlich sind, kann die kombinierte Ensemble-Methode sogar eine bessere Leistung erbringen als jedes einzelne Basismodell.
Leistung des Ensemble-Lernens
Lassen Sie uns anhand eines vereinfachten Beispiels aus der Übertragungs- oder Informationstheorie erörtern, warum dies so sein kann. Wir werden sehen, warum die "Weisheit der Massen" tatsächlich eine natürliche Grundlage hat.
Nehmen wir an, wir wollen Informationen über etwas von Absender A an Absender B übermitteln.
Wir werden das, was wir übermitteln wollen, vereinfachen, es wird einfach eine Reihe von 0en und 1en sein. Unsere zu übermittelnde Nachricht lautet dann: 101.
Unsere Übertragung läuft über verschiedene Leitungen und manchmal treten Fehler auf. Die 1 sollte als 1 übertragen werden, wird aber beim Empfang durch den Sender B zu einer 0. Oder andersherum.
Wir führen die Übertragung viermal durch und erhalten die folgenden Übertragungen:
101
111 (Fehler)
001 (Fehler)
101
Zweimal haben wir einen Fehler in der Übertragung. Wenden wir nun die Methode der Mehrheitsentscheidung auf diese Übertragung an, d.h. wir nehmen für jede Position in der Übertragung den Wert als richtig an, der die meisten "Stimmen" erhalten hat.
Die Stimmen in unserem Fall sind:
Position 1: 3 Stimmen für 1, 1 für 0
Position 2: 3 Stimmen für 0, 1 für 1
Position 3: 4 Stimmen für 1
Das Ergebnis des mehrheitlich gewählten Ensembles ist also 101 und entspricht der Eingangsmeldung. Obwohl wir bei der Übertragung zwei Fehler hatten, konnten wir uns von den Fehlern erholen und das richtige Endergebnis erhalten. Dies veranschaulicht die Stärke des Ensembling.
Das ist der Grund, warum die Weisheit der Masse ein stärkeres Konzept sein kann, als wir annehmen. Die Meinungen am Rande werden am Ende einfach ausgeglichen. Es zeigt auch, warum es sinnvoll ist, verschiedene Arten von Individuen in einem Team zu haben, und dass dies bei der Rekrutierung angestrebt werden sollte, insbesondere in Teams wie Data Science, AI, Machine learning und anderen.
Beachten Sie jedoch, dass Ensembling nur dann gut funktioniert, wenn die Fehler nicht korreliert sind. Würden beide Fehler in unserer Übertragung an derselben Stelle auftreten, käme es im obigen Fall zu einem Gleichstand.
Wir können dies leicht mit dem maschinellen Lernen in Verbindung bringen, indem wir die 101 als Ergebnis der Klassifizierung für 3 Klassen neu interpretieren. Und die Übertragung als 3 verschiedene maschinelle Lernmodelle. Auch wenn 2 maschinelle Lernmodelle in unserem Ensemble Fehler in einer der Klassen machen, würde das Ensemble mit Mehrheitsentscheidung immer noch eine korrekte Klassifizierung liefern. Auch hier ist zu beachten, dass zwei maschinelle Lernmodelle unterschiedliche Fehler gemacht haben.
Im zweiten Teil des Artikels werden wir erörtern, welche Art von Ensembling-Methoden man beim maschinellen Lernen anwenden kann.
Ensembling-Modelle
Im Allgemeinen wird zwischen den folgenden Arten von Ensemble-Methoden unterschieden:
Mittelwertbildung
gewichteter Durchschnitt
Boosten
Stapeln
Mischen
Mittelwertbildung
Beim Ensembling auf der Grundlage der Mittelwertbildung besteht die Hauptidee darin, die Vorhersagen der Basismodelle einfach zu mitteln. Wir könnten z. B. die folgenden Basismodelle erstellen:
lineare Regression (Lasso, Ridge)
Entscheidungsbäume
Zufallswälder
Support-Vektor-Maschine
Gradient-Boosting-Maschine
lightbm
lstm tiefes neuronales netz
cnn neuronales Netz
Wenn es sich um ein Regressionsproblem handelt, werden die Vorhersagen gemittelt. Bei einem Klassifizierungsproblem können wir eine Mehrheitsentscheidung treffen.
Gewichteter Durchschnitt
Die gewichtete Mittelwertbildung ähnelt der einfachen Mittelwertbildung, mit dem Unterschied, dass wir den einzelnen Modellen unterschiedliche Gewichte zuweisen. Wir könnten z. B. herausfinden, dass xgboost von allen Basismodellen die beste Leistung in Bezug auf f1, Präzision, Genauigkeit, Recall oder ROC AUC erbringt und es daher stärker gewichten als andere.
Bagging
Beim Bagging-Ansatz zum Ensembling bilden wir Basismodelle, indem wir dasselbe maschinelle Lernmodell (z. B. Entscheidungsbaum) nehmen, es aber auf verschiedenen Teilen der Trainingsmenge trainieren. Wir erhalten diese Sätze durch Stichproben aus dem kompletten Trainingssatz mit Ersetzung. Das bedeutet, dass sich in einigen Datensätzen die gleichen Dateninstanzen wiederholen können.
Der Name Bagging leitet sich von Boostrapping ab und wurde 1994 von L. Breiman, dem "Erfinder" der Random Forests, vorgeschlagen.
Ein typisches Beispiel für Bagging ist das Training eines Entscheidungsbaums auf verschiedenen Stichproben, was zu einem Random-Forest-Algorithmus für maschinelles Lernen führt.
Bagging hilft bei der Verringerung der Varianz des maschinellen Lernmodells. Die Varianz kann im Allgemeinen als die Empfindlichkeit des maschinellen Lernmodells gegenüber den Eingabedaten definiert werden, oder wie stark sich die Parameter des Modells ändern, wenn wir die Trainingsdaten ändern. Bei Problemen des maschinellen Lernens besteht ein Kompromiss zwischen Vorspannung und Varianz. Wenn wir versuchen, die Varianz zu verringern, wird die Verzerrung im Allgemeinen zunehmen und umgekehrt. Wie kann man die Verzerrung mit einem Ensembling-Ansatz verringern?
Boosting
Ein Ansatz zur Verringerung von Verzerrungen in unseren Vorhersagen durch maschinelles Lernen ist der Boosting-Ansatz. Im Gegensatz zum Bagging, bei dem wir unsere Basisklassifikatoren parallel auf verschiedenen Stichprobendaten trainieren können, erfordert der Boosting-Ansatz ein sequenzielles Training der maschinellen Lernmodelle.
Dies sind die üblichen Schritte, die wir bei der Erstellung eines Boosting-Modells für maschinelles Lernen durchführen:
Wir entnehmen eine Reihe von Instanzen aus den Daten
Wir erstellen und trainieren das Basismodell auf diesen Instanzen
Das trainierte Basismodell wird verwendet, um Vorhersagen für den gesamten Datensatz zu treffen.
Änderungen in Bezug auf die Vorhersagen werden ermittelt
Dateninstanzen mit hohen Abweichungen (Vorhersagen im Vergleich zu markierten Werten) erhalten ein größeres Gewicht im modifizierten Datensatz
Wir erstellen und trainieren das nächste Basismodell auf diesem modifizierten Datensatz, bei dem einige Instanzen aus 5. eine höhere Gewichtung haben
Wir wiederholen die Schritte 1 bis 6 so lange, bis ein bestimmtes Ziel nicht erreicht ist.
Historisch gesehen ist Boosting mit der von Kearns und Valiant aufgeworfenen Frage verknüpft: Können wir aus einer Menge schwacher Lerner einen starken Lerner erstellen? Spätere Arbeiten haben ihnen Recht gegeben, und seither wurden viele Boosting-Algorithmen entwickelt.
Einige der bekanntesten Boosting-Algorithmen sind:
AdaBoost
Gradienten-Boosting
XGBoost oder Extrem-Gradienten-Boosting
Man kann xgboost auch für Website Kategorisierung verwenden.
Stacking
Der Stacking-Ansatz verwendet zwei Arten von maschinellen Lernmodellen. Eine Sammlung von Basismodellen und ein Metamodell, das auf Vorhersagen der Basismodelle trainiert wird.
Ein Beispiel für das Stapeln von Basismodell und Metamodell:
Als Metamodell können wir einfachere Modelle wie logistische Regression, lineare Lassoregression oder komplexere Modelle wie XGBoost verwenden.
Das Training für das Stacking-Modell besteht aus zwei Hauptschritten:
Zunächst werden die Basismodelle mit k-facher Validierung trainiert und die nicht gefalteten Vorhersagen der Basismodelle beiseite gelegt.
Anschließend trainieren wir das Metamodell auf diesen Out-of-Fold-Vorhersagen der Basismodelle.
Alle modellen kann man zum Beispiel verwenden um einen API für Product Categorization zu bilden.
Blending
Blending ist dem Stacking sehr ähnlich, der Unterschied besteht darin, wie der Trainingsdatensatz verwendet wird.
Beim Stacking werden, wie bereits erwähnt, die Out-of-Fold-Vorhersagen verwendet, beim Blending hingegen wird der ausgeklammerte Validierungsdatensatz verwendet, typischerweise werden 10 % der Instanzen für diesen Zweck verwendet.