Universidad Católica del Uruguay

Práctica 8

Práctica 8: Análisis de importancia de features

  • Autores: Joaquín Batista, Milagros Cancela, Valentín Rodríguez, Alexia Aurrecoechea, Nahuel López (G1)
  • Fecha: Octubre 2025
  • Entorno: Python + Pandas + Scikit-learn + Matplotlib + Seaborn + Numpy
  • Dataset: Dataset inmobiliario con análisis de importancia de variables

🎯 Objetivo

El propósito de esta práctica es realizar un análisis completo de importancia de features utilizando múltiples metodologías para identificar las variables más relevantes en un dataset inmobiliario. A través de técnicas como Mutual Information y Random Forest, exploramos las distribuciones de las variables y su impacto en modelos predictivos.

  • Evaluar importancia de features usando diferentes metodologías (Mutual Information vs Random Forest)
  • Analizar distribuciones de variables transformadas y derivadas
  • Identificar patrones en las relaciones entre variables
  • Comparar efectividad de diferentes técnicas de selección de variables
  • Visualizar insights sobre el dataset inmobiliario

📊 Dataset y Variables Analizadas

Variables Principales

VariableTipoDescripción
bedroomsOriginalNúmero de dormitorios
sqftOriginalPies cuadrados
sqrt_sqftTransformadaRaíz cuadrada de pies cuadrados
sqft_squaredTransformadaPies cuadrados al cuadrado
sqft_per_bedroomDerivadaPies cuadrados por dormitorio
year_builtOriginalAño de construcción
bathroomsOriginalNúmero de baños
garage_spacesOriginalEspacios de garaje
lot_sizeOriginalTamaño del lote
distance_to_cityOriginalDistancia a la ciudad

🔍 Análisis de Importancia de Features

Comparación Mutual Information vs Random Forest

Top 10 Features - Mutual Information

Top 10 Features - Mutual Information

Hallazgos clave:

  • bedrooms domina con ~0.018 de información mutua
  • Variables transformadas (sqrt_sqft, sqft_squared) muestran importancia moderada
  • Variables espaciales (distance_to_city, lot_size) presentan baja importancia
  • year_built y sqft_per_bedroom muestran valores intermedios

Top 10 Features - Random Forest

Top 10 Features - Random Forest

Insights comparativos:

  • crime_rate emerge como la variable más importante (0.15)
  • lot_size y school_rating muestran alta relevancia
  • distance_to_city adquiere mayor importancia que en Mutual Information
  • Variables transformadas mantienen importancia consistente

📈 Análisis de Distribuciones

Distribuciones de Variables Transformadas

Distribuciones de Variables

Características observadas:

  • price_per_sqft: Distribución sesgada a la derecha (pico en 1200-1800)
  • sqft_per_bedroom: Distribución altamente sesgada (pico en 20-50)
  • property_age: Distribución relativamente uniforme
  • log_price: Distribución aproximadamente normal (transformación exitosa)
  • sqrt_sqft: Distribución normal con pico en 10.5-12.5
  • sqft_squared: Distribución sesgada con cola larga

Distribuciones de Variables Derivadas

Distribuciones de Variables Derivadas

Variables derivadas analizadas:

  • space_efficiency: Distribución muy sesgada (pico en 0.01-0.02)
  • crowded_property: Distribución similar a space_efficiency
  • location_score: Distribución aproximadamente normal (pico en 0.5-0.6)

🔧 Implementación Técnica

Pipeline de Análisis

# Análisis de Importancia con Mutual Information
from sklearn.feature_selection import mutual_info_regression

mi_scores = mutual_info_regression(X, y)
feature_importance_mi = pd.DataFrame({
    'feature': feature_names,
    'importance': mi_scores
}).sort_values('importance', ascending=False)

# Análisis con Random Forest
from sklearn.ensemble import RandomForestRegressor

rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X, y)
feature_importance_rf = pd.DataFrame({
    'feature': feature_names,
    'importance': rf.feature_importances_
}).sort_values('importance', ascending=False)

