Predicción de Calidad del Aire en Madrid con DCRNN‑lite y datos CAMS
Modelo DCRNN‑lite que predice el Índice de Calidad del Aire hora a hora para 24 estaciones de Madrid, con R² = 0.84 y macro F1 = 0.86, usando datos CAMS de Open‑Meteo y despliegue en FastAPI.
▶ Probar la demo
En los últimos años la calidad del aire se ha convertido en un indicador crítico para la salud pública y la planificación urbana. En Madrid, la disponibilidad de datos horarios de la concentración de contaminantes permite modelar su evolución, pero la predicción a corto plazo sigue siendo un desafío por la complejidad espacial‑temporal del fenómeno.
Problema abordado
Quería predecir el Índice de Calidad del Aire (ICA) hora a hora para 24 estaciones distribuidas por la Comunidad de Madrid, con una ventana de 24 h. El objetivo era obtener una herramienta que explique la mayor parte de la variación observada y que sea suficientemente ligera para ejecutarse en tiempo real.
Arquitectura del modelo
He optado por una variante ligera de Diffusion Convolutional Recurrent Neural Network (DCRNN‑lite). La red combina convoluciones sobre el grafo que representa la topología de las estaciones con unidades recurrentes que capturan la dinámica temporal. Cada nodo del grafo corresponde a una estación y las aristas se ponderan según la distancia geográfica, codificada en un GeoJSON que alimenta la capa de convolución.
- Entrada: series temporales de variables meteorológicas y de emisiones obtenidas de la API de Open‑Meteo (CAMS) para 2022‑2023.
- Salida: predicción del ICA para cada estación durante los siguientes 24 h.
Stack tecnológico
- Python 3.11, PyTorch para la implementación del DCRNN‑lite.
- FastAPI expone una API REST que recibe los últimos valores y devuelve la predicción.
- NumPy y pandas para el pre‑procesado de series temporales.
- Leaflet.js visualiza los resultados en un mapa interactivo.
- MQTT y NGSI‑LD gestionan la ingestión de datos en tiempo real.
Entrenamiento y validación
He entrenado el modelo con los datos históricos de 24 estaciones (2022‑2023). La partición de entrenamiento/validación respeta la secuencia temporal para evitar fugas de información. La métrica principal de regresión es el coeficiente de determinación R², que alcanza 0.84 por estación, lo que indica que el modelo explica el 84 % de la variación del ICA hora a hora. El error medio absoluto es de ±2.8 puntos sobre una escala de 0‑500.
Para la clasificación de la calidad del aire en tres categorías (Buena, Moderada, Mala) he calculado métricas de clasificación multiclase:
- Macro F1 = 0.86, Weighted F1 = 0.97.
- Precisión Moderada = 0.80, Recall Moderada = 0.70.
- Coeficiente de correlación de Matthews (MCC) ≈ 0.73, considerado fuerte pese al desbalance (93.5 % Buena, 6.5 % Moderada).
- Exactitud global = 97 % en 21 024 muestras reales.
Despliegue y consumo
El modelo se sirve mediante FastAPI y se consulta cada hora mediante MQTT. Los resultados se publican en formato NGSI‑LD, lo que permite su integración con plataformas de ciudades inteligentes. En el frontend, Leaflet.js muestra la predicción de cada estación con un código de colores que sigue la normativa oficial del ICA.
Lecciones aprendidas
La combinación de grafos y recurrencia resulta eficaz para capturar la dependencia espacial entre estaciones sin requerir una arquitectura pesada. Mantener el modelo “lite” permite ejecutar inferencias en menos de 200 ms en una máquina virtual estándar, lo que abre la puerta a despliegues en entornos con recursos limitados.
El código está disponible públicamente y puede reutilizarse siempre que se cite la web del autor.
Sobre este proyecto
Predicción de Calidad del Aire
DCRNN-lite entrenado con datos reales CAMS de Open-Meteo (2022-2023, 24 estaciones Madrid). R²=0.84 por estación: explica el 84% de la variación real del ICA hora a hora. Error med...
Newsletter
¿Te aviso de nuevos proyectos y artículos?
Sin spam. Solo un email cuando publico algo nuevo de IA. Baja en un clic.