Aller au contenu

La vraie barre

Pendant toute la campagne, la cible s'est écrite en cinq caractères : 0.198. À côté, une exactitude de 68,7 %. Ces deux nombres viennent de la littérature, ils décrivent la performance de bookmakers sur des matchs professionnels, et ils ont servi de ligne d'arrivée à quinze chantiers.

Le problème, c'est qu'une barre n'est pas un nombre. Une barre, c'est un nombre plus une population. Et la population du 0.198 n'est pas la nôtre.

Pourquoi un chiffre de littérature n'est pas une barre

Notre holdout contient 1 146 matchs qui mélangent tous les niveaux du CS2 professionnel, du tier 1 au tier 3. Le repère de littérature, lui, est mesuré sur le pool que les bookmakers cotent — c'est-à-dire l'élite — à une autre période, avec une autre composition d'équipes.

Comparer 0.2041 à 0.198 revient donc à comparer deux mesures faites sur deux échantillons disjoints. Ce n'est pas un détail de rigueur : c'est la différence entre « notre modèle est moins bon » et « notre modèle est mesuré ailleurs ».

Intuition — la métaphore de l'examen

Deux élèves obtiennent 13 et 14 sur 20. Le second est-il meilleur ? On ne peut pas le dire tant qu'on ignore s'ils ont passé le même examen. Un Brier est une note ; le pool de matchs est l'examen. Toute la campagne avait comparé des notes sans jamais vérifier les sujets.

Deux issues étaient possibles. Soit obtenir les cotes réelles sur nos matchs — c'est le chapitre suivant. Soit, à défaut, reconstruire le pool que les bookmakers cotent et y re-mesurer notre modèle. C'est ce second chemin qu'a pris le chantier bookpool, et il a livré une surprise.

Définir avant de mesurer, et l'écrire dans un fichier horodaté

Le chantier commence par un geste méthodologique qui vaut, à lui seul, la lecture du rapport : les quatre définitions candidates du « pool comparable » ont été figées et écrites sur disque à 11:51:56 UTC, alors que la première métrique n'est calculée qu'à 11:51:57. Une seconde d'écart, et un journal qui l'atteste.

Pourquoi cette précaution ? Parce que le choix du pool est un degré de liberté gigantesque. Un holdout de 1 146 matchs contient des centaines de sous-ensembles définissables : les LAN, les gros tournois, les équipes connues, les Bo3, les matchs d'un mois donné, toutes leurs intersections. Sur ces centaines de sous-ensembles, il en existe forcément quelques-uns où notre modèle brille.

Si l'on regarde d'abord les résultats et qu'on choisit ensuite la définition, on ne mesure plus la performance du modèle : on mesure sa meilleure poche, et on la présente comme si elle avait été prévue. C'est la même faute que le sur-apprentissage, transposée au choix de la population — et elle est invisible dans le résultat final, puisque le calcul, lui, est correct.

Erreur fréquente — choisir son échantillon après avoir vu les scores

Elle ne demande aucune malhonnêteté consciente. Il suffit de se dire « en fait, la vraie comparaison, c'est sur les LAN » — après avoir constaté qu'on y est bon. Le seul remède connu est procédural : écrire les définitions, les horodater, puis mesurer. Un fichier daté avant la première métrique est une preuve ; une intention n'en est pas une.

Les cinq définitions candidates

Chacune repose sur un critère externe au modèle : rien dans ces définitions ne dépend de nos prédictions.

Définition Critère Justification
D1 — enjeu dotation de l'événement ≥ 50 000 $ les bookmakers cotent les circuits financés ; palier rond séparant les ligues professionnelles des cups amateurs
D2 — notoriété les deux équipes classées ≤ 100 au ranking mondial HLTV le jour du match un marché n'ouvre que si les deux camps sont identifiables par le parieur
D3 — LAN match joué en LAN événements billettés, diffusés, annoncés des mois à l'avance : couverture quasi totale
D4 — enjeu ∧ notoriété D1 et D2 intersection : événement financé et affiche lisible. Définition principale
D5 — tier 1 strict les deux équipes ≤ 30 au ranking la liste publiée par HLTV, donc la définition la plus fidèle du « tier 1 »

Deux choix méritent d'être explicités, parce qu'ils sont des arbitrages et pas des évidences.

Le seuil du top-100 plutôt que du top-30 a été retenu pour la puissance statistique, pas pour la performance : le top-30 ne laisse que 48 matchs dans le holdout, un effectif où l'intervalle de confiance couvre presque tout. D5 est donc déclarée d'avance comme une sensibilité sous-dimensionnée, jamais comme une conclusion.

