Überabtastung mit kategorialen Variablen

9

Ich möchte eine Kombination aus Über- und Unterabtastung durchführen, um meinen Datensatz mit ungefähr 4000 Kunden in zwei Gruppen auszugleichen, wobei eine der Gruppen einen Anteil von ungefähr 15% hat.

Ich habe mir SMOTE ( http://www.inside-r.org/packages/cran/DMwR/docs/SMOTE ) und ROSE ( http://cran.r-project.org/web/packages/ROSE/) angesehen. ROSE.pdf ), aber beide erzeugen neue synthetische Proben unter Verwendung bestehender Beobachtungen und z. B. kNN.

Da jedoch viele der mit den Kunden verbundenen Attribute kategorisch sind, denke ich nicht, dass dies der richtige Weg ist. Zum Beispiel schließen sich viele meiner Variablen wie Region_A und Region_B gegenseitig aus, aber mit kNN können die neuen Beobachtungen sowohl in Region_A als auch in Region_B platziert werden. Stimmen Sie zu, dass dies ein Problem ist?

In diesem Fall - wie führt man eine Überabtastung in R durch, indem man einfach vorhandene Beobachtungen dupliziert? Oder ist das der falsche Weg?

pir
quelle
Warum benötigen Sie eine Unterabtastung, wenn Sie nur 4000 Beobachtungen haben?
kjetil b halvorsen
Ich möchte meinen Datensatz so ausgleichen, dass er ungefähr den gleichen Anteil an Klassen hat. Wenn ich meine Daten so verwende, wie sie jetzt sind, sagen die Modelle einfach alle Beobachtungen als Mehrheitsklasse voraus.
Pir

Antworten:

8

ROSE und SMOTE sind für die Verarbeitung kategorialer Variablen ausgelegt. Wenn Ihre kategorialen Variablen nicht in einem Binärformat ausgedrückt werden, sollten Sie sich normalerweise keine Sorgen machen müssen, dass synthetischen Beobachtungen sich gegenseitig ausschließende kategoriale Merkmale zugewiesen werden. Wenn dies der Fall ist, können Sie sie jederzeit als Faktoren umstrukturieren.

In Ihrem Beispiel mit zwei Regionen würden Sie eine neue Regionsvariable mit zwei Ebenen erstellen: "A" und "B". Ihre Datensätze würden die entsprechenden Werte annehmen, indem sie auf Ihre ursprünglichen Spalten verweisen.

Wenn Sie sich in einer Situation befinden, in der Ihre neuen synthetischen Beobachtungen zu widersprüchlichen Kategorien führen können, weil sie auf mehrere, ansonsten nicht verwandte Variablen verteilt sind (z. B. synthetischeObservation.isPig = 1 und synthetischeObservation.hasWings = 1), können Sie jederzeit zusätzliche Datenmungings durchführen bevor Sie Ihre Modellschätzung durchführen, um solche Aberrationen zu beseitigen.

Da Ihr Datensatz ungefähr 600 Ereignisbeobachtungen enthält, sollten Sie möglicherweise die potenziellen Vorteile der Verwendung synthetischer Beobachtungen in Betracht ziehen, die durch Unterabtastung der Mehrheitsklasse abgeleitet wurden .

habu
quelle