SVM für unausgeglichene Daten

15

Ich möchte versuchen, Support Vector Machines (SVMs) für mein Dataset zu verwenden. Bevor ich das Problem versuchte, wurde ich gewarnt, dass SVMs bei extrem unausgeglichenen Daten keine gute Leistung bringen. In meinem Fall kann ich bis zu 95-98% 0 und 2-5% 1 haben.

Ich habe versucht, Ressourcen zu finden, bei denen es um die Verwendung von SVMs für spärliche / unausgeglichene Daten ging, aber alles, was ich finden konnte, waren spärliche SVMs (die eine kleine Menge von Unterstützungsvektoren verwenden).

Ich hatte gehofft, jemand könnte kurz erklären:

  1. Wie gut würde SVM mit einem solchen Datensatz auskommen?
  2. Falls vorhanden, müssen Änderungen am SVM-Algorithmus vorgenommen werden
  3. Welche Ressourcen / Papiere diskutieren dies?
DankMasterDan
quelle

Antworten:

15

Viele SVM-Implementierungen beheben dies, indem sie positiven und negativen Instanzen unterschiedliche Gewichte zuweisen. Im Wesentlichen wiegen Sie die Proben so, dass die Summe der Gewichte für die Positiven der Summe der Negativen entspricht. Natürlich müssen Sie bei Ihrer Bewertung der SVM bedenken, dass es trivial ist, 95% Genauigkeit zu erzielen, wenn 95% der Daten negativ sind, indem Sie immer negativ prognostizieren. Sie müssen also sicherstellen, dass Ihre Bewertungsmetriken auch gewichtet werden, damit sie ausgewogen sind.

Insbesondere in libsvm, das Sie als Tag hinzugefügt haben, gibt es ein Flag, mit dem Sie die Klassengewichtungen festlegen können ( -wich glaube, aber überprüfen Sie die Dokumente ).

Schließlich kann ich Ihnen aus eigener Erfahrung sagen, dass ich oft finde, dass eine SVM mit oder ohne Gewichtskorrektur sehr ähnliche Ergebnisse liefert.

Bitweise
quelle
Schlagen Sie mich :-)
Marc Claesen
@Bitwise Ich habe das gleiche Problem mit unausgeglichenen Daten und erhalte eine Genauigkeit von 99%. Ich habe die Gewichte in libsvm verwendet. Sie haben erwähnt, dass auch die Bewertungsmetriken gewichtet werden müssen. Ich wollte wissen, wie wir die Bewertungsmetriken gewichten können.
Hani Goc
1
90/100=0.90.5(0/10+90/90)=0.5
7

SVMs funktionieren gut bei spärlichen und unausgeglichenen Daten. Der klassengewichtete SVM wurde entwickelt, um mit unausgeglichenen Daten umzugehen, indem Trainingsinstanzen der Minderheitsklasse höhere Strafen für Fehlklassifizierungen zugewiesen werden.

Marc Claesen
quelle
5

Im Fall von spärlichen Daten wie diesen wird SVM gut funktionieren.

Wie von @Bitwise angegeben, sollten Sie die Leistung des Algorithmus nicht mit Genauigkeit messen.

Stattdessen sollten Sie die Präzision, den Abruf und den F-Score des Algorithmus berechnen.

alexandrekow
quelle
Können Sie bitte Ihre Argumentation erweitern? Wie würden Sie auch vorgehen, um den F-Score zu messen, wenn die Klassifizierung (auf dem Testset) abgeschlossen ist? Vielen Dank
Spacey
Um den FScore auf dem Test-Set zu messen, müssen Sie ihn manuell klassifizieren und anschließend den Rückruf und die Genauigkeit anhand der manuellen Daten im Vergleich zu den vorhergesagten Daten berechnen. Was möchte ich erweitern, warum SVM gut mit spärlichen Daten funktioniert?
Alexandrekow
Ja, warum SVM mit spärlichen Daten arbeitet, wäre auch schön. Vielen Dank
Spacey
"Einfach nur spärliche Features zu haben, stellt für den SVM kein Problem dar. Eine Möglichkeit, dies zu erkennen, besteht darin, dass Sie eine zufällige Drehung der Koordinatenachsen durchführen können, wodurch das Problem unverändert bleibt und die gleiche Lösung erzielt wird, aber das Problem gelöst wird Daten völlig nicht spärlich (dies ist zum Teil, wie zufällige Projektionen funktionieren "( stats.stackexchange.com/questions/23470/… )
Alexandrekow