Eu tenho dados brutos que possuem cerca de 20 colunas (20 recursos). Dez deles são dados contínuos e 10 deles são categóricos. Alguns dos dados categóricos podem ter 50 valores diferentes (Estados dos EUA). Depois que eu pré-processo os dados, as 10 colunas contínuas se tornam 10 colunas preparadas e os 10 valores categóricos se tornam como 200 variáveis codificadas um a quente. Estou preocupado que, se eu colocar todos esses recursos 200 + 10 = 210 na rede neural, os recursos 200-um-quentes (as 10 colunas categóricas) dominarão totalmente os 10 recursos contínuos.
Talvez um método seja "agrupar" colunas ou algo assim. Essa é uma preocupação válida e existe alguma maneira padrão de lidar com esse problema?
(Estou usando o Keras, embora não ache que isso importe muito.)
Respostas:
Você pode codificar as variáveis categóricas com um método diferente do one-hot. Codificadores binários ou de hash podem ser apropriados para este caso. Hashing em particular é bom porque você codifica todas as categorias em uma única representação por vetor de recurso, portanto, ninguém domina o outro. Você também pode especificar o tamanho da representação final, para que todas as variáveis categóricas possam ser divididas em 10 recursos e acabar com 20 recursos numéricos (meio contínuo, meio categórico).
Ambos são implementados em https://github.com/scikit-learn-contrib/categorical-encoding ou bastante simples de implementar.
fonte
Você pode usar a incorporação para transformar seu grande número de variáveis categóricas em um único vetor. Esse vetor compactado será uma representação distribuída dos recursos categóricos. As entradas categóricas serão transformadas em um vetor relativamente pequeno de comprimento N com N números reais que de alguma forma representam N recursos latentes que descrevem todas as entradas.
Considere o grande número de palavras no dicionário inglês. Se esse número for N, poderíamos representar cada palavra como um vetor de comprimento N. com um código quente. No entanto, a palavra para vec é capaz de capturar praticamente todas essas informações em um vetor de comprimento entre 200 e 300.
fonte