Welche Technik sollten wir für ein Klassifizierungsproblem verwenden, wenn die Klassenvariable eine ungleiche Verteilung aufweist?


9

für zB. Wenn ich eine klassenvariable Kreditbewertung mit zwei Klassen gut und schlecht habe, wobei # (gut) = 700 und # (schlecht) = 300. Ich möchte meine Daten nicht verkürzen. Welche Technik sollte ich verwenden? Ich habe SVM verwendet, aber es gibt alles so gut wie gut in Vorhersagen.


Diese Asymmetrie sieht nicht so schlecht aus; Sind Sie sicher, dass Sie woanders keinen Fehler haben? Können Sie auch weitere Details zu den Daten angeben? Hierfür gibt es keine allgemeine Lösung.

Mein Datensatz enthält 17 Prädiktoren (3 kontinuierliche und 14 kategoriale), offensichtlich 1 Klassenvariable und insgesamt 1000 Beobachtungen. Die Frequenz dist. für die Klasse var. mit Zug und Test ist Zug (schlecht) = 197, Test (schlecht) = 103, Trian (gut) = 446, Test (gut) = 254
asad.taj

Antworten:


6

Ihre Klassenstichprobengrößen scheinen nicht so unausgewogen zu sein, da Sie 30% der Beobachtungen in Ihrer Minderheitsklasse haben. Die logistische Regression sollte in Ihrem Fall gut funktionieren. Abhängig von der Anzahl der Prädiktoren, die in Ihr Modell eingegeben werden, können Sie eine Art Bestrafung für die Parameterschätzung in Betracht ziehen, z. B. Grat (L2) oder Lasso (L1). Für einen Überblick über Probleme mit sehr unausgeglichenen Klassen siehe Cramer (1999), The Statistician, 48: 85-94 ( PDF ).

Ich bin nicht mit Kreditbewertungstechniken vertraut, aber ich habe einige Artikel gefunden, die darauf hinweisen, dass Sie SVM mit gewichteten Klassen verwenden könnten, z. B. Support Vector Machines für die Kreditbewertung: Erweiterung auf nicht standardisierte Fälle . Alternativ können Sie sich Boosting- Methoden mit CART oder Random Forests ansehen (im letzteren Fall ist es möglich, die Stichprobenstrategie so anzupassen, dass jede Klasse beim Erstellen der Klassifizierungsbäume dargestellt wird). Das Papier von Novak und LaDue diskutiert die Vor- und Nachteile von GLM gegenüber rekursiver Partitionierung . Ich fand auch diesen Artikel, Scorecard-Konstruktion mit unausgeglichenen Klassengrößen von Hand und Vinciotti.


Der Link für Cramer (1999) wurde geändert in papiere.tinbergen.nl/98085.pdf
Germcd

10

Ein beliebter Ansatz zur Lösung von Problemen mit dem Klassenungleichgewicht besteht darin, den Klassifizierer so zu beeinflussen, dass er den positiven Instanzen mehr Aufmerksamkeit schenkt. Dies kann zum Beispiel erreicht werden, indem die Strafe erhöht wird, die mit einer Fehlklassifizierung der positiven Klasse relativ zur negativen Klasse verbunden ist. Ein anderer Ansatz besteht darin, die Daten durch Überabtastung der Mehrheitsklasse oder Unterabtastung der Minderheitsklasse vorzuverarbeiten, um einen ausgeglichenen Datensatz zu erstellen.

In Ihrem Fall scheint das Klassenungleichgewicht jedoch kein Problem zu sein. Möglicherweise handelt es sich um eine Parametereinstellung, da das Finden der optimalen Parameter für einen SVM-Klassifizierer ein ziemlich langwieriger Prozess sein kann. Es gibt zwei Parameter für z. B. in einem RBF-Kernel: und . Es ist vorher nicht bekannt, welches und für ein gegebenes Problem am besten sind; Folglich muss eine Art Modellauswahl (Parametersuche) durchgeführt werden.γ C.CγCγ

Denken Sie in der Datenvorverarbeitungsphase daran, dass SVM erfordert, dass jede Dateninstanz als Vektor reeller Zahlen dargestellt wird. Wenn es kategoriale Attribute gibt, wird empfohlen, diese in numerische Daten umzuwandeln und m Zahlen zu verwenden, um ein m-Kategorie-Attribut darzustellen (oder es durch m neue binäre Variablen zu ersetzen).

Außerdem ist die Skalierung der Variablen vor dem Anwenden von SVM von entscheidender Bedeutung, um zu vermeiden, dass Attribute in größeren numerischen Bereichen diejenigen in kleineren numerischen Bereichen dominieren.

Schauen Sie sich dieses Papier an .

Wenn Sie in R arbeiten, überprüfen Sie die Optimierungsfunktion (Paket e1071), um Hyperparameter mithilfe einer Rastersuche über die angegebenen Parameterbereiche abzustimmen. Mit plot.tune können Sie dann visuell sehen, welcher Wertesatz die geringere Fehlerrate ergibt.

Es gibt eine Verknüpfung zur zeitaufwändigen Parametersuche. Es gibt ein R-Paket namens "svmpath", das den gesamten Regularisierungspfad für einen SVM-Klassifizierer mit zwei Klassen auf einmal berechnet. Hier ist ein Link zu dem Artikel, der beschreibt, was es tut.

PS Möglicherweise finden Sie dieses Dokument auch interessant: Abrufen kalibrierter Wahrscheinlichkeitsschätzungen


2
+1; Dennoch scheint ksvm von kernlab die bevorzugte R SVM-Implementierung zu sein. Zum Beispiel skaliert es Variablen selbst und hat eine nette (= sehr gut funktionierende) heuristische Prozedur, um gutes für RBF auszuwählen. γ

1

Ich würde empfehlen, einen anderen Wert des Regularisierungsparameters C für Beispiele der positiven Klasse und Beispiele der negativen Klasse zu verwenden (viele SVM-Pakete unterstützen dies und sind auf jeden Fall einfach zu implementieren). Verwenden Sie dann z. B. Kreuzvalidierung, um gute Werte der beiden Regularisierungsparameter zu finden.

Es kann gezeigt werden, dass dies eine asypmtotisch äquivalente Neuabtastung der Daten in einem durch C + und C- bestimmten Verhältnis ist (es gibt also keinen Vorteil bei der Neuabtastung anstelle einer Neugewichtung, sie kommen am Ende und bei den Gewichten zu derselben Sache kann kontinuierlich und nicht diskret sein, so dass eine feinere Kontrolle möglich ist).

Wählen Sie jedoch nicht einfach C + und C-, um positive und negative Muster mit 50-50 zu gewichten, da die Stärke des Effekts des Problems "Ungleichgewichtsklassen" von Datensatz zu Datensatz unterschiedlich ist, sodass die Stärke des optimalen Re -gewichtung kann nicht a priori bestimmt werden.

Denken Sie auch daran, dass falsch positive und falsch negative Kosten unterschiedlich sein können und sich das Problem von selbst lösen kann, wenn diese bei der Bestimmung von C + und C- berücksichtigt werden.

Es ist auch zu bedenken, dass bei einigen Problemen die Bayes-Optimalentscheidungsregel alle Muster einer einzelnen Klasse zuordnet und die andere ignoriert, so dass es nicht unbedingt eine schlechte Sache ist - es kann nur bedeuten, dass die Dichte der Muster von Eine Klasse liegt überall unter der Musterdichte der anderen Klasse.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.