Maschinelles Lernen kombinieren

20

Ich bin ein bisschen neu in Datamining / Maschinelles Lernen / etc. und haben über ein paar Möglichkeiten gelesen, mehrere Modelle und Läufe desselben Modells zu kombinieren, um Vorhersagen zu verbessern.

Mein Eindruck beim Lesen einiger Artikel (die oft interessant und großartig in Bezug auf Theorie und griechische Buchstaben, aber kurz in Bezug auf Code und aktuelle Beispiele sind) ist, dass es so aussehen soll:

Ich nehme ein Modell ( knn, RFusw.) und erhalte eine Liste von Klassifikatoren zwischen 0 und 1. Meine Frage ist, wie man diese Listen von Klassifikatoren kombiniert. Führe ich auf meinem Trainingsset dieselben Modelle aus, sodass die Anzahl der Spalten im endgültigen Modell gleich ist, oder gibt es einen anderen Trick?

Es wäre toll, wenn irgendwelche Vorschläge / Beispiele R-Code enthalten.

HINWEIS: Dies gilt für einen Datensatz mit 100.000 Zeilen im Trainingssatz und 70.000 Zeilen im Testsatz und 10 Spalten.

kreischeule
quelle

Antworten:

21

Tatsächlich läuft es auf eine der "3B" -Techniken hinaus: Absacken, Boosten oder Mischen.

Beim Absacken trainieren Sie viele Klassifikatoren für verschiedene Teilmengen von Objekten und kombinieren die Antworten nach Durchschnitt für die Regression und Abstimmung für die Klassifizierung (es gibt einige andere Optionen für komplexere Situationen, aber ich überspringe sie). Stimmenanteil / Varianz kann als Fehlerannäherung interpretiert werden, da die einzelnen Klassifikatoren in der Regel als unabhängig gelten. RF ist in der Tat ein Absackensemble.

Boosting ist eine umfassendere Methodenfamilie. Der Hauptaspekt besteht jedoch darin, dass Sie den nächsten Klassifikator auf den Residuen des ersteren aufbauen und auf diese Weise (theoretisch) die Genauigkeit allmählich erhöhen, indem Sie immer subtilere Wechselwirkungen hervorheben. Die Vorhersagen werden daher normalerweise kombiniert, indem sie summiert werden, etwa indem ein Wert einer Funktion in x berechnet wird, indem die Werte der Elemente der Taylor-Reihe für x summiert werden.
Die beliebtesten Versionen sind (Stochastic) Gradient Boosting (mit guter mathematischer Grundlage) und AdaBoost (bekanntlich ein spezifischer Fall von GB). Aus einer ganzheitlichen Perspektive ist der Entscheidungsbaum eine Steigerung der Trivial-Pivot-Klassifikatoren.

Beim Mischen werden Klassifikatoren verschachtelt, dh ein Klassifikator wird in einem Informationssystem ausgeführt, das aus Vorhersagen anderer Klassifikatoren besteht. Daher ist es eine sehr variable Methode und sicherlich kein definierter Algorithmus. erfordert möglicherweise viele Objekte (in den meisten Fällen muss der "Mixer" -Klassifikator auf eine Reihe von Objekten trainiert werden, die nicht zum Erstellen der Teilklassifikatoren verwendet wurden, um eine peinliche Überanpassung zu vermeiden).
Die Vorhersagen von Teilklassifikatoren werden offensichtlich kombiniert, indem sie zu einem Informationssystem verschmolzen werden, das vom Mixer vorhergesagt wird.


quelle
7

Der Ausdruck "Modelle kombinieren" ist vage, aber ich vermute, dass Sie nach Lernmethoden für Ensembles fragen. Die beste Referenz, um mehr über sie zu erfahren, sind vielleicht die Papiere von Rich Caruana:

http://www.cs.cornell.edu/~caruana/ctp/ct.papers/caruana.icml04.icdm06long.pdf

In diesem Artikel ist kein aktueller Code enthalten, der Algorithmus ist jedoch klar beschrieben, sodass Sie keine Probleme haben sollten, ihn in einer von Ihnen bevorzugten Sprache zu codieren.

user765195
quelle
2

Nachdem ich mich mit Hilfe der obigen Antworten ein wenig umgesehen hatte, wurde mir klar, was mein Problem war. Ich hatte versucht, die Vorhersagen anderer Modelle in demselben Modell zu verwenden, mit dem sie vorhergesagt wurden. Mit anderen Worten, wenn ich beim Ausführen des kNNModells 5 Variablen hätte, würde ich eine neue Variable mit den Vorhersagen des kNNModells hinzufügen und beim Ausführen des zufälligen Gesamtstrukturmodells ein Modell mit 6 Variablen erstellen. Ich fand heraus, dass stattdessen die Ergebnisse der Modelle segmentiert und als separates Modell ausgeführt werden sollten. Also ich Vorhersagen von verschiedenen Modellen schaffen würde ( knn, RF, svd, etc.) dann nur die Vorhersagen als Variablen unter Verwendung eines separaten Kombinieren / Mischen / Stapelmodell laufen und die Klassifikationen wie das, was vorherzusagen.

Ich glaube, einige meiner Probleme bestanden darin, dass es beim Kombinieren der Vorhersagen mit den anderen Variablen zu einer Überanpassung oder Multikollinearität gekommen ist, aber ich bin nicht sicher. Jemand anders könnte besser einschätzen, was ich falsch gemacht habe. Trotzdem vielen Dank an alle für ihre Hilfe.

kreischeule
quelle