Reduzindo o número de níveis de variável preditora categórica não ordenada


11

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.


A variável categórica é desordenada? Aproximadamente quantos casos você tem? Qual é a distribuição de frequência na variável categórica?
Jeromy Anglim

Os níveis não estão ordenados. Eu tenho cerca de 10.000 observações. A distribuição de frequência é a seguinte: o nível A aparece em cerca de 11% das observações. O nível B aparece em 8%. O nível c aparece em 5%. Cerca de 15 desses níveis cobrem 50% das observações no conjunto de dados.
Sabunime

Respostas:


9

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:

  1. Bin eles. Por exemplo, 0 = (0 250), 1 = (251 500) etc. Você pode selecionar os limites para que cada compartimento possua um número igual de itens.
  2. Você também pode realizar uma transformação de log dos níveis. Isso reduzirá o alcance.

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 usando kmeans()ou prcomp(). (Você pode / deve treinar posteriormente um classificador para prever os clusters para novos pontos de dados.)


3
Não conheço uma maneira realmente boa de lidar com isso, a não ser tratar a variável categórica como um efeito aleatório. Você pode emular isso usando um processo de penalização quadrática (crista) na variável. O livro Minha estratégia de modelagem de regressão e as notas do curso abordam isso.
Frank Harrell

1
@FrankHarrell Duas abordagens vêm à mente: a análise de classe latente da variável POlytomous seria uma (cran.r-project.org/web/packages/poLCA/poLCA.pdf), outra análise de correspondência (por exemplo, statmethods.net/advstats/ca. html).
Mike Hunter
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.