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_proba
Funktionen 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 p1
und p2
mit 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.
quelle
Antworten:
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.
quelle
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
quelle