Count Encoding

Escrito por

en

¿Qué es Count Encoding?

Count Encoding es una técnica de codificación de variables categóricas que sustituye cada categoría por el número de veces que aparece en el conjunto de datos.

En lugar de crear múltiples columnas, como ocurre con One-Hot Encoding, o asignar identificadores arbitrarios, como en Label Encoding, Count Encoding utiliza información estadística real para representar las categorías mediante su frecuencia absoluta de aparición.

Esta técnica resulta especialmente útil cuando se trabaja con variables de alta cardinalidad, es decir, variables que contienen un gran número de categorías distintas.

Por ejemplo, si una categoría aparece 500 veces en el conjunto de datos, será reemplazada por el valor 500.

¿Cómo funciona?

El proceso consiste en:

  • Identificar todas las categorías únicas de una variable.
  • Contar el número de apariciones de cada categoría.
  • Crear un diccionario de correspondencia entre categoría y número de ocurrencias.
  • Sustituir cada categoría por su conteo correspondiente.

La transformación puede expresarse como:

$$Count(c)=\sum_{i=1}^{N}I(x_i=c)$$

Donde:

  • (c) representa una categoría.
  • (I(x_i=c)) es una función indicadora que vale 1 cuando la observación pertenece a la categoría (c).
  • (N) es el número total de observaciones.

El resultado es un valor numérico que representa cuántas veces aparece cada categoría dentro del conjunto de datos.

Ejemplo de Count Encoding

Supongamos la siguiente variable:

Ciudad
Madrid
Barcelona
Madrid
Sevilla
Madrid
Barcelona

Calculamos el número de apariciones:

CiudadConteo
Madrid3
Barcelona2
Sevilla1

Tras aplicar Count Encoding:

Ciudad OriginalCiudad Codificada
Madrid3
Barcelona2
Madrid3
Sevilla1
Madrid3
Barcelona2

Cada categoría queda representada por su número total de apariciones.

Diferencia entre Count Encoding y Frequency Encoding

Ambas técnicas son muy similares, pero utilizan escalas distintas.

CaracterísticaCount EncodingFrequency Encoding
Valor asignadoNúmero de aparicionesProporción de apariciones
EscalaEnterosDecimales
Depende del tamaño del datasetNo
InterpretaciónConteo absolutoFrecuencia relativa

Por ejemplo:

CiudadCount EncodingFrequency Encoding
Madrid3000.60
Barcelona1500.30
Sevilla500.10

Ambas técnicas contienen la misma información, pero representada de forma diferente.

¿Por qué utilizar Count Encoding?

Cuando una variable contiene cientos o miles de categorías, One-Hot Encoding puede generar una enorme cantidad de columnas.

Por ejemplo:

  • Código postal.
  • Ciudad.
  • Producto.
  • Cliente.
  • Proveedor.
  • Marca.

Count Encoding permite mantener una única columna y reducir significativamente el tamaño del conjunto de datos.

Beneficios de Count Encoding

  • Reduce la dimensionalidad.
  • Mantiene una sola columna por variable.
  • Es sencillo de implementar.
  • Utiliza información estadística real.
  • Funciona bien con variables de alta cardinalidad.
  • Reduce el consumo de memoria.
  • Puede acelerar el entrenamiento de modelos.

¿Cuándo utilizar Count Encoding?

  • Existen muchas categorías distintas.
  • Se desea evitar la explosión dimensional.
  • El número de apariciones de una categoría aporta información relevante.
  • Se trabaja con grandes volúmenes de datos.
  • Se busca una representación compacta.

Casos habituales:

  • Comercio electrónico.
  • Sistemas de recomendación.
  • Marketing digital.
  • Predicción de fraude.
  • Segmentación de clientes.
  • Modelos de scoring.

Ventajas

  • Bajo consumo de memoria.
  • No genera columnas adicionales.
  • Escala bien en datasets grandes.
  • Compatible con la mayoría de algoritmos.
  • Aprovecha información estadística de la variable.
  • Adecuado para variables de alta cardinalidad.

Desventajas

  • Categorías diferentes pueden recibir exactamente el mismo valor.
  • Se pierde parte de la identidad de las categorías.
  • No captura relaciones semánticas.
  • No utiliza información de la variable objetivo.
  • Puede generar ambigüedad cuando varias categorías tienen el mismo conteo.

Por ejemplo:

CategoríaConteo
A100
B100

Tras la codificación, ambas categorías serán indistinguibles para el modelo.