Visualizaciones Implementadas

  • Gráficos de barras horizontales para comparar importancia
  • Histogramas para análisis de distribuciones
  • Subplots para visualización comparativa
  • Paletas de colores consistentes para mejor interpretación

📚 Insights y Conclusiones

1. Divergencia en Metodologías

  • Mutual Information prioriza variables estructurales (bedrooms, transformaciones de sqft)
  • Random Forest enfatiza variables contextuales (crime_rate, school_rating, lot_size)

2. Efectividad de Transformaciones

  • Transformaciones logarítmicas (log_price) logran distribuciones normales
  • Transformaciones cuadráticas (sqft_squared) pueden introducir sesgo
  • Variables derivadas muestran distribuciones interesantes pero sesgadas

3. Variables Clave Identificadas

  • Estructurales: bedrooms, sqft (y sus transformaciones)
  • Contextuales: crime_rate, school_rating, lot_size
  • Derivadas: sqft_per_bedroom, space_efficiency

4. Recomendaciones

  • Combinar metodologías para selección robusta de features
  • Aplicar transformaciones para normalizar distribuciones sesgadas
  • Considerar variables derivadas como features adicionales
  • Validar importancia con diferentes algoritmos

🧠 Aprendizajes Adquiridos

Metodologías Complementarias

  • Mutual Information y Random Forest ofrecen perspectivas diferentes pero valiosas
  • La importancia de las transformaciones puede cambiar significativamente la importancia relativa
  • Las distribuciones sesgadas requieren atención especial en el preprocessing

Variables Derivadas

  • Pueden capturar relaciones complejas no evidentes en variables originales
  • Es crucial validar la importancia con diferentes metodologías
  • La combinación de enfoques estadísticos y de ML proporciona una visión más completa

🤔 Preguntas para Reflexionar

¿Cuáles fueron las features más importantes según tu análisis?

Las variables más relevantes fueron price_per_sqft y property_age, ya que mostraron una relación clara con el precio de venta. El precio por unidad de superficie realza las diferencias de valor entre propiedades, mientras que la antigüedad reflejó la bajada de precio esperada a lo largo del tiempo.

¿Qué sorpresas encontraste en los datos?

En los datos reales, algunas propiedades presentaban valores que no seguían las tendencias esperadas. Esto resalta la importancia de validar supuestos y considerar el contexto del negocio inmobiliario.

¿Cómo podrías mejorar el proceso de feature engineering?

Podría mejorarse incorporando:

  • Transformaciones no lineales (logarítmicas o polinomiales)
  • Normalización de escalas
  • Creación de variables interactivas que combinen aspectos estructurales y de ubicación

¿Qué otras técnicas de feature engineering conoces?

  • Codificación categórica: One-Hot, Target Encoding, Ordinal
  • Escalado y normalización: MinMaxScaler, StandardScaler
  • Transformaciones matemáticas: log, raíz cuadrada, Box-Cox
  • Binning y discretización de variables continuas
  • Generación automática de interacciones con PolynomialFeatures
  • Selección de variables mediante Lasso, Random Forest, o Recursive Feature Elimination (RFE)

¿Qué diferencias notaste entre datos sintéticos y reales?

Los datos sintéticos presentan relaciones más limpias, predecibles y controladas, lo que facilita detectar patrones. En cambio, los datos reales incluyen ruido, valores atípicos y correlaciones espurias, lo que hace el análisis más desafiante pero también más representativo del comportamiento real del mercado. Además, los datos reales requieren mayor atención en limpieza, imputación y validación de supuestos.


🛠️ Herramientas y Tecnologías

Librerías Utilizadas

  • scikit-learn: Feature selection, Mutual Information, Random Forest
  • pandas y numpy: Manipulación y análisis de datos
  • matplotlib y seaborn: Visualización avanzada
  • scipy.stats: Análisis estadístico

Técnicas Implementadas

  • Mutual Information: Medida de dependencia estadística
  • Random Forest: Importancia basada en impureza
  • Transformaciones: Logarítmicas, cuadráticas, derivadas
  • Visualización: Histogramas, gráficos de barras, subplots

🔗 Recursos y Referencias