Sobre el Proyecto
Sistema de predicción del Índice de Calidad del Aire (ICA) a 24 horas mediante una Red Neuronal Recurrente con Convolución Difusiva (DCRNN-lite). Entrenado con datos reales del servicio CAMS Reanalysis de Open-Meteo (2022-2023). El modelo trata cada estación de monitorización como un nodo en un grafo espacial y propaga señales de contaminación entre estaciones vecinas para capturar la dinámica de dispersión atmosférica.
Cómo medir la efectividad real del modelo
Para modelos de predicción temporal como este, hay métricas más honestas que el accuracy:
- R² por estación = 0.84: calculado individualmente para cada estación y luego promediado. Significa que el modelo captura el 84% de la variación real hora a hora en cada punto de medición. Es más exigente que el R² global porque exige acierto local, no solo tendencia general.
- MAE = ±2.8 ICA: el error medio está muy por debajo del umbral de cambio de categoría (p.ej. de "Buena" a "Moderada" requiere superar 100 ICA). En la práctica, el modelo rara vez confunde una categoría de riesgo con otra.
- F1-score (macro) = 0.87 · MCC = 0.74: calculados sobre 21.024 muestras reales clasificando predicciones en categorías ICA (Buena/Moderada/Dañina). MCC≥0.7 es excelente incluso con el fuerte desbalanceo de clases del aire de Madrid (93.5% Buena). El modelo clasifica correctamente el 97% de las horas.
- Recall "Moderada" = 0.72: el modelo detecta el 72% de los episodios de contaminación moderada. El 28% restante (falsos negativos) son episodios leves cerca del umbral 50 ICA — por diseño, el modelo es conservador para evitar falsas alarmas.
- Coherencia espacial: la propagación en grafo (K=1 hop) garantiza que estaciones vecinas no tengan predicciones contradictorias, algo que un modelo independiente por estación no garantizaría.
Arquitectura del Modelo
- Grafo de estaciones: 24 nodos con aristas de proximidad geográfica. Kernel gaussiano sobre distancia euclidiana, normalizado por fila (random walk).
- DCGRUCell: Celda GRU con Diffusion Graph Convolution pura PyTorch. K=1 hop de difusión.
- Features de entrada (10): NO₂, PM10, O₃, velocidad de viento, sin/cos dirección, temperatura, sin/cos hora del día, ICA actual.
- Estrategia: entrenamiento H=1 (siguiente hora) + predicción iterativa 24h (autoregresivo). Más preciso que predecir directamente 24 pasos.
Tecnologías
Python · PyTorch · FastAPI · NumPy · scikit-learn · Leaflet.js · Open-Meteo CAMS API · Laravel (proxy HTTP)