¿Qué algoritmos requieren codificación one-hot?

12

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?

cosmosa
fuente
2
¿Está preguntando sobre la necesidad de codificar datos categóricos en algún tipo de "variables de contraste" o específicamente en el tipo ficticio (uno activo)?
ttnphns
1
Esta pregunta es algo amplia, pero una respuesta simple que aborde la naturaleza de OHE puede aclarar la confusión del OP. La existencia de tales respuestas implica que esta pregunta es respondible. Estoy votando para dejarlo abierto.
gung - Restablece a Monica
@ttnphns honestamente, no sé qué quieres decir con variable de contraste. Solo estoy familiarizado con el muñeco.
cosmosa
Cosmos, dummy (= indicador = one-hot) es solo una de varias formas de codificar cariables categóricos en los análisis. Estas formas de unidad se llaman "variables de contraste". Ver stats.meta.stackexchange.com/q/4669/3277 y stats.stackexchange.com/a/221868/3277
ttnphns
1
Creo que la lista completa que solicita será difícil de producir.
mdewey 01 de

Respuestas:

6

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:

Haitao Du
fuente
Todavía no está claro si se requiere una codificación activa para la mayoría de los algoritmos. Simplemente dice que se requiere codificación. ¿Pero es una codificación activa?
Prometeo el
4

¿Alguien puede dar una lista de qué algoritmos requerirían que las características categóricas estén codificadas en caliente y cuáles no?

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.

Lo hago cada vez que el algoritmo usa una métrica de distancia para calcular la similitud.

¿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.

Ami Tavory
fuente
2
Esa es una buena respuesta. Sin embargo, debería haber aclarado la pregunta para incluir también variables categóricas no ordenadas. En ese caso, ¿siempre debe ser uno codificado en caliente?
cosmosa
@ cosmos1990 En mi humilde opinión, como regla general, para los datos categóricos no ordenados, la codificación de uno en caliente es el camino a seguir (en lugar de la asignación de valores numéricos).
Ami Tavory
2

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.

meh
fuente