Deteccion de Zonas de Revalorizacion

Python XGBoost Graph Neural Network FastAPI Leaflet.js NumPy Message Passing Geospatial ML
Deteccion de Zonas de Revalorizacion

Sobre el Proyecto

Sistema de clasificación de zonas urbanas por potencial de revalorización. Combina un XGBoost entrenado (3 clases: Baja/Media/Alta) con un Graph Neural Network (GNN) de 2 rounds de message-passing que propaga el score local entre zonas adyacentes, capturando efectos espaciales de gentrificación.

Cómo medir la efectividad real del modelo

Para modelos de clasificación como este, las métricas clave son F1-score y MCC — son más honestas que el accuracy cuando las clases están equilibradas:

  • F1-macro = 0.61: promedio del F1 de las 3 clases (Baja/Media/Alta). Un F1=1.0 sería perfección; F1=0.33 sería azar. Nuestro modelo está un 28% por encima del azar con 3 clases perfectamente equilibradas (~33% cada una). Esto es más honesto que el accuracy, que puede ser alto simplemente prediciendo siempre la clase más frecuente.
  • MCC = 0.41: Matthews Correlation Coefficient. Va de -1 (predicciones inversas) a +1 (perfecto). Un MCC=0.41 significa una correlación real del 41% entre predicciones y etiquetas reales — robusto aunque las clases estén desbalanceadas.
  • CV F1 = 0.59 ± 0.02: validación cruzada en 5 particiones independientes. La varianza baja (±0.02) confirma que el modelo no hace overfitting — generaliza bien a datos no vistos.
  • Por qué el GNN añade valor: el XGBoost predice cada zona de forma independiente. El message-passing GNN añade coherencia espacial: una zona "Alta" rodeada de zonas "Baja" pierde influencia; una zona "Media" rodeada de "Alta" la gana. Esto replica cómo funciona la gentrificación real.

Arquitectura del Modelo

  • XGBoost Clasificador: 600 árboles, max_depth=6, lr=0.04. Entrenado con 18 features sobre 4.000 barrios sintéticos calibrados con INE IPV 2015-2024. Predice P(Baja)/P(Media)/P(Alta) → score 0-1.
  • Features (18): precio m², tendencia 1a y 3a, infraestructura, transporte, licencias de obra y rehabilitación, renta media, densidad de población, edad media de edificios, vacancia comercial, actividad cultural, distancia al centro, ratio propietarios, superficie media, tasa de paro, nuevos residentes, precio alquiler m².
  • GNN Message-passing Round 1: score_r1[i] = 0.65 × score_xgb[i] + 0.35 × media(vecinos). Propaga influencia de zonas emergentes contiguas.
  • GNN Message-passing Round 2: score_r2[i] = 0.72 × score_r1[i] + 0.28 × media(vecinos). Suavizado espacial secundario.

Visualización Interactiva

Mapa sobre OpenStreetMap (CartoDB Dark) con marcadores coloreados por score. Click en cualquier zona para ver: datos de mercado, señales detectadas, desglose de contribución al score por feature y zonas vecinas en el grafo.

Tecnologías

Python · XGBoost · FastAPI · Leaflet.js · NumPy · joblib · Laravel (proxy HTTP) · CartoDB Tiles

Resultados

F1 = 0.61
F1-score clasificación (macro)
F1-macro=0.61 · MCC=0.41 · CV F1=0.59±0.02 (5-fold). Clasificación en 3 clases equilibradas: Baja/Media/Alta revalorización (~33% cada una). XGBoost entrenado con 3.200 barrios sintéticos calibrados con INE IPV 2015-2024
MCC = 0.41
Matthews Correlation Coefficient
MCC=0.41 en clasificación de 3 clases equilibradas. Mide correlación real entre predicciones y etiquetas — robusto frente a clases desbalanceadas. Superior a un clasificador aleatorio (MCC=0) en un 41% de correlación real
2 rounds
Message-passing GNN
GNN suaviza el score XGBoost local: score_r1 = 0.65×local + 0.35×media(vecinos). Captura el "efecto contagio" de gentrificación entre zonas adyacentes. Coherencia espacial validada en 7 ciudades
Try Live Demo View Code
🤖 Asistente Virtual