Dieses Mal werde ich die Theorie über Adaboost beim Lernen von Ensembles zusammenfassen.
In diesem Bereich gibt es viele Begriffe, daher werde ich zunächst die Begriffe erläutern, die für das Lernen von Ensembles verwendet werden.
Die Theorie von AdaBoost wird später zusammengefasst. Wenn Sie sie also schnell sehen möchten, überspringen Sie sie bitte.
Die folgenden Artikel waren beim Schreiben dieses Artikels sehr hilfreich.
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Detaillierte Erklärung zu Boosting und AdaBoost
Erste Mustererkennung Kapitel 11 Boosten
Ich habe Ada Boost recherchiert, also werde ich es zusammenfassen
Geben wir unser Bestes.
Ensemble-Lernen ist eine Technik, die versucht, bessere Vorhersagen zu erzielen, indem mehrere Lernmaschinen kombiniert werden.
In vielen Fällen erzielen Sie bessere Ergebnisse als bei Verwendung eines einzelnen Modells.
In Bezug auf die Kombination mehrerer Lernender wird im Fall der Klassifizierung die "Mehrheitsentscheidung" mehrerer Lernender getroffen, und im Fall der Regression wird der "Durchschnitt" mehrerer Lernender getroffen.
Häufig verwendete Techniken beim Lernen von Ensembles sind "Absacken", "Boosten", "Stapeln" und "Anstoßen".
Zufälliger Wald kann als Ensemble-Lernen bezeichnet werden, bei dem der "Entscheidungsbaum" als Lernender mit einer als Bagging bezeichneten Technik verwendet wird.
Es kamen viele Begriffe heraus und es wurde schwer zu verstehen. Ich werde jede Technik erklären.
Bagging ist eine Abkürzung für Bootstrap Aggregation.
Erstellen Sie mithilfe einer Technik namens Boost Trap mehrere Datensätze aus einem Datensatz, generieren Sie einen Lernenden für jeden duplizierten Datensatz und treffen Sie eine Mehrheitsentscheidung über die mehreren auf diese Weise erstellten Lernenden. Wenn Sie dies tun, wird die endgültige Vorhersage getroffen.
Boost Trap ist eine Methode zum Abtasten von n Daten aus einem Datensatz, die eine Duplizierung ermöglicht.
Der Datensatz sei $ S_0 = (d_1, d_2, d_3, d_4, d_5) $, und wenn n = 5 Datenstücke abgetastet werden, ist $ S_1 = (d_1, d_1, d_3, d_4, d_5) $ oder $ S_2 = Sie erstellen einen Datensatz wie (d_2, d_2, d_3, d_4, d_5) $.
Wie Sie sehen können, können Sie Boost-Traps verwenden, um viele verschiedene Datensätze aus einem Datensatz zu erstellen.
Betrachten wir den vorhergesagten Wert anhand eines konkreten Beispiels.
Generieren Sie aus dem Trainingsdatensatz N Boost-Trap-Datensätze der Größe n.
Erstellen Sie mit diesen Daten N Vorhersagemodelle und lassen Sie jeden Vorhersagewert $ y_n (X) $ sein.
Da der Durchschnitt dieser N vorhergesagten Werte der endgültige vorhergesagte Wert ist, ist der endgültige vorhergesagte Wert des Modells unter Verwendung des Absackens wie folgt.
y(X) = \frac{1}{N}\sum_{n=1}^{N}y_n(X)
Dies ist das Ende der Erklärung des Absackens. Als nächstes schauen wir uns das Boosten an.
Beim Boosten werden schwache Lernende nacheinander konstruiert, anstatt schwache Lernende unabhängig zu machen, wie beim Absacken. Zu diesem Zeitpunkt wird der k + 1. schwache Lernende basierend auf dem k-ten schwachen Lernenden konstruiert (um die Schwäche auszugleichen).
Im Gegensatz zum Absacken, bei dem schwache Lernende unabhängig voneinander generiert werden, dauert das Boosten, bei dem Sie nacheinander schwache Lernende generieren müssen, einige Zeit. Stattdessen ist das Boosten tendenziell genauer als das Absacken.
Für das Absacken haben wir einen einfachen Durchschnitt von N vorhergesagten Werten berücksichtigt.
Dieser Algorithmus wertet einzelne Vorhersagen gleichermaßen aus und berücksichtigt nicht die Bedeutung jedes Modells.
Durch das Stapeln werden einzelne vorhergesagte Werte entsprechend ihrer Wichtigkeit gewichtet, um den endgültigen vorhergesagten Wert zu erhalten.
Es wird durch die folgende Formel ausgedrückt.
y(X) = \sum_{n=1}^{N}W_ny_n(X)
Bumping ist eine Technik, um das am besten passende Modell unter mehreren Lernenden zu finden.
Generieren Sie N Modelle mit dem Boost-Trap-Datensatz, wenden Sie den damit erstellten Lernenden auf die Originaldaten an und wählen Sie das Modell mit dem kleinsten Vorhersagefehler als bestes Modell aus.
Dies mag als weniger vorteilhafte Methode erscheinen, vermeidet jedoch das Lernen mit Daten von schlechter Qualität.
Lassen Sie uns nun über die Theorie von Ada Boost sprechen.
Sowohl AdaBoost als auch Gradienten-Boosting sind eine Art von Boosting. Es handelt sich also um Algorithmen, die nacheinander schwache Lernende erzeugen.
Es ist grob in die folgenden vier Merkmale unterteilt.
Verwenden Sie gewichtete Datensätze, um schwache Lernende zu trainieren
Verleiht Datenpunkten, die von der vorherigen Lernmaschine falsch klassifiziert wurden, ein großes Gewicht
Geben Sie zunächst allen Daten das gleiche Gewicht
Geben Sie den endgültigen vorhergesagten Wert aus, indem Sie die auf diese Weise erzeugten und trainierten schwachen Lernmaschinen kombinieren
Auf diese Weise kann AdaBoost als ein Algorithmus bezeichnet werden, der versucht, das System durch Hervorheben falsch klassifizierter Daten zu verbessern.
Das Bild ist wie folgt.
extracted from Alexander Ihler's youtube video
Schauen wir uns nun an, wie falsch klassifizierte Daten mithilfe mathematischer Formeln tatsächlich gewichtet werden.
Ich werde es so einfach wie möglich erklären, also geben Sie bitte Ihr Bestes.
Betrachten Sie den Fall der Erzeugung von M schwachen Lernenden, um N Daten zu klassifizieren.
Die endgültige Ausgabe der starken Lernmaschine ist wie folgt.
H(x) = sign(\sum_{m=1}^{M}α_my_m(x))
Vorzeichen wird als Vorzeichenfunktion bezeichnet und gibt -1 zurück, wenn das Argument kleiner als 0 ist, und 1, wenn das Argument größer als 0 ist. $ y_m (x) $ ist der schwache Lernende und $ α_m $ ist das Gewicht jedes schwachen Lernenden.
Mit anderen Worten, der schwache Lernende wird gewichtet und summiert, und wenn die Summe größer als 0 ist, wird 1 zurückgegeben, und wenn sie kleiner als 0 ist, wird -1 zurückgegeben, was die endgültige Ausgabe ist. Nun wollen wir sehen, wie wir $ y_m (x) $ und $ α_m $ bestimmen.
Da den ersten Daten gerade Gewichte gegeben werden, ist der Gewichtskoeffizient {$ W_n $} der Daten von $ n = 1,2,3, ..., N $ $ w_n ^ {(1)} = \ frac Initialisieren Sie mit {1} {N} $.
Das untere rechte von w ist die Datennummer und das obere rechte von w ist die schwache Lernmaschinennummer. Mit anderen Worten, beim ersten schwachen Lernenden beträgt das Gewicht aller Daten $ \ frac {1} {N} $.
Wiederholen Sie die folgenden Vorgänge für alle Lernmaschinen $ m = 1,2,3, ... M $.
J_m = \sum_{n=1}^{N}w_n^{(m)}I(y_m(x_n)\neq t_n)
$ w_n ^ {(m)} $ ist das Gewicht in den n-ten Daten des m-ten schwachen Lernenden.
$ I $ wird als Unterstützungsfunktion bezeichnet und gibt 1 zurück, wenn $ y_m (x_n) \ neq t_n $, dh wenn der vorhergesagte Wert und das richtige Antwortetikett in einem Daten nicht übereinstimmen, und $ y_m (x_n) = t_n $ Wenn das heißt, wenn der vorhergesagte Wert und das richtige Antwortetikett in einer bestimmten Datenübereinstimmung übereinstimmen, wird 0 zurückgegeben.
Mit anderen Worten, $ J_m $ ist die Summe der Gewichte der Datenpunkte, die in einer schwachen Lernmaschine $ m $ einen Vorhersagefehler verursacht haben.
\epsilon_m = \frac{\sum_{n=1}^{N}w_n^{(m)}I(y_m(x_n)\neq t_n)}{\sum_{n=1}^{N}w_n^(m)}
\alpha_m = ln \bigl(\frac{1-\epsilon_m}{\epsilon_m} \bigr)
Der Nenner von $ \ epsilon_m $ ist die Summe der Gewichte der Daten im schwachen Lernenden $ m $, und das Molekül ist die Summe der Gewichte der falsch vorhergesagten Datenpunkte im schwachen Lernenden $ m $.
Mit anderen Worten kann $ \ epsilon_m $ als die als Gewicht ausgedrückte Fehlerrate bezeichnet werden.
Es ist unten dargestellt.
Die folgende Formel war die endgültige Ausgabe.
H(x) = sign(\sum_{m=1}^{M}α_my_m(x))
Mit anderen Worten, das Gewicht des Lernenden mit einer hohen Fehlerrate ($ \ epsilon_m $ ist groß) $ \ alpha_m $ ist negativ, und das Gewicht des Lernenden mit einer niedrigen Fehlerrate ($ \ epsilon_m $ ist klein) ist positiv und wird addiert. Wenn ein positiver Wert ist, ist $ H (x) = 1 $, und wenn die Summe ein negativer Wert ist, ist $ H (x) = 0 $ die endgültige Ausgabe.
Aktualisieren Sie das Gewicht des Datenpunkts mit der folgenden Formel.
w_n^{(m + 1)} = w_n^{(m)}exp \bigl(\alpha_mI(y_m(x) \neq t_n) \bigr)
Wenn der vorhergesagte Wert der $ n $ -ten Daten im schwachen Lernenden $ m $ mit dem richtigen Antwortetikett übereinstimmt, werden die Daten nicht aktualisiert, und nur wenn der vorhergesagte Wert und das richtige Antwortetikett unterschiedlich sind, $ exp (\ alpha_m) $ Multiplizieren Sie, um das Gewicht zu aktualisieren.
Die Beziehung zwischen $ \ alpha $ und $ exp (\ alpha_m) $ ist unten dargestellt.
Auf einer Lernmaschine mit einer hohen Fehlerrate $ \ epsilon_m $ ist $ \ alpha_m $ kleiner, sodass $ w ^ {(m + 1)} $ kleiner ist.
Bei einem Lernenden mit einer niedrigen Fehlerrate von $ \ epsilon_m $, dh einem genauen Lernenden, ist $ \ alpha_m $ groß, sodass $ w ^ {(m + 1)} $ groß ist.
Mit anderen Worten, zusammenfassend wird in einer genauen Lernmaschine das Gewicht der falschen Daten erhöht und an die nächste Lernmaschine übergeben, und in einer ungenauen Lernmaschine wird das Gewicht der falschen Daten verringert und die nächste Lernmaschine verwendet. Wird an weitergegeben.
Das Obige ist die Theorie von Ada Boost.
Vielen Dank, dass Sie so weit gelesen haben.
Wenn Sie Lust dazu haben, möchte ich die Implementierung zusammenfassen.
Recommended Posts