Par Elisha Bajemon, Ingénieur IA chez TW3 Partners. Dernière mise à jour : 12 novembre 2026.

En bref

Ce score rapporte les erreurs de prévision à l’ampleur des valeurs observées ; son mode de calcul doit être fixé avant de comparer des modèles. Le score étudié ici s’appelle weighted quantile loss, abrégé WQL. Il porte sur des prévisions exprimées en quantiles : chaque valeur prévue correspond à un niveau de probabilité. La prépublication TW3Cast de Thierry et Rochet, déposée sur arXiv le 16 septembre 2026, décrit une évaluation sur neuf niveaux. Le code officiel GluonTS, branche dev sans date éditoriale, additionne les pertes, les divise par la somme des valeurs absolues observées, puis moyenne les scores des niveaux retenus. Le périmètre de ces sommes détermine la place de chaque série dans le résultat. Pour choisir un modèle, TW3 recommande de joindre au score une spécification du calcul, des données conservées et de la version du logiciel.

1. Quel tableau entre dans le calcul ?

Le calcul rapproche chaque prévision de l’observation correspondant à la même série, à la même fenêtre et à la même échéance. Une série désigne la suite de valeurs d’une grandeur suivie dans le temps. Une fenêtre identifie un point de départ de prévision ; l’échéance désigne la position future évaluée depuis ce départ.

La figure du routeur TW3Cast, dans la prépublication de septembre 2026, représente des sorties par fenêtre et par niveau de quantile. Le README TW3-Cast, dans la révision retenue pour cet article, précise la forme (n_windows, 9, horizon) et les niveaux de 0,1 à 0,9. Pour relire ce tableau, identifiez la série dans la correspondance entre fenêtres et données d’origine ; ne supposez pas qu’elle occupe une dimension distincte du fichier.

Pour préparer un audit, décrivez séparément les dimensions physiques du tableau et leur sens métier. Le fichier de cibles doit permettre de retrouver l’observation associée à chaque prévision, tandis que la liste des niveaux donne le sens de chaque tranche probabiliste. Cette description peut tenir dans un dictionnaire de données joint au fichier.

La documentation GluonTS, sans date éditoriale, distingue une métrique prenant un niveau q et une métrique prenant une collection quantile_levels. Cette distinction aide à séparer la perte à un niveau donné du score résumé sur toute la grille. La correspondance entre les tableaux constitue un préalable à leur comparaison.

2. Où se trouve la pondération ?

Le WQL examiné normalise une somme de pertes quantiles par la somme des valeurs absolues observées sur le même périmètre. Le code GluonTS de WeightedSumQuantileLoss, sans date éditoriale, divise sum_quantile_loss par sum_absolute_label. Ce dernier objet additionne les valeurs absolues des cibles.

En notant A l’ensemble des observations retenues, y la cible et ŷ sa prévision au niveau q, on peut transcrire le calcul ainsi :

D(A) = somme sur A de |y|
WQL(q, A) = somme sur A de Lq(y, ŷ) / D(A)
mean WQL(A) = moyenne des WQL(q, A) sur les niveaux retenus

Ici, Lq suit la convention du fichier GluonTS stats.py, sans date éditoriale : la fonction quantile_loss inclut un facteur 2 par rapport à la perte pinball usuelle. Vérifier ce facteur fait partie de la comparaison de formules ; il peut déjà être présent dans le numérateur reçu par la métrique.

Le mot « mean » désigne ensuite une moyenne arithmétique des scores des quantiles dans MeanWeightedSumQuantileLoss. Cette classe applique la même opération à chaque niveau demandé, sans coefficient supplémentaire propre à chaque quantile. Les coefficients servant à combiner des modèles en amont appartiennent à la construction de la prévision.

Pour la relecture, demandez une expression du numérateur et du dénominateur avant toute moyenne finale. Nommer uniquement la colonne « WQL » laisse ouvertes la convention de perte élémentaire et la population sur laquelle porte la somme.

