Ich habe derzeit Probleme beim Analysieren eines Tweet-Datasets mit Support-Vektor-Maschinen. Das Problem ist, dass ich einen unausgeglichenen Binärklassen-Trainingssatz habe (5: 2); Dies wird voraussichtlich proportional zur tatsächlichen Klassenverteilung sein. Bei der Vorhersage erhalte ich eine geringe Genauigkeit (0,47) für die Minderheitsklasse im Validierungssatz. Rückruf ist 0,88. Ich habe versucht, mehrere Über- und Unterabtastungsmethoden (durchgeführt am Trainingssatz) zu verwenden, die die Genauigkeit nicht verbesserten, da der Validierungssatz ebenfalls unausgeglichen ist, um die tatsächliche Klassenverteilung widerzuspiegeln. Ich habe auch verschiedene Kosten in die Support-Vektor-Maschine implementiert, was geholfen hat. Jetzt scheint es, dass ich meine Leistung nicht mehr verbessern kann.
Hat jemand von Ihnen einen Rat, was ich tun könnte, um meine Präzision zu verbessern, ohne meinen Rückruf zu beeinträchtigen? Hat jemand eine Ahnung, warum ich viel mehr falsch positive als falsch negative Ergebnisse erhalte (positiv ist die Minderheitsklasse)?
quelle
Antworten:
Weil positiv die Minderheitsklasse ist. Es gibt viele negative Beispiele, die zu falsch positiven Ergebnissen führen können. Umgekehrt gibt es weniger positive Beispiele, die zu falsch negativen Ergebnissen werden könnten.
Die Empfindlichkeit (True Positive Rate) bezieht sich auf die False Positive Rate (1-Spezifität), wie durch eine ROC-Kurve dargestellt. In einem Extremfall nennen Sie jedes Beispiel positiv und haben eine 100% ige Empfindlichkeit mit 100% FPR. Bei einem anderen nennen Sie kein Beispiel positiv und haben eine Empfindlichkeit von 0% mit einem FPR von 0%. Wenn die positive Klasse die Minderheit ist, verursacht selbst ein relativ kleiner FPR (den Sie möglicherweise haben, weil Sie einen hohen Rückruf = Empfindlichkeit = TPR haben) eine hohe Anzahl von FPs (weil es so viele negative Beispiele gibt).
Schon seit
Selbst bei einem relativ niedrigen FPR wird das FP das TP überwältigen, wenn die Anzahl der negativen Beispiele viel größer ist.
Alternative,
P (O +) ist niedrig, wenn die positive Klasse klein ist.
Wie von @rinspy erwähnt, funktioniert GBC meiner Erfahrung nach gut. Es ist jedoch langsamer als SVC mit einem linearen Kernel, aber Sie können sehr flache Bäume erstellen, um es zu beschleunigen. Außerdem können weitere Funktionen oder Beobachtungen hilfreich sein (z. B. gibt es möglicherweise einige derzeit nicht analysierte Funktionen, die in allen aktuellen FP immer auf einen bestimmten Wert eingestellt sind).
Es kann sich auch lohnen, ROC-Kurven und Kalibrierungskurven zu zeichnen. Es kann vorkommen, dass der Klassifikator, obwohl er eine geringe Genauigkeit aufweist, zu einer sehr nützlichen Wahrscheinlichkeitsschätzung führen kann. Nur zu wissen, dass eine Festplatte eine um das 500-fache erhöhte Ausfallwahrscheinlichkeit aufweist, obwohl die absolute Wahrscheinlichkeit relativ gering ist, kann eine wichtige Information sein.
Eine geringe Genauigkeit bedeutet im Wesentlichen, dass der Klassifizierer viele falsch positive Ergebnisse zurückgibt. Dies ist jedoch möglicherweise nicht so schlimm, wenn ein falsches Positiv billig ist.
quelle
Methoden zum Ausprobieren:
UnderSampling:
Ich schlage vor, Under-Sampling-Techniken zu verwenden und dann Ihren Klassifikator zu trainieren.
Imbalanced Learning bietet eine API für den Scikit-Lernstil für unausgeglichene Datensätze und sollte ein guter Ausgangspunkt für Stichproben und zum Ausprobieren von Algorithmen sein.
Bibliothek : https://imbalanced-learn.readthedocs.io/en/stable/
Rangbasierte SVM:
Dies hat gezeigt, dass sich der Rückruf für hochpräzise Systeme verbessert, und wird von Google zum Erkennen fehlerhafter Werbung verwendet. Ich empfehle es auszuprobieren.
Referenzpapier für SVM:
https://static.googleusercontent.com/media/research.google.com/de//pubs/archive/37195.pdf
quelle
Der Standardansatz wäre, Ihren Fehler basierend auf der Klassenhäufigkeit zu gewichten. Wenn Sie dies beispielsweise in Python mit sklearn getan haben:
quelle