Transformación de datos categóricos

Algunos de tus atributos pueden ser valores discretos que no están en una relación ordenada. Entre los ejemplos se incluyen razas de perros, palabras o códigos postales. Estos atributos se conocen como categóricos y cada valor se denomina categoría. Puedes representar valores categóricos como strings o incluso números, pero no podrás comparar estos números ni restarlos entre sí.

A menudo, debes representar los atributos que contienen valores enteros como datos categóricos en lugar de datos numéricos. Por ejemplo, considera un atributo de código postal en el que los valores son números enteros. Si representas este atributo por error de forma numérica, le pides al modelo que busque una relación numérica entre diferentes códigos postales. Por ejemplo, esperas que el modelo determine que el código postal 20004 es el doble (o la mitad) de la señal como código postal 10002. Cuando representas códigos postales como datos categóricos, habilitas el modelo a fin de encontrar indicadores separados para cada código postal individual.

Si la cantidad de categorías de un campo de datos es pequeña, como el día de la semana o una paleta de colores limitada, puedes crear un atributo único para cada categoría. Por ejemplo:

Cada color de la paleta se representa como un elemento independiente.
Es decir, cada color es un atributo independiente en el vector de atributos.
Por ejemplo, el rojo es un atributo, el naranja es un atributo independiente, y así sucesivamente. Figura 1: Una característica única para cada categoría.

 

Luego, un modelo puede aprender un peso separado para cada color. Por ejemplo, quizás el modelo podría aprender que los autos rojos son más costosos que los verdes.

Luego, se pueden indexar los elementos.

Cada color de la paleta ahora pertenece a la misma característica. 
Es decir, ahora el color es solo un único atributo en el vector de atributos.
Cada color tiene un valor único. Por ejemplo, el rojo tiene el valor 0, el naranja el valor 1, y así sucesivamente. Figura 2: Funciones indexadas

 

Este tipo de asignación se denomina vocabulario.

Vocabulario

En un vocabulario, cada valor representa un atributo único.

Index NumberCategory
0Red
1Orange
2Blue
......

El modelo busca el índice desde la string y asigna 1.0 al espacio correspondiente en el vector de atributos y 0.0 a todos los demás espacios en el vector de atributos.

Diagrama del proceso integral de asignar categorías a vectores de vectores
En el diagrama, los atributos de entrada son amarillo, naranja, azul y azul. El sistema usa un vocabulario almacenado (el rojo 0, el naranja es 1, el azul es 2, el amarillo es 3, etc.) para asignar el valor de entrada a un ID. Por lo tanto, el sistema asigna amarillo, naranja, azul y azul a 3, 1, 2 y 2. Luego, el sistema convierte esos valores en un vector de atributos de un solo 1. Por ejemplo, dado un sistema con siete colores posibles, 3 se convierte en 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0. Figura 3: El proceso integral de asignar categorías a los vectores de atributos

Nota sobre la representación dispersa

Si tus categorías son los días de la semana, podrías, por ejemplo, representar el viernes con el vector de atributos [0, 0, 0, 0, 1, 0, 0]. Sin embargo, la mayoría de las implementaciones de sistemas de AA representarán este vector en la memoria con una representación dispersa. Una representación común es una lista de valores no vacíos y sus índices correspondientes, por ejemplo, 1.0 para el valor y [4] para el índice. Esto te permite pasar menos memoria almacenando una gran cantidad de 0 y permite una multiplicación de matriz más eficiente. En términos de la matemática subyacente, [4] es equivalente a [0, 0, 0, 0, 1, 0, 0].

Fuera del vocabulario (OOV)

