Rank Gaussian Transformation

Transformación Basada en Rangos para Aproximar una Distribución Normal

En Data Science y Machine Learning, muchas variables presentan distribuciones altamente asimétricas, colas largas o una gran cantidad de valores atípicos. Estas características pueden afectar el rendimiento de ciertos algoritmos, especialmente aquellos que funcionan mejor cuando los datos siguen una distribución aproximadamente normal.

Para abordar el problema de distribuciones altamente asimétricas, colas largas o una gran cantidad de valores atípicos, existen diversas técnicas de transformación. Entre ellas destaca la Rank Gaussian Transformation, una técnica robusta que combina el uso de rangos con la transformación hacia una distribución normal.

Su principal ventaja es que no depende de los valores originales de la variable, sino de su posición relativa dentro de la distribución, lo que la hace especialmente resistente a los valores extremos y adecuada para variables con distribuciones complejas.

¿Qué es Rank Gaussian Transformation?

La Rank Gaussian Transformation, también conocida como:

  • Rank Normalization.
  • RankGauss.
  • Inverse Normal Transformation.
  • Rank-Based Gaussian Transformation.

Es una técnica que transforma una variable en una distribución aproximadamente normal utilizando los rangos de las observaciones. En lugar de trabajar directamente con los valores originales, el procedimiento:

  • Ordena los datos.
  • Asigna un rango a cada observación.
  • Convierte dichos rangos en probabilidades acumuladas.
  • Aplica la función inversa de la distribución normal.

El resultado es una variable cuya distribución se asemeja a una distribución gaussiana estándar.

¿Cómo Funciona?

La transformación se realiza en varias etapas.

Paso 1: Ordenar los datos

Supongamos la siguiente variable:

var = [5, 10, 20, 50, 100]

Al ordenarla obtenemos:

rango = [1, 2, 3, 4, 5]

Paso 2: Convertir rangos en probabilidades

Cada rango se transforma en una posición relativa dentro de la distribución. Una fórmula habitual es:

$$=\frac{r-0.5}{n}$$

Donde:

  • r es el rango.
  • n es el número de observaciones.
  • p es la probabilidad acumulada.

Paso 3: Aplicar la función inversa normal

Posteriormente se utiliza la función inversa de la distribución normal acumulada:

$$z=\Phi^{-1}(p)$$

Donde:

  • Φ⁻¹ representa la función cuantílica de la distribución normal.
  • z es el valor transformado.

El resultado final presenta una distribución cercana a una normal estándar.

Beneficios de Rank Gaussian Transformation

  • Reduce significativamente la asimetría.
  • Aproxima la distribución a una normal.
  • Es extremadamente robusta frente a outliers.
  • Reduce el impacto de colas largas.
  • Facilita el trabajo con distribuciones complejas.
  • No requiere asumir ninguna forma previa de distribución.
  • Suele mejorar el comportamiento de modelos sensibles a la normalidad.

¿Cuándo Utilizar Rank Gaussian Transformation?

  • Existen distribuciones muy asimétricas.
  • Hay una gran cantidad de valores extremos.
  • Los datos presentan colas largas.
  • Se desea aproximar una distribución normal.
  • Box-Cox o Yeo-Johnson no ofrecen resultados satisfactorios.
  • Se utilizan algoritmos sensibles a la distribución de las variables.

También es frecuente en conjuntos de datos tabulares utilizados en competiciones de Machine Learning.

Ventajas

  • Muy robusta frente a valores atípicos.
  • Reduce eficazmente la asimetría.
  • Aproxima la distribución a una normal estándar.
  • Funciona correctamente con variables complejas.
  • No requiere optimización de parámetros.
  • Puede mejorar la convergencia de algunos algoritmos.
  • Es independiente de la escala original de los datos.

Desventajas

  • La interpretación de los valores transformados resulta difícil.
  • Se pierde la escala original de la variable.
  • Modifica completamente la distribución inicial.
  • Puede alterar relaciones lineales entre variables.
  • No siempre mejora el rendimiento predictivo.
  • Puede complicar la explicación de resultados a usuarios de negocio.