Le rang utilisé est un rang daté, observé au plus 45 jours avant le match : c'est la même exigence d'intégrité temporelle que partout ailleurs dans le projet. Elle a un coût — les deux rangs ne sont connus que pour 814 des 1 146 matchs du holdout.

Enfin, une règle qui évite une confusion fréquente : le modèle n'est pas ré-entraîné. On restreint l'évaluation, pas l'entraînement. Le contrôle d'intégrité le vérifie, en reproduisant le leader global à 0.2041 / 67,9 % exact.

Le résultat, et il n'est pas celui qu'on attendait

Pool n Exactitude (IC 95 %) Brier Glicko sur le même pool Apport
D0 global (référence) 1 146 67,9 % [65,3–70,5] 0.2041 59,1 % +8,8 pts
D1 enjeu ≥ 50 k$ 398 70,9 % [66,6–75,1] 0.1933 61,6 % +9,3 pts
D2 notoriété top-100 278 66,2 % [60,4–71,6] 0.2202 55,0 % +11,2 pts
D3 LAN 380 74,7 % [70,5–79,2] 0.1722 61,8 % +12,9 pts
D4 enjeu ∧ notoriété 226 66,8 % [60,6–73,0] 0.2178 55,3 % +11,5 pts
D5 top-30 strict 48 58,3 % [43,8–72,9] 0.2380 54,2 % +4,2 pts
bookmakers (littérature) — 68,7 % 0.198 — —

Sur la définition principale D4, la barre est manquée : 66,8 % contre 68,7 % (−1,9 point) et 0.2178 contre 0.198 (+0.020). Le bootstrap à 1 000 tirages donne \(P(\text{exactitude} > 68{,}7\,\%) = 0{,}27\) et \(P(\text{Brier} < 0{,}198) = 0{,}05\) : l'écart n'est pas tranché sur l'exactitude, il l'est plutôt sur le Brier, et dans le mauvais sens.

Mais le résultat intéressant est ailleurs, et il inverse une intuition que tout le monde partageait au début du chantier.

Le pool coté est plus dur, pas plus facile

L'attente naturelle était : « restreindre aux matchs que les bookmakers cotent va nous avantager, ce sont les matchs les mieux documentés ». C'est faux, et de beaucoup.

La preuve ne vient pas de notre modèle — elle serait circulaire. Elle vient d'une ancre externe : le Glicko officiel de Valve, qui ne sait rien de nos features et sert de thermomètre de difficulté. Son exactitude tombe quand on restreint :

