27 votos

¿Qué es exactamente la codificación multi-hot y en qué se diferencia de la one-hot?

En la codificación de un solo bit hay un bit reservado para cada palabra que deseamos codificar.

¿En qué se diferencia la codificación multi-hot de la one-hot? ¿En qué situaciones tendría sentido utilizarla en lugar de una sola?

34voto

Sandesh Jain Puntos 111

Imagina que tienes cinco clases diferentes, por ejemplo ['cat', 'dog', 'fish', 'bird', 'ant'] . Si se utilizara la codificación de un solo golpe, se representaría la presencia de "perro" en un vector binario de cinco dimensiones como [0,1,0,0,0] . Si se utilizara la codificación múltiple, primero se codificarían las clases con etiquetas, con lo que se tendría un único número que representaría la presencia de una clase (por ejemplo, 1 para "perro") y luego se convertirían las etiquetas numéricas en vectores binarios de tamaño $\lceil\text{log}_25\rceil = 3$ .

Ejemplos:

'cat'  = [0,0,0]  
'dog'  = [0,0,1]  
'fish' = [0,1,0]  
'bird' = [0,1,1]  
'ant'  = [1,0,0]   

Esta representación es básicamente la vía intermedia entre la codificación de etiquetas, en la que se introducen falsas relaciones de clase ( 0 < 1 < 2 < ... < 4 Por lo tanto 'cat' < 'dog' < ... < 'ant' ) pero sólo se necesita un único valor para representar la presencia de la clase y la codificación de un solo disparo, donde se necesita un vector de tamaño $n$ (¡que puede ser enorme!) para representar todas las clases, pero no tienen relaciones falsas.

Nota : la multicodificación introduce falsas relaciones aditivas, por ejemplo [0,0,1] + [0,1,0] = [0,1,1] es decir 'dog' + 'fish' = 'bird' . Ese es el precio que se paga por la representación reducida.

24voto

rblake Puntos 61

La respuesta aceptada me parece bastante excéntrica. Creo que rara vez se hace, si es que alguna vez se hace, y suele dar malos resultados.

Hay un caso de uso mucho más común y sensato para esto. "Codificación multihomogénea" no parece ser un término estándar, pero no estoy seguro de que haya ningún término estándar. scikit-learn se refiere a un binarizador multietiqueta .

Se utiliza simplemente para los problemas de varias etiquetas. Es decir, problemas en los que se puede asociar más de una etiqueta a cada ejemplo.

Por ejemplo, supongamos que se trata de detectar si determinados tipos de animales aparecen en una foto. Tenga en cuenta que en una misma foto pueden aparecer varios tipos de animales. Digamos que los posibles tipos de animales son ['cat', 'dog', 'fish', 'bird', 'ant'] . Una foto que contenga gatos y perros se representaría como [1, 1, 0, 0, 0] .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X