Binary Encoding

Escrito por

en

¿Qué es Binary Encoding?

Binary Encoding es una técnica de codificación de variables categóricas diseñada para representar categorías mediante números binarios. Su objetivo principal es reducir la dimensionalidad generada por técnicas como One-Hot Encoding sin perder la capacidad de transformar variables categóricas en datos numéricos utilizables por algoritmos de Machine Learning.

Esta técnica combina conceptos de Label Encoding y representación binaria. Primero asigna un identificador numérico a cada categoría y posteriormente convierte dicho identificador a formato binario.

Cada bit de la representación binaria se almacena en una columna independiente.

Binary Encoding es especialmente útil cuando se trabaja con variables categóricas de alta cardinalidad, es decir, variables que contienen un gran número de categorías distintas.

¿Cómo funciona?

El proceso consiste en:

  • Identificar las categorías únicas de la variable.
  • Asignar un identificador numérico a cada categoría.
  • Convertir cada identificador a representación binaria.
  • Crear una columna para cada bit generado.
  • Sustituir la variable original por las nuevas columnas binarias.

La conversión de un número decimal a binario puede expresarse como:

$$13_{10}=1101_{2}$$

Por ejemplo:

CategoríaIdentificadorBinario
A1001
B2010
C3011
D4100

Cada dígito binario se convierte en una nueva característica.

Ejemplo de Binary Encoding

Supongamos la siguiente variable:

Ciudad
Madrid
Barcelona
Sevilla
Valencia

Asignamos un identificador:

CiudadCódigo
Madrid1
Barcelona2
Sevilla3
Valencia4

Convertimos cada código a binario:

CiudadBinario
Madrid001
Barcelona010
Sevilla011
Valencia100

Finalmente, cada bit se almacena en una columna independiente:

CiudadBit_1Bit_2Bit_3
Madrid001
Barcelona010
Sevilla011
Valencia100

La variable categórica original queda completamente transformada en variables numéricas.

¿Por qué utilizar Binary Encoding?

Cuando una variable posee muchas categorías, One-Hot Encoding puede generar una enorme cantidad de columnas.

Por ejemplo:

  • 1.000 categorías → 1.000 columnas con One-Hot Encoding.
  • 1.000 categorías → aproximadamente 10 columnas con Binary Encoding.

Esto ocurre porque el número de columnas necesarias crece de forma logarítmica:

$$Columnas=\lceil\log_2(k)\rceil$$

Donde:

  • (k) es el número de categorías.
  • (\lceil \cdot \rceil) representa el redondeo hacia arriba.

Esta propiedad convierte a Binary Encoding en una técnica muy eficiente para variables de alta cardinalidad.

Beneficios de Binary Encoding

  • Reduce significativamente la dimensionalidad.
  • Genera menos columnas que One-Hot Encoding.
  • Funciona bien con variables de alta cardinalidad.
  • Disminuye el consumo de memoria.
  • Mantiene una representación numérica compacta.
  • Facilita el entrenamiento de modelos sobre grandes datasets.
  • Puede mejorar el rendimiento computacional.

¿Cuándo utilizar Binary Encoding?

  • Existen muchas categorías distintas.
  • One-Hot Encoding genera demasiadas columnas.
  • Se busca un equilibrio entre simplicidad y eficiencia.
  • Se trabaja con conjuntos de datos grandes.
  • La variable presenta alta cardinalidad.

Casos habituales:

  • Ciudades.
  • Códigos postales.
  • Productos.
  • Clientes.
  • Identificadores de usuario.
  • Categorías de comercio electrónico.

Ventajas

  • Menor dimensionalidad que One-Hot Encoding.
  • Escalabilidad para miles de categorías.
  • Bajo consumo de memoria.
  • Fácil integración en pipelines.
  • Compatible con la mayoría de algoritmos.
  • Reduce el riesgo de matrices extremadamente dispersas.
  • Conserva más información que algunas técnicas basadas en frecuencia.

Desventajas

  • Menos interpretable que One-Hot Encoding.
  • Introduce relaciones numéricas artificiales derivadas de la codificación.
  • Puede resultar difícil explicar cada columna generada.
  • Algunas categorías comparten parte de sus bits.
  • No incorpora información sobre la variable objetivo.

Por ejemplo:

CategoríaBinario
A0101
B0110

Ambas categorías comparten parte de la representación binaria, aunque no exista relación real entre ellas.

