DAG : un double réseau causal pour mieux prévoir avec des variables exogènes
Lecture critique et vulgarisée du papier « DAG: A Dual Causal Network for Time Series Forecasting with Exogenous Variables » (Qiu et al., 2025).
Pourquoi ce papier m’a accroché
La plupart des forecasters se comportent comme un conducteur qui n’aurait que le rétroviseur : on prolonge des motifs du passé et on croise les doigts. Sauf que, dans la vraie vie, la route change parce que le monde autour change : météo, promotions, jours fériés, grèves annoncées, patchs logiciels, calendriers d’événements… toutes ces variables exogènes influencent la série que l’on cherche à prédire. Et, cerise sur le gâteau, certaines de ces exogènes sont connues à l’avance !
Le papier DAG part d’un constat simple : beaucoup d’approches deep‑learning pour la prévision avec exogènes (TSF‑X) n’exploitent pas les exogènes futures et/ou n’intègrent aucune contrainte causale entre exogènes et cible. Résultat : corrélations opportunistes, généralisation fragile. Les auteur·rices proposent un cadre général qui donne à la causalité un rôle d’architecte : deux modules complémentaires, l’un dans le temps et l’autre entre les variables, qui découvrent des patrons causaux puis les injectent dans l’attention du modèle pour guider la prédiction.
« We propose a general framework called DAG, which improves forecasting accuracy by discovering and injecting causal relationships across both temporal and channel dimensions. »
L’idée, sans le jargon (ou presque)
Imaginez deux rails. Le rail temporel relie hier à demain ; le rail par canaux relie les exogènes à l’endogène. DAG fait rouler un train sur chacun, puis fusionne les deux trajets à l’arrivée.
1) Le rail temporel : Temporal Causal Module (TCM)
D’abord, le modèle apprend comment les exogènes historiques influencent les exogènes futures (quand celles‑ci ne sont pas directement disponibles) grâce à un bloc Transformer. Plutôt que de ne garder que des scores d’attention, souvent volatils, il extrait les paramètres de l’attention — les matrices Q (query) et K (key) — comme représentation de causalité temporelle. Ensuite, ces Q/K sont réinjectées pour guider l’attention qui prédit l’endogène futur à partir de l’endogène passé : l’attention « voit » là où il y a des raisons structurelles de regarder.
« we extract and transfer the learnable parameters—specifically the query (Q) and key (K) matrices »
2) Le rail par canaux : Channel Causal Module (CCM)
On répète la manœuvre, mais entre variables. Le modèle apprend comment les exogènes historiques influencent l’endogène historique (les schémas d’interaction entre séries). À nouveau, il extrait Q/K comme représentation causale par canal. Puis il injecte ces informations pour prédire l’endogène futur en s’appuyant sur les exogènes futures. Intuition : si « la température influence la consommation » hier, on suppose que la même relation reste informative quand on regarde la température et la consommation demain.
3) Le mixage : un gating qui arbitre
Dans chaque module, on calcule deux attentions : la « classique » et la « guidée par la causalité ». Un mélangeur appris (gating) pèse les deux pour produire l’attention finale. C’est comme superposer une prise brute et une prise stabilisée : parfois il faut plus de guidage, parfois moins.
4) L’entraînement bout‑à‑bout
La perte totale additionne : (i) une perte de causalité temporelle (qualité de la prédiction des exogènes futures), (ii) une perte de causalité par canaux (qualité de la prédiction de l’endogène historique depuis les exogènes historiques), et (iii) la perte de prévision finale de l’endogène futur. Tout est différentiable et s’entraîne de bout en bout.
« combine the temporal causality loss, channel causality loss, and the forecasting loss »
Une métaphore pour l’injection Q/K
Si l’attention est une paire de lunettes, l’injection causale apporte la correction optique mesurée par un examen : les Q/K « apprises comme causalité » alignent le regard du modèle vers des dépendances justifiées par la structure des données, plutôt que des coïncidences photogéniques.
Ce que montrent les expériences
Le protocole expérimental est large et crédible. Les auteur·rices évaluent DAG :
- sur huit jeux de données multivariés très utilisés : ETTh1, ETTh2, ETTm1, ETTm2 (température d’huile et charges électriques), Weather (21 variables météo toutes les 10 min), Electricity (321 clients), Exchange (8 taux de change), Traffic (capteurs de trafic Bay Area) ;
- puis sur douze jeux « réels » où les exogènes futures sont connues ou très fiables : marchés de l’électricité NP (Nord Pool), PJM (USA), BE (Belgique), FR (France), DE (Allemagne), un jeu Energy (mix de production au Chili), deux réservoirs hydro (Colbun, Rapel) et quatre jeux d’éolien (Sdwpfm1/m2 à l’heure, Sdwpfh1/h2 à la demi‑heure).
Les baselines comparent des modèles qui supportent nativement les exogènes futures (TimeXer, TFT, TiDE) et d’autres adaptés par une fusion MLP (PatchTST, DLinear, DUET, CrossLinear, Amplifier, TimeKAN, xPatch). L’évaluation est unifiée (TFB / TSFM‑Bench), les horizons variés (jusqu’à F = 720 pas pour les classiques ; 24 et 360 pas pour les jeux « réels »), et les réglages sont documentés (PyTorch, Adam, etc.).
Côté résultats, DAG domine. Sur les tableaux de synthèse, le modèle réduit la MSE de 10,8 % et la MAE de 6,4 % par rapport au meilleur concurrent (TimeXer), et cumule le plus de rang #1 par métrique. Les ablations confirment que chaque rail — temporel et par canaux — apporte un gain propre, et que leur combinaison donne le meilleur score. Intéressant aussi : même sans utiliser d’exogènes futures (expérience de contrôle), DAG reste très compétitif, signe que l’architecture apporte un vrai biais inductif utile.
« Extensive experiments on multiple datasets demonstrate the state‑of‑the‑art performance of DAG. »
Un détail agréable : les figures d’analyse mobilisent Granger pour l’influence temporelle (historique → futur) et Pearson pour les liens entre variables (exogènes ↔ endogène). Cela ne « prouve » pas la causalité au sens fort, mais cadre la discussion et éclaire les choix d’architecture.
Enfin, bonus pragmatique : code officiel PyTorch disponible, jeux de données préparés et scripts de réplication. De quoi reproduire et brancher rapidement vos cas d’usage.
Pourquoi c’est intéressant (au‑delà de la jolie courbe)
DAG réconcilie causalité et efficacité. Plutôt que de viser l’identification au sens do‑calculus, il structure l’attention avec des régularités causales plausibles : le modèle est guidé vers des dépendances qui ont du sens structurellement (dans le temps et entre variables). C’est une manière élégante de réduire les corrélations fallacieuses tout en exploitant pleinement des exogènes futures — qui, dans beaucoup de métiers, existent (calendriers, tarifs, météo, quotas, etc.).
Trois bénéfices concrets : robustesse (moins de sur‑attention aux accidents heureux), transférabilité (les patrons exogène→endogène appris sur le passé aident quand on regarde les exogènes futures), et un soupçon de lisibilité (parler de « causalité temporelle / par canaux », c’est plus communicable que « un gros Transformer »).
Applications très concrètes (IA, data, dev… et même jeux 🎮)
Data science / MLOps. Si vos features comprennent des variables exogènes futures (calendrier prix/promo, météo, grilles horaires, capacité, délais logistiques), DAG fournit un cadre générique pour les exploiter sans tomber dans la corrélation opportuniste. On pense à l’énergie (marchés spot avec prévisions de charge/production), au retail (promos planifiées, événements), au transport (travaux/grèves programmées), au cloud/AIOps (fenêtres de maintenance).
Ingénierie logicielle. L’idée d’injection causale est composable : vous pouvez greffer ces blocs sur un forecaster existant pour contraindre l’attention sans tout réécrire. Cela se teste proprement : un bloc qui découvre, un bloc qui injecte, un mélangeur qui arbitre. On peut d’ailleurs n’activer qu’un seul rail pour mesurer son apport incrémental.
Création de jeux. Supposons que vous cherchiez à prédire le nombre de joueurs connectés demain soir. La série cible est la concurrence. Vos exogènes futures : calendrier d’événements en jeu, sortie d’un patch, week‑end double XP, live Twitch programmé, opérations marketing. Le rail temporel apprend comment ces événements passés façonnent la fréquentation future ; le rail par canaux capture quels types d’événements déclenchent quels comportements (retours, achats, sessions plus longues). En fournissant le planning futur au modèle, vous évitez de confondre « hasard » et « annonce », et vous obtenez des prévisions actionnables pour staffer les serveurs, dimensionner les récompenses, ou caler une promo croisée.
Simulations / agents. Si vous simulez une économie interne, un metagame ou un système multi‑agents, ces patrons causaux transférables (ex. « promo → hausse d’achats », « météo → trafic ») servent de politiques ou contraintes pour des agents décisionnels. Ce n’est pas de la causalité forte, mais c’est suffisant pour piloter des systèmes où l’on connaît le futur de certaines entrées.
Un exemple en une minute
Votre studio dispose : (1) de l’historique des comptes connectés minute par minute, (2) de l’historique des événements (patchs, tournois, promos), (3) du planning des deux prochaines semaines. Vous entraînez DAG pour découvrir comment ces événements passés affectent la fréquentation et comment les variables s’influencent entre elles. Au moment de prédire la semaine prochaine, vous injectez les patrons causaux et alimentez le modèle avec les exogènes du planning. Le modèle ne regarde plus « partout », il regarde juste, et pour des raisons.
Limites et précautions utiles
- « Causal » n’implique pas causalité forte. Ici, la causalité est structurelle : des patrons appris via Q/K guident l’attention. C’est précieux pour la prédiction, mais ce n’est pas une preuve interventionnelle.
- Dépendance à la qualité des exogènes futures. Les gains viennent quand ces exogènes sont fiables (calendriers officiels, quotas, météo de confiance). S’ils sont bruités, mieux vaut joindre un modèle qui prédit ces exogènes ou modéliser explicitement l’incertitude.
- Pipeline à soigner. Il faut synchroniser les horodatages, documenter les sources, et monitorer la dérive. Bonne nouvelle : le repo officiel donne des scripts et une éval unifiée (TFB/TSFM‑Bench), ce qui accélère l’adoption.
Pour aller plus loin
Le dépôt GitHub (PyTorch) est public, avec scripts de réplication et données pré‑traitées. Les auteurs précisent : « We open‑source our own collected TSF‑X datasets […] The results demonstrate that DAG outperforms state‑of‑the‑art methods. » Vous pouvez démarrer en dupliquant un de leurs scripts, puis brancher votre propre forecaster pour tester l’injection causale isolément (rail temporel ou par canaux).
Conclusion — deux rails, une rame, et moins d’aléas
DAG montre qu’on peut mieux prévoir non pas en empilant des couches, mais en organisant l’attention autour de relations causales plausibles. Dès qu’on dispose d’exogènes futures (ce qui est très fréquent), ignorer ce rail revient à se priver d’un aiguillage majeur. La prochaine fois qu’on vous dira « la causalité, c’est trop dur », vous pourrez sourire : pas besoin de refaire Popper pour livrer de meilleurs forecasts. Parfois, il suffit d’ajouter un bon conducteur sur chaque rail… et de vérifier que le wagon « exogènes » est bien accroché.
Références rapides : Qiu, Zhu, Li, Cheng, Wu, Guo, Yang, Hu. DAG: A Dual Causal Network for Time Series Forecasting with Exogenous Variables. arXiv, 2025. Dépôt officiel : decisionintelligence/DAG (PyTorch).