Cómo recodificar la variable categórica en variable numérica cuando se usa SVM o red neuronal

19

Para usar SVM o red neuronal, necesita transformar (codificar) variables categóricas en variables numéricas, el método normal en este caso es usar valores binarios 0-1 con el k-ésimo valor categórico transformado para ser (0,0, .. ., 1,0, ... 0) (1 está en la posición k-ésima). ¿Hay otros métodos para hacer esto, especialmente cuando hay una gran cantidad de valores categóricos (por ejemplo, 10000) de modo que la representación 0-1 introducirá una gran cantidad de dimensiones adicionales (unidades de entrada) en la Red Neural que parece no ser lo suficientemente deseada o esperada? ?

Estoy preguntando sobre estrategias generales.

usuario68589
fuente
¿Estás preguntando sobre estrategias generales o sobre algún problema específico?
Denis Tarasov

Respuestas:

11

En PNL, donde las palabras se codifican típicamente como 1-de-k, el uso de incrustaciones de palabras ha surgido recientemente. La página de wikipedia con sus referencias es un buen comienzo.

La idea general es aprender una representación vectorial para cada palabra donde palabras semánticamente similares están cercanas en ese espacio. En consecuencia, las entradas son de tamaño lugar del tamaño del vocabulario.XyoRnorteyonorte

Tal vez pueda transferir esa idea a su entorno.

bayerj
fuente
10

Los métodos 'estándar' son: codificación de uno en caliente (que mencionó en la pregunta). Si hay demasiadas categorías posibles, pero necesita codificación 0-1, puede usar el truco de hashing .

El otro método usado con frecuencia es promediar la respuesta sobre la categoría: ver la imagen del comentario en kaggle .

Alleo
fuente
1

Puede usar dummyVarsen R, desde el caretpaquete. Creará automáticamente diferentes columnas según el número de niveles. Después, puede usarlo cbindy adjuntarlo a sus datos originales. Otras opciones incluyen model.matrixy sparse.model.matrix.

Karan Gulati
fuente
0

Puede probar la codificación binaria, que es más compacta y, a veces, supera a uno en caliente. Puede implementar la incrustación categórica en Keras, por ejemplo.

eafpres
fuente
0

k-1

"Incorporaciones de entidades de variables categóricas" por Cheng Guo, Felix Berkhahn

Mapeamos variables categóricas en un problema de aproximación de funciones en espacios euclidianos, que son las incorporaciones de entidad de las variables categóricas. El mapeo lo aprende una red neuronal durante el proceso de capacitación supervisada estándar. La incrustación de entidades no solo reduce el uso de memoria y acelera las redes neuronales en comparación con la codificación única, sino que, lo que es más importante, al mapear valores similares entre sí en el espacio de incrustación, revela las propiedades intrínsecas de las variables categóricas. Lo aplicamos con éxito en una competencia reciente de Kaggle y pudimos alcanzar la tercera posición con características relativamente simples. Además, demostramos en este documento que la inclusión de entidades ayuda a que la red neuronal se generalice mejor cuando los datos son escasos y las estadísticas son desconocidas. Por lo tanto, es especialmente útil para conjuntos de datos con muchas características de alta cardinalidad, donde otros métodos tienden a sobreajustar. También demostramos que las incorporaciones obtenidas de la red neuronal capacitada aumentan considerablemente el rendimiento de todos los métodos de aprendizaje automático probados cuando se utilizan como características de entrada. Como la incrustación de entidades define una medida de distancia para variables categóricas, se puede usar para visualizar datos categóricos y para la agrupación de datos.

Sycorax dice reinstalar a Mónica
fuente