Nadpróbkowanie przy pomocy zmiennych kategorialnych

9

Chciałbym przeprowadzić kombinację nadpróbkowania i podpróbkowania, aby zrównoważyć mój zestaw danych z około 4000 klientami podzielonymi na dwie grupy, gdzie jedna z grup ma udział około 15%.

Zajrzałem do SMOTE ( http://www.inside-r.org/packages/cran/DMwR/docs/SMOTE ) i ROSE ( http://cran.r-project.org/web/packages/ROSE/ ROSE.pdf ), ale oba tworzą nowe próbki syntetyczne na podstawie istniejących obserwacji i np. KNN.

Ponieważ jednak wiele atrybutów związanych z klientami jest kategorycznych, nie sądzę, aby była to właściwa droga. Na przykład wiele moich zmiennych, takich jak Region_A i Region_B, wzajemnie się wykluczają, ale używając kNN nowe obserwacje można umieścić zarówno w Region_A, jak i Region_B. Czy zgadzasz się, że to jest problem?

W takim przypadku - w jaki sposób można przeprowadzić nadpróbkowanie w R, po prostu powielając istniejące obserwacje? Czy to zły sposób na zrobienie tego?

pir
źródło
Dlaczego potrzebujesz podpróbkowania, jeśli masz tylko 4000 obserwacji?
kjetil b halvorsen
Chcę zrównoważyć mój zestaw danych, aby mieć mniej więcej równy udział klas. Jeśli wykorzystam moje dane w obecnej postaci, modele po prostu przewidują wszystkie obserwacje jako klasę większości.
pir

Odpowiedzi:

8

ROSE i SMOTE są zaprojektowane do obsługi zmiennych kategorialnych, więc jeśli twoje zmienne kategorialne nie są wyrażone w formacie binarnym, zwykle nie powinieneś się martwić, że obserwacjom syntetycznym zostaną przypisane wzajemnie wykluczające się cechy jakościowe. Jeśli tak, zawsze możesz je zrestrukturyzować jako czynniki.

W przykładzie z dwoma regionami utworzyłbyś nową zmienną regionu z dwoma poziomami, „A” i „B”. Twoje rekordy przyjęłyby odpowiednie wartości, odwołując się do oryginalnych kolumn.

Teraz, jeśli jesteś w sytuacji, w której twoje nowe syntetyczne obserwacje mogą generować sprzeczne kategorie, ponieważ są one rozłożone na wiele, w innym przypadku niepowiązanych zmiennych (np. SyntheticObservation.isPig = 1 i syntheticObservation.hasWings = 1), zawsze możesz wykonać dodatkowe munging danych przed wykonaniem oszacowania modelu w celu wyczyszczenia takich aberracji.

Ponadto, ponieważ w swoim zbiorze danych znajduje się około 600 obserwacji zdarzeń, może warto rozważyć potencjalne korzyści wynikające z zastosowania obserwacji syntetycznych uzyskanych dzięki niepełnemu próbkowaniu klasy większości?

habu
źródło