AetherML — 09 Dados Reais, Backtest e Precisão da IA
Como os números exibidos no app são produzidos, de onde vêm os dados e qual o nível de precisão medido — sem marketing.
1. Fonte dos dados (sem chave de API)
pm2_5, pm10, ozone, nitrogen_dioxide, sulphur_dioxide), horário, por coordenada das 9 estações.temperature_2m, relative_humidity_2m, wind_speed_10m, wind_direction_10m, pressure_msl, shortwave_radiation, boundary_layer_height).random no pipeline: todo o resto é medido ou derivado.Histórico: até a v2026.38.1 o dataset era sintético (random.gauss, seed 42). Sintomas: SO₂ com R² = −1,27 e O₃ com R² = 0,99 (decorou a fórmula). Tudo foi substituído a partir da v2026.38.2.
2. Recursos de engenharia que importam
db/schema.ts).pm25_lag1, pm10_lag1, no2_lag1, o3_lag1, so2_lag1). Episódios evoluem em horas; só lag24 era cego à escalada intradiária. Regra: nunca reordenar, só anexar com bump de versão.3. Histórico de versões e resultados (mesmo holdout de 7d, 1.512 pontos)
| Versão | Mudança | Faixa IQAr | MAE índice | PM2.5 (MAE/R²) |
|---|---|---|---|---|
| v2026.38.1 | Dataset sintético | — (não medido) | — | 1,98 / 0,85 (ilusório) |
| v2026.38.2 | Dados reais, 25 feats | 80,8% | ±8,2 | 3,04 / 0,09 |
| v2026.38.3 | Holdout honesto (treino sem os 7d) | 80,8% | ±8,2 | 3,04 / 0,09 |
| v2026.38.4 | Capacidade + pesos + viés | 80,2% | ±8,3 | 3,24 / −0,07 |
| v2026.38.5 | FEATURE_ORDER_V2 (30 feats) | 91,9% | ±2,8 | 0,92 / 0,90 |
4. Protocolo do backtest (página Precisão IA)
1. Holdout: últimas 168h de passado, 9 estações, nunca vistas no treino.
2. 1 passo: prevê cada hora com lags reais → MAE/RMSE/R²/MAPE/viés por poluente + acerto de faixa + baseline de persistência ("ontem = hoje").
3. Rollout 120h: a partir da última hora de treino, recursivo com meteorologia real futura → MAE em +24/+48/+72/+120h (mede a degradação operacional).
4. Reprodutível: python ml/training/fetch_openmeteo.py → build_real_dataset.py → retrain_real.py → predict_forecast.py → ml/evaluation/eval_holdout.py. Artefato: apps/web/public/data/model-eval.json.
5. Limites conhecidos
ml/evaluation/evaluate_weekly.py) é o caminho para automatizar.