Limitaciones

  • No conserva las unidades originales.
  • La transformación es completamente no lineal.
  • Puede distorsionar ciertas relaciones estadísticas.
  • No siempre es adecuada para modelos que requieren interpretabilidad.
  • Su efecto puede variar cuando aparecen nuevos datos fuera de la distribución observada durante el entrenamiento.

Por este motivo suele utilizarse principalmente en contextos donde el rendimiento predictivo es más importante que la interpretabilidad.

Diferencias con Quantile Transformation

Aunque ambas técnicas son muy similares, existen algunas diferencias conceptuales.

CaracterísticaQuantile TransformationRank Gaussian Transformation
Utiliza rangos
Utiliza percentiles
Distribución uniformeNo
Distribución normal
Transformación basada en cuantiles
Aproximación gaussiana explícitaOpcional
Robustez frente a outliersAltaMuy alta

En la práctica, la implementación de QuantileTransformer con salida normal genera resultados muy similares a una Rank Gaussian Transformation.

Aplicaciones en Data Science y Machine Learning

Rank Gaussian Transformation se utiliza frecuentemente en:

  • Regresión Lineal.
  • Regresión Logística.
  • Redes Neuronales.
  • Support Vector Machines (SVM).
  • PCA.
  • Clustering.
  • Modelos de detección de anomalías.
  • Sistemas de recomendación.
  • Competiciones de Machine Learning.

Ha sido especialmente popular en plataformas como Kaggle, donde numerosos participantes la utilizan para mejorar el comportamiento de variables altamente sesgadas.

Implementación en Python

Scikit-Learn no dispone de una clase denominada específicamente “RankGaussianTransformer“, pero puede obtenerse un comportamiento prácticamente equivalente mediante QuantileTransformer con distribución normal.

Implementación con QuantileTransformer

from sklearn.preprocessing import QuantileTransformer

transformer = QuantileTransformer(
    output_distribution="normal"
)

X_transformado = transformer.fit_transform(X)

Aplicación sobre un DataFrame

import pandas as pd
from sklearn.preprocessing import QuantileTransformer

df = pd.DataFrame({
    "ingresos": [1000, 1200, 1500, 3000, 50000]
})

transformer = QuantileTransformer(
    output_distribution="normal"
)

df["ingresos_rankgauss"] = transformer.fit_transform(
    df[["ingresos"]]
)

print(df)

Configuración del Número de Cuantiles

from sklearn.preprocessing import QuantileTransformer

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

X_transformado = transformer.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([
    (
        "rank_gauss",
        QuantileTransformer(
            output_distribution="normal"
        )
    ),
    (
        "model",
        LogisticRegression()
    )
])

pipeline.fit(X_train, y_train)

Esta es la estrategia recomendada para evitar problemas de data leakage durante el entrenamiento.

Buenas Prácticas

  • Analizar previamente la distribución de las variables.
  • Comparar los resultados con Box-Cox y Yeo-Johnson.
  • Aplicar la transformación únicamente sobre variables numéricas.
  • Ajustar el transformador únicamente con los datos de entrenamiento.
  • Evaluar el impacto sobre la interpretabilidad.
  • Verificar que la transformación mejora realmente el rendimiento del modelo.

Conclusión

La Rank Gaussian Transformation es una técnica avanzada de transformación basada en rangos que permite convertir distribuciones complejas y altamente asimétricas en distribuciones aproximadamente normales. Gracias a su enfoque basado en posiciones relativas, resulta extremadamente robusta frente a valores atípicos y distribuciones con colas largas.

Aunque implica la pérdida de la escala original y puede dificultar la interpretación de los resultados, constituye una herramienta muy valiosa cuando se busca mejorar la calidad de las variables utilizadas por algoritmos sensibles a la distribución de los datos. Por ello, se ha convertido en una técnica ampliamente utilizada en Machine Learning moderno, especialmente en problemas tabulares donde la normalización avanzada puede aportar mejoras significativas al rendimiento predictivo.