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:
| Valor | Percentil |
|---|---|
| 10 | 0% |
| 20 | 25% |
| 30 | 50% |
| 40 | 75% |
| 50 | 100% |
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 Original | Transformado |
|---|---|
| 10 | 0.00 |
| 20 | 0.25 |
| 30 | 0.50 |
| 40 | 0.75 |
| 50 | 1.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, 100000La 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ística | Min-Max | StandardScaler | RobustScaler | Quantile Transformer |
|---|---|---|---|---|
| Escala fija | Sí | No | No | Sí |
| Sensible a outliers | Sí | Sí | Baja | Muy baja |
| Reduce asimetría | No | No | No | Sí |
| Aproxima normalidad | No | No | No | Sí |
| Conserva distribución original | Sí | Sí | Sí | No |
| Transformación no lineal | No | No | No | Sí |
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.