Codificação de recursos categóricos de alta cardinalidade (várias categorias) quando os recursos diferem bastante na cardinalidade


8

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.


1
Uma outra solução poderia ser usar o laço com alguma versão do "laço agrupado" para fazer o algoritmo propor categorias que poderiam ser mescladas, porque são estatisticamente semelhantes. Isso já foi discutido aqui antes, consulte stats.stackexchange.com/questions/146907/…
kjetil b halvorsen

Respostas:


8

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.

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.