Nunca estoy seguro de cuándo usar una codificación única para variables categóricas no ordenadas y cuándo no. Lo uso cuando el algoritmo usa una métrica de distancia para calcular la similitud. ¿Alguien puede dar una regla general sobre qué tipos de algoritmos requerirían que las características categóricas no ordenadas se codifiquen en caliente y cuáles no?
12
Respuestas:
La mayoría de los algoritmos (regresión lineal, regresión logística, red neuronal, máquina de vectores de soporte, etc.) requieren algún tipo de codificación en variables categóricas. Esto se debe a que la mayoría de los algoritmos solo toman valores numéricos como entradas.
Los algoritmos que no requieren una codificación son algoritmos que pueden tratar directamente con distribuciones discretas conjuntas como la cadena de Markov / Naive Bayes / red Bayesiana, basada en árboles, etc.
Comentarios adicionales:
Una codificación activa es uno de los métodos de codificación. Aquí hay un buen recurso para la codificación de variables categóricas (no limitado a R). R SISTEMAS DE CODIFICACIÓN DEL CONTRASTE DE LA BIBLIOTECA PARA VARIABLES CATEGÓRICAS
Incluso sin codificación, se puede definir la distancia entre puntos de datos con variables discretas, como la distancia de Hamming o la distancia de Levenshtein
fuente
AFAIU, tiene que ver más con los datos particulares , menos con el algoritmo particular . Específicamente, depende de si hay un orden significativo en las categorías o no.
Considere dos casos. En el primero tienes las categorías malo, meh, bueno , y en el segundo tienes manzana, naranja, pera . Hay un orden natural en el primer caso, porque meh probablemente esté entre malo y bueno , pero probablemente no ocurra nada similar en manzana, naranja, pera .
Si evita la codificación en caliente para el primer caso, está "perdiendo" la información sobre el pedido. Si utiliza la codificación de un solo uso para el segundo caso, está asignando un orden a las categorías que no es naturalmente cierto.
¿Por qué? Suponga que una de las características es categóricamente mala, meh, buena , y tiene tres instancias, 1, 2 y 3, donde son idénticas, excepto que 1 es malo , 2 es meh y 3 es bueno. Probablemente quiera expresarle al algoritmo que 1 es más similar a 2 que a 3.
fuente
Ningún algoritmo de aprendizaje automático requiere una codificación activa. Es un método para tratar con variables categóricas. Las variables ficticias son otra. Tradicionalmente, las variables ficticias eran la solución preferida. Por ejemplo, la función R lm () crea automáticamente variables ficticias para datos categóricos. Si está utilizando python y scikt-learn, entonces creo que muchos de sus algos requieren una codificación de variables categóricas. Creo que tensorFlow también requiere una codificación única. Estas son opciones de cómo se codifica la variable. No hay ninguna razón por la cual no se puedan usar variables ficticias en el código. Todo esto tiene que ver con la implementación del código real del algoritmo.
Como señala hxd1011, el tema de describir la "distancia" entre variables categóricas es un tema delicado. Además de las distancias mencionadas, también hay distancia de Jaccard. Algunos métodos de ML, en particular los SVM, son inapropiados para los datos categóricos y agregar variables categóricas puede (o ambos, usted decide) conducir a modelos con un poder predictivo muy pobre. La mayoría de los modelos de conjunto manejan datos categóricos 'tal cual' y no requieren procesamiento previo.
fuente