Así como los datos numéricos contienen valores atípicos, los datos categóricos también lo hacen. Por ejemplo, considera un conjunto de datos que contiene descripciones de automóviles. Una de las características de este conjunto de datos podría ser el color del automóvil. Supongamos que los colores comunes de los vehículos (negro, blanco, gris, etc.) están bien representados en este conjunto de datos y los conviertes en una categoría para aprender cómo estos valores afectan el valor. Sin embargo, supongamos que este conjunto de datos contiene una pequeña cantidad de automóviles con colores excéntricos (malva, puce, aguacate). En lugar de asignar a cada uno de estos colores una categoría independiente, puedes agruparlos en una categoría genérica llamada Fuera de Vocab (OOV). Mediante el uso de OOV, el sistema no perderá tiempo entrenando en cada uno de esos colores poco comunes.

Hash

Otra opción es generar un hash para cada string (categoría) en el espacio de índice disponible. El hash suele causar colisiones, pero dependes de que el modelo aprenda una representación compartida de las categorías en el mismo índice que funciona bien para el problema determinado.

Para los términos importantes, el hashing puede ser peor que seleccionar un vocabulario, debido a las colisiones. Por otro lado, el hashing no requiere que armes un vocabulario, lo cual es ventajoso si la distribución de atributos cambia con el tiempo.

Diagrama que muestra dos listas de palabras. Una lista consta de 10 palabras. En la otra lista, se muestran las 10 palabras divididas en 8 depósitos de hash. Por lo tanto, 6 de los depósitos de hash contienen una palabra, mientras que 2 de los depósitos de hash contienen 2 palabras.  Cada bucket de hash se identifica con un número del 1 al 8, inclusive. Figura 4: Asignación de elementos a un vocabulario.

Híbrido de hashing y vocabulario

Puedes adoptar un enfoque híbrido y combinar la codificación hash con un vocabulario. Usa un vocabulario para las categorías más importantes de tus datos, pero reemplaza el depósito de OOV con varios depósitos de OOV y usa el hash para asignar categorías a los depósitos.

Las categorías en los depósitos de hash deben compartir un índice, y es probable que el modelo no haga buenas predicciones, pero asignamos un poco de memoria para intentar aprender las categorías fuera de nuestro vocabulario.

Diagrama que muestra tres listas de palabras. Una lista consta de 10 palabras para categorizar. Las otras dos listas asignan esas 10 palabras a depósitos de vocabulario y hash. Es decir, 5 palabras se asignan directamente al vocabulario, mientras que 5 palabras se asignan a dos depósitos de hash. Un bucket de hash contiene dos palabras; el otro contiene tres palabras.  El vocabulario contiene palabras comunes; el bucket de hash contiene palabras poco frecuentes. Figura 5: Enfoque híbrido que combina vocabulario y hash.

Nota sobre las incorporaciones

Recuerda que, en el Curso intensivo de aprendizaje automático, una incorporación es un atributo categórico representado como un atributo de valor continuo. Los modelos profundos suelen convertir los índices de un índice en una incorporación.

Diagrama que muestra el proceso de extremo a extremo para asignar categorías a vectores de atributos a través de la incorporación. Una tabla de incorporación consta de un conjunto de filas numeradas. Cada fila consta de un conjunto de valores de punto flotante entre 0.0 y 1.0. Para convertir una categoría, el sistema copia la fila correspondiente de la tabla de incorporaciones.
Por ejemplo, si la categoría de entrada fuera 0, el sistema copia la primera fila de la tabla de incorporaciones en el vector de atributos. Si la categoría de entrada fuera 1, el sistema copia la segunda fila de la tabla de incorporaciones en el vector de atributos. Figura 6: Vectores de atributos dispersos mediante incorporación

Las otras transformaciones que analizamos se pueden almacenar en el disco, pero las incorporaciones son diferentes. Dado que las incorporaciones están entrenadas, no son una transformación típica de datos, sino que forman parte del modelo. Se entrenan con otros pesos de modelos y, en términos funcionales, son equivalentes a una capa de pesos.

¿Qué ocurre con las incorporaciones previamente entrenadas? Las incorporaciones previamente entrenadas aún se pueden modificar durante el entrenamiento, por lo que aún son conceptualmente parte del modelo.