Transformación Yeo-Johnson

Muchos algoritmos funcionan mejor cuando las variables presentan una distribución aproximadamente normal. Para lograrlo, existen diversas técnicas de transformación matemática, entre ellas la Transformación Yeo-Johnson, una de las más versátiles debido a que puede aplicarse tanto a valores positivos como negativos.

Esta técnica fue propuesta por In-Kwon Yeo y Richard A. Johnson en el año 2000 como una extensión de la Transformación Box-Cox, eliminando una de sus principales limitaciones: la necesidad de trabajar exclusivamente con valores positivos.

¿Qué es la Transformación Yeo-Johnson?

La Transformación Yeo-Johnson es un método de transformación de potencia (Power Transformation) diseñado para reducir la asimetría de una variable y acercar su distribución a una forma normal. Su principal objetivo es:

  • Reducir la asimetría.
  • Disminuir el impacto de valores extremos.
  • Estabilizar la varianza.
  • Mejorar el comportamiento estadístico de los datos.
  • Facilitar el aprendizaje de modelos sensibles a la distribución de las variables.

A diferencia de Box-Cox, Yeo-Johnson puede trabajar con:

  • Valores positivos.
  • Valores negativos.
  • Valores iguales a cero.

Por ello se ha convertido en una de las transformaciones más utilizadas en los procesos modernos de preprocesamiento de datos.

Fundamento Matemático

La transformación utiliza un parámetro λ (lambda), que controla el grado de transformación aplicado a los datos.

Para valores positivos (x ≥ 0)

$$y=\frac{(x+1)^{\lambda}-1}{\lambda},\quad \lambda\neq0$$

Cuando λ = 0:

$$y=\ln(x+1)$$

Para valores negativos (x < 0)

$$y=-\frac{(-x+1)^{2-\lambda}-1}{2-\lambda},\quad \lambda\neq2$$

Cuando λ = 2:

$$y=-\ln(-x+1)$$

Interpretación del parámetro λ

El parámetro λ determina la intensidad de la transformación.

Valor de λEfecto
λ = 1Sin transformación
λ < 1Reduce asimetría positiva
λ = 0Similar a transformación logarítmica
λ > 1Expande ciertas regiones de los datos
λ < 0Compresión más agresiva

El valor óptimo suele calcularse automáticamente mediante máxima verosimilitud (Maximum Likelihood Estimation).

¿Cómo Funciona?

El procedimiento general es:

  • Paso 1: Analizar la distribución: Se identifica si la variable presenta: asimetría positiva, negativa o varianza inestable.
  • Paso 2: Estimar λ: El algoritmo busca el valor de λ que mejor aproxima la distribución a una distribución normal.
  • Paso 3: Aplicar la transformación: Cada observación se transforma utilizando la fórmula correspondiente según sea positiva o negativa.
  • Paso 4: Evaluar el resultado: Se comprueban: histograma, skewness, curtosis y test de normalidad.

Beneficios de la Transformación Yeo-Johnson

  • 1. Admite valores negativos: Es su principal ventaja frente a Box-Cox. No requiere desplazar los datos para volverlos positivos.
  • 2. Reduce la asimetría: Permite acercar la distribución a una forma más normal. Esto facilita el aprendizaje de numerosos algoritmos estadísticos.
  • 3. Estabiliza la varianza: Variables con dispersión heterogénea suelen comportarse mejor tras la transformación.
  • 4. Reduce el efecto de valores extremos: Aunque no elimina outliers, disminuye su influencia sobre el modelo.
  • 5. Automatiza la búsqueda del mejor λ: No es necesario seleccionar manualmente el parámetro. Las librerías modernas calculan automáticamente el valor óptimo.

¿Cuándo Utilizar Yeo-Johnson?

  • Es recomendable cuando existen valores negativos. Algunos tipos de datos pueden tener valores positivos como el beneficio neto, rendimientos financieros, variaciones porcentuales y temperaturas.
  • Hay una fuerte asimetría, como sucede en ingresos, ventas, gastos y clientes.
  • Se utilizarán algoritmos sensibles a la escala y distribución como:
    • Regresión Lineal.
    • Regresión Logística.
    • Redes Neuronales.
    • Análisis Discriminante.
    • PCA.
  • Se busca aproximar una distribución normal: especialmente en modelos estadísticos clásicos.