Limitaciones

  • No refleja similitudes semánticas entre categorías.
  • No utiliza información de la variable objetivo.
  • La interpretación de los bits no es intuitiva.
  • Puede generar relaciones artificiales entre categorías.
  • No siempre supera a One-Hot Encoding en rendimiento predictivo.

Además, algunos modelos lineales pueden verse afectados por las dependencias implícitas introducidas por la representación binaria.

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

CaracterísticaBinary EncodingOne-Hot EncodingOrdinal EncodingTarget Encoding
Incrementa dimensionalidadModeradamenteMuchoNoNo
Adecuado para alta cardinalidadNo
Utiliza información del targetNoNoNo
InterpretabilidadMediaAltaAltaMedia
Consumo de memoriaBajoAltoMuy bajoBajo
Riesgo de sobreajusteBajoBajoBajoAlto

Binary Encoding vs One-Hot Encoding

AspectoBinary EncodingOne-Hot Encoding
Número de columnasBajoAlto
Alta cardinalidadExcelenteProblemática
InterpretabilidadMediaAlta
Consumo de memoriaBajoAlto
Matrices dispersasMenoresMayores

Binary Encoding suele ser una alternativa muy atractiva cuando el número de categorías es elevado.

Binary Encoding vs Ordinal Encoding

AspectoBinary EncodingOrdinal Encoding
Número de columnasVariasUna
Preserva orden naturalNo
Adecuado para variables nominalesNo
Riesgo de relaciones artificialesMedioAlto
Alta cardinalidadExcelenteBuena

Aplicaciones en Data Science y Machine Learning

Binary Encoding aparece frecuentemente en:

  • Sistemas de recomendación.
  • Comercio electrónico.
  • Marketing digital.
  • Predicción de fraude.
  • Segmentación de clientes.
  • Modelos de scoring.
  • Analítica de usuarios.
  • Predicción de abandono.
  • Sistemas de clasificación.

Es especialmente útil en proyectos donde las variables categóricas contienen cientos o miles de categorías.

Algoritmos donde suele utilizarse

Binary Encoding puede utilizarse antes de algoritmos como:

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

Su capacidad para reducir dimensionalidad lo convierte en una opción interesante para muchos tipos de modelos.

Implementación en Python

La forma más sencilla de aplicar Binary Encoding es mediante la biblioteca category_encoders.

pip install category_encoders

Ejemplo básico

import pandas as pd
import category_encoders as ce

df = pd.DataFrame({
    "ciudad": [
        "Madrid",
        "Barcelona",
        "Sevilla",
        "Valencia"
    ]
})

encoder = ce.BinaryEncoder(
    cols=["ciudad"]
)

df_encoded = encoder.fit_transform(df)

print(df_encoded)
   ciudad_0  ciudad_1  ciudad_2
0         0         0         1
1         0         1         0
2         0         1         1
3         1         0         0

Codificación de múltiples variables

import category_encoders as ce

encoder = ce.BinaryEncoder(
    cols=["ciudad", "producto"]
)

df_encoded = encoder.fit_transform(df)

Uso dentro de un Pipeline

from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier
import category_encoders as ce

pipeline = Pipeline([
    ("encoder",
     ce.BinaryEncoder(cols=["ciudad"])),
    ("modelo",
     RandomForestClassifier())
])

pipeline.fit(X_train, y_train)

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

Buenas prácticas

Al utilizar Binary Encoding es recomendable:

  • Aplicar la codificación únicamente sobre variables categóricas.
  • Ajustar el encoder usando exclusivamente los datos de entrenamiento.
  • Gestionar adecuadamente categorías no vistas.
  • Comparar su rendimiento con One-Hot Encoding y Target Encoding.
  • Evaluar el impacto sobre la interpretabilidad del modelo.

Conclusión

Binary Encoding es una técnica eficiente para transformar variables categóricas mediante representaciones binarias compactas. Su principal ventaja es la reducción significativa de dimensionalidad respecto a One-Hot Encoding, lo que la convierte en una excelente opción para variables de alta cardinalidad.

Aunque introduce cierta complejidad en la interpretación de los datos y puede generar relaciones artificiales entre categorías, ofrece un equilibrio muy interesante entre eficiencia computacional, consumo de memoria y capacidad predictiva. Por ello, es una técnica ampliamente utilizada en proyectos de Data Science y Machine Learning que manejan grandes volúmenes de categorías.