¿Una alternativa de codificación activa para grandes valores categóricos?


13

Hola, tengo un marco de datos con grandes valores categóricos en más de 1600 categorías. ¿Hay alguna forma de encontrar alternativas para no tener más de 1600 columnas?

Encontré esto debajo del enlace interesante http://amunategui.github.io/feature-hashing/#sourcecode

Pero se están convirtiendo a clase / objeto que no quiero. ¿Quiero mi salida final como un marco de datos para poder probar con diferentes modelos de aprendizaje automático? ¿O hay alguna forma de usar la matriz generada para entrenar los otros modelos de aprendizaje automático que no sean la regresión logística o XGBoost?

¿Hay alguna forma de implementar?


Esto es realmente un problema? Suponiendo que está utilizando una representación de matriz dispersa, la codificación onehot no será un problema real.
Louis T

@LouisT Tengo millones de registros de más de 500 millones de registros
vinaykva

Sin embargo, si hace calor, no importará si usa una matriz dispersa
Louis T

@LouisT La complejidad aumentará y el tiempo del tren también aumentará y mis datos se volverán demasiado escasos
vinaykva

1
su publicación es hace aproximadamente 1 año, y tal vez ya no le interese, pero en caso de que todavía esté interesado, ¿ha oído hablar de la incorporación de entidades utilizando redes neuronales? medium.com/@satnalikamayank12/…
TwinPenguins

Respuestas:


10

Una opción es asignar valores raros a 'otro'. Esto se hace comúnmente, por ejemplo, en el procesamiento del lenguaje natural; la intuición es que las etiquetas muy raras no tienen mucho poder estadístico.

También he visto a personas que asignan valores categóricos 1-hot a vectores de dimensiones inferiores, donde cada vector 1-hot se representa de nuevo como un dibujo de un gaussiano multivariado. Consulte, por ejemplo, el documento Deep Knowledge Tracing, que dice que este enfoque está motivado por la idea de la detección comprimida:

BARANIUK, R. Detección de compresión. IEEE revista de procesamiento de señales 24, 4 (2007).

Específicamente, asignan cada vector de longitud N a un vector más corto de longitud log2 (N). No lo he hecho yo mismo, pero creo que valdría la pena intentarlo.


Me pregunto cómo calcular la distancia con tal codificación.
eric2323223

2

Puede leer los datos y primero obtener una lista de todos los valores únicos de sus variables categóricas. Luego, puede ajustar un objeto de codificador activo (como sklearn.preprocessing.CategoricalEncoder) en su lista de valores únicos.

Este método también puede ayudar en un marco de prueba de tren o cuando está leyendo sus datos en fragmentos. He creado un módulo de Python que hace todo esto por sí solo. Puedes encontrarlo en este repositorio de GitHub - dummyPy

Un breve tutorial sobre esto: ¿Cómo codificar variables categóricas en caliente en Python?



0

Puede agrupar valores similares, de modo que los valores (o columnas) que contengan el patrón de valor más cercano (o tengan un patrón muy similar) puedan reemplazarse por un valor (o columna) y, por lo tanto, sus valores de 1600 puedan reducirse a 400 (o incluso Menos).

Ex. para valores como (nube como - Nimbus Clouds, llovizna, lluvia ligera, lluvia, lluvia fuerte se pueden convertir a (lluvia ligera, lluvia, lluvia fuerte).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.