1
2025-11-26 17:22:57 +01:00

38 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Modèles non linéaires (arbres, forêts, gradient boosting)
Objectif : tester des modèles plus flexibles que les régressions linéaires/logistiques, en restant raisonnables côté ressources. On utilise des forêts aléatoires (_random forest_, voir [forêt aléatoire](https://fr.wikipedia.org/wiki/For%C3%AAt_al%C3%A9atoire)) et du _gradient boosting_ (voir [gradient boosting](https://fr.wikipedia.org/wiki/Gradient_boosting)) sur les mêmes horizons (T+10, T+60, T+360, T+1440) pour température, vent et pluie, afin de voir si cette complexité supplémentaire paie réellement sur nos données locales.
```shell
python "docs/10 - Modèles non linéaires/scripts/run_tree_models.py"
```
Ce script réutilise le même jeu de données minutées que les chapitres précédents et applique un pipeline très proche, en changeant simplement la famille de modèles. Le déroulé est le suivant :
- lit `data/weather_minutely.csv` et construit les variables dérivées (sin/cos, lags/deltas/moyennes, vent u/v, drapeaux) ;
- sappuie sur la matrice de corrélation décalée (chapitre 5) pour prioriser les variables/lags avec |r| ≥ 0,2, tout en conservant les cibles ;
- sous-échantillonne lapprentissage (1 ligne sur 10) pour contenir le temps de calcul, à garder en tête pour interpréter les scores ;
- découpe en _train_/_validation_/_test_ (70/15/15 %) ;
- entraîne forêts et gradient boosting pour température/vent (régression) et pluie binaire (classification) ;
- exporte `models_tree_regression.csv` et `models_tree_rain.csv` dans `docs/10 - Modèles non linéaires/data/` ;
- génère deux figures (validation) dans `docs/10 - Modèles non linéaires/figures/` :
- `models_tree_mae_validation.png` (MAE vs horizon pour température et vent)
- `models_tree_rain_validation.png` (F1 et Brier vs horizon pour la pluie)
## Lecture rapide des résultats (validation)
![](./figures/models_tree_mae_validation.png)
![](./figures/models_tree_rain_validation.png)
- Température : le gradient boosting est meilleur que la forêt sur le très court terme (MAE ≈0,13 à +10 min), mais reste derrière les modèles linéaires du chapitre 9 (MAE ≈0,14 à +60 min avec Ridge). La sousutilisation des données dapprentissage (1/10) pèse sur la performance.
- Vent : gains modestes, MAE ~0,94 à +10 min (GB) et ~1,19 à +60 min, sans dépassement clair des modèles linéaires précédents.
- Pluie : F1 ≈0,85 (forêt) et 0,67 (GB) à +10 min, mais toujours en dessous de la persistance (~0,94) ; le Brier reste modéré (~0,020,03). Aux horizons +60/+360/+1440, les scores retombent rapidement.
## Conclusion
Ces modèles non linéaires apportent de la flexibilité mais, avec un apprentissage allégé pour tenir le temps de calcul, ils ne battent pas les baselines ni les modèles linéaires sur les horizons courts.
Pour progresser, il faudra soit élargir léchantillon dapprentissage (temps de calcul plus long), soit régler finement les hyperparamètres, soit enrichir les features (ou combiner les deux).
À ce stade, les modèles non-linéaires "naïfs" que l'on a implémenté ici travaillent pendant plusieurs minutes et ne sont pas capables de faire mieux que les modèles vus précédemment.
Je doute donc qu'il soit pertinent de creuser bien davantage cette piste dans le cadre local actuel, mais cela a aiguisé ma curiosité pour des modèles existants, pré-entraînés, tels que Chronos d'Amazon, que lon testera au chapitre suivant.