Ich trainiere einen binären SVM-Klassifikator mit Scikit Learn.
Aufgrund der Art meines Problems muss ich falsche Negative vermeiden. Da nichts umsonst ist, kann ich eine höhere Rate an falsch positiven Ergebnissen erzielen, um die Anzahl der falsch negativen Ergebnisse zu verringern. Wie können wir das machen (idealerweise mit Scikit lernen)?
Mit anderen Worten, wie können wir mit einem SVM-Klassifikator falsch negative Ergebnisse minimieren? Gibt es eine Möglichkeit, Hyperparameter abzustimmen, um falsch positive gegenüber falsch negativen Ergebnissen zu bevorzugen?
machine-learning
cross-validation
svm
python
scikit-learn
Pierre-Antoine
quelle
quelle
Antworten:
Mit der Scikit-Lernimplementierung des binären SVM-Klassifikators können Sie keinen Grenzwert festlegen, wie in den anderen Kommentaren / Antworten vorgeschlagen. Anstatt Klassenwahrscheinlichkeiten anzugeben, wird sofort ein Standardgrenzwert angewendet, um Ihnen die Klassenmitgliedschaft zu geben, z. B. 1 oder 2.
Um falsch negative Ergebnisse zu minimieren, können Sie höhere Gewichte für Trainingsmuster festlegen, die als positive Klasse gekennzeichnet sind. Standardmäßig sind die Gewichte für alle Klassen auf 1 festgelegt. Um dies zu ändern, verwenden Sie den Hyperparameter
class_weight
.Im Idealfall sollten Sie die Auswahl eines Cutoffs vermeiden und den Endbenutzern einfach die Klassenwahrscheinlichkeiten zur Verfügung stellen, die dann entscheiden können, welcher Cutoff angewendet werden soll, wenn Entscheidungen auf der Grundlage des Klassifikators getroffen werden.
Eine bessere Metrik zum Vergleichen von Klassifikatoren ist eine ordnungsgemäße Bewertungsfunktion, siehe https://en.wikipedia.org/wiki/Scoring_rule und die
score()
Methode im svm-Klassifikatormodulsklearn.svm.SVC
.quelle
Wie viele Vorhersagemodelle gibt SVM Wahrscheinlichkeitsbewertungen und den Schwellenwert für die Wahrscheinlichkeit aus, diese in positive oder negative Bezeichnungen umzuwandeln.
Wie bei @Sycorax im Kommentar erwähnt, können Sie den Grenzwert anpassen, um den Kompromiss zwischen falsch positiv und falsch negativ anzupassen.
Hier ist ein Beispiel in R.
Beachten Sie, wenn wir uns ändern
cut_off
, ändert sich die Verwirrungsmatrix (falsch positiv, falsch negativ usw.)quelle