Ventajas

  • Mayor flexibilidad que Box-Cox: puede trabajar con cualquier valor real.
  • Menor necesidad de ingeniería manual: no requiere sumar constantes para eliminar negativos.
  • Compatible con pipelines de Machine Learning: puede integrarse fácilmente dentro de procesos automatizados.
  • Fácil implementación: Scikit-Learn la incluye de forma nativa.

Desventajas

  • Menor interpretabilidad:
    • Después de la transformación:
    • Los valores dejan de tener significado directo.
    • Las unidades originales se pierden temporalmente.
  • No garantiza normalidad perfecta: la distribución puede mejorar considerablemente sin llegar a ser completamente normal.
  • Puede no aportar beneficios: Algunos algoritmos modernos son robustos frente a distribuciones asimétricas. Por ejemplo:
    • Random Forest.
    • XGBoost.
    • LightGBM.
    • CatBoost.

Limitaciones

Aunque es una técnica muy potente, tiene ciertas limitaciones.

  • No elimina outliers: solo reduce parcialmente su impacto. Si existen valores extremos muy severos, puede ser necesario:
    • Winsorización.
    • Recorte de datos.
    • Métodos robustos.
  • No corrige relaciones no lineales: la transformación actúa sobre una variable individual. No modifica las relaciones entre variables.
  • Puede afectar la interpretabilidad del modelo : especialmente en entornos de negocio donde se requiere explicar los resultados en unidades originales.

Aplicaciones en Data Science y Machine Learning

  • Modelos de Regresión: Mejora:
    • Normalidad de residuos.
    • Homocedasticidad.
    • Estabilidad de coeficientes.
  • En EDA: Permite visualizar patrones que antes quedaban ocultos por distribuciones extremadamente sesgadas.
  • Reducción de Dimensionalidad: Métodos como PCA suelen beneficiarse de variables más próximas a la normalidad.
  • Clustering: Algoritmos basados en distancia pueden producir grupos más consistentes.
  • Detección de Anomalías: La reducción de la asimetría puede facilitar la identificación de observaciones atípicas.

Implementación en Python

from sklearn.preprocessing import PowerTransformer
import pandas as pd

df = pd.DataFrame({
    "ventas": [-100, 0, 50, 200, 1000, 5000]
})

pt = PowerTransformer(method="yeo-johnson")

df["ventas_transformadas"] = pt.fit_transform(df[["ventas"]])

print(df)

Obtener el valor λ calculado

from sklearn.preprocessing import PowerTransformer

pt = PowerTransformer(method="yeo-johnson")

pt.fit(df[["ventas"]])

print(pt.lambdas_)
[0.34]

Este valor representa el λ óptimo encontrado para la variable.

Uso dentro de un Pipeline

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PowerTransformer
from sklearn.linear_model import LinearRegression

pipeline = Pipeline([
    ("yeo_johnson", PowerTransformer(method="yeo-johnson")),
    ("modelo", LinearRegression())
])

pipeline.fit(X_train, y_train)

Esta es la forma recomendada en proyectos de Machine Learning, ya que evita fugas de información (data leakage) entre entrenamiento y prueba.

Comparación entre Yeo-Johnson y Box-Cox

CaracterísticaYeo-JohnsonBox-Cox
Admite valores negativosNo
Admite cerosNo
Usa parámetro λ
Reduce asimetría
Estabiliza varianza
Implementación en Scikit-Learn
Requiere datos positivosNo

Buenas Prácticas

  1. Aplicar únicamente sobre variables numéricas.
  2. Ajustar la transformación únicamente con los datos de entrenamiento.
  3. Integrarla dentro de un Pipeline.
  4. Comparar la distribución antes y después de la transformación.
  5. Verificar si realmente mejora el rendimiento del modelo.

Conclusión

La Transformación Yeo-Johnson es una de las técnicas de normalización más versátiles utilizadas actualmente en Data Science y Machine Learning. Su capacidad para trabajar con valores positivos, negativos y ceros la convierte en una alternativa superior a Box-Cox en muchos escenarios reales.

Cuando los datos presentan asimetría significativa, varianza inestable o contienen valores negativos, Yeo-Johnson permite generar distribuciones más equilibradas, facilitando el trabajo de algoritmos estadísticos y mejorando la calidad de los modelos predictivos.

Por su facilidad de uso, integración con Scikit-Learn y capacidad para automatizar la búsqueda del parámetro óptimo λ, constituye una herramienta fundamental dentro del proceso moderno de preparación de datos.