Der einfachste Ansatz besteht darin, ein sogenanntes "class weighting scheme" zu verwenden - in der klassischen SVM-Formulierung gibt es einen %code% -Parameter, der zur Steuerung der Fehlklassifizierungszählung verwendet wird. Er kann in die Parameter %code% und %code% geändert werden, die für Klasse 1 bzw. 2 verwendet werden. Die häufigste Wahl von %code% und %code% für eine gegebene %code% ist
%Vor%wobei %code% und %code% Größen der Klasse 1 bzw. 2 sind. Sie "bestrafen" SVM für das Fehlklassifizieren der weniger häufigen Klasse viel schwieriger als für die Fehlklassifikation am häufigsten.
Viele vorhandene Bibliotheken (wie libSVM ) unterstützen diesen Mechanismus mit class_weight-Parametern.
Beispiel mit Python und sklearn
%Vor%Insbesondere können Sie in sklearn einfach die automatische Gewichtung aktivieren, indem Sie %code% setzen.
Dieser Artikel beschreibt eine Vielzahl von Techniken. Eine einfache (aber sehr schlechte Methode für SVM) besteht darin, nur die Minderheitenklasse (n) zu replizieren, bis Sie ein Gleichgewicht haben:
Ich versuche, meinen SVM-Algorithmus mit Daten von Klicks und Conversions von Leuten zu vermitteln, die die Banner sehen. Das Hauptproblem ist, dass die Klicks etwa 0,2% aller Daten ausmachen, also ist es ein großes Missverhältnis. Wenn ich einfache SVM in der Testphase benutze, wird immer nur die Klasse "view" vorhergesagt und niemals "click" oder "conversion". Im Durchschnitt gibt es 99,8% richtige Antworten (wegen Unverhältnismäßigkeit), aber es gibt 0% richtige Vorhersage, wenn Sie "Klick" oder "Umwandlung" überprüfen. Wie können Sie den SVM-Algorithmus abstimmen (oder einen anderen auswählen), um das Missverhältnis zu berücksichtigen?