Dies ist im Allgemeinen eine Frage, die sich nicht auf eine Methode oder einen Datensatz bezieht. Wie gehen wir mit einem Klassenungleichgewichtsproblem beim überwachten maschinellen Lernen um, bei dem die Zahl 0 etwa 90% und die Zahl 1 etwa 10% in Ihrem Datensatz beträgt. Wie trainieren wir den Klassifikator optimal.
Eine der Möglichkeiten, die ich befolge, besteht darin, Stichproben zu entnehmen, um den Datensatz auszugleichen, den Klassifikator zu trainieren und dies für mehrere Stichproben zu wiederholen.
Ich denke, das ist zufällig. Gibt es einen Rahmen, um diese Art von Problemen anzugehen?
Dies hängt stark von der Lernmethode ab. Die meisten allgemeinen Ansätze haben eine (oder mehrere) Möglichkeiten, um damit umzugehen. Ein häufiger Fix besteht darin, der Minderheitsklasse eine höhere Fehlklassifizierungsstrafe zuzuweisen, die den Klassifizierer zwingt, sie zu erkennen (SVM, logistische Regression, neuronale Netze, ...).
Das Ändern der Stichproben ist ebenfalls eine Möglichkeit, wie Sie bereits erwähnt haben. In diesem Fall ist eine Überabtastung der Minderheitsklasse normalerweise eine bessere Lösung als eine Unterabtastung der Mehrheitsklasse.
Einige Methoden, wie z. B. zufällige Gesamtstrukturen, müssen nicht geändert werden.
quelle
Oft liegt das Problem nicht in der Häufigkeit, sondern in der absoluten Anzahl der Fälle in der Minderheitenklasse. Wenn Sie nicht genügend Abweichungen im Ziel im Vergleich zu Abweichungen in den Features haben, kann dies bedeuten, dass der Algorithmus die Dinge nicht sehr genau klassifizieren kann.
Eine Sache ist, dass eine Fehlklassifizierungsstrafe beim Klassifizierungsschritt und nicht beim Parameterschätzungsschritt verwendet werden könnte, falls vorhanden. Einige Methoden haben kein Parameterkonzept, sondern erzeugen lediglich eindeutige Klassenbezeichnungen oder Klassenwahrscheinlichkeiten.
Wenn Sie einen Wahrscheinlichkeitsschätzer haben, können Sie eine Klassifizierungsentscheidung auf der Grundlage von informationstheoretischen Gründen oder mit einer Kombination von Geschäftswert treffen.
quelle
Fügen Sie zwei Tricks hinzu: 1. Verwenden Sie CDF, zählen Sie die Häufigkeit in Ihren Trainingsdaten oder verwenden Sie eine sehr umfangreiche Validierung (wenn sich Ihr Testsatz nicht ändert, der Validierungssatz jedoch dieselbe Verteilung wie der Trainingssatz haben muss), sortieren Sie dann Ihre Vorhersage und erhalten Sie Die ersten X% (Sie zählen die Häufigkeit zuvor) für die eine Klasse und die anderen sind / 2. gewichtete Stichprobe, das Modell tendiert zur gewichteten Stichprobenklasse. Sie können die Stichprobenvarianz v verwenden, z. weighti = 1/2 (1- (vmax - vi) / vmax)
quelle