3. Que change la réduction sur plusieurs axes ?

Additionner les pertes avant de normaliser donne généralement un autre résultat que normaliser chaque série avant de faire la moyenne. Le code d’évaluation GluonTS, branche dev sans date éditoriale, précise que axis=None agrège toutes les dimensions. Dans le cas univarié, réduire la dimension temporelle tout en conservant les entrées du jeu de données laisse des scores par entrée.

Il faut alors identifier ces entrées : une fenêtre d’évaluation n’est pas nécessairement une série complète. Reconstituer un score par série exige de regrouper les fenêtres correspondantes. Le tableau ci-dessous expose les conventions possibles, à partir de la formule de normalisation du code GluonTS.

ConventionOpérationConséquence pour la lecture
GlobaleAdditionner les pertes et les cibles absolues, puis diviserChaque groupe contribue selon sa part du dénominateur total
Par série, puis moyenneCalculer le ratio de chaque série, puis moyenner ces ratiosChaque série conservée reçoit le même poids dans cette moyenne
Par fenêtre, puis moyenneCalculer le ratio de chaque fenêtre, puis moyennerChaque fenêtre conservée reçoit le même poids ; le regroupement par série reste distinct

La première conséquence se déduit algébriquement : lorsque les dénominateurs des groupes sont strictement positifs, le ratio global est la moyenne de leurs ratios pondérée par leurs dénominateurs. Les deux autres conventions donnent un poids égal aux unités de la moyenne finale.

Pour une revue de choix de modèle, inscrivez donc l’unité de comparaison dans l’intitulé du résultat. Conservez aussi les résultats intermédiaires par groupe : ils permettent au relecteur de suivre le passage des pertes élémentaires au score présenté.

4. Comment gérer cibles nulles ou manquantes ?

Une cible égale à zéro et une cible absente demandent des contrôles distincts. La première est une observation ; la seconde nécessite une règle d’exclusion. Le README TW3-Cast de la révision examinée indique les paramètres axis=None, mask_invalid_label=True et allow_nan_forecast=False pour l’évaluation.

Dans le code d’évaluation GluonTS, sans date éditoriale, le paramètre mask_invalid_label applique masked_invalid aux cibles. Le contrôle des prévisions est séparé : une prévision contenant NaN, marqueur d’une valeur numérique indéfinie, provoque une erreur lorsque son autorisation est désactivée.

Le dénominateur mérite sa propre vérification. La fonction de normalisation de WeightedSumQuantileLoss réalise directement la division. Si la somme des valeurs absolues conservées est nulle, le ratio mathématique est indéfini. Ce cas doit figurer dans la spécification avec le comportement attendu du logiciel et sa traduction dans le rapport.

Comme proposition de méthode, prévoyez un état explicite pour chaque groupe : évalué, exclu par le masque ou dépourvu de dénominateur exploitable. Joignez la règle qui décide si ce groupe participe à la moyenne finale. Le masque, c’est-à-dire la sélection des observations conservées, doit être commun au numérateur et au dénominateur. Consigner cette sélection permet de contrôler que les modèles sont comparés sur le même périmètre.

5. Pourquoi WQL et CRPS ne sont-ils pas toujours interchangeables ?

Le CRPS est un score comparant une distribution prédite à la valeur observée. Sa définition continue, son approximation sur une grille et sa normalisation correspondent à des calculs distincts. Dans leur prépublication déposée sur arXiv le 26 mai 2020, révisée le 8 janvier 2021, Bracher et ses coauteurs décrivent son lien avec les scores quantiles. Leur annexe mathématique présente l’intégrale sur les niveaux de probabilité et une approximation par des niveaux nombreux, approximativement équidistants.

