Ich habe einen unausgeglichenen Datensatz in einer binären Klassifizierungsaufgabe, bei der die positive Menge gegenüber der negativen Menge 0,3% gegenüber 99,7% beträgt. Die Kluft zwischen Positiven und Negativen ist groß. Wenn ich ein CNN mit der im MNIST-Problem verwendeten Struktur trainiere, zeigt das Testergebnis eine hohe False Negative Rate. Außerdem sinkt die Trainingsfehlerkurve zu Beginn in einigen Epochen schnell, bleibt aber in den folgenden Epochen gleich.
Könnten Sie mir bitte einen Weg empfehlen, um dieses Problem zu lösen? Vielen Dank!
Warum möchten Sie hier CNNs verwenden? Haben Sie andere Modelle in Betracht gezogen, die tatsächlich mit unausgeglichenen Daten umgehen?
Ich habe zum Beispiel festgestellt, dass die folgenden zwei Techniken für mich sehr gut funktioniert haben:
Zufällige Wälder mit SMOTE-Boosting : Verwenden Sie einen Hybrid
SMOTE
, der die Mehrheitsklasse unter- und die Minderheitsklasse um einstellbare Prozentsätze überbewertet. Wählen Sie diese Prozentsätze abhängig von der Verteilung Ihrer Antwortvariablen im Trainingssatz aus. Geben Sie diese Daten an Ihr RF-Modell weiter. Überprüfen Sie die Kreuzsuche immer gegenseitig, um die besten Parametereinstellungen für Ihre RFs zu finden.XGBoost mit Hyperparameteroptimierung : Überprüfen Sie erneut oder führen Sie eine Gürtelsuche durch, um die besten Parametereinstellungen für das Modell zu finden. Darüber hinaus
xgboost
können Sie positive und negative Klassengewichte mit ausgleichenscale_pos_weight
. Eine vollständige Liste finden Sie in der Parameterdokumentation .Ich sollte auch hinzufügen, dass der Datensatz, an dem ich gearbeitet habe, den gleichen Prozentsatz an Versatz aufwies und ich einen Sensitivitätswert von 0,941 und eine Spezifität von 0,71 mit erhalten konnte
xgboost
, was bedeutet, dass das Modell die wahren Positiven ziemlich genau vorhersagt und dass dies ein Zeichen ist gut für mich.(Entschuldigung, ich kann keinen Kommentar hinterlassen, nicht genug Ruf und ich wollte wirklich wissen, warum Sie CNNs gewählt haben)
quelle
Unausgeglichene Datensätze sind in allen Bereichen ein häufiges Problem und betreffen nicht speziell Computer Vision und Probleme, die von Convolutional Neural Networks (CNNs) behandelt werden.
Um dieses Problem zu lösen, sollten Sie versuchen, Ihr Dataset auszugleichen, indem Sie entweder Minderheitsklassen über- oder Mehrheitsklassen (oder beides) unterstichprobenartig untersuchen. Eine gute Wahl wäre wohl der SMOTE-Algorithmus (Synthetic Minority Over-Sampling Technique), wie oben erwähnt. Hier finden Sie einen Vergleich verschiedener Over-Sampling-Algorithmen. Wenn Sie ein Python-Benutzer sind, ist unausgeglichenes Lernen eine nette Bibliothek, die viele nützliche Techniken zum Ausgleichen von Datensätzen implementiert.
Wenn Sie jedoch versuchen, Bilder zu klassifizieren, können Sie die Größe Ihres Datensatzes erhöhen , indem Sie ihn vergrößern (dh indem Sie vernünftige synthetische Beispiele erstellen, z. B. ähnliche Bilder, die jedoch in Bezug auf die Originalbilder geringfügig gedreht / verschoben werden). Es kann manchmal nützlich sein, die Minderheitenklassen zu erweitern, um ein besseres Gleichgewicht zu erreichen. Die Keras ImageDataGenerator- Klasse ist ein gutes Werkzeug für diesen Zweck.
quelle