- Les trois colonnes (p01-01 · pas 2) : devant toute question de variabilité, ranger ce qui est fixe, ce qui est aléatoire, et la procédure qui va de l'un à l'autre. Cette chaîne ne change qu'une case : la colonne aléatoire.
- Variance = espérance de l'écart au carré (p00-02 · pas 3), et sa forme décentrée : E[(X − c)²] = Var(X) + (E[X] − c)² pour toute constante c. Toute la décomposition n'est que cette identité, appliquée à la bonne variable aléatoire.
- Moyenne d'un échantillon : si y1…yn sont indépendantes de variance σ², alors Var(ȳ) = σ²/n. C'est le seul calcul de variance fait à la main ici.
La chaîne
Le décor
On n'a qu'un seul dataset, on a appris un seul modèle, on lit une seule erreur. La question honnête est ailleurs : ce modèle-là se serait-il trompé pareil sur un autre jeu tiré de la même population ?
Même question qu'en p01-01, avec un objet aléatoire plus gros : là c'était une ligne de données, ici c'est le jeu entier.
« Un seul jeu a été tiré, donc le modèle appris est lui-même un tirage, donc la question est ce qu'il aurait donné sur un autre jeu. »
f(x) = x sur [0, 1], σ = 0,5, et n = 10 points sur la grille xi = i/9 (i = 0…9). Trois apprenants, du plus rigide au plus souple :
| apprenant | ce qu'il peut représenter | paramètres |
|---|---|---|
| constante y = ȳ | une horizontale | 1 |
| droite (OLS) | toutes les droites — dont la vraie | 2 |
| plus proche voisin | n'importe quoi : il interpole | 10 |
Le vrai f est une droite : l'ordre de ces trois apprenants n'a rien d'universel, il dépend de f. C'est justement ce qu'on veut nommer.
Le tirage, c'est le dataset tronc
On rejoue les trois colonnes de p01-01, et la colonne aléatoire change d'objet.
Écrire « les données sont aléatoires » ne suffit pas : ce qui est tiré est le jeu complet, donc ce qui varie est le modèle appris, donc la prédiction en un x fixé a une distribution.
« Le modèle appris dépend du dataset, donc sa prédiction en x est une variable aléatoire du tirage, donc elle a un centre et une largeur, donc on peut nommer chacun des deux. »
Le point x = 0,37 est fixe, la vraie valeur f(0,37) = 0,37 aussi. Seul D change. Ce que chaque apprenant produit alors :
| apprenant | centre ED[fD(0,37)] | biais² | variance |
|---|---|---|---|
| constante | 0,5 | 0,0169 | 0,0250 |
| droite | 0,37 | 0 | 0,0291 |
| voisin | 0,333 | 0,0013 | 0,2500 |
La constante est décentrée et serrée ; le voisin est presque centré et très large — il recopie le bruit du point le plus proche (x = 1/3), donc sa variance vaut σ² tout rond.
Chaque tirage = un dataset neuf (n = 10, σ = 0,5), un modèle réappris, une prédiction en x = 0,37. Le trait pointillé rouge marque la vraie valeur f(0,37) = 0,37, le trait plein la moyenne des tirages. Change d'apprenant : le décalage entre les deux traits est le biais, la largeur de l'histogramme est la variance. La constante est décalée et étroite, le voisin est bien placé et très étalé.
La décomposition tronc
Espérance sur les deux sources d'aléa — le dataset D et le bruit ε du point de test :
= biais² + variance + bruit
Deux lignes : ajouter et retrancher ED[fD(x)] dans la parenthèse, développer le carré, et constater que le terme croisé s'annule (l'écart au centre est centré). Le σ² sort parce que ε du point de test est indépendant de D.
« L'écart au vrai se coupe en écart du centre au vrai plus écart au centre, donc l'erreur moyenne est le biais au carré plus la variance, donc il reste le bruit, qui ne dépend d'aucun modèle. »
Erreur moyennée sur les 10 points de la grille (calcul exact, pas simulation) :
| apprenant | biais² | variance | σ² | total |
|---|---|---|---|---|
| constante | 0,102 | 0,025 | 0,25 | 0,377 |
| droite | 0 | 0,050 | 0,25 | 0,300 |
| voisin | 0 | 0,250 | 0,25 | 0,500 |
La droite gagne parce que f est une droite : elle est la seule à n'avoir aucun biais tout en restant peu variable. Si f était une sinusoïde, la droite aurait un biais et le voisin reprendrait l'avantage.
Le 0,25 de la dernière colonne est le même pour les trois : c'est le plancher, et aucune colonne de gauche ne peut l'entamer.
Biais = rigidité
Un modèle qui ne peut pas représenter f a un centre faux, et il l'a quel que soit n : ajouter des données rend le centre plus stable, pas plus juste.
Le biais se paie en capacité de représentation, pas en volume de données. Il baisse quand on donne au modèle de quoi épouser f — plus de degrés, plus de features, moins de contrainte.
« La constante ne peut pas suivre une pente, donc son centre reste la moyenne de f quel que soit n, donc son biais ne bouge pas quand on ajoute des données, donc seule la flexibilité le fait baisser. »
Le centre de la constante est E[ȳ] = moyenne de f sur la grille = 0,5, pour tout n. Le biais en 0,37 vaut donc 0,5 − 0,37 = 0,13, et biais² = 0,0169, pour tout n.
| n | biais² (constante) | variance σ²/n |
|---|---|---|
| 10 | 0,0169 | 0,0250 |
| 100 | 0,0169 | 0,0025 |
| 1 000 | 0,0169 | 0,00025 |
La colonne de droite fond, celle du milieu ne bouge pas d'un chiffre. Multiplier les données par cent ne rend pas une horizontale capable de monter.
Variance = sensibilité au tirage
Symétriquement, un modèle qui peut tout représenter épouse le bruit du jeu qu'on lui a donné : le plus proche voisin recopie littéralement l'ε du point le plus proche.
Pour tout ajustement linéaire en y (constante, OLS, polynôme, ridge) à p paramètres sur un design fixe, la variance moyennée sur les points du design vaut exactement
Elle baisse avec n et monte avec p : c'est la formule du compromis, écrite d'un seul côté.
« Plus le modèle a de paramètres, plus il épouse le tirage, donc plus sa prédiction change d'un dataset à l'autre, donc sa variance monte proportionnellement au nombre de paramètres. »
σ² = 0,25 et n = 10 :
| apprenant | p | σ²·p/n | variance mesurée |
|---|---|---|---|
| constante | 1 | 0,025 | 0,025 |
| droite | 2 | 0,050 | 0,050 |
| voisin (interpole) | 10 | 0,250 | 0,250 |
Le voisin est le cas limite p = n : il a autant de paramètres que de points, donc σ²·n/n = σ². Interpoler, c'est prendre toute la variance du bruit à son compte.
Autre jeu de données : f = sin(2πx), n = 12 points, σ = 0,3. En haut, le polynôme ajusté ; monte le degré et clique nouveau dataset : à degré 3 la courbe bouge à peine d'un tirage à l'autre, à degré 9 elle change du tout au tout — mêmes abscisses, même σ, courbe méconnaissable. En bas, les mêmes quantités en espérance sur tous les tirages : biais² descend, variance monte en ligne droite (σ²·p/n), et leur somme creuse un minimum.
Le U, et le gap qui n'est qu'un symptôme tronc
Biais² décroît avec la flexibilité, variance croît : leur somme passe par un minimum. Il existe donc une bonne flexibilité, et elle ne se lit que sur des données non vues.
L'erreur d'entraînement, elle, ne fait que descendre — un modèle souple contient le rigide, c'est un témoin atteignable (b02), pas un résultat à redémontrer. L'écart train / test grandit donc mécaniquement :
Le gap est le symptôme de la variance, pas sa cause : il grandit parce que le train baisse et que le test monte.
« Le biais baisse et la variance monte avec la flexibilité, donc leur somme a un minimum, donc il existe une bonne flexibilité, donc elle ne se lit que sur des données non vues. »
| degré | biais² | variance | train | test | gap |
|---|---|---|---|---|---|
| 0 | 0,458 | 0,008 | 0,541 | 0,556 | 0,015 |
| 1 | 0,254 | 0,015 | 0,329 | 0,359 | 0,030 |
| 2 | 0,254 | 0,023 | 0,321 | 0,366 | 0,045 |
| 3 | 0,007 | 0,030 | 0,067 | 0,127 | 0,060 |
| 5 | 0,000 | 0,045 | 0,045 | 0,135 | 0,090 |
| 9 | 0,000 | 0,075 | 0,015 | 0,165 | 0,150 |
Le train descend de 0,541 à 0,015 sans jamais remonter ; le test touche son minimum à degré 3 puis remonte. Le gap, lui, double du degré 3 au degré 9 — exactement 2σ²p/n.
Les deux erreurs en espérance, sur le même jeu qu'en figure 2. Déplace le degré : le segment vert est le gap. Le train descend toujours et finit sous le plancher σ² = 0,09 — signe qu'il a mangé du bruit ; le test fait le U, minimum au degré 3. Choisir la flexibilité au train, c'est choisir le degré 9.
Le plancher σ² ne se lit pas dans les résidus
σ² est une propriété du problème — la part de y qu'aucune fonction de x ne prédit. Ce n'est pas la moyenne des résidus au carré d'un modèle ajusté.
Un modèle souple a absorbé une part du bruit : ses résidus sont plus petits que σ. Un modèle rigide a mis son biais dedans : ils sont plus grands. Aucun des deux ne rend σ.
« Un modèle souple absorbe une part du bruit, donc ses résidus sont plus petits que σ, donc leur moyenne au carré sous-estime le plancher, donc σ² ne se lit jamais sur les données d'entraînement. »
| modèle | p | E[erreur train] | « σ̂ » = √train | vrai σ |
|---|---|---|---|---|
| degré 0 (rigide) | 1 | 0,541 | 0,74 | 0,30 |
| degré 3 (juste) | 4 | 0,067 | 0,26 | 0,30 |
| degré 9 (souple) | 10 | 0,015 | 0,12 | 0,30 |
Le rigide surestime de 150 %, le souple sous-estime de 60 %. La correction n/(n − p) ne sauve que le cas sans biais.
Sur le fil rouge : σ² = 0,25 pèse 0,25 / 0,300 ≈ 83 % de l'erreur totale du meilleur modèle. Tout le travail de modélisation se joue sur les 17 % restants.
Où ça casse casse
La décomposition est une espérance sur des tirages qu'on n'a pas.
« Les trois termes vivent sur des datasets répétés, donc un seul jeu ne les sépare pas, donc ce qu'on mesure en pratique est leur somme, donc on pilote la flexibilité sans jamais voir lequel des deux on paie. »
- Un seul dataset. On n'observe ni le biais ni la variance, seulement leur somme, via un jeu de validation (p06-02). Les séparer demande de répéter le tirage : simulation quand on connaît f, rééchantillonnage (bootstrap) sinon — et le bootstrap ne rejoue pas la population, seulement l'échantillon.
- Hors erreur quadratique. La coupure exacte en trois termes n'existe pas pour la log-loss ni pour la 0/1 : les décompositions proposées sont conventionnelles et non additives. L'intuition rigide / souple survit, la formule non — ne pas l'écrire au tableau pour un classifieur.
- Régime moderne. Des réseaux très surparamétrés interpolent les données et généralisent (double descente : au-delà du point d'interpolation le test redescend). Le U reste vrai à taille de données fixée et flexibilité modérée, c'est-à-dire là où on l'utilise ; il ne décrit pas le régime p ≫ n.
- Bruit hétérogène. σ² = σ²(x) : le plancher n'est pas le même partout. Une erreur totale plate peut cacher une zone bien modélisée et une zone irréductiblement bruitée — la moyenne sur x mélange les deux.
Résumé
- Le tirage, c'est le dataset entier : fD(x) est une variable aléatoire de D, donc elle a un centre et une largeur.
- Erreur = biais² + variance + σ². Le σ² est irréductible, et il est invisible dans les résidus.
- Biais = rigidité : il ne baisse pas avec n, seulement avec la flexibilité. Variance = sensibilité au tirage : σ²·p/n, elle baisse avec n et monte avec p.
- Leur somme fait un U : la bonne flexibilité ne se lit que sur des données non vues. Le gap train/test (2σ²p/n) est le symptôme, pas la cause.
- Fil rouge : constante 0,102 + 0,025 · droite 0 + 0,050 · voisin 0 + 0,250 — et pour tous, plus σ² = 0,25.
Chaîne verbalisée — une prise, à voix haute
- Quel est l'objet aléatoire ?Le dataset d'entraînement entier — pas une ligne. Donc le modèle appris f̂D, donc sa prédiction f̂D(x) en un x fixé.
- Écris la décomposition et dis d'où elle vient.biais² + variance + σ². On ajoute et retranche ED[f̂D(x)], on développe le carré, le terme croisé est nul parce que l'écart au centre est centré ; le σ² sort car le bruit du point de test est indépendant de D.
- Que fait plus de données ? Plus de flexibilité ?Plus de données : la variance baisse (σ²p/n), le biais ne bouge pas. Plus de flexibilité : le biais baisse, la variance monte.
- Pourquoi l'erreur d'entraînement ne fait-elle pas le U ?Témoin atteignable : un modèle souple contient le rigide, donc il fait au moins aussi bien sur les points qu'il a vus. Elle descend toujours, jusque sous σ².
- Peut-on lire σ² dans les résidus ?Non. E[train] = σ²(n − p)/n + biais² : un modèle souple rend les résidus plus petits que σ, un modèle rigide plus grands. σ² est une propriété du problème.
Ponts et cartes
ml::biais-variance (la colonne aléatoire = le dataset ; la décomposition et sa dérivation ; σ²·p/n) · ml::overfitting (le U, le gap comme symptôme, double descente au nom près) · ml::validation (la bonne flexibilité ne se lit que sur des données non vues).
Une carte qui résiste après cette chaîne est une carte à refondre, pas une section à relire.