Parece que você entende que é capaz de ter n
níveis, ao contrário de n-1
, porque, diferentemente da regressão linear, não precisa se preocupar com a colinearidade perfeita.
(Estou abordando isso da perspectiva R, mas presumo que seja o mesmo no Python.) Isso depende de duas coisas, como 1) qual pacote você está usando e 2) quantos níveis de fator você possui.
1) Se você estiver usando o randomForest
pacote de R , se tiver <33 níveis de fator, poderá prosseguir e deixá-los em um recurso, se desejar. Isso ocorre porque, na implementação da floresta aleatória de R, ele verifica quais níveis de fator devem estar de um lado da divisão e quais do outro (por exemplo, 5 dos seus níveis podem ser agrupados no lado esquerdo e 7 podem ser agrupados juntos à direita). Se você dividir o recurso categórico em n
manequins, o algoritmo não terá essa opção à sua disposição.
Obviamente, se o pacote em particular que você estiver usando não puder lidar com recursos categóricos, você precisará criar n
variáveis fictícias.
2) Como mencionei acima, a implementação de floresta aleatória de R pode lidar apenas com 32 níveis de fator - se você tiver mais do que isso, precisará dividir seus fatores em subconjuntos menores ou criar uma variável dummy para cada nível.
randomForest
são codificados automaticamente, eu devo usarn
manequins porque a colinearidade não é um problema para a RF?sklearn
... Praticamente falando, existe uma evidência (experiência prática, pesquisa, etc.) de que variáveis "dumificadas" terão desempenho pior do que variáveis categóricas "agrupadas" [em R]Existe outra abordagem para lidar com variáveis categóricas que é chamada de codificação de destino / impacto.
Nesse esquema, a idéia é codificar o recurso usando uma coluna flutuante única na qual o valor é a média da variável de destino em todas as linhas que compartilham a categoria. Isso é especialmente útil para modelos baseados em árvore, pois impõe uma relação de ordem dentro do recurso (ou seja, valores à direita da categoria têm resposta média mais alta que valores à esquerda) e facilita a divisão do espaço do preditor.
Aqui está uma boa explicação do assunto:
https://towardsdatascience.com/why-you-should-try-mean-encoding-17057262cd0
E aqui está um link para o artigo que originalmente propôs a codificação: http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf
Há mais alguns detalhes para evitar estimar a média em categorias com contagens baixas e também há outro modelo, o CatBoost, que propõe uma solução para a polarização introduzida por essa codificação, mas, na minha experiência, é uma maneira simples e muito útil de codificar variáveis categóricas de alta cardinalidade .
fonte