La prépublication GIFT-Eval d’Aksu et ses coauteurs, déposée sur arXiv le 14 octobre 2024, version révisée le 11 novembre 2024, expose dans son annexe sur les métriques une approximation appelée mean weighted quantile loss. Sa formule divise la somme des pertes par la somme des valeurs absolues observées. Cette normalisation est donc une opération supplémentaire à identifier lorsqu’un résultat est présenté sous l’étiquette CRPS.

Dans TW3Cast, prépublication de septembre 2026, la définition du problème parle de mean weighted quantile loss, tandis que le protocole de décision décrit une approximation du CRPS par une moyenne de pertes pinball. Pour relire un score, il faut revenir à la fonction effectivement appelée, à son facteur multiplicatif et à son dénominateur.

La grille fixe également les niveaux évalués. Changer cette grille modifie les termes de la moyenne. Il est donc utile de conserver son contenu exact dans la spécification, même lorsque plusieurs équipes utilisent le même nom de métrique.

6. Quelles preuves joindre à un score annoncé ?

Le dossier de mesure doit relier les données de prévision au calcul exécuté. La prépublication TW3Cast de septembre 2026 décrit un contrôle des lignes soumises à partir d’artefacts sauvegardés. La réponse publique du projet du 21 septembre 2026 indique ensuite une correction de la soumission et précise que le code de sélection du tournoi reste non publié.

Le README de la révision examinée distingue la réplication exacte annoncée à partir des tableaux servis et le recalcul approximatif depuis les poids. Le dossier doit donc identifier la soumission visée et les sorties qui lui correspondent. La branche dev de GluonTS archivée ici documente une implémentation examinée ; elle ne prouve pas la version exacte utilisée pour l’expérience TW3Cast.

Nous recommandons de joindre au résultat une fiche de calcul contenant :

  • la version de bibliothèque, la révision du code et le nom de la fonction appelée ;
  • les niveaux de quantile, leur ordre et les dimensions du tableau ;
  • les axes réduits et l’unité de la moyenne finale ;
  • le masque des observations et la règle applicable aux dénominateurs nuls ;
  • la référence du fichier de prévisions et celle des cibles ;
  • la formule du numérateur, du dénominateur et de la perte élémentaire.

Cette fiche constitue une proposition de livrable d’audit. Les contrôles présentés ici reposent sur la lecture des sources ; aucun benchmark n’a été réexécuté pour cet article.

FAQ

Quel tableau entre dans le calcul ?
Un tableau reliant les fenêtres de prévision aux séries, échéances et niveaux probabilistes. Chaque valeur prédite doit retrouver sa cible ; le niveau de quantile reste une information distincte de l’axe temporel.

Où se trouve la pondération ?
Dans le code GluonTS examiné, sans date éditoriale, la somme des pertes est divisée par la somme des valeurs absolues observées. La métrique moyenne calcule ensuite une moyenne arithmétique des scores obtenus pour les niveaux demandés.

Que change la réduction sur plusieurs axes ?
Elle fixe les observations regroupées avant la division, selon les axes décrits dans le code d’évaluation GluonTS, sans date éditoriale. Lorsque leurs dénominateurs sont strictement positifs, une moyenne arithmétique des ratios donne un poids égal aux séries conservées ; le ratio global les pondère par leurs dénominateurs.

Comment gérer cibles nulles ou manquantes ?
Documentez séparément le masque des cibles invalides, le contrôle des prévisions NaN et le cas d’un dénominateur nul. Le rapport doit rendre visibles les exclusions et leur effet sur le périmètre évalué.

Pourquoi WQL et CRPS ne sont-ils pas toujours interchangeables ?
L’annexe de Bracher et ses coauteurs, version du 8 janvier 2021, distingue le CRPS continu de son approximation par une grille de quantiles. Le WQL décrit dans GIFT-Eval, version du 11 novembre 2024, ajoute une normalisation par les valeurs observées ; comparer les étiquettes exige donc de vérifier les formules.

Pour aller plus loin

Sources