Quantile Transformation

Transformación Basada en Cuantiles para Escalado y Normalización de Datos

Una de las técnicas más potentes para tratar con variables que presentan distribuciones altamente asimétricas, presencia de valores extremos o rangos muy diferentes entre sí es Quantile Transformation, una transformación no lineal que utiliza la posición relativa de cada observación dentro de la distribución para transformar los datos a una nueva escala.

A diferencia de técnicas como Min-Max Scaling o Standardization, que únicamente modifican la escala de los datos, Quantile Transformation también modifica la forma de la distribución, permitiendo obtener variables con una distribución uniforme o aproximadamente normal.

¿Qué es Quantile Transformation?

Quantile Transformation es una técnica de transformación basada en rangos que convierte los valores de una variable utilizando su posición relativa dentro de la distribución original.

El procedimiento consiste en:

  • Ordenar los datos.
  • Calcular el percentil o cuantíl correspondiente a cada observación.
  • Asignar un nuevo valor según una distribución objetivo.

Las distribuciones objetivo más utilizadas son:

  • Distribución uniforme.
  • Distribución normal (gaussiana).

Como resultado, la forma original de la distribución cambia completamente.

¿Cómo Funciona?

El proceso puede resumirse en tres etapas:

  • Ordenar las observaciones de menor a mayor.
  • Calcular la posición relativa de cada valor dentro de la distribución.
  • Transformar dicha posición a una nueva distribución objetivo.

Por ejemplo, supongamos los siguientes valores y las posiciones relativas:

ValorPercentil
100%
2025%
3050%
4075%
50100%

Posteriormente estos percentiles se proyectan sobre una nueva distribución.

Distribución Uniforme

Cuando se utiliza una distribución uniforme, cada observación se transforma a un valor comprendido entre 0 y 1.

El resultado presenta:

  • Valores distribuidos uniformemente.
  • Mismo número aproximado de observaciones en cada intervalo.

Ejemplo:

Valor OriginalTransformado
100.00
200.25
300.50
400.75
501.00

Distribución Normal

Cuando se selecciona una distribución normal como objetivo, los percentiles se transforman utilizando la función inversa de la distribución normal acumulada. El resultado es una variable que presenta una forma aproximadamente gaussiana. Esta opción es especialmente útil para algoritmos que asumen normalidad.

Ejemplo Práctico