Exactitude du Glicko de Valve, par pool
(l'ancre externe : plus elle baisse, plus le pool est dur)

D0 global (1 146)  ############################## 59,1 %
D1 enjeu   (398)   ################################ 61,6 %
D3 LAN     (380)   ################################ 61,8 %
D2 notor.  (278)   ###################### 55,0 %
D4 princ.  (226)   ####################### 55,3 %
D5 top-30  (48)    #################### 54,2 %

Les pools définis par la notoriété (D2, D4, D5) sont nettement plus durs que le pool global. L'explication tient en une phrase : quand les deux équipes sont connues, elles sont aussi de niveau proche, et l'affiche est serrée. La proportion de matchs serrés — probabilité annoncée entre 35 % et 65 % — le confirme : 50,4 % globalement, 49,1 % sur D4… mais 37,9 % en LAN.

Erreur fréquente — comparer deux chiffres produits par deux mesures différentes

L'exactitude du Glicko affichée ici pour le pool global, 59,1 %, n'est pas celle de la baseline du reste du cours, 56,0 %. Les deux ne sont pas produites par la même mesure. Ce qui est utilisé dans ce chapitre, et la seule chose qui le soit, c'est l'écart entre pools calculé avec la même règle : 59,1 % contre 55,3 %. Les niveaux absolus d'une ancre ne se transportent pas d'un rapport à l'autre ; ses variations, si.

Ce détail dit quelque chose de la méthode : l'ancre n'est utile que si elle est la même partout. Peu importe qu'elle soit médiocre — le Glicko de Valve est la pire horloge du projet — pourvu qu'elle ne bouge pas d'un pool à l'autre.

À retenir — la difficulté d'un pool se mesure avec un tiers

Pour savoir si un sous-ensemble est plus dur, on n'utilise pas le modèle qu'on évalue : la conclusion serait circulaire. On utilise une référence indépendante et fixe, et l'on ne lit que ses écarts entre pools. C'est le service le plus utile qu'ait rendu la baseline de toute la campagne.

À difficulté corrigée, notre apport augmente

C'est la conclusion à emporter. Notre modèle fait moins bien en valeur absolue sur le pool comparable — mais l'écart au Glicko y est plus grand :

  • pool global : 67,9 % contre 59,1 %, soit +8,8 points ;
  • pool comparable D4 : 66,8 % contre 55,3 %, soit +11,5 points.

Autrement dit, sur les matchs qui intéressent les bookmakers, le modèle apporte plus, pas moins. La baisse du chiffre absolu mesure la difficulté du pool ; la hausse de l'écart mesure la valeur du modèle. Confondre les deux, c'est lire un thermomètre à l'envers.

Et les pools où la barre est franchie ?

D1 (0.1933 / 70,9 %) et D3 (0.1722 / 74,7 %) dépassent les deux repères bookmaker. Il serait tentant de s'arrêter là.

Ce serait une erreur : ce sont des pools déséquilibrés, pas des pools « tier 1 ». Le LAN concentre les phases finales où un favori net affronte un qualifié — 37,9 % de matchs serrés seulement. Prédire y est plus facile pour tout le monde, y compris pour le Glicko, dont l'exactitude y monte à 61,8 %.

Un spécialiste « tier 1 » ne sauve rien

Une dernière idée restait à tester : et si l'on entraînait un modèle uniquement sur le pool comparable, plutôt que d'y restreindre l'évaluation ?

La validation interne y croyait, à peine : elle retenait le spécialiste sur D2 (gain 0.0011) et sur D4 (gain 0.0002), deux valeurs sous le plancher de bruit. La passe de holdout l'a infirmé.

Pool Généraliste Spécialiste Verdict
D4 0.2178 0.2195 spécialiste plus mauvais
D2 0.2202 0.2269 spécialiste plus mauvais

Un modèle « tier 1 » entraîné sur 1 819 matchs ne bat pas un généraliste entraîné sur 10 287. C'est la même leçon que le cimetière des méthodes mortes : à ce niveau de signal, le volume de données pèse plus lourd que la spécialisation.

La barre en exactitude est elle-même floue

Un mot sur l'autre moitié de la cible, les 68,7 % — ou, dans la formulation courante du projet, « atteindre 70 % ».

Le chantier maxacc a mesuré ce que vaut cette cible. À \(n = 1\,146\), le leader est à 67,89 % avec un intervalle de confiance à 95 % de [65,27 ; 70,59], soit une demi-largeur de ±2,66 points. Un modèle mesuré à 70,0 % ne serait donc pas distinguable de 67,9 % : l'écart de 2,1 points est plus petit que le bruit d'échantillonnage.

Et il n'y a rien à gratter du côté de la décision. Régler le seuil de décision sur la validation donnait \(t^\star = 0{,}530\), un optimum sur lequel les quatre folds s'accordaient ; en holdout, ce seuil coûte −1,83 point d'exactitude, et l'optimum a posteriori du holdout est de l'autre côté de 0,5. Même en trichant — en prenant le seuil optimal du holdout, ce qui est interdit — on plafonne à 68,59 %.

Limite importante — déplacer le seuil ne change ni le Brier ni la log-loss

Le seuil de décision transforme une probabilité en pronostic ; il ne transforme pas la probabilité. Les deux lignes concernées du holdout affichent 0.2041 / 0.5916 à l'identique. Une « victoire en exactitude » obtenue en déplaçant un seuil n'améliore aucune prédiction : elle change seulement la façon de les arrondir.

Ce que ce chapitre a établi, et ce qui manque encore

Établi. La barre de 0.198 / 68,7 % n'est pas la nôtre. Sur le pool comparable défini a priori, elle n'est pas franchie — mais ce pool est plus difficile que le pool global, et l'apport de notre modèle par rapport à une ancre externe y est plus grand, pas plus petit.

Manquant. Tout cela reste une comparaison indirecte. Notre pool comparable est une approximation du leur, reconstruite depuis la dotation et le ranking, pas depuis la liste réelle des marchés ouverts par un opérateur. Les trois définitions ne se recouvrent d'ailleurs que partiellement : D1 ∩ D2 ne fait que 226 matchs sur 398 et 278 — aucune ne capture seule « le pool coté ».

Le rapport le dit sans détour : tant qu'on n'a pas leurs cotes sur nos matchs, aucun écart mesuré ici ne prouve une supériorité ni une infériorité.

Il se trouve qu'on les avait.


Partie : Contre le marché · Chapitre suivant : Les cotes étaient là · Glossaire