Boosting und Bagging: So entwickeln Sie einen robusten Algorithmus für maschinelles Lernen

Maschinelles Lernen und Data Science erfordern mehr als nur das Einspielen von Daten in eine Python-Bibliothek und die Nutzung der Ergebnisse

Bootstrapping / Bagging / Boosting

Maschinelles Lernen und Data Science erfordern mehr als nur das Einspielen von Daten in eine Python-Bibliothek und die Nutzung der Ergebnisse.

Datenwissenschaftler müssen die Daten und die dahinter stehenden Prozesse wirklich verstehen, um ein erfolgreiches System implementieren zu können.

Eine Schlüsselmethode für die Implementierung ist das Wissen, wann ein Modell von der Verwendung von Bootstrapping-Methoden profitieren könnte. Dies nennt man Ensemble-Modelle. Einige Beispiele für Ensemble-Modelle sind AdaBoost und Stochastic Gradient Boosting.

Warum Ensemble-Modelle verwenden?

Sie können dazu beitragen, die Algorithmusgenauigkeit zu verbessern oder ein Modell robuster zu machen. Zwei Beispiele hierfür sind Boosten und Absacken. Boosting und Bagging sind Themen, die Datenwissenschaftler und Maschinelle Lerningenieure kennen müssen, insbesondere wenn Sie vorhaben, ein Interview zu Data Science / Maschinelles Lernen zu führen.

Das Lernen von Ensembles entspricht im Wesentlichen dem Wort Ensemble. Anstatt dass mehrere Personen in unterschiedlichen Oktaven singen, entsteht eine schöne Harmonie (jede Stimme füllt die Lücke der anderen), werden beim Lernen von Ensembles Hunderttausende von Modellen desselben Algorithmus verwendet, die zusammenarbeiten, um die richtige Klassifizierung zu finden.

Eine andere Art, über das Lernen von Ensembles nachzudenken, ist das Märchen von Blinden und Elefanten. In diesem Beispiel fühlt jeder Blinde einen anderen Teil eines Elefanten, sodass er sich nicht einig ist, was er fühlt. Wenn sie jedoch zusammengekommen wären und darüber gesprochen hätten, hätten sie möglicherweise herausfinden können, dass sie verschiedene Teile derselben Sache betrachteten.

Die Verwendung von Techniken wie Boosten und Absacken hat zu einer erhöhten Robustheit der statistischen Modelle und einer verringerten Varianz geführt.

Nun stellt sich die Frage, was ist der Unterschied zwischen all diesen verschiedenen B-Wörtern?

Bootstrapping

Lassen Sie uns zunächst über das sehr wichtige Konzept des Bootstrapping sprechen. Viele Datenwissenschaftler vermissen dies und gehen direkt zur Erklärung von Boosting und Bagging über. Für beide ist jedoch ein Bootstrapping erforderlich.

Abbildung 1 Bootstrapping

Beim maschinellen Lernen bezieht sich die Bootstrap-Methode auf zufällige Stichproben mit Ersetzung. Dieses Beispiel wird als Resample bezeichnet. Auf diese Weise kann das Modell oder der Algorithmus die verschiedenen Verzerrungen, Varianzen und Merkmale des Resamples besser verstehen. Durch die Entnahme einer Stichprobe der Daten kann die erneute Stichprobe andere Merkmale enthalten, als sie möglicherweise insgesamt enthielt. Dies ist in Abbildung 1 dargestellt, in der jede Stichprobenpopulation unterschiedliche Teile aufweist und keine identisch ist. Dies würde dann den Gesamtmittelwert, die Standardabweichung und andere beschreibende Metriken eines Datensatzes beeinflussen. Im Gegenzug kann es robustere Modelle entwickeln.

Bootstrapping eignet sich auch hervorragend für kleine Datensätze, die zur Überanpassung neigen können. Tatsächlich haben wir dies einem Unternehmen empfohlen, das besorgt war, dass seine Datensätze weit von „Big Data“ entfernt sind. Bootstrapping kann in diesem Fall eine Lösung sein, da Algorithmen, die Bootstrapping verwenden, robuster sein und neue Datensätze verarbeiten können Methodik (Boosten oder Absacken).

Der Grund für die Verwendung der Bootstrap-Methode besteht darin, dass sie die Stabilität einer Lösung testen kann. Es kann die Robustheit erhöhen, indem mehrere Beispieldatensätze verwendet und mehrere Modelle getestet werden. Möglicherweise hat ein Probendatensatz einen größeren Mittelwert als ein anderer oder eine andere Standardabweichung. Dies kann dazu führen, dass ein Modell beschädigt wird, das überarbeitet und nicht mit Datensätzen mit unterschiedlichen Variationen getestet wurde.

Einer der vielen Gründe, warum Bootstrapping üblich geworden ist, ist der Anstieg der Rechenleistung. Dies ermöglicht viel mehr Permutationen mit anderen Resamples als sonst möglich. Das Bootstrapping wird sowohl beim Absacken als auch beim Boosten verwendet, wie nachstehend erläutert wird.

Absacken

Bagging bezieht sich tatsächlich auf (Bootstrap-Aggregatoren). Fast jede Veröffentlichung oder Veröffentlichung, die mit Absackalgorithmen referenziert, verweist auch auf Leo Breiman, der 1996 eine Veröffentlichung mit dem Titel „Absackprädiktoren“ verfasst hat.

Wo Leo Bagging beschreibt als:

"Bagging Predictors ist eine Methode zum Generieren mehrerer Versionen eines Prädiktors und zum Erhalten eines aggregierten Prädiktors."

Das Absacken hilft dabei, die Varianz von Modellen zu verringern, die möglicherweise sehr genau sind, jedoch nur für die Daten, mit denen sie trainiert wurden. Dies wird auch als Überanpassung bezeichnet.

