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.
classification
svm
random-forest
many-categories
sabunime
źródło
źródło
Odpowiedzi:
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:
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ąckmeans()
lubprcomp()
. (Możesz / powinieneś następnie przeszkolić klasyfikatora do przewidywania klastrów dla nowych punktów danych.)źródło