Ordinal Encoding

Escrito por

en

¿Qué es Ordinal Encoding?

Ordinal Encoding es una técnica de transformación de datos utilizada para convertir variables categóricas en valores numéricos cuando existe un orden o jerarquía natural entre las categorías.

Muchos algoritmos de Machine Learning trabajan exclusivamente con datos numéricos y no pueden procesar directamente valores de texto como “Bajo”, “Medio” o “Alto”. Ordinal Encoding resuelve este problema asignando un número entero a cada categoría respetando su orden lógico.

Por ejemplo:

Nivel de satisfacciónValor codificado
Bajo1
Medio2
Alto3

En este caso, el modelo puede interpretar correctamente que “Alto” representa una categoría superior a “Medio” y “Medio” es superior a “Bajo”.

¿Cómo funciona Ordinal Encoding?

El proceso consiste en:

  • Identificar una variable categórica ordinal.
  • Definir el orden correcto de las categorías.
  • Asignar un valor numérico a cada nivel.
  • Sustituir las categorías originales por sus códigos numéricos.

Supongamos la siguiente variable:

Talla
Pequeña
Mediana
Grande
Extra Grande

Se puede codificar como:

TallaCódigo
Pequeña1
Mediana2
Grande3
Extra Grande4

De esta forma se conserva la relación jerárquica entre categorías.

Ejemplo práctico

Imaginemos un conjunto de datos de evaluación de clientes:

Valoración
Mala
Regular
Buena
Excelente

Aplicando Ordinal Encoding:

ValoraciónCódigo
Mala1
Regular2
Buena3
Excelente4

Ahora la variable puede utilizarse directamente en algoritmos de Machine Learning.

¿Por qué es necesario codificar variables categóricas?

Los modelos matemáticos trabajan con números y operaciones aritméticas. Cuando una variable contiene texto el algoritmo no puede calcular distancias, correlaciones o coeficientes. La codificación transforma estas categorías en valores numéricos manteniendo la información relevante para el modelo.

¿Cuándo utilizar Ordinal Encoding?

Esta técnica es recomendable cuando:

  • Existe una relación jerárquica entre categorías.
  • El orden de las categorías tiene significado.
  • Se desea conservar la información de ranking.
  • Las categorías representan niveles o escalas.

Ejemplos comunes:

  • Nivel educativo.
  • Grado de satisfacción.
  • Clasificación de riesgo.
  • Prioridad de incidencias.
  • Tallas de ropa.
  • Nivel de experiencia profesional.
  • Escalas de calidad.
  • Calificaciones académicas.

Casos donde NO debe utilizarse

No es recomendable cuando las categorías no tienen un orden natural.

Por ejemplo:

Color
Rojo
Azul
Verde

Si se codifican como:

ColorCódigo
Rojo1
Azul2
Verde3

el modelo podría interpretar incorrectamente que Verde es “mayor” que Azul y Azul es “mayor” que Rojo. En estos casos suele ser preferible utilizar One-Hot Encoding.

Beneficios de Ordinal Encoding

Entre sus principales beneficios destacan:

  • Convierte variables categóricas en datos numéricos.
  • Conserva el orden natural de las categorías.
  • Reduce la dimensionalidad.
  • Genera una única columna por variable.
  • Es fácil de interpretar.
  • Tiene bajo coste computacional.
  • Resulta eficiente para grandes volúmenes de datos.

Ventajas de Ordinal Encoding

Las principales ventajas son:

  • Implementación sencilla.
  • Consumo mínimo de memoria.
  • Compatible con prácticamente cualquier algoritmo.
  • Mantiene la información jerárquica.
  • Evita la explosión de dimensiones.
  • Facilita el procesamiento de grandes datasets.

Además, al generar una sola columna codificada, resulta especialmente útil cuando existen muchas observaciones.

Desventajas de Ordinal Encoding

También presenta algunas limitaciones:

  • Puede introducir relaciones numéricas artificiales.
  • Algunos algoritmos interpretan las diferencias entre categorías como distancias reales.
  • La asignación incorrecta del orden puede degradar el rendimiento del modelo.
  • No es adecuada para variables nominales.

Por ejemplo:

CategoríaCódigo
Bajo1
Medio2
Alto3

El algoritmo podría asumir que la diferencia entre Bajo y Medio es exactamente igual que entre Medio y Alto, lo cual no siempre es cierto.

Limitaciones

Antes de aplicar esta técnica conviene considerar que:

  • Requiere conocer el orden correcto de las categorías.
  • No refleja necesariamente distancias reales entre niveles.
  • Puede inducir sesgos en algunos modelos.
  • No resulta adecuada para variables sin jerarquía.
  • La codificación puede depender del contexto del problema.