Überanpassung ist, wenn eine Funktion zu gut zu den Daten passt. Dies liegt in der Regel daran, dass die tatsächliche Gleichung viel zu kompliziert ist, um jeden Datenpunkt und Ausreißer zu berücksichtigen.

Abbildung 2 Überanpassung

Ein weiteres Beispiel für einen Algorithmus, der leicht überarbeitet werden kann, ist ein Entscheidungsbaum. Die mit Entscheidungsbäumen entwickelten Modelle erfordern sehr einfache Heuristiken. Entscheidungsbäume bestehen aus einer Reihe von "if-else" -Anweisungen, die in einer bestimmten Reihenfolge ausgeführt werden. Wenn also der Datensatz in einen neuen Datensatz geändert wird, der möglicherweise eine Abweichung oder einen Unterschied zu den zugrunde liegenden Features im Vergleich zum vorherigen Datensatz aufweist, ist das Modell nicht so genau. Dies liegt daran, dass die Daten auch nicht zum Modell passen (was auf jeden Fall eine Rückwärtsaussage ist).

Bagging umgeht dies, indem es eine eigene Varianz zwischen den Daten erzeugt, indem Daten abgetastet und ersetzt werden, während mehrere Hypothesen (Modelle) getestet werden. Dies reduziert wiederum das Rauschen, indem mehrere Stichproben verwendet werden, die höchstwahrscheinlich aus Daten mit verschiedenen Attributen (Median, Durchschnitt usw.) bestehen.

Sobald jedes Modell eine Hypothese entwickelt hat, verwenden die Modelle die Abstimmung für die Klassifizierung oder die Mittelung für die Regression. Hier kommt das "Aggregieren" in "Bootstrap Aggregieren" ins Spiel. Jede Hypothese hat das gleiche Gewicht wie alle anderen. Wenn wir später über das Boosten sprechen, ist dies einer der Orte, an denen sich die beiden Methoden unterscheiden.

Abbildung 3 Absacken

Im Wesentlichen laufen alle diese Modelle zur gleichen Zeit und es wird abgestimmt, welche Hypothese die genaueste ist.

Dies hilft, die Varianz zu verringern, d. H. Die Überanpassung zu verringern.

Boosting

Boosting bezieht sich auf eine Gruppe von Algorithmen, die gewichtete Mittelwerte verwenden, um schwache Lernende zu stärkeren Lernenden zu machen. Im Gegensatz zum Absacken, bei dem jedes Modell unabhängig ausgeführt und die Ergebnisse am Ende ohne Vorzug eines Modells aggregiert wurden, dreht sich beim Boosten alles um „Teamwork“. Jedes ausgeführte Modell bestimmt, auf welche Merkmale sich das nächste Modell konzentriert.

Boosting erfordert auch Bootstrapping. Hier gibt es jedoch einen weiteren Unterschied. Anders als beim Absacken wird bei jeder Datenprobe die Gewichtung erhöht. Dies bedeutet, dass einige Beispiele häufiger ausgeführt werden als andere.

Warum sollten die Datenproben mit Gewichten versehen werden?

Abbildung 4 Boosting

Wenn Boosting ausgeführt wird, wird für jedes Modell nachverfolgt, welche Datenmuster am erfolgreichsten sind und welche nicht. Die Datensätze mit den meisten falsch klassifizierten Ausgaben werden stärker gewichtet. Hierbei handelt es sich um Daten, die komplexer sind und mehr Iterationen erfordern, um das Modell ordnungsgemäß zu trainieren.

Während der eigentlichen Klassifizierungsphase gibt es auch einen Unterschied darin, wie Boosting die Modelle behandelt. Beim Boosten werden die Fehlerraten des Modells verfolgt, da bessere Modelle besser gewichtet werden.

Auf diese Weise haben die Modelle mit besseren Ergebnissen einen stärkeren Einfluss auf die endgültige Ausgabe, wenn das Abstimmen stattfindet, wie beim Absacken.

Zusammenfassung

Boosting und Bagging sind beide großartige Techniken, um die Varianz zu verringern. Ensemble-Methoden übertreffen im Allgemeinen ein einzelnes Modell. Aus diesem Grund haben viele der Kaggle-Gewinner Ensemble-Methoden angewendet. Eine, die hier nicht diskutiert wurde, war das Stapeln. (Das erfordert einen eigenen Beitrag.)

Sie lösen jedoch nicht jedes Problem und haben ihre eigenen Probleme. Es gibt verschiedene Gründe, warum Sie einen über den anderen verwenden würden. Das Absacken ist ideal, um die Varianz zu verringern, wenn ein Modell überarbeitet ist. Boosten ist jedoch viel wahrscheinlicher eine bessere Wahl der beiden Methoden. Boosting führt auch viel häufiger zu Leistungsproblemen. Es eignet sich auch hervorragend zum Verringern der Neigung in einem Underfit-Modell.

Hier kommen Erfahrung und Fachkompetenz ins Spiel! Es kann einfach sein, auf das erste Modell zu springen, das funktioniert. Es ist jedoch wichtig, den Algorithmus und alle von ihm ausgewählten Funktionen zu analysieren. Wenn zum Beispiel ein Entscheidungsbaum bestimmte Blätter setzt, stellt sich die Frage, warum! Wenn Sie es nicht mit anderen Datenpunkten und Grafiken unterstützen können, sollte es wahrscheinlich nicht implementiert werden.

Es geht nicht nur darum, AdaBoost oder zufällige Gesamtstrukturen mit verschiedenen Datensätzen zu testen. Der endgültige Algorithmus hängt von den Ergebnissen ab und davon, welche Unterstützung verfügbar ist.