Feature Engineering · Machine Learning

Codificación de texto y categorías

Aplicar codificaciones one-hot, objetivo y de frecuencia a variables categóricas y texto, con criterio sobre cardinalidad y fuga.

Codificación de texto y categorías

Las categorías no saben de números Darle a «rojo igual a uno, azul igual a dos» es una mentira: sugiere un orden y una distancia que no existen. Codificar categorías es elegirla representación numérica que respete que son etiquetas, no cantidades.

De categorías a números

Casi todos los algoritmos exigen entradas numéricas, pero una categoría es nominal: no ordenada ni medible. La codificación convierte etiquetas en columnas numéricas que el modelo pueda digerir sin imponer una estructura falsa.

One-hot

La codificación uno activo crea una columna binaria por categoría, sin jerarquías ni distancias inventadas. Perfecta para pocas categorías y modelos lineales, pero revienta la dimensionalidad si hay muchas, y dispersa la información en columnas raras.

Tres cuadrados de colores a la izquierda; a la derecha, tres filas de círculos donde en cada fila solo uno está relleno y los demás quedan vacíos.
La codificación uno activo convierte cada categoría en una columna binaria: se rellena un solo casillero por categoría, sin inventar orden ni distancias.

El problema de alta cardinalidad

Con miles de ciudades o códigos de producto, uno activo genera miles de columnas casi vacías que desestabilizan el modelo y lo hacen lentísimo. Ahí convienen codificaciones que comprimen: objetivo, de frecuencia, o agrupar las categorías minoritarias.

Codificación objetivo

Sustituye cada categoría por la media del objetivo en esa categoría: «ciudad» pasa a valer su tasa media de impago. Potentísima, pero peligrosísima: si calculas la media con los mismos datos que validas, filtrar la respuesta. Exige suavizado y cálculo fuera del pliegue.

Codificación de frecuencia

Reemplaza la categoría por cuántas veces aparece, comprimiendo cardinalidad e indicando qué tan típica es. No usa el objetivo, así que no filtra, pero puede confundir rareza con irrelevancia y aplasta categorías distintas de igual frecuencia.

Ordinal: cuando sí hay orden

Si las categorías tienen un orden natural —tallas, niveles de satisfacción—, una codización ordinal que preserve ese rango es más informativa que uno activo. Pero reservar el orden para cuando existe de verdad; imponerlo donde no hay es el error clásico.

Hashing

La técnica de dispersion asigna categorías a un número fijo de columnas mediante una función hash, acotando la dimensionalidad y aceptando colisiones. Útil en streaming o vocabularios enormes, donde enumerar todas las categorías es inviable.

Texto: bolsa de palabras

Para texto libre, la bolsa de palabras convierte documentos en vectores de recuento de términos, ignorando el orden. Con tf-idf se pondera la rareza del término. Es la puerta de entrada al procesado del lenguaje, antes de empaquetamientos más ricos.

Errores frecuentes

Ejemplo resuelto: codificar la ciudad de un cliente

Un modelo de impago recibe una columna «ciudad» con muchos valores y hay que volverla numérica sin mentir. El protocolo:

  1. Mirar la cardinalidad: si son pocas ciudades, uno activo basta; si son miles, conviene comprimir.
  2. Descartar un orden numérico falso: las ciudades son nominales, no ordinales.
  3. Elegir el método: uno activo para pocas, o codificación de frecuencia u objetivo para muchas.
  4. Si se usa la media del objetivo, calcularla solo con el entrenamiento y suavizar categorías raras.
  5. Verificar que ninguna categoría de validación desconocida rompe el vector.

¿Para qué sirve en la realidad?

Casi todo conjunto de datos real trae categorías —producto, zona, segmento, dispositivo—: codificarlas bien desbloquea su señal sin engañar al modelo, y elegir según cardinalidad y riesgo de fuga decide buena parte del resultado.

¿Por qué la codificación uno activo puede ser un problema para una categoría de miles de valores?

La codificación ordinal es apropiada para una variable nominal sin orden inherente.

Fuga en la codificación objetivo

El brillo peligroso de la codificación objetivo es que puede leer la respuesta. Se controla calculando cada media solo con el entrenamiento del pliegue y suavizándola hacia el global cuando la categoría tiene pocos casos. Bien hecha gana; mal hecha engaña.

Codificación

Una columna binaria por categoria
one hot
Sustituir categoria por media del objetivo
codificacion objetivo
Reemplazar por numero de apariciones
frequency encoding
Preservar orden real de categorias
ordinal
Fijar dimensionalidad con colisiones
hashing

Ordena la decisión para codificar una categoría:

Mirar
Orden
Elegir
Proteger

Une cada codificación con cuándo conviene.

Las categorías no saben de números

# Codificación de categorías
## One-hot
### pocas categorías
### sin orden falso
## Objetivo
### potente
### riesgo de fuga
## Frecuencia
### comprime
### sin mirar objetivo
## Hashing
### acota dimensiones
### admite colisiones

Variables categóricas en la práctica
Guía breve sobre uno activo y cómo tratar categorías con el modelo.

Una columna de «identificador de tienda» con tres mil valores mejora tu modelo al codificarla por objetivo, pero desconfías. ¿Qué comprobarías antes de creerlo?