Le cimetière — toutes les méthodes qui ont échoué¶
Un rapport de projet ne montre en général que ce qui a marché. C'est dommage, parce que les échecs contiennent plus d'information : un succès dit « ceci marche », un échec bien mesuré dit « ceci ne marche pas et voici pourquoi », ce qui délimite le problème.
Ce chapitre enterre proprement sept méthodes. Chacune a droit à ses mathématiques, à ses chiffres, et à une autopsie. Deux d'entre elles n'ont jamais été codées — leur mise à l'écart est un choix raisonné, présenté comme tel.
Avant tout : combien vaut un chiffre ?¶
Une précaution nécessaire pour lire ce qui suit. L'incertitude d'un Brier mesuré sur nos échantillons vaut, en ordre de grandeur :
| Échantillon | Taille | Incertitude approximative du Brier |
|---|---|---|
| holdout complet | 1 146 | ± 0.005 |
| validation interne | 808 | ± 0.006 |
| segment dur de la validation | 531 | ± 0.007 |
Ce calcul suppose le modèle parfaitement calibré et prend l'écart-type des contributions individuelles \((p_i - y_i)^2\) à partir de notre propre table de calibration ; c'est une approximation, pas un test statistique.
Deux modèles comparés sur les mêmes matchs sont bien plus précisément départageables que ces chiffres ne le suggèrent — leurs erreurs sont largement communes, et seule la différence compte. Mais l'ordre de grandeur reste utile : un écart de 0.001 n'est pas un résultat, il faut soit un écart plus gros, soit la même conclusion sur deux fenêtres disjointes.
C'est précisément l'erreur commise dans le cinquième cas de ce chapitre.
1. Le stacking, acte I : cinq bases jumelles¶
La méthode¶
Le stacking consiste à empiler deux étages. À l'étage du bas, plusieurs modèles de base prédisent chacun leur probabilité. À l'étage du haut, un méta-modèle apprend à combiner ces prédictions.
Le point délicat est de fournir au méta-modèle des prédictions honnêtes : si on entraîne une base sur un match puis qu'on lui demande de le prédire, elle triche. La solution standard est l'out-of-fold : découper le train en blocs, et prédire chaque bloc avec un modèle entraîné sur les autres. Pour un problème temporel, les blocs doivent être des préfixes chronologiques — chaque bloc est prédit par un modèle ajusté sur tout ce qui le précède, jamais sur ce qui le suit (intégrité temporelle).
bloc : 1 2 3 4 5 6 7 8 9 10
├────┼────┼────┼────┼────┼────┼────┼────┼────┤
fit sur ████ → prédit bloc 2
fit sur █████████ → prédit bloc 3
fit sur ██████████████ → prédit bloc 4
…
fit sur ███████████████████████████████ → prédit bloc 10
Le protocole réel¶
L'approche stack a construit cinq modèles de base : le champion XGBoost ré-entraîné,
une régression logistique sur les mêmes features, un XGBoost privé des deux ratings, un
Elo à marge analytique, et le Glicko de Valve. Out-of-fold sur 10 blocs temporels (blocs
2 à 9 exploitables). Quatre méta-modèles candidats, départagés par le Brier moyen des
trois derniers blocs :
| Méta-modèle | Brier interne |
|---|---|
| moyenne des logits XGBoost + logistique | 0.2295 |
| logistique sur 3 bases (XGB, logreg, Elo) | 0.2296 |
| logistique sur les 5 bases | 0.2306 |
| logistique sur les 5 bases, faible régularisation | 0.2308 |
Le méta retenu est le plus simple des quatre : une moyenne de logits à deux termes.
Le résultat¶
| Modèle | Brier holdout | Accuracy |
|---|---|---|
| Champion XGBoost | 0.2329 | 60.0 % |
| Stack | 0.2306 | 60.1 % |
| Bases : logistique seule | 0.2310 | 62.0 % |
| Bases : XGBoost sans les ratings | 0.2356 | 58.1 % |
| Bases : Elo à marge seul | 0.2397 | 57.6 % |
| Bases : Glicko seul | 0.2422 | 56.1 % |
Le stack gagne 0.0023 sur le champion. C'est réel — mais très en dessous de la fourchette attendue pour un ensemble (l'ordre de grandeur habituel serait 0.005 à 0.010), et surtout : la logistique toute seule fait 0.2310, à 0.0004 du stack. Tout l'appareil à deux étages n'apporte rien qu'un modèle plat n'ait déjà.
L'autopsie : ce sont les erreurs qui doivent se décorréler¶
Voici le calcul qui explique tout. Supposons \(M\) modèles dont les erreurs ont la même variance \(\sigma^2\) et une corrélation deux à deux \(\rho\). La variance de l'erreur de leur moyenne vaut
Cette formule est le cœur de tout l'ensembling. Numériquement :
| Corrélation \(\rho\) | \(M = 2\) | \(M = 6\) |
|---|---|---|
| 0.95 | 0.975 \(\sigma^2\) | 0.958 \(\sigma^2\) |
| 0.50 | 0.750 \(\sigma^2\) | 0.583 \(\sigma^2\) |
Le nombre de modèles ne sert à rien si \(\rho\) est proche de 1 : quand \(\rho = 0.95\), passer de 2 à 6 modèles fait gagner 1.7 % de variance. Quand \(\rho = 0.5\), il fait gagner 17 %.
Or nos cinq bases partageaient les mêmes features. Elles voyaient la même chose, donc elles se trompaient sur les mêmes matchs : un match imprévisible (une équipe qui sort un jour de grâce) est raté par les cinq. Leur \(\rho\) était très élevé, et la formule ci-dessus fixe le plafond.
À retenir — la loi de l'ensembling
Un ensemble n'exploite pas la diversité des modèles, il exploite la décorrélation de leurs erreurs. Deux algorithmes différents sur les mêmes features produisent des erreurs très corrélées ; c'est pour cela qu'ils ne s'additionnent pas.
2. Le stacking, acte II : six familles disjointes¶
L'autopsie précédente désignait un coupable clair — les features partagées — et donc un
remède évident : construire des bases sur des familles de features strictement
disjointes. C'est ce qu'a fait lastmile.
Le protocole¶
Six modèles de base, sans aucune feature en commun : les horloges, les statistiques joueurs, les données de maps, l'économie des rounds, le rang HLTV, les features v2 historiques. Out-of-fold sur 6 blocs temporels. Méta-modèle logistique nourri des logits des six bases plus une mesure de dissensus (l'écart-type des six avis, qui indique quand les familles se contredisent).
C'était une bonne idée, correctement exécutée, et l'échec est sans appel.
| Configuration | Brier validation |
|---|---|
| stack de 6 familles disjointes (méta + dissensus) | 0.2201 |
| stack + la base à 46 features (7 bases) | 0.2178 |
| blend 50/50 du stack et du meilleur modèle plat | 0.2170 |
| modèle plat à 54 features | 0.2163 |
Le stack n'a jamais battu le modèle plat, dans aucune de ses variantes. Ajouter le modèle plat comme septième base ne fait que le rapprocher de lui-même, sans jamais le dépasser.
L'autopsie : décorréler les features ne décorrèle pas les erreurs¶
C'est la leçon la plus subtile du chapitre, et elle mérite qu'on s'y arrête.
Les six familles mesurent des choses différentes — un rating TrueSkill n'est pas un ADR, qui n'est pas un win rate par map. Mais elles estiment toutes la même quantité latente : la force relative des deux équipes. Ce sont six thermomètres pointés sur le même patient. Leurs mesures diffèrent, leurs erreurs, elles, sont dominées par ce que le patient a d'imprévisible ce jour-là — et cette part-là est commune.
Il y a une seconde raison, plus mécanique. Le modèle plat à 54 features voit déjà toutes les familles simultanément. Il peut apprendre qu'un écart de rating compte davantage quand le rang HLTV le confirme — une interaction entre familles. Le stack, lui, force chaque famille à produire son avis isolément avant de les combiner : il détruit l'information croisée à l'étage du bas, et le méta-modèle ne peut pas la reconstruire à partir de six nombres.
Limite importante
Le stacking n'est pas mort en général — il domine les compétitions Kaggle depuis quinze ans. Il est mort ici, dans un cadre précis : un seul type de données, un seul mécanisme causal, un modèle plat capable d'ingérer toutes les features à la fois. Le stacking gagne quand les bases ne peuvent pas être fusionnées : sources hétérogènes (texte + image + tabulaire), échelles de temps incompatibles, ou modèles pré-entraînés qu'on ne peut pas ré-entraîner ensemble.
3. Le GBDT→LR de Facebook¶
La méthode¶
Publiée par Facebook en 2014 pour la prédiction de clics publicitaires, c'est une des recettes hybrides les plus élégantes du domaine. On entraîne d'abord un ensemble d'arbres, puis on jette leurs prédictions : on ne garde que l'identité des feuilles atteintes. Chaque arbre devient une variable catégorielle (« ce match est tombé dans la feuille 5 de l'arbre 12 »), encodée en indicatrices, et l'ensemble de ces indicatrices nourrit une régression logistique.
L'idée est séduisante : les arbres fabriquent automatiquement des non-linéarités et des interactions, la régression logistique les recombine linéairement avec une calibration propre et une régularisation sérieuse. Le meilleur des deux mondes.
Les chiffres¶
L'approche push l'a implémentée et réglée sur trois configurations :
| Configuration | Brier validation |
|---|---|
| régression logistique de référence, 40 features | 0.2263 |
| GBDT→LR, arbres de profondeur 2, \(C = 0.1\) | 0.2405 |
| GBDT→LR, arbres de profondeur 3, \(C = 0.03\) | 0.2443 |
| GBDT→LR, arbres de profondeur 3, \(C = 0.1\) | 0.2559 |
| mélange logistique + GBDT→LR (50/50) | 0.2344 |
| mélange logistique 75 % + GBDT→LR 25 % | 0.2281 |
C'est un désastre : la meilleure configuration perd 0.0142 de Brier, soit la moitié de tout le chemin parcouru pendant la campagne entre le champion de départ (0.2330) et le leader final (0.2041). Même dilué à 25 % dans la logistique, il dégrade encore.
Honnêteté du protocole
Sur la table exploratoire du holdout, GBDT→LR marque 0.2211 et son mélange avec la logistique 0.2174 — beaucoup moins catastrophique qu'en validation, et à peu près à égalité avec le modèle finalement retenu (0.2172). Cela ne change rien à la décision, qui a été prise sur la validation avant toute mesure sur le holdout, et cela n'établit aucune supériorité. Mais l'écart entre les deux fenêtres est lui-même instructif sur la volatilité de ces mesures.
L'autopsie : des marches sur une droite¶
Le codage par feuilles remplace une variable continue par une variable catégorielle. Sur une relation vraiment linéaire, c'est une perte sèche à deux titres.
D'abord la discrétisation : tous les matchs d'une même feuille reçoivent la même contribution, quel que soit leur écart de rating à l'intérieur de la feuille. On approche une droite par un escalier.
Ensuite, et c'est plus grave, la perte de l'ordre : pour la régression logistique de l'étage du haut, les feuilles sont des catégories sans relation entre elles. Elle ne sait pas que la feuille 3 est « entre » la feuille 2 et la feuille 4. Chaque feuille reçoit un poids indépendant, estimé sur les seuls matchs qui y sont tombés. On remplace un modèle à 40 paramètres contraints par un modèle à plusieurs centaines de paramètres libres, sur 4 000 lignes.
Le GBDT→LR marche chez Facebook parce que leurs features brutes (identifiants d'annonceur, contextes catégoriels) n'ont aucune structure linéaire à préserver, et parce qu'ils ont des centaines de millions de lignes pour estimer les poids de feuilles. Nous avons l'inverse : une structure linéaire forte, et 4 000 lignes.
4. La calibration forcée : Platt et isotonique¶
La méthode¶
Un modèle peut classer correctement tout en annonçant de mauvais nombres. S'il dit 80 % là où la réalité est 70 %, il est surconfiant : son ordre est bon, sa calibration est mauvaise. Deux recalibrations classiques existent.
Platt scaling : on ajuste une régression logistique à une variable sur les logits du modèle,
où \(a\) contrôle la « pente » de confiance (\(a < 1\) rétrécit vers 0.5) et \(b\) le décalage global. Deux paramètres seulement : c'est robuste, mais ça ne corrige qu'une déformation très régulière.
Régression isotonique : on cherche la fonction croissante \(g\) qui minimise \(\sum_i (y_i - g(p_i))^2\), résolue par l'algorithme pool adjacent violators. Le résultat est une fonction en escalier, arbitrairement flexible. Beaucoup plus puissante que Platt — et beaucoup plus capable de sur-ajuster.
Le constat de départ¶
La table de calibration du champion sur le holdout montrait un vrai problème :
| Tranche | n | Annoncé | Réel | Écart |
|---|---|---|---|---|
| 0.5 – 0.65 | 459 | 56.7 % | 55.3 % | −1.4 pt |
| 0.65 – 0.8 | 251 | 72.8 % | 64.5 % | −8.3 pt |
| 0.8 – 1.0 | 73 | 84.0 % | 89.0 % | +5.0 pt |
Huit points de surconfiance sur 251 matchs : de quoi croire à un gain facile.
Le résultat¶
La sélection interne, faite proprement sur les prédictions out-of-fold du train, a choisi... l'identité — c'est-à-dire aucune calibration :
| Calibrateur | Brier interne (champion) | Brier interne (stack) |
|---|---|---|
| aucun | 0.2280 | 0.2295 |
| Platt | 0.2280 | 0.2298 |
| isotonique | 0.2300 | 0.2318 |
Et quand on force quand même la calibration sur le holdout, pour voir :
| Modèle | Brut | + Platt | + isotonique |
|---|---|---|---|
| Champion | 0.2329 | 0.2338 | 0.2346 |
| Stack | 0.2306 | 0.2312 | 0.2327 |
Les quatre dégradent. L'isotonique fait particulièrement mal en log-loss (0.6889 contre 0.6564 pour le champion brut), ce qui est logique : ses paliers extrêmes envoient des probabilités très proches de 0 ou 1, et la log-loss punit sévèrement une certitude fausse.
L'autopsie : une dérive de régime, pas un défaut du modèle¶
Le point décisif est celui-ci : la surconfiance mesurée dans le holdout n'existe pas dans les prédictions out-of-fold du train. Le modèle n'est pas structurellement surconfiant ; il l'a été sur ces six semaines-là.
Un calibrateur ne peut apprendre que ce qui est présent dans ses données d'apprentissage. Comme la déformation n'y est pas, il apprend une correction nulle (ce que fait Platt, correctement) ou du bruit (ce que fait l'isotonique). Dans les deux cas, appliquée à un holdout où la déformation existe, la correction ne corrige rien et ajoute sa propre variance.
Erreur fréquente
Regarder la table de calibration du test, y voir un défaut, et le corriger. C'est une fuite déguisée en bonne pratique : on utilise le test pour choisir un paramètre. Le seul protocole valide est celui appliqué ici — apprendre le calibrateur sur des prédictions out-of-fold du train, et le sélectionner sur ce même train, quitte à ce qu'il choisisse l'identité.
Épilogue rassurant : les leaders suivants n'ont plus jamais eu ce défaut. La table de
calibration de segmodel (chapitre 3) est propre sur les
six tranches. La surconfiance était bien un accident de régime, pas une maladie
chronique.
5. Le rétrécissement vers 50 %¶
La méthode¶
Si un modèle est trop confiant, on peut ramener toutes ses prédictions vers 0.5 par une transformation à un seul paramètre :
Cette transformation a une propriété remarquable : elle préserve l'ordre des prédictions et le côté de 0.5. L'accuracy est donc rigoureusement inchangée, par construction — seuls le Brier et la log-loss peuvent juger. C'est la façon la plus pure d'isoler la question « ce modèle est-il trop confiant ? ».
Il existe même un \(s\) optimal en forme fermée. En posant \(d_i = p_i - 0.5\) et \(e_i = y_i - 0.5\), le Brier vaut
qui est une parabole en \(s\), minimale en
Un \(s^\star < 1\) signale un modèle surconfiant, \(s^\star > 1\) un modèle sous-confiant, et \(s^\star \approx 1\) un modèle dont l'échelle de confiance est correcte.
Les chiffres¶
L'approche hardcore a testé le rétrécissement seul, sur la validation interne, en
visant le segment le plus difficile (matchs en ligne et Bo≥3) :
| Configuration | Brier global | Brier segment dur |
|---|---|---|
leader segmodel, sans rétrécissement |
0.2147 | 0.2238 |
| \(s = 0.85\) | 0.2146 | 0.2236 |
| \(s = 0.70\) | 0.2154 | 0.2249 |
Verdict : \(s = 0.85\) est neutre à 0.0001 près, \(s = 0.70\) dégrade franchement. Le \(s^\star\) implicite est donc très proche de 1. Le leader n'est pas surconfiant sur le segment dur — l'hypothèse de départ était fausse.
L'échec instructif : un gain de validation qui ne se transfère pas¶
hardcore ne s'est pas arrêté là. Il a testé une seconde idée, plus intéressante : sur
le noyau dur, un modèle plus simple (3 features seulement : TrueSkill, Elo à marge,
rang HLTV) battrait-il le modèle riche à 54 features, par un meilleur compromis
biais-variance ? Cette branche simple était mélangée au leader, puis éventuellement
rétrécie — soit 110 combinaisons en validation.
En validation, l'hypothèse semblait tenir, et proprement :
| Brier global | Brier segment dur | |
|---|---|---|
| leader (référence) | 0.2147 | 0.2238 |
| branche 3 features, \(C = 0.03\), poids 0.25 | 0.2135 | 0.2221 |
| même branche, mais avec les 54 features | 0.2148 | — |
Tout collait : le gain était présent sur les deux métriques, et la version « riche » de la même branche faisait pire, ce qui confirmait le raisonnement biais-variance à l'intérieur de la branche.
Puis la passe holdout, unique :
| Brier global | Brier dur (n = 758) | Accuracy | |
|---|---|---|---|
leader segmodel (contrôle exact) |
0.2041 | 0.2205 | 67.9 % |
candidat hardcore |
0.2042 | 0.2207 | 68.0 % |
Rien. Le gain de 0.0012 mesuré en validation vaut 0.0000 sur le holdout.
L'autopsie : 110 essais sur 531 matchs¶
Reprenons le tableau d'incertitude du début de chapitre : sur les 531 matchs durs de la validation, l'incertitude d'un Brier est de l'ordre de 0.007. Le gain observé était de 0.0012 — un sixième de cette incertitude.
Et il n'a pas été observé une fois : il a été sélectionné comme le meilleur de 110 combinaisons. Quand on tire 110 fois dans une distribution centrée en zéro avec un écart-type de 0.007, le maximum tiré est positif et respectable par pure mécanique. Le gain sélectionné était le bruit lui-même, choisi pour son amplitude.
À retenir — la règle des trois questions
Avant de croire un gain de validation, se demander :
- Combien d'essais ont produit ce maximum ? (ici : 110)
- Quelle est l'incertitude sur l'échantillon de validation ? (ici : ±0.007)
- Le gain est-il grand devant cette incertitude ? (ici : six fois plus petit)
hardcore est le seul rapport de la campagne à conclure « hypothèse INFIRMÉE » et à
ne pas ajouter de ligne au leaderboard. C'est aussi le plus utile.
6. La recomposition map par map¶
La méthode¶
Un match de CS2 n'est pas un événement atomique : c'est un Bo3, donc deux ou trois manches. Il y a mécaniquement deux fois plus de manches que de matchs, et prédire la manche plutôt que la série devrait donner un modèle mieux entraîné, qu'on recompose ensuite :
où \(p\) est la probabilité de gagner une manche. Ces formules — démontrées au chapitre 5 — supposent les manches indépendantes et de même probabilité.
Deux variantes ont été essayées. La première (H1) prédit la victoire binaire sur chaque
map du veto attendu, puis compose. La seconde (H2) descend encore d'un cran : elle
prédit la proportion de rounds gagnés et modélise la manche comme une course au premier à
13.
Les chiffres¶
push, sur la validation interne :
| Configuration | Brier validation |
|---|---|
| logistique de référence, niveau série | 0.2263 |
| H1 : maps binaires composées en série | 0.2303 |
| H2 : rounds fractionnaires + course au 13 | 0.2379 |
| modèle map pur, sur le sous-ensemble au veto connu | 0.2368 |
| modèle de course pur | 0.2416 |
| mélange 75 % référence + 25 % H1 | 0.2269 |
| mélange 75 % référence + 25 % H2 | 0.2281 |
Le premier modèle logistique du concours avait déjà fait la même expérience, sous une forme plus simple : entraîner sur des labels fractionnaires tirés des scores de série (un 2-1 compte deux victoires de manche et une défaite), puis recomposer par la binomiale. Résultat en validation croisée : 0.2309 contre 0.2303 pour la cible série, et le mélange optimal des deux donnait un poids de zéro à la version manche.
L'autopsie : deux erreurs qui se composent¶
Le premier problème est le veto. Pour composer les probabilités de map, il faut savoir quelles maps seront jouées — or le veto n'a lieu qu'au moment du match. Il faut donc le prédire, avec un modèle qui a sa propre erreur, et cette erreur se propage dans chacune des trois probabilités qu'on va multiplier. Un modèle bruité élevé au carré donne un modèle très bruité.
Le second problème est l'indépendance, qui est fausse. Les manches d'une même série sont corrélées : la même équipe joue, avec la même forme du jour, le même plan, le même état de nerfs. Or ignorer une corrélation positive rend la formule trop tranchée — elle attribue à la série plus de certitude qu'elle n'en a. Avec \(p = 0.6\) par manche, la formule donne 0.648 pour le Bo3 ; si les manches sont fortement corrélées, la vraie valeur est plus proche de 0.6.
C'est exactement le diagnostic du rapport logreg : « la corrélation intra-série que la
binomiale ignore coûte plus que le supplément d'échantillons ne rapporte ». Et celui de
push sur H2 : la course au premier à 13 « rend surconfiant ».
Le signal de map n'est pas mort, il a changé de porte
Descendre au niveau de la manche était une bonne intuition — c'est la
recomposition qui est mauvaise. push a fait passer la même information par des
horloges au lieu d'un modèle : TrueSkill mis à jour par map (deux fois plus de
mises à jour), pi-ratings sur l'écart de rounds, Elo par map. Ces features-là ont
été adoptées et font partie du leader final. Le niveau map devait entrer dans le
modèle comme feature, pas comme cible.
7. Le k plus proches voisins, jamais tenté¶
La méthode¶
Le k-NN ne construit aucun modèle. Pour prédire un match, il cherche les \(k\) matchs passés les plus proches dans l'espace des features et renvoie leur taux de victoire :
C'est le modèle le plus intuitif qui soit : « qu'est-il arrivé les fois où la situation ressemblait à celle-ci ? ».
Pourquoi il n'a pas été essayé¶
Deux raisons, l'une géométrique, l'autre statistique. Il s'agit d'un raisonnement a priori, pas d'un résultat mesuré chez nous — la distinction est importante.
La malédiction de la dimension. Pour que « voisin » ait un sens, il faut que les \(k\) plus proches points soient effectivement proches. En dimension \(d\), pour capturer une fraction \(f\) du volume d'un hypercube unité, il faut un sous-cube de côté \(f^{1/d}\) :
| Fraction du volume | \(d = 10\) | \(d = 54\) |
|---|---|---|
| 1 % | côté 0.63 | côté 0.918 |
| 10 % | côté 0.79 | côté 0.958 |
En dimension 54 — la nôtre — attraper 1 % des points exige de parcourir 92 % de l'étendue de chaque feature. Les « voisins » les plus proches ne sont donc pas locaux du tout : ce sont des matchs qui ressemblent vaguement au nôtre sur tout, et précisément sur rien. Avec 10 287 matchs seulement, la situation ne peut que s'aggraver.
L'absence de pondération. Nos 54 features n'ont pas la même valeur : ts_diff porte
énormément d'information, veto_n très peu. Une distance euclidienne standardisée leur
donne rigoureusement le même poids ; on peut le corriger à la main, mais alors il
faut estimer 54 pondérations — c'est-à-dire refaire une régression, en moins bien.
Or c'est exactement ce qu'une régression logistique régularisée fait nativement, en apprenant ses poids par maximum de vraisemblance. Devant des features déjà travaillées, déjà standardisées, à frontière quasi linéaire, le k-NN n'avait aucune propriété que le modèle en place n'ait déjà, et une faiblesse majeure qu'il n'a pas.
8. Les réseaux de neurones, écartés¶
Même statut : un choix raisonné, pas une mesure.
Un perceptron multicouche modeste — 54 entrées, une couche cachée de 64 neurones — compte
pour 10 287 lignes d'entraînement. Trois lignes par paramètre. Le modèle linéaire en compte 55, et il a fallu le régulariser sérieusement (\(C = 0.3\)) pour qu'il ne sur-ajuste pas.
Trois arguments s'ajoutent à ce comptage.
D'abord la littérature. Les comparaisons systématiques sur données tabulaires (notamment Grinsztajn, Oyallon et Varoquaux, 2022) concluent que les modèles à base d'arbres restent devant les réseaux profonds sur les jeux tabulaires de taille modeste, et que l'écart ne se referme qu'avec des volumes bien supérieurs aux nôtres. Or chez nous, les arbres perdaient déjà contre une droite.
Ensuite la convexité. La régression logistique a un optimum unique, atteint à coup sûr, reproductible à l'identique. Un réseau introduit une initialisation aléatoire, un choix d'optimiseur, un pas d'apprentissage, un nombre d'époques, une architecture — soit cinq axes de réglage supplémentaires à valider sur 808 matchs de validation. La section 5 de ce chapitre a montré ce que 110 essais font déjà sur 531 matchs.
Enfin l'argument décisif : un réseau sert à apprendre des représentations. Il est imbattable quand les features brutes n'ont pas de sens direct (pixels, caractères, signaux). Nos features ne sont pas brutes : ce sont des écarts de rating et des probabilités, c'est-à-dire des représentations déjà construites, par nous, avec du savoir métier. Il n'y avait pas de représentation à découvrir.
Le registre des décès¶
| Méthode | Mesure | Cause du décès |
|---|---|---|
| Stack de 5 bases jumelles | 0.2306 vs 0.2310 pour la logistique seule | erreurs trop corrélées (\(\rho \approx 1\)) |
| Stack de 6 familles disjointes | 0.2201 / 0.2178 / 0.2170 vs 0.2163 à plat | features disjointes ≠ erreurs décorrélées ; l'étage bas détruit les croisements |
| GBDT→LR (Facebook) | 0.2405 – 0.2559 vs 0.2263 | escalier sur une droite, perte de l'ordre, trop de paramètres libres |
| Calibration Platt | 0.2329 → 0.2338 (forcée) | la déformation n'existe pas dans le train : inapprenable |
| Calibration isotonique | 0.2329 → 0.2346, log-loss 0.6564 → 0.6889 | idem, plus la variance de sa flexibilité |
| Rétrécissement vers 50 % | \(s = 0.85\) neutre, \(s = 0.70\) dégrade | le leader n'est pas surconfiant : \(s^\star \approx 1\) |
| Branche simple sur le noyau dur | val 0.2135 → holdout 0.2042 vs 0.2041 | sur-ajustement de sélection : 110 essais, 531 matchs |
| Recomposition map par map | 0.2303 – 0.2416 vs 0.2263 | veto à prédire + indépendance des manches fausse |
| k plus proches voisins | non tenté | malédiction de la dimension (\(0.1^{1/54} = 0.958\)) |
| Réseaux de neurones | non tenté | 3 585 paramètres pour 10 287 lignes ; rien à représenter |
À retenir¶
L'essentiel du chapitre
- L'ensembling exige la décorrélation des erreurs, pas la diversité des modèles ni celle des features. Formule à retenir : \(\sigma^2(\rho + (1-\rho)/M)\).
- Un modèle plat qui voit toutes les features à la fois est difficile à battre par un empilement qui les sépare avant de les recombiner.
- Une calibration ne peut corriger que ce qui est présent dans ses données d'apprentissage. Un défaut visible uniquement dans le test est inapprenable — et le regarder est déjà une fuite.
- Le rétrécissement \(p' = 0.5 + s(p-0.5)\) ne touche pas l'accuracy : c'est le test le plus propre de la surconfiance, avec un optimum en forme fermée.
- Un gain de validation plus petit que l'incertitude, sélectionné parmi des dizaines d'essais, est du bruit. C'est l'erreur la plus coûteuse du chapitre, et elle a été mesurée puis publiée.
- Descendre en granularité (la manche) était juste ; recomposer était faux. La bonne porte d'entrée était la feature, pas la cible.
Le chapitre suivant quitte la prédiction pure pour l'usage réel du modèle : de la prédiction à la simulation.