Welche Ausgleichsmethode kann ich auf einen unausgeglichenen Datensatz anwenden?

8

Ich versuche, ein Klassifizierungsproblem aus dem UCI-Datenbank-Repository zu lösen . Leider (oder zum Glück) habe ich festgestellt, dass mein Datensatz nicht ausgeglichen ist. Ich habe die Daten in 5 Klassen strukturiert, entsprechend der vom Schüler erreichten Endnote:

  • Wenn der Schüler eine Note von 0 bis 7 erhält => Klasse 1 [FAIL (E)]
  • Wenn der Schüler eine Note von 8 bis 9 erhält => Klasse 2 [AUSREICHEND (D)]
  • Wenn der Schüler eine Note von 10 bis 11 erhält => Klasse 3 [GUT (C)]
  • Wenn der Schüler eine Note von 12 bis 15 erhält => Klasse 4 [NOTABLE (B)]
  • Wenn der Schüler eine Note von 16 bis 19 erhält => Klasse 5 [HERVORRAGEND (A)]

Mein Problem ist, dass die Daten, wie gesagt, unausgewogen sind, deshalb möchte ich sie ausgleichen.

Ich habe darüber nachgedacht, eine Art Unterabtastungsmethode anzuwenden, aber mein Datensatz enthält nur 649 Instanzen. Daher denke ich, dass das Entfernen einiger davon nicht die beste Idee ist. Dann habe ich darüber nachgedacht, ein Oversampling durchzuführen, um einige Beispiele für Minderheitenklassen zu replizieren und dann die Klassen auszugleichen, aber ich bin mir immer noch nicht sicher, ob das funktionieren könnte.

Ich wäre Ihnen sehr dankbar, wenn Sie mir dabei helfen könnten. Es ist das erste Mal, dass ich ein echtes Problem mit unausgeglichenen Daten habe.

Cristina HG
quelle
Wie hoch ist der Prozentsatz jeder Klasse?
ManuParra

Antworten:

7

Da Sie R verwenden, können Sie einige ausgefeilte Methoden wie ROSE und SMOTE verwenden . Ich bin mir jedoch nicht ganz sicher, ob ein erneuter Ausgleich Ihres Datensatzes in Ihrem Fall die richtige Lösung ist.

Eine Alternative könnte ein kostensensitiver Algorithmus wie C5.0 sein , der keine ausgeglichenen Daten benötigt. Sie könnten auch darüber nachdenken, Markov-Ketten auf Ihr Problem anzuwenden .

JimBoy
quelle
7

Ich denke, dass in Ihrem Datensatz die größte Herausforderung darin besteht, nicht aus dem Gleichgewicht zu geraten. Der Datensatz ist klein und aufgrund der wenigen Klassen haben Sie nicht zu viele Stichproben für eine von ihnen.

Durch die Verwendung von One-vs-All-Konzepten (A oder nicht A, B oder nicht B) können Sie mehr Beispiele für jedes Konzept erhalten. Sie können die Tatsache nutzen, dass die Klassen geordnet sind (A> B> C> D> E) und ein Konzept verwenden, das einige von ihnen aggregiert (z. B. B und höher, D und unten). Vorausgesetzt, es gibt keinen wirklichen Unterschied im Grund, D oder E zu erhalten, erhalten Sie nicht nur mehr Proben, sondern auch, indem Sie die Unterscheidung zwischen ziemlich ähnlichen Konzepten verringern.

Wenn Sie den Datensatz ändern möchten, um mit dem Ungleichgewicht fertig zu werden, entscheiden Sie sich dafür. Sie sollten jedoch die ursprüngliche Distribution überprüfen. Weitere Informationen finden Sie unter: /datascience/810/should-i-go-for-a-balanced-dataset-or-a-representative-dataset/8628#8628

Anstelle einer Über- / Unterabtastung können Sie eine bessere Technik verwenden, um das Ungleichgewicht zu beseitigen. Weitere Informationen finden Sie unter: https://www.quora.com/In-classification-how-do-you-handle-an-unbalanced-training-set/answer/Dan-Levin-2

DaL
quelle
0

Aus unausgeglichenen Daten lernen

Wenn Sie sich für ein Oversample entscheiden, müssen Sie dies unbedingt tun, nachdem Sie Ihre Zugtest-Splits erstellt haben. Wenn Sie eine Kreuzvalidierung verwenden, sollten Sie innerhalb jeder Falte eine Überabtastung durchführen.

Jason Sanchez
quelle