Uma alternativa de codificação quente para grandes valores categóricos?


13

Oi tenho dataframe com grandes valores categóricos acima de 1600 categorias existe alguma maneira de encontrar alternativas para que eu não tenha mais de 1600 colunas.

Encontrei este link interessante abaixo http://amunategui.github.io/feature-hashing/#sourcecode

Mas eles estão convertendo para classe / objeto que eu não quero. Quero minha saída final como um quadro de dados para poder testar com diferentes modelos de aprendizado de máquina? ou existe alguma maneira de usar a matriz genetrada para treinar outros modelos de aprendizado de máquina que não sejam regressão logística ou XGBoost?

Existe alguma maneira que eu possa implementar?


Isso é realmente um problema? Supondo que você esteja usando representação matricial esparsa, a codificação onehot não será um problema real.
Louis T

@LouisT Eu tenho milhões de registros de mais de 500 milhões de registros
vinaykva

Ainda assim, se o seu um quente, isso não vai importar se matriz utilização escassa
Louis T

@LouisT Complexidade irá aumentar e tempo trem também vai aumentar e os meus dados se tornará muito escassa
vinaykva

11
sua postagem foi publicada há cerca de um ano e talvez não esteja mais interessada, mas, caso ainda esteja interessado, você já ouviu falar sobre a incorporação de entidades usando redes neurais? medium.com/@satnalikamayank12/…
TwinPenguins

Respostas:


10

Uma opção é mapear valores raros para 'outro'. Isso geralmente é feito no processamento de linguagem natural, por exemplo - a intuição é que rótulos muito raros não têm muito poder estatístico.

Também vi pessoas mapearem valores categóricos 1-quentes para vetores de dimensões inferiores, onde cada vetor 1-quente é representado como um empate de um gaussiano multivariado. Veja, por exemplo, o artigo Deep Knowledge Tracing, que diz que essa abordagem é motivada pela idéia de detecção compactada:

BARANIUK, R. Sensoriamento compressivo. Revista de processamento de sinais IEEE 24, 4 (2007).

Especificamente, eles mapeiam cada vetor de comprimento N para um vetor mais curto de comprimento log2 (N). Eu não fiz isso sozinho, mas acho que valeria a pena tentar.


Gostaria de saber como calcular a distância com essa codificação?
precisa saber é o seguinte

2

Você pode ler os dados e primeiro obter uma lista de todos os valores exclusivos de suas variáveis ​​categóricas. Em seguida, você pode ajustar um objeto de um codificador ativo (como o sklearn.preprocessing.CategoricalEncoder) na sua lista de valores exclusivos.

Esse método também pode ajudar em uma estrutura de teste de trem ou quando você está lendo seus dados em partes. Eu criei um módulo python que faz tudo isso por conta própria. Você pode encontrá-lo neste repositório GitHub - dummyPy

Um breve tutorial sobre este assunto - Como codificar variáveis ​​categóricas em um código quente em Python?



0

Você pode fazer o agrupamento de valores semelhantes, de modo que valores (ou colunas) que possuam o valor mais próximo (ou que possua um padrão muito semelhante) possam ser substituídos por um valor (ou coluna) e, portanto, seus valores 1600 possam descer para dizer 400 (ou mesmo Menos).

Ex. para valores como (nuvens como - Nimbus Clouds, chuviscos, chuva fraca, chuva, chuva forte pode ser convertida em (chuva fraca, chuva, chuva forte).

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.