Trainingsdaten sind unausgewogen - aber sollte mein Validierungssatz auch sein?

9

Ich habe Daten beschriftet, die aus 10000 positiven und 50000 negativen Beispielen bestehen, was insgesamt 60000 Beispiele ergibt. Offensichtlich sind diese Daten unausgewogen.

Nehmen wir nun an, ich möchte meinen Validierungssatz erstellen und dazu 10% meiner Daten verwenden. Meine Frage lautet wie folgt:

Sollte ich sicherstellen, dass mein Validierungssatz AUCH unausgeglichen ist (als Anspielung auf die tatsächliche Verteilung des Trainingssatzes), oder sollte ich sicherstellen, dass mein Validierungssatz ausgeglichen ist? Sollte mein Validierungssatz beispielsweise aus folgenden Elementen bestehen:

  • 10% positives Beispiel + 10% negatives, was 1000+ und 5000 Beispiele ergibt. (Dieser Validierungssatz spiegelt das ursprüngliche Datenungleichgewicht wider.)
  • Oder sollte der Validierungssatz aus beispielsweise 10% positiv, 1000+ und (10/5 = 2%) negativ, ebenfalls 1000 Beispiele, bestehen?

(Gleiche Frage für den Testsatz).

Es scheint viele Methoden zu geben, wie man mit unausgeglichenen Daten trainiert , aber nirgends kann ich Best Practices finden, um festzustellen, ob mein Validierungssatz AUCH das ursprüngliche Ungleichgewicht widerspiegeln sollte oder nicht. Schließlich mache ich KEINE Kreuzvalidierung, sondern verwende einen einzelnen Validierungssatz und ein neuronales Netzwerk.

Vielen Dank!

Spacey
quelle
Ich habe keine spezifische Referenz dafür, aber ich würde vermuten, dass es eine gibt, weil: a) ich Artikel veröffentlicht habe, die Trainings- / Validierungssplits beinhalteten, und ich habe den Split immer so konstruiert, dass die positive Gesamtrate in beiden Sätzen gleich war ;; b) Ich erinnere mich an Kommentare von Gutachtern, die darauf hinweisen, dass Sie dies tun sollten.
Gammer
@gammer Entschuldigung, du meinst, du hast Methode (1) in meinem Beitrag ausgewählt?
Spacey
Ja, der erste
Gammer
@gammer Ja, sehen Sie, das habe ich zuerst gedacht, aber es scheint etwas seltsam, je mehr ich darüber nachdenke, denn wenn wir unserem Trainingssatz vertrauen, sollten wir sicherlich auch dessen Verteilung respektieren und versuchen, dies im Validierungssatz zu replizieren auch ...
Spacey
Ich denke, vielleicht hängt es davon ab, wie der ursprüngliche Datensatz gesammelt wurde. Ist es eine Zufallsstichprobe? In diesem Fall ist die ausgewogene Aufteilung sinnvoll, da der Validierungssatz repräsentativer für die Bevölkerung ist. Wenn es retrospektiv ist (z. B. Fallkontrolle), kann es anders sein. Ich bin mir nicht sicher. Ich habe dir meine Erfahrung erzählt. Hoffentlich bekommen Sie eine endgültige Antwort. Wenn Sie es herausfinden, schreiben Sie eine Antwort.
Gammer

Antworten:

8

Der Punkt des Validierungssatzes besteht darin, die Epoche / Iteration auszuwählen, in der das neuronale Netzwerk am wahrscheinlichsten die beste Leistung für den Testsatz erbringt. Anschließend ist es vorzuziehen, dass die Verteilung der Klassen im Validierungssatz die Verteilung der Klassen im Testsatz widerspiegelt, sodass die Leistungsmetriken im Validierungssatz eine gute Annäherung an die Leistungsmetriken im Testsatz darstellen. Mit anderen Worten, der Validierungssatz sollte das ursprüngliche Datenungleichgewicht widerspiegeln.

Franck Dernoncourt
quelle
Ich vermutete den gleichen Franck. Würden Sie zustimmen, dass wir im Trainingssatz die Daten im Trainingssatz entstellen?
Spacey
1

Unter Verwendung von natürlich unausgeglichenen Trainings- und Testdaten stieß ich auf ein Szenario, in dem sich mein Modell im Laufe der Zeit zu verbessern schien, aber tatsächlich nur die Stichproben der Minderheitsklassen im Trainingssatz auswendig lernte und lernte, immer die Mehrheitsklasse für alles andere vorherzusagen.

Ich diagnostizierte dieses Problem, indem ich meine Testdaten ausbalancierte und feststellte, dass sich die Genauigkeit und der Verlust der Testdaten mit mehr Epochen verschlechterten (was bei den unausgeglichenen Testdaten nicht der Fall war).

Eine andere Möglichkeit, solche Probleme zu diagnostizieren, besteht darin, Metriken wie Sensitivität, Spezifität oder Genauigkeit für eine einzelne Klasse zu verwenden, anstatt die Gesamtgenauigkeit / den Gesamtverlust zu betrachten. Dieser Blog-Beitrag geht näher darauf ein und enthält eine Beispielimplementierung dieser Metriken in Keras. Http://www.deepideas.net/unbalanced-classes-machine-learning/

Ich denke, die richtige Lösung hängt von der tatsächlichen Anwendung Ihres Modells ab und davon, wie wichtig die Genauigkeit von Minderheitenklassen ist. Zum Beispiel, wenn Sie so etwas wie Imagenet trainieren und feststellen, dass es eine geringe Genauigkeit für die "Sea Slug" -Klasse hat, die wahrscheinlich in Ordnung ist. Wenn Sie jedoch ein Modell trainieren würden, um vorherzusagen, ob jemand Krebs hat, wäre die Genauigkeit der Minderheitenklasse sehr wichtig.

rauben
quelle