Estive pesquisando perguntas sobre a codificação de recursos categóricos, mas não encontrei nenhuma que discutisse meu problema. Desculpas se eu perdi.
Digamos que temos um conjunto de dados com variáveis binárias e nominais de importância aproximadamente igual cada.
A maioria dos classificadores não pode lidar com tipos categóricos diretamente, portanto eles precisam ser transformados - por exemplo, usando a codificação one-hot (variáveis dummy), conforme explicado nesta resposta .
Se uma variável categórica tem alta cardinalidade, a codificação dessa forma "supera" outras variáveis (por exemplo, binárias)? Por "cardinalidade", quero dizer o número de categorias em uma variável nominal.
Se nosso modelo de classificador estiver ciente dos relacionamentos entre variáveis, ele não tentaria desnecessariamente encontrar relacionamentos entre os "componentes" fictícios binários introduzidos da mesma variável?
E se sim, como isso poderia ser resolvido?
A melhor solução em que posso pensar é agrupar logicamente propriedades de alta cardinalidade em "baldes"; no entanto, se houver valores únicos suficientes para causar um problema, agrupá-los manualmente também consumirá trabalho.
Editar: isso é trivial e aborda apenas parcialmente o problema, mas uma das coisas que acabei fazendo é substituir todos os valores categóricos relativamente raros por uma nova categoria "outra". Pode levar muito tempo para otimizar o limite quando considerar o valor "raro", mas pelo menos essa abordagem pode ser automatizada.
fonte
Respostas:
Se uma variável categórica tem alta cardinalidade, a codificação dessa forma "supera" outras variáveis (por exemplo, binárias)?
Depende do algoritmo.
Algoritmos baseados na amostragem das colunas (florestas aleatórias, árvores extremamente aleatórias, aumento de gradiente ou um classificador ensacado ...) treinam muitos modelos em subamostras dos dados. Se 90% de suas colunas representam uma variável "dummificada", é provável que um grande número de modelos esteja realmente trabalhando na mesma variável, portanto, tornando-os mais correlacionados do que deveriam, o que prejudica o desempenho.
Os métodos de regressão linear não serão afetados, eles simplesmente atribuirão um peso a todas as variáveis binárias produzidas pela variável codificada.
Com os vizinhos mais próximos e métodos baseados em similaridade (como SVMs do kernel), o impacto também deve ser limitado. Não importa o número de colunas, a única coisa que importa no final é o produto interno ou a distância entre duas linhas dos seus dados. No entanto, o número de colunas que decorre de uma variável nominal, a distância (ou produto interno) pode ser apenas 0 ou 1 (as variáveis nominais foram iguais ou não).
Se nosso modelo classificador estiver ciente dos relacionamentos entre variáveis, ele não tentaria desnecessariamente encontrar relacionamentos entre os "componentes" binários introduzidos da mesma variável?
Como seu classificador está "ciente" dos relacionamentos entre variáveis? Não tenho certeza se posso resolver esta questão.
E se sim, como isso poderia ser resolvido?
No caso de qualquer método baseado em amostras das colunas, pesos anteriores podem ser dados às colunas (para que elas não sejam selecionadas com as mesmas probabilidades). No entanto, não tenho nenhuma implementação em mente que faça isso. Uma solução rápida seria repetir as outras colunas, para que a probabilidade de seleção seja aumentada artificialmente.
fonte