Ist es möglich, Vorhersagen zu kombinieren, um die Gesamtqualität der Vorhersagen zu verbessern?


7

Dies ist ein binäres Klassifizierungsproblem. Die Metrik, die minimiert wird, ist der Protokollverlust (oder die Kreuzentropie). Ich habe auch eine Genauigkeitsnummer, nur zu meiner Information. Es ist ein großer, sehr ausgewogener Datensatz. Sehr naive Vorhersagetechniken erzielen eine Genauigkeit von etwa 50% und einen logarithmischen Verlust von 0,693. Das Beste, was ich herauskratzen konnte, ist eine Genauigkeit von 52,5% und ein Protokollverlust von 0,6915. Da wir versuchen, den Protokollverlust zu minimieren, erhalten wir immer eine Reihe von Wahrscheinlichkeiten ( predict_probaFunktionen in sklearn und keras). Das ist alles Hintergrund, jetzt die Frage.

Nehmen wir an, ich kann zwei verschiedene Techniken verwenden, um zwei verschiedene Vorhersagesätze mit vergleichbarer Genauigkeit und Protokollverlustmetrik zu erstellen. Zum Beispiel kann ich 2 verschiedene Gruppen der Eingabe-Features verwenden, um 2 Sätze von Vorhersagen zu erstellen, die beide ungefähr 52% genau sind und einen Protokollverlust von <0,692 aufweisen. Der Punkt ist, dass beide Sätze von Vorhersagen zeigen, dass es eine gewisse Vorhersagekraft gibt. Ein anderes Beispiel ist, dass ich logistische Regression verwenden könnte, um einen Satz von Vorhersagen zu erzeugen, und ein neuronales Netz, um den anderen zu erzeugen.

Hier sind die ersten 10 für jeden Satz, zum Beispiel:

p1 = [0.49121362 0.52067905 0.50230295 0.49511673 0.52009695 0.49394751 0.48676686 0.50084939 0.48693237 0.49564188 ...]
p2 = [0.4833959  0.49700296 0.50484381 0.49122147 0.52754993 0.51766402 0.48326918 0.50432501 0.48721228 0.48949306 ...]

Ich denke, dass es eine Möglichkeit geben sollte, die beiden Vorhersagesätze zu einem zu kombinieren, um die allgemeine Vorhersagekraft zu erhöhen. Gibt es?

Ich hatte angefangen, einige Dinge auszuprobieren. Zum Beispiel betrachte ich den absoluten Wert der Vorhersage minus 0,5 ( abs( p - 0.5 )) als Signal, und je nachdem, zwischen p1und p2mit einem größeren Signal, würde ich diesen Wert verwenden. Dies wurde leicht erreicht, was ich wollte, aber nur mit einem schmalen Rand. Und in einem anderen Fall schien es überhaupt nicht zu helfen. Interessanterweise schien es die Vorhersagekraft nicht zu zerstören.



3
Die Zahlen, die Sie für p1 und p2 angeben, liegen alle ziemlich nahe bei 0,5, Ihr Log-Verlust liegt sehr nahe bei ln (2) und eine Genauigkeit von 50% entspricht dem Werfen einer Münze. Dies sind schreckliche Ergebnisse, und es ist unwahrscheinlich, dass Sie beim Stapeln eine signifikante Verbesserung erzielen. Sie sollten sich andere Techniken wie das Feature-Engineering ansehen.
Akkumulation

Machen Sie aus Neugier Sportspielvorhersagen oder Marktvorhersagen?
jjmontes

Antworten:


13

Kurze Antwort: Ja.

Lange Antwort: Dies ist eines von vielen Beispielen für eine als "Stapeln" bekannte Technik. Natürlich können Sie sich für eine manuelle Methode entscheiden, um beide Vorhersagen zu kombinieren. Es ist jedoch noch besser, wenn Sie ein drittes Modell auf die Ausgabe der ersten beiden Modelle (oder sogar mehr) trainieren. Dies wird die Genauigkeit weiter verbessern. Um eine Wiederverwendung der Daten zu vermeiden, wird häufig ein anderer Teil des Datensatzes zum Trainieren der ersten Ebenen und zum Trainieren des Modells verwendet, das die Daten kombiniert.

Siehe zB hier für ein Beispiel.


1
Genau darüber habe ich gesprochen.
jeffery_the_wind

5

Ja.
Die Methode, über die Sie sprechen, heißt Stapeln. Es ist eine Art Ensemble-Methode. Bei diesem Verfahren werden in der ersten Stufe mehrere Modelle trainiert und die Vorhersagen als Merkmale gespeichert, die zum Trainieren des Modells der zweiten Stufe verwendet werden. Viele Kaggler verwenden diese Methode. Im Allgemeinen sollten Sie beim Stapeln mehr als 2 Modelle für die erste Stufe verwenden (ich verwende im Allgemeinen mindestens 4-5 Modelle). Es gibt auch viele Methoden, mit denen das Stapeln durchgeführt werden kann, wie einfache Mittelwertbildung, Mehrheitsabstimmung usw. Hier ist ein Link zu einem Kaggle-Kernel, der das Stapeln auf dem berühmten Titanic-Datensatz implementiert, der ebenfalls ein binäres Klassifizierungsproblem darstellt.
Kaggle Kernel Einführung in das Stapeln mit Titanic Dataset


3
Beachten Sie, dass Sie oft die gleiche verwenden Art von Modell, aber mit unterschiedlichen Parametern. Zufällige Gesamtstruktur ist beispielsweise eine Stapelmethode mit Entscheidungsbäumen als Basismodellen.
Akkumulation

1
Randnotiz. Meine Art, über Ensembling-Methoden mit Mittelwertbildung und Mehrheitsentscheidung nachzudenken, ist, dass sie die Varianz von Vorhersagen verringern. Das heißt, sie glätten die Vorhersageoberfläche.
Jjmontes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.