Quero treinar um classificador, digamos SVM, floresta aleatória ou qualquer outro classificador. Um dos recursos do conjunto de dados é uma variável categórica com 1000 níveis. Qual é a melhor maneira de reduzir o número de níveis nessa variável. No R, existe uma função chamada combine.levels()
no pacote Hmisc , que combina níveis pouco frequentes, mas eu estava procurando outras sugestões.
classification
svm
random-forest
many-categories
sabunime
fonte
fonte
Respostas:
A melhor maneira de fazer isso varia enormemente, dependendo da tarefa que você está realizando, por isso é impossível dizer o que será melhor de maneira independente da tarefa.
Há duas coisas fáceis de tentar se seus níveis são ordinais:
Se os níveis não forem ordinais, você poderá agrupar os níveis com base em outros recursos / variáveis em seu conjunto de dados e substituir os IDs do cluster pelos níveis anteriores. Existem tantas maneiras de fazer isso quanto os algoritmos de cluster, portanto, o campo está aberto. Enquanto eu leio, é isso que
combine.levels()
está fazendo. Você poderia fazer o mesmo usandokmeans()
ouprcomp()
. (Você pode / deve treinar posteriormente um classificador para prever os clusters para novos pontos de dados.)fonte