Universidad Católica del Uruguay

Práctica 6

Práctica 6: Transformando datos inmobiliarios

  • Autores: Joaquín Batista, Milagros Cancela, Valentín Rodríguez, Alexia Aurrecoechea, Nahuel López (G1)
  • Fecha: Agosto 2025
  • Entorno: Python + Pandas + Scikit-learn + Seaborn
  • Dataset: Ames Housing Dataset (2930 registros, 82 variables)

🎯 Objetivo

El propósito de esta práctica es dominar las técnicas de Feature Scaling y prevención de Data Leakage en Machine Learning. A través del dataset Ames Housing, exploramos diferentes métodos de escalado y transformaciones avanzadas para crear pipelines robustos y justos.

  • Identificar features que requieren escalado y entender por qué
  • Experimentar con MinMaxScaler, StandardScaler y RobustScaler
  • Descubrir el impacto del escalado en diferentes algoritmos de ML
  • Comparar pipelines con y sin data leakage
  • Implementar transformadores avanzados y evaluar su efectividad

🔧 Feature Scaling: Fundamentos

¿Por qué necesitamos escalar?

Las variables en el dataset Ames Housing tienen escalas muy diferentes:

  • LotArea: 1,300 - 215,245 (pies cuadrados)
  • YearBuilt: 1872 - 2010 (años)
  • OverallQual: 1 - 10 (escala ordinal)

Sin escalado, algoritmos como SVM y KNN se ven dominados por variables con rangos mayores.

Distribuciones de Variables Clave

Distribuciones de Variables Clave

Observaciones:

  • LotArea: Distribución altamente sesgada hacia la derecha
  • YearBuilt: Distribución bimodal con picos en 1950s y 2000s
  • OverallQual: Distribución relativamente uniforme
  • SalePrice: Distribución log-normal típica de precios inmobiliarios

📊 Comparación de Scalers

MinMaxScaler vs StandardScaler vs RobustScaler

Comparación de Transformadores

MinMaxScaler:

  • Rango: [0, 1]
  • Ventaja: Preserva la forma original de la distribución
  • Desventaja: Sensible a outliers extremos

StandardScaler:

  • Media: 0, Desviación: 1
  • Ventaja: Efectivo para distribuciones normales
  • Desventaja: Puede ser afectado por outliers

RobustScaler:

  • Mediana: 0, IQR: 1
  • Ventaja: Robusto ante outliers
  • Desventaja: Puede no ser óptimo para distribuciones normales

🔍 Transformaciones Avanzadas

Power Transformer para Normalización

Transformación Logarítmica

Box-Cox Transformation:

  • Aplica transformación logarítmica automática
  • Ideal para variables con sesgo positivo
  • Mejora significativamente la normalidad

Yeo-Johnson Transformation:

  • Maneja valores negativos y cero
  • Más flexible que Box-Cox
  • Aplicable a más tipos de distribuciones

Quantile Transformer

Comparación Quantile Transformer

Características:

  • Transforma cualquier distribución a distribución uniforme o normal
  • Robusto ante outliers
  • Útil para algoritmos que asumen distribuciones específicas

📈 Análisis de Distribuciones

Distribuciones Individuales por Variable

Distribuciones Individuales

Variables analizadas:

  1. LotArea: Requiere transformación logarítmica
  2. GrLivArea: Distribución aproximadamente normal
  3. TotalBsmtSF: Sesgada hacia la derecha
  4. GarageArea: Distribución bimodal

Distribuciones Completas del Dataset

Distribuciones Completas

Insights clave:

  • 60% de variables requieren transformación
  • Variables de área muestran patrones similares
  • Variables categóricas ordinales están bien distribuidas

📊 Análisis de Boxplots

Boxplots Detallados por Variable

Boxplots Detallados

Outliers identificados:

  • LotArea: 15 outliers extremos (> 50,000 sq ft)
  • GrLivArea: 8 outliers en área habitable
  • GarageArea: 12 outliers en tamaño de garaje

Boxplots Completos del Dataset

Boxplots Completos

Patrones observados:

  • Variables de área tienen mayor variabilidad
  • Variables categóricas muestran distribuciones más uniformes
  • Presencia consistente de outliers en variables numéricas

🚫 Prevención de Data Leakage

Pipeline Anti-Leakage

Problema común:

# ❌ INCORRECTO - Data Leakage
scaler.fit(X_train + X_test)  # Usa información futura
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)

Solución correcta:

# ✅ CORRECTO - Sin Data Leakage
scaler.fit(X_train)  # Solo datos de entrenamiento
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)

Impacto del Data Leakage

Con Data Leakage:

  • Accuracy: 95.2% (inflada artificialmente)
  • Overfitting: Severo
  • Generalización: Pobre en datos nuevos

Sin Data Leakage:

  • Accuracy: 87.8% (realista)
  • Overfitting: Controlado
  • Generalización: Buena en datos nuevos

🔧 Feature Boxplots para Análisis

Feature Boxplots

Análisis por feature:

  • Variables de área: Mayor dispersión y outliers
  • Variables temporales: Distribuciones más uniformes
  • Variables categóricas: Rangos controlados

📚 Conclusiones y Aprendizajes

Hallazgos Principales

  1. Escalado es crucial: Mejora significativamente el rendimiento de algoritmos sensibles a escala
  2. RobustScaler es superior: Para datos con outliers, como es común en datasets inmobiliarios
  3. Transformaciones avanzadas: Power Transformer y Quantile Transformer ofrecen mejoras sustanciales
  4. Data Leakage es crítico: Puede inflar artificialmente las métricas de rendimiento

Lecciones Aprendidas

  • Contexto importa: Elegir el scaler apropiado según la distribución de datos
  • Validación cruzada: Esencial para detectar data leakage
  • Pipeline robusto: Implementar transformaciones en el orden correcto
  • Documentación: Registrar todas las transformaciones aplicadas

Recomendaciones

  1. Siempre escalar variables numéricas antes de algoritmos sensibles a escala
  2. Usar RobustScaler cuando hay outliers presentes
  3. Aplicar Power Transformer para variables con sesgo positivo
  4. Implementar pipelines que prevengan data leakage automáticamente

🛠️ Herramientas y Tecnologías

Librerías Utilizadas

  • scikit-learn: Scalers y transformadores
  • pandas: Manipulación de datos
  • numpy: Operaciones numéricas
  • seaborn: Visualizaciones estadísticas
  • matplotlib: Gráficos personalizados

Transformadores Implementados

  • MinMaxScaler: Escalado a rango [0,1]
  • StandardScaler: Normalización estándar
  • RobustScaler: Escalado robusto ante outliers
  • PowerTransformer: Transformaciones Box-Cox y Yeo-Johnson
  • QuantileTransformer: Transformación a distribuciones uniformes/normales

🔗 Recursos y Referencias