ventas = [1000, 1500, 2000, 2500, 100000

La distribución presenta una fuerte asimetría positiva debido al valor extremo de 100000.

Tras aplicar Quantile Transformation:

  • Los ingresos se redistribuyen según sus posiciones relativas.
  • El valor extremo deja de dominar la escala.
  • La distribución se vuelve mucho más equilibrada.
ventas_transformadas = [0.00, 0.25, 0.50, 0.75, 1.00]

Beneficios de Quantile Transformation

  • Reduce significativamente la asimetría.
  • Disminuye el impacto de valores atípicos.
  • Puede aproximar una distribución normal.
  • Permite obtener una distribución uniforme.
  • Facilita el entrenamiento de algoritmos sensibles a la distribución.
  • Mejora la estabilidad de ciertos modelos estadísticos.
  • Funciona correctamente con distribuciones muy complejas.

¿Cuándo Utilizar Quantile Transformation?

  • Existen distribuciones altamente sesgadas.
  • Hay presencia de valores extremos importantes.
  • Se necesita aproximar una distribución normal.
  • Los métodos de escalado tradicionales no producen buenos resultados.
  • Se trabaja con algoritmos sensibles a la forma de la distribución.

Ventajas

  • Es robusta frente a valores atípicos.
  • Reduce eficazmente la asimetría.
  • Puede transformar distribuciones muy complejas.
  • No depende de la media ni de la desviación estándar.
  • Permite elegir entre distribución uniforme o normal.
  • Suele mejorar el comportamiento de muchos algoritmos de Machine Learning.
  • Funciona correctamente con datos no gaussianos.

Desventajas

  • Modifica completamente la forma original de la distribución.
  • Puede dificultar la interpretación de los resultados.
  • La relación lineal entre variables puede alterarse.
  • Los valores transformados dejan de tener unidades interpretables.
  • Puede generar sobreajuste si se utiliza incorrectamente.
  • Requiere más procesamiento que técnicas simples de escalado.

Limitaciones

  • No conserva la distribución original.
  • Puede afectar la interpretabilidad de las variables.
  • No siempre mejora el rendimiento del modelo.
  • Puede distorsionar relaciones estadísticas importantes.
  • Su comportamiento puede variar cuando aparecen nuevos datos fuera del rango observado durante el entrenamiento.

Por este motivo, debe utilizarse después de analizar cuidadosamente la naturaleza de los datos y los requisitos del modelo.

Comparación con Otros Métodos de Escalado

CaracterísticaMin-MaxStandardScalerRobustScalerQuantile Transformer
Escala fijaNoNo
Sensible a outliersBajaMuy baja
Reduce asimetríaNoNoNo
Aproxima normalidadNoNoNo
Conserva distribución originalNo
Transformación no linealNoNoNo

Aplicaciones en Data Science y Machine Learning

Quantile Transformation se utiliza frecuentemente en:

  • Regresión Lineal.
  • Regresión Logística.
  • Support Vector Machines (SVM).
  • Redes Neuronales.
  • PCA.
  • Clustering.
  • Sistemas de detección de anomalías.
  • Modelos estadísticos que requieren normalidad aproximada.

También resulta útil en procesos de preparación de datos donde existen distribuciones altamente sesgadas o con colas largas.

Implementación en Python

Aplicación Básica con Distribución Uniforme

from sklearn.preprocessing import QuantileTransformer
import pandas as pd

df = pd.DataFrame({
    "ingresos": [1000, 1500, 2000, 2500, 100000]
})

qt = QuantileTransformer(
    output_distribution="uniform"
)

df["ingresos_transformados"] = qt.fit_transform(
    df[["ingresos"]]
)

print(df)

Aplicación con Distribución Normal

from sklearn.preprocessing import QuantileTransformer

qt = QuantileTransformer(
    output_distribution="normal"
)

X_transformado = qt.fit_transform(X)

Ajuste del Número de Cuantiles

from sklearn.preprocessing import QuantileTransformer

qt = QuantileTransformer(
    n_quantiles=1000,
    output_distribution="normal"
)

X_transformado = qt.fit_transform(X)

Uso dentro de un Pipeline

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import QuantileTransformer
from sklearn.linear_model import LogisticRegression

pipeline = Pipeline([
    (
        "quantile",
        QuantileTransformer(
            output_distribution="normal"
        )
    ),
    (
        "model",
        LogisticRegression()
    )
])

pipeline.fit(X_train, y_train)

Esta estrategia evita problemas de data leakage y garantiza que la transformación se aplique correctamente durante el entrenamiento y la inferencia.

Buenas Prácticas

Al utilizar Quantile Transformation es recomendable:

  • Analizar la distribución original antes de aplicar la transformación.
  • Comparar los resultados con Box-Cox y Yeo-Johnson.
  • Ajustar el transformador únicamente con los datos de entrenamiento.
  • Aplicar exactamente la misma transformación sobre los datos de prueba.
  • Evaluar el impacto sobre la interpretabilidad de las variables.
  • Verificar si realmente mejora el rendimiento del modelo.

Conclusión

Quantile Transformation es una de las técnicas de transformación más potentes disponibles en Scikit-Learn para tratar distribuciones complejas, altamente asimétricas y con presencia de valores extremos. Su enfoque basado en cuantiles permite transformar los datos hacia distribuciones uniformes o aproximadamente normales, reduciendo significativamente el impacto de los outliers y mejorando la calidad de las variables utilizadas en el modelado.

Aunque modifica la forma original de la distribución y puede dificultar la interpretación de los resultados, constituye una herramienta muy valiosa cuando las técnicas de escalado tradicionales no son suficientes para preparar adecuadamente los datos para el análisis o el entrenamiento de modelos de Machine Learning.