Por ejemplo, una escala de satisfacción podría tener diferencias subjetivas entre categorías que no son uniformes.

Comparación con otras técnicas de codificación

CaracterísticaOrdinal EncodingOne-Hot EncodingTarget Encoding
Conserva el ordenNoParcialmente
Genera múltiples columnasNoNo
Adecuado para variables ordinalesNo
Adecuado para variables nominalesNo
Riesgo de sobreajusteBajoBajoAlto
Consumo de memoriaBajoAltoBajo

Ordinal Encoding vs One-Hot Encoding

AspectoOrdinal EncodingOne-Hot Encoding
Número de columnas1Una por categoría
Conserva jerarquíaNo
Uso de memoriaBajoAlto
Variables ordinalesExcelentePoco recomendable
Variables nominalesNo recomendadoExcelente

La regla general es sencilla:

  • Variables ordinales → Ordinal Encoding.
  • Variables nominales → One-Hot Encoding.

Aplicaciones en Data Science y Machine Learning

Ordinal Encoding aparece frecuentemente en:

  • Modelos de scoring crediticio.
  • Predicción de abandono de clientes.
  • Sistemas de evaluación de riesgos.
  • Recursos humanos.
  • Marketing analítico.
  • Segmentación de clientes.
  • Modelos de satisfacción del cliente.
  • Análisis educativo.
  • Predicción de calidad de productos.

También es habitual en datasets que contienen:

  • Niveles de satisfacción.
  • Rangos de ingresos.
  • Clasificaciones de riesgo.
  • Prioridades operativas.
  • Escalas de calidad.

Algoritmos donde suele utilizarse

Ordinal Encoding puede emplearse antes de algoritmos como:

  • Regresión logística.
  • Regresión lineal.
  • Árboles de decisión.
  • Random Forest.
  • Gradient Boosting.
  • XGBoost.
  • LightGBM.
  • Redes neuronales.
  • Máquinas de vectores de soporte (SVM).

No obstante, los algoritmos basados en distancias deben utilizarse con precaución, ya que podrían interpretar los códigos como magnitudes reales.

Implementación en Python

Scikit-Learn incluye la clase OrdinalEncoder para realizar esta transformación.

Ejemplo básico

import pandas as pd
from sklearn.preprocessing import OrdinalEncoder

df = pd.DataFrame({
    "satisfaccion": ["Baja", "Media", "Alta", "Media"]
})

encoder = OrdinalEncoder(
    categories=[["Baja", "Media", "Alta"]]
)

df["satisfaccion_codificada"] = encoder.fit_transform(
    df[["satisfaccion"]]
)

print(df)

Resultado:

  satisfaccion  satisfaccion_codificada
0        Baja                      0.0
1       Media                      1.0
2        Alta                      2.0
3       Media                      1.0

Codificación de múltiples variables

import pandas as pd
from sklearn.preprocessing import OrdinalEncoder

df = pd.DataFrame({
    "riesgo": ["Bajo", "Medio", "Alto"],
    "prioridad": ["Baja", "Media", "Alta"]
})

encoder = OrdinalEncoder(
    categories=[
        ["Bajo", "Medio", "Alto"],
        ["Baja", "Media", "Alta"]
    ]
)

df_codificado = encoder.fit_transform(df)

print(df_codificado)

Uso dentro de un Pipeline

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OrdinalEncoder
from sklearn.ensemble import RandomForestClassifier

pipeline = Pipeline([
    ("encoder", OrdinalEncoder(
        categories=[["Bajo", "Medio", "Alto"]]
    )),
    ("modelo", RandomForestClassifier())
])

pipeline.fit(X_train, y_train)

Este enfoque garantiza que la misma codificación se aplique tanto en entrenamiento como en producción.

Buenas prácticas

Al utilizar Ordinal Encoding es recomendable:

  • Verificar que existe un orden real entre categorías.
  • Definir explícitamente el orden.
  • Documentar la codificación utilizada.
  • Evitar aplicarlo a variables nominales.
  • Validar el impacto de la codificación sobre el rendimiento del modelo.
  • Utilizar pipelines para evitar inconsistencias.

Conclusión

Ordinal Encoding es una técnica fundamental de preparación de datos que permite transformar variables categóricas ordinales en valores numéricos preservando su estructura jerárquica. Su simplicidad, eficiencia y bajo consumo de memoria la convierten en una excelente opción cuando las categorías poseen un orden natural que aporta información relevante al modelo.

Sin embargo, debe utilizarse únicamente cuando existe una relación ordinal real entre las categorías. Aplicarla sobre variables nominales puede introducir relaciones artificiales y afectar negativamente al rendimiento de los algoritmos. Cuando se emplea correctamente, constituye una herramienta sencilla y eficaz para preparar datos categóricos en proyectos de Data Science y Machine Learning.