0

Ich habe sklearn verwendet, um einige Daten zu lernen. Dies ist eine binäre Klassifikationsaufgabe und ich verwende einen RBF-Kernel. Mein Datensatz ist ziemlich unausgewogen (80:20) und ich verwende nur 120 Samples mit 10ish Features (ich experimentiere mit ein paar weniger). Seit ich class_weight="auto" gesetzt habe, ist die Genauigkeit, die ich aus einem kreuzvalidierten (10-fachen) Gridsearch berechnet habe, dramatisch gesunken. Warum??Die Verwendung von Klassengewicht zum Ausgleich von Datensätzen verringert die Genauigkeit in RBF SVM

Ich werde ein paar Validierungsgenauigkeit Heatmaps enthalten, um den Unterschied zu demonstrieren. This is before I changed class weight to auto

This is with class weight set to auto

HINWEIS: top Heatmap ist vor classweight auf Auto geändert wurde.

Antwort

0

Genauigkeit ist nicht die beste Metrik für den Umgang mit unsymmetrischem Dataset. Angenommen, Sie haben 99 positive Beispiele und 1 negatives Beispiel, und wenn Sie alle Ausgaben als positiv vorhersagen, erhalten Sie immer noch 99% Genauigkeit, während Sie das einzige negative Beispiel falsch klassifiziert haben. Sie haben vielleicht im ersten Fall eine hohe Genauigkeit erhalten, weil Ihre Vorhersagen auf der Seite liegen, die eine hohe Anzahl an Stichproben aufweist.

Wenn Sie class weight = auto verwenden, berücksichtigt es das Ungleichgewicht und daher könnten sich Ihre Vorhersagen in Richtung Zentrum verschoben haben. Sie können es überprüfen, indem Sie die Histogramme der Vorhersagen plotten.

Mein Vorschlag ist, verwenden Sie keine Genauigkeit als Leistungsmetrik, verwenden Sie etwas wie F1 Score oder AUC.

+0

Ich habe die wahre positive Rate überprüft, sowie die genaue Leistung analysiert und vor der Änderung des Klassengewichts der Prädiktor (höchstens) 5 oder 6 der 24 in der Minderheit Gruppe. Nach dem Ändern ist es aber noch mehr als eins zu bekommen – bidby

Verwandte Themen