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 |
|---|---|
| λ = 1 | Sin transformación |
| λ < 1 | Reduce asimetría positiva |
| λ = 0 | Similar a transformación logarítmica |
| λ > 1 | Expande ciertas regiones de los datos |
| λ < 0 | Compresió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ística | Yeo-Johnson | Box-Cox |
|---|---|---|
| Admite valores negativos | Sí | No |
| Admite ceros | Sí | No |
| Usa parámetro λ | Sí | Sí |
| Reduce asimetría | Sí | Sí |
| Estabiliza varianza | Sí | Sí |
| Implementación en Scikit-Learn | Sí | Sí |
| Requiere datos positivos | No | Sí |
Buenas Prácticas
- Aplicar únicamente sobre variables numéricas.
- Ajustar la transformación únicamente con los datos de entrenamiento.
- Integrarla dentro de un Pipeline.
- Comparar la distribución antes y después de la transformación.
- 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.