Limitaciones

  • No incorpora información predictiva de la variable objetivo.
  • No refleja similitud entre categorías.
  • Puede perder capacidad discriminativa.
  • Las categorías raras pueden quedar infrarrepresentadas.
  • Los conteos dependen del conjunto de entrenamiento.

Además, si la distribución de categorías cambia con el tiempo, los valores calculados inicialmente pueden dejar de representar adecuadamente los datos futuros.

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

CaracterísticaCount EncodingOne-Hot EncodingOrdinal EncodingTarget Encoding
Mantiene una sola columnaNo
Adecuado para alta cardinalidadNo
Utiliza información del targetNoNoNo
Riesgo de sobreajusteBajoBajoBajoAlto
Incrementa dimensionalidadNoNoNo
Preserva categorías individualmenteParcialmenteParcialmente

Count Encoding vs One-Hot Encoding

AspectoCount EncodingOne-Hot Encoding
Número de columnasUnaUna por categoría
Alta cardinalidadExcelenteProblemática
Consumo de memoriaBajoAlto
Velocidad de entrenamientoAltaMenor
Conservación de categoríasParcialTotal

Count Encoding vs Frequency Encoding

AspectoCount EncodingFrequency Encoding
Valores generadosConteos absolutosFrecuencias relativas
Escala dependiente del tamaño del datasetNo
InterpretaciónNúmero de aparicionesProporción de apariciones
Información contenidaEquivalenteEquivalente

En muchos problemas ambos métodos ofrecen resultados muy similares.

Aplicaciones en Data Science y Machine Learning

Count Encoding aparece frecuentemente en:

  • Sistemas de recomendación.
  • Predicción de fraude.
  • Marketing analítico.
  • Comercio electrónico.
  • Segmentación de clientes.
  • Predicción de abandono.
  • Scoring crediticio.
  • Análisis de comportamiento de usuarios.
  • Modelos de clasificación.

Es especialmente útil cuando se trabaja con variables categóricas de alta cardinalidad que hacen inviable el uso de One-Hot Encoding.

Algoritmos donde suele utilizarse

Count Encoding puede utilizarse antes de algoritmos como:

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

Al mantener una representación compacta, suele facilitar el entrenamiento en grandes conjuntos de datos.

Implementación en Python

Utilizando Pandas

import pandas as pd

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

conteos = df["ciudad"].value_counts()

df["ciudad_count"] = df["ciudad"].map(conteos)

print(df)
      ciudad  ciudad_count
0     Madrid             3
1  Barcelona             2
2     Madrid             3
3    Sevilla             1
4     Madrid             3
5  Barcelona             2

Aplicación sobre múltiples columnas

import pandas as pd

columnas = ["ciudad", "producto"]

for columna in columnas:
    conteos = df[columna].value_counts()
    df[columna] = df[columna].map(conteos)

Creando un transformador personalizado

from sklearn.base import BaseEstimator, TransformerMixin

class CountEncoder(
    BaseEstimator,
    TransformerMixin
):

    def fit(self, X, y=None):
        self.count_map = (
            X.iloc[:, 0]
            .value_counts()
            .to_dict()
        )
        return self

    def transform(self, X):
        return X.iloc[:, 0].map(
            self.count_map
        ).to_frame()

Uso dentro de un Pipeline

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

pipeline = Pipeline([
    ("encoder", CountEncoder()),
    ("modelo", RandomForestClassifier())
])

pipeline.fit(X_train, y_train)

Este enfoque garantiza que el mismo mapeo calculado durante el entrenamiento se aplique posteriormente a nuevos datos.

Buenas prácticas

Al utilizar Count Encoding es recomendable:

  • Calcular los conteos únicamente sobre el conjunto de entrenamiento.
  • Aplicar exactamente el mismo mapeo al conjunto de prueba.
  • Definir una estrategia para categorías no vistas.
  • Evaluar posibles colisiones entre categorías con igual conteo.
  • Comparar su rendimiento frente a Frequency Encoding y One-Hot Encoding.

Conclusión

Count Encoding es una técnica de codificación eficiente que sustituye cada categoría por su número de apariciones dentro del conjunto de datos. Gracias a su simplicidad y capacidad para manejar variables de alta cardinalidad, se ha convertido en una alternativa muy útil cuando One-Hot Encoding resulta costoso en términos de memoria y dimensionalidad.

Aunque puede perder información cuando varias categorías comparten el mismo conteo y no incorpora información de la variable objetivo, sigue siendo una herramienta valiosa para representar variables categóricas de forma compacta y eficiente en numerosos proyectos de Data Science y Machine Learning.