Zmniejszenie liczby poziomów nieuporządkowanej jakościowej zmiennej predykcyjnej

11

Chcę wytrenować klasyfikator, powiedzmy SVM, losowy las lub inny klasyfikator. Jedną z cech zestawu danych jest zmienna kategoryczna z 1000 poziomami. Jaki jest najlepszy sposób na zmniejszenie liczby poziomów w tej zmiennej. W R jest funkcja wywoływana combine.levels()w pakiecie Hmisc , która łączy rzadkie poziomy, ale szukałem innych sugestii.

sabunime
źródło
Czy zmienna kategoryczna jest nieuporządkowana? W przybliżeniu ile masz spraw? Jaki jest rozkład częstotliwości w obrębie zmiennej jakościowej?
Jeromy Anglim
Poziomy nie są uporządkowane. Mam około 10 000 obserwacji. Rozkład częstotliwości jest następujący: poziom A pojawia się w około 11% obserwacji. Poziom B pojawia się w 8%. Poziom c pojawia się w 5%. Około 15 z tych poziomów obejmuje 50% obserwacji w zbiorze danych.
sabunime

Odpowiedzi:

9

To, jak najlepiej to zrobić, będzie się bardzo różnić w zależności od wykonywanego zadania, więc nie można powiedzieć, co będzie najlepsze w sposób niezależny od zadania.

Istnieją dwie proste rzeczy do wypróbowania, jeśli twoje poziomy są porządkowe:

  1. Bin je. Np. 0 = (0 250), 1 = (251 500) itd. Możesz wybrać limity, aby każdy pojemnik miał taką samą liczbę elementów.
  2. Możesz także dokonać logarytmicznej transformacji poziomów. Spowoduje to zmniejszenie zasięgu.

Jeśli poziomy nie są porządkowe, możesz grupować poziomy na podstawie innych funkcji / zmiennych w zestawie danych i zastępować identyfikatory klastrów poprzednimi poziomami. Jest tyle sposobów, aby to zrobić, ile algorytmów klastrowania, więc pole jest szeroko otwarte. Kiedy to czytam, to właśnie combine.levels()się dzieje. Możesz zrobić podobnie używając kmeans()lub prcomp(). (Możesz / powinieneś następnie przeszkolić klasyfikatora do przewidywania klastrów dla nowych punktów danych.)

Joey
źródło
3
Nie znam naprawdę dobrego sposobu radzenia sobie z tym innym niż traktowanie zmiennej kategorialnej jako efektu losowego. Można to naśladować za pomocą kwadratowego (kalenicowego) procesu penalizacji zmiennej. Moja książka Regres Modeling Strategie i notatki z kursu są do tego.
Frank Harrell
1
@FrankHarrell Przychodzą mi na myśl dwa podejścia: zmienna POlytomous Latent Class Analysis to jedna (cran.r-project.org/web/packages/poLCA/poLCA.pdf), inna analiza korespondencji (np. Statmethods.net/advstats/ca. HTML).
Mike Hunter