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

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

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

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

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

Variables analizadas:
- LotArea: Requiere transformación logarítmica
- GrLivArea: Distribución aproximadamente normal
- TotalBsmtSF: Sesgada hacia la derecha
- GarageArea: Distribución bimodal
Distribuciones Completas del Dataset

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

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

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

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
- Escalado es crucial: Mejora significativamente el rendimiento de algoritmos sensibles a escala
- RobustScaler es superior: Para datos con outliers, como es común en datasets inmobiliarios
- Transformaciones avanzadas: Power Transformer y Quantile Transformer ofrecen mejoras sustanciales
- 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
- Siempre escalar variables numéricas antes de algoritmos sensibles a escala
- Usar RobustScaler cuando hay outliers presentes
- Aplicar Power Transformer para variables con sesgo positivo
- 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
- Documentación: Scikit-learn Preprocessing
- Dataset: Ames Housing Dataset
- Teoría: Feature Scaling in Machine Learning
- Data Leakage: Preventing Data Leakage