Wann möchte man AdaBoost nutzen?

14

Da ich von dem AdaBoost-Klassifikator gehört habe, der bei der Arbeit wiederholt erwähnt wurde, wollte ich ein besseres Gefühl dafür bekommen, wie es funktioniert und wann man es verwenden möchte. Ich habe eine Reihe von Artikeln und Tutorials darüber gelesen, die ich bei Google gefunden habe, aber es gibt Aspekte des Klassifikators, die ich immer noch schwer verstehe:

  1. Die meisten Tutorials, die ich gesehen habe, sprechen von AdaBoost als der besten gewichteten Kombination vieler Klassifikatoren. Das macht für mich Sinn. Was keinen Sinn ergibt, sind Implementierungen (zB MALLET), bei denen AdaBoost nur einen schwachen Lernenden zu akzeptieren scheint. Wie macht das überhaupt Sinn? Wenn AdaBoost nur einen Klassifikator zur Verfügung stellt, sollte er dann nicht denselben Klassifikator mit einer Gewichtung von 1 zurückgeben? Wie werden aus dem ersten Klassifikator neue Klassifikatoren erzeugt?

  2. Wann möchte man eigentlich AdaBoost nutzen? Ich habe gelesen, dass es einer der besten Out-of-the-Box-Klassifikatoren sein soll, aber wenn ich versuche, einen MaxEnt-Klassifikator zu verbessern, erhalte ich f-Scores von über 70%, AdaBoost ermordet ihn und gibt mir f- Werte von etwa 15% mit sehr hohem Wiederaufruf und sehr geringer Präzision. Jetzt bin ich verwirrt. Wann würde ich jemals AdaBoost verwenden wollen? Wenn möglich, suche ich eher eine intuitive als eine rein statistische Antwort.

YuliaPro
quelle

Antworten:

11

Adaboost kann mehrere Instanzen desselben Klassifikators mit unterschiedlichen Parametern verwenden. Somit kann ein zuvor linearer Klassifikator zu nichtlinearen Klassifikatoren zusammengefasst werden. Oder, wie die AdaBoost-Leute gerne sagen, mehrere schwache Lernende können einen starken Lernenden ausmachen. Ein schönes Bild finden Sie hier unten.

Grundsätzlich funktioniert es wie bei jedem anderen Lernalgorithmus: Bei einigen Datensätzen funktioniert es, bei manchen nicht. Es gibt sicher Datensätze da draußen, in denen es sich auszeichnet. Und vielleicht haben Sie noch nicht den richtigen schwachen Lerner ausgewählt. Haben Sie eine logistische Regression versucht? Haben Sie sich vorgestellt, wie sich die Entscheidungsgrenzen beim Hinzufügen von Lernenden entwickeln? Vielleicht können Sie sagen, was falsch läuft.

bayerj
quelle
(+1). Zusätzliche Bemerkung: Sogar die Parameter der schwachen Lernenden dürfen sich nicht unterscheiden, das Verhalten (dh was sie vorhersagen) ändert sich, wenn sich die Struktur des Datensatzes (wie beim Boosten) ändert.
steffen
MaxEnt ist logistische Regression. Es wäre sehr nützlich zu visualisieren, wie sich Entscheidungsgrenzen entwickeln. Wie kann man das machen? Außerdem verstehe ich immer noch nicht, wie AdaBoost funktioniert, wenn es nur einen Funktionssatz und einen Klassifizierertyp enthält (wie in MALLET). Das erscheint mir völlig kontraintuitiv.
YuliaPro
Zeichnen Sie einfach Ihren Datensatz. Zeichnen Sie zusätzlich ein Raster, in dem Sie für jeden Punkt eine Farbe auswählen, die von Ihrem System klassifiziert wird. Das funktioniert wohl nur für 2D. Sie könnten immer noch die wichtigsten Achsen oder so etwas zeichnen. Wenn Sie nur einen Feature-Set und einen Klassifikator haben, wird dieser auf nur einen Klassifikator reduziert. Ich hatte den Eindruck, die maximale Entropie sei ein Paradigma und kein konkreter Klassifikator. Wie auch immer.
Bayerj