Aller au contenu principal

Surapprentissage et compromis biais-variance

Ce que ce chapitre apporte 6 points
  • Dire pourquoi l'erreur d'apprentissage n'est pas l'objectif.
  • Séparer un jeu en apprentissage, validation et test, et respecter la règle qui va avec.
  • Reconnaître le sous-apprentissage et le sur-apprentissage sur une figure et sur des chiffres, et les rattacher au biais, à la variance et au bruit.
  • Choisir un réglage par validation croisée, sans jamais toucher au jeu de test.
  • Expliquer ce que fait une pénalité, et pourquoi elle ne réduit pas le nombre de paramètres.
  • Lire une courbe d'apprentissage et dire si plus de données servirait à quelque chose.
Le surapprentissage se reconnaît à un écart : excellent sur les données d'apprentissage, médiocre sur les autres. Les deux chapitres précédents ont appris à minimiser une erreur, par une formule puis en descendant une pente. La coopérative de Vérelles, qui collecte le blé de ses adhérents, vient ainsi d'ajuster un modèle de ses pertes au champ, qui reproduit presque exactement ses douze relevés. Que vaudra-t-il à la prochaine moisson, qu'il n'a jamais vue ? Ce chapitre montre que l'erreur minimisée n'est pas celle qui compte. Un modèle qui reproduit parfaitement les données dont il dispose peut être sans valeur, et il existe une façon très simple de s'en apercevoir : lui montrer des données qu'il n'a jamais vues. Tout ce qui suit découle de ce geste, y compris les questions les plus délicates du domaine.

Ce que l'on cherche vraiment

Minimiser l'erreur d'apprentissage n'est pas l'objectif
C'est même une façon très fiable de produire un modèle inutile. Il existe toujours un modèle assez souple pour passer exactement par tous les points dont il dispose, et son erreur d'apprentissage vaut alors zéro.
Un tel modèle n'a rien appris. Il a retenu, ce qui n'est pas la même chose : il reproduit les réponses qu'on lui a montrées et n'a aucune raison d'en produire de correctes ailleurs.
L'objectif est de bien se comporter sur des données qui n'existaient pas au moment de l'apprentissage. C'est cela, généraliser, et c'est la seule chose qui compte.
La séparation, et sa règle

Les données se répartissent en trois jeux :

  • Apprentissage : les exemples sur lesquels les coefficients sont ajustés.
  • Validation : ceux sur lesquels les réglages sont choisis, degré, pénalité, architecture.
  • Test : ceux sur lesquels la performance finale est mesurée, et rien d'autre.

La règle tient en une phrase : le jeu de test ne sert qu'une fois, à la fin, et aucune décision ne remonte de lui.

Pourquoi trois jeux et non deux. Deux jeux suffisent pour mesurer. Trois deviennent nécessaires dès qu'on choisit.
Comparer quinze réglages sur le jeu de test et retenir le meilleur revient à optimiser sur ce jeu. Le chiffre obtenu n'est alors plus une estimation, c'est le minimum d'une liste, et il est systématiquement trop optimiste : il a été choisi pour être bas.
Le jeu de validation absorbe ce choix, et le jeu de test reste vierge pour donner un chiffre honnête à la fin.
C'est la même fuite d'information que celle du chapitre 3, sous une autre forme. Elle est ici plus discrète, parce qu'aucune colonne n'est copiée : c'est la décision qui transporte l'information.

Le sur-apprentissage, avec un curseur

Douze relevés de la coopérative, les pertes au champ selon le retard pris à la moisson, et vingt autres mis de côté qui n'entrent jamais dans l'ajustement. Le curseur du degré est le sujet de la section.

024680246retard à la moisson (jours)pertes au champ (q/ha)
erreur apprentissage 1,9054erreur test 1,9436plus grand coefficient 3,5647

Les deux erreurs sont élevées et proches : le modèle est trop rigide pour suivre la forme des données. C'est du sous-apprentissage.

Points pleins pour l'apprentissage, points creux pour le test. Monter le degré de 1 à 11 fait descendre l'erreur d'apprentissage sans jamais la faire remonter, jusqu'à zéro au degré 11 où la courbe passe exactement par les douze points. L'erreur de test, elle, passe par un creux au degré 3 puis se compte en dizaines, en centaines, puis en millions.
À manipuler
Placer le curseur du degré sur 1, puis sur 3, puis sur 10, et noter à chaque fois les deux erreurs affichées. Constater que l'erreur d'apprentissage ne fait que descendre, de 1,91 à 0,25 puis à 0,02, tandis que l'erreur de test passe de 1,94 à 0,26 avant de remonter à 720. Pousser enfin jusqu'à 11 : la courbe traverse les douze points, et l'erreur de test dépasse deux millions.
Trois positions du curseur, trois situations

Degré 1. Erreur d'apprentissage 1,91, erreur de test 1,94. Les deux sont élevées et proches. Le modèle est trop rigide pour suivre la forme des données : il se trompe partout, et il se trompe autant sur ce qu'il a vu que sur ce qu'il n'a pas vu. C'est du sous-apprentissage.

Degré 3. Erreur d'apprentissage 0,25, erreur de test 0,26. Les deux sont basses et proches. Le modèle a capté la forme sans apprendre le bruit.

Degré 10. Erreur d'apprentissage 0,02, erreur de test 720. La courbe passe presque exactement par les douze points d'apprentissage, en ondulant violemment entre eux. C'est du sur-apprentissage, et l'écart entre les deux erreurs en est la signature.

Le diagnostic tient dans deux nombres.

Les deux erreurs élevées et proches : le modèle est trop simple. Ajouter de la souplesse, ou de meilleurs attributs.
Les deux erreurs basses et proches : c'est le bon régime.
L'erreur d'apprentissage basse et celle de test élevée : le modèle a appris le bruit. Le simplifier, le pénaliser, ou lui donner plus de données.
L'erreur d'apprentissage élevée et celle de test basse : cela n'arrive pas, sauf erreur de programmation. C'est le signe qu'il faut relire le code, en général parce que les deux jeux ont été échangés.

Vérification rapideon peut se reprendre

1.Un modèle a une erreur d'apprentissage de zéro. Que peut-on en conclure ?

2.À quoi sert le jeu de validation, distinct du jeu de test ?

La courbe en U

main.py
Sortie
>_ Prêt à exécuter…
Les deux courbes ne font pas la même chose
L'erreur d'apprentissage ne remonte jamais. Elle passe de 1,91 à exactement 0,0000 au degré 11, où la courbe interpole les douze points. C'est mécanique : plus de souplesse ne peut pas faire moins bien sur les points qu'on cherche à approcher.
L'erreur de test passe par un creux à 0,26 au degré 3, puis remonte à 33, 837, et enfin plus de deux millions au degré 11.
Les données ont été fabriquées par un polynôme de degré 3 auquel s'ajoute un bruit d'écart-type 0,55. Le plancher est donc 0,552=0,300{,}55^2 = 0{,}30, et le degré 3 l'atteint. Descendre au-dessous sur les données d'apprentissage ne veut plus rien dire : c'est le bruit qu'on ajuste.
Noter enfin qu'au degré 11 les chiffres eux-mêmes cessent d'être fiables. Les puissances de xx deviennent si semblables que le système est au bord de l'insoluble, et le modèle n'est plus seulement inutile : il n'est plus calculable de façon reproductible.

Biais, variance et bruit

La décomposition

En moyenne sur tous les jeux d'apprentissage possibles, l'erreur d'un modèle en un point se sépare en trois termes :

erreur=biais2⏟il vise aˋ coˆteˊ+variance⏟il change tout le temps+bruit⏟irreˊductible\text{erreur} = \underbrace{\text{biais}^2}_{\text{il vise à côté}} + \underbrace{\text{variance}}_{\text{il change tout le temps}} + \underbrace{\text{bruit}}_{\text{irréductible}}

Le biais mesure l'écart entre la prévision moyenne du modèle et la vérité. Le variance mesure de combien la prévision change quand on refait l'apprentissage sur d'autres données.

main.py
Sortie
>_ Prêt à exécuter…
Ce que montrent les trois panneaux

Degré 1, biais² 1,93 et variance 0,44. Les vingt-cinq droites sont presque superposées : le modèle est stable. Elles sont toutes également fausses, et leur moyenne manque nettement la vérité. C'est un biais élevé.

Degré 3, biais² 0,007 et variance 0,26. Les courbes serrent la vérité, et leur moyenne s'y confond. Les deux termes sont bas en même temps.

Degré 7, biais² 40,7 et variance 1 389. Les courbes partent dans toutes les directions. Chacune est ajustée sur douze points seulement, et douze points différents donnent un modèle entièrement différent. C'est une variance énorme.

Le tableau vérifie l'identité : la somme des trois termes redonne exactement l'erreur mesurée, ligne par ligne. Ce n'est pas une affirmation du cours, c'est un contrôle que le bloc effectue.

Le compromis, et ce qu'on peut en faire. Un modèle rigide a un biais élevé et une variance faible. Un modèle souple a l'inverse. On ne peut pas annuler les deux à la fois en jouant sur la seule souplesse, et c'est pour cela que la courbe de test a une forme de U.
Le bruit, lui, ne se réduit pas du tout. Il ne dépend que du problème, et il fixe le plancher que le chapitre a mesuré à 0,30.
Il existe pourtant deux façons de sortir du compromis plutôt que de le subir, et les deux sections suivantes leur sont consacrées : pénaliser un modèle souple pour lui retirer de la variance sans lui rendre son biais, et lui donner plus de données, ce qui fait tomber la variance sans rien coûter au biais.

Vérification rapideon peut se reprendre

Les deux erreurs sont élevées et proches l'une de l'autre. C'est…

La pénalité

Régularisation

Plutôt que de minimiser la seule erreur, on minimise

E(θ)+λ∑j≥1θj2E(\theta) + \lambda \sum_{j \geq 1} \theta_j^2

Le second terme pénalise les grands coefficients. Le réglage λ\lambda dose la sévérité : à λ=0\lambda = 0 on retrouve l'ajustement ordinaire, et quand λ\lambda grandit les coefficients sont écrasés vers zéro.

La constante θ0\theta_0 n'est pas pénalisée : la rétrécir tirerait toutes les prévisions vers zéro, ce qui n'a aucun sens.

Reprendre la figure ci-dessous au degré 10, puis pousser le second curseur.

024680246retard à la moisson (jours)pertes au champ (q/ha)
erreur apprentissage 0,0198erreur test 720,7plus grand coefficient 4 116

L'écart entre les deux erreurs est le sur-apprentissage : la courbe a appris le bruit des points d'apprentissage, qui ne se retrouve dans aucune donnée nouvelle.

Le même degré 10 qui ondulait, avec une pénalité. Sans elle, le plus grand coefficient vaut 4 116 et l'erreur de test 720. À une pénalité de 0,1 le plus grand coefficient tombe à 2,3 et l'erreur de test à 0,30, soit le résultat du degré 3. Les onze coefficients sont toujours là : ils ont simplement cessé d'être énormes.
Une pénalité ne réduit pas le nombre de paramètres
C'est le point le plus contre-intuitif du chapitre, et il est facile à vérifier sur la figure.
Le modèle pénalisé a exactement les onze mêmes coefficients que le modèle qui ondulait. Aucun n'a été retiré. Ce qui a changé est leur amplitude : le plus grand passe de 4 116 à 2,3.
Une courbe ondule parce que ses coefficients sont grands et de signes opposés, chacun compensant l'autre pour passer par un point de plus. Leur interdire d'être grands interdit l'ondulation, sans rien interdire d'autre.
Ce n'est donc pas le nombre de paramètres qui nuit à la généralisation, c'est la liberté qu'on leur laisse. Un modèle à des millions de paramètres, correctement contraint, peut très bien généraliser, et c'est ce qui rend possible tout ce qui se fait aujourd'hui.
Vérification rapideon peut se reprendre

Que fait une pénalité sur les coefficients ?

La validation croisée

Validation croisée en k paquets

Découper le jeu d'apprentissage en kk paquets. Pour chaque paquet, apprendre sur les k−1k-1 autres et mesurer sur celui-là. Le score est la moyenne des kk mesures.

Chaque exemple sert donc une fois à mesurer et k−1k-1 fois à apprendre, ce qui donne une estimation utilisable même quand les données sont peu nombreuses.

main.py
Sortie
>_ Prêt à exécuter…
Ce que le tableau démontre

La validation croisée retient le degré 3 avec une pénalité de 0,1, sur la seule foi des douze points d'apprentissage. Mesuré ensuite sur les vingt points de test jamais utilisés, ce réglage donne 0,2397.

Un choix fait en trichant, c'est-à-dire en essayant les trente réglages directement sur le jeu de test et en gardant le meilleur, aurait retenu exactement le même. La validation croisée a donc trouvé la bonne réponse sans jamais regarder ce qu'elle n'avait pas le droit de regarder.

Deux détails valent d'être notés.

Le score de validation (0,527) est plus élevé que l'erreur de test (0,240). Ce n'est pas une contradiction : chaque modèle de la validation croisée n'a été ajusté que sur neuf points au lieu de douze. La validation croisée est légèrement pessimiste par construction, et c'est le bon sens dans lequel se tromper.

Le degré 10 sans pénalité est déclaré impossible. Avec neuf points par paquet et onze coefficients à trouver, il n'y a rien à résoudre. La procédure élimine d'elle-même les réglages que les données ne peuvent pas soutenir.

Combien de paquets
Cinq ou dix conviennent presque toujours. Peu de paquets donne des modèles ajustés sur peu de données, donc une estimation pessimiste ; beaucoup de paquets coûte cher et donne des mesures très corrélées entre elles.
Deux précautions changent les résultats plus souvent qu'on ne croit. Si les classes sont déséquilibrées, découper en conservant leurs proportions dans chaque paquet. Si les données ont un ordre temporel, ne jamais mélanger : apprendre sur le passé et mesurer sur l'avenir, sans quoi le modèle lit des données postérieures à ce qu'il prédit.
Et si des lignes se rapportent au même individu, elles doivent rester dans le même paquet. Sinon le modèle reconnaît l'individu au lieu d'apprendre la règle, et le score obtenu n'a aucun rapport avec ce qu'il fera en service.

Plus de données

main.py
Sortie
>_ Prêt à exécuter…
Le sur-apprentissage n'est pas une propriété du modèle
C'est une relation entre la souplesse du modèle et la quantité de données.
Le degré 7 est catastrophique avec dix points : son erreur de test vaut 133 141. Avec trente points elle tombe à 0,62, avec cent vingt à 0,32. Le même modèle, sans le moindre changement, devient parfaitement convenable.
Dire « ce modèle sur-apprend » n'a donc pas de sens tout seul. Il faut dire « ce modèle sur-apprend avec ces données-là », et cela ouvre une issue que le compromis biais-variance semblait interdire : au lieu de simplifier le modèle, en collecter davantage.

Lire une courbe d'apprentissage, et savoir quoi faire. On y porte les deux erreurs en fonction du nombre d'exemples. Trois formes, trois décisions.
Les deux courbes se sont rejointes et sont hautes. Le modèle est trop simple, et plus de données n'y changera rien. Il faut un modèle plus souple ou de meilleurs attributs.
Les deux courbes se sont rejointes et sont basses, sur le plancher. Le travail est terminé : il ne reste que du bruit, et rien ne peut faire mieux.
Un large écart subsiste et l'erreur de test descend encore. Plus de données va servir, et c'est souvent l'action la plus rentable.
Cette figure se trace avant d'engager une collecte, pas après. Elle est le seul moyen honnête de savoir si les données manquantes valent leur coût.

Vérification rapideon peut se reprendre

1.Un modèle de degré 7 a une erreur de test de 133 141 avec dix points et de 0,32 avec cent vingt. Cela montre que…

2.Le score de validation croisée est plus élevé que l'erreur de test. Faut-il s'en inquiéter ?

Mettre en pratique

Une partition se compte, et une erreur se décompose. Les deux se posent avant le premier entraînement.

Partitionner et décomposer

  • 1.

    Un jeu de 2 000 individus est séparé en 70 % pour l'apprentissage, 15 % pour la validation et 15 % pour le test. Combien d'individus l'apprentissage reçoit-il ?

  • 2.

    Combien le test en reçoit-il ?

  • 3.

    L'erreur d'apprentissage vaut 0,05 et l'erreur de test 0,28. Quel est l'écart entre les deux ?

  • 4.

    Une erreur totale de 0,28 se décompose en un biais au carré de 0,04 et un bruit irréductible de 0,06. Que vaut la variance ?

  • 5.

    Quel est le plus petit niveau d'erreur qu'un modèle parfait pourrait atteindre sur ce problème ?

La règle que la partition impose. Le jeu de test se regarde une seule fois, à la toute fin. Chaque coup d'œil intermédiaire fait entrer de l'information du test dans les décisions de conception, et l'erreur mesurée dessus cesse alors d'estimer quoi que ce soit.
C'est à cela que sert le jeu de validation : il absorbe tous les allers-retours, et il se dégrade en conséquence. Sa propre erreur devient elle aussi optimiste au fil des essais, ce qui est accepté puisqu'il n'est pas là pour mesurer.

Pour son modèle de pertes au champ, la coopérative a comparé cinq degrés. Lequel retenir, et quelle erreur annoncer pour la prochaine moisson ?

Les relevés ont été partagés en trois jeux : apprentissage, validation et test. Chaque degré a été ajusté sur l'apprentissage seul ; voici ses erreurs, en q/ha (racine de l'erreur quadratique moyenne).

DegréErreur d'apprentissageErreur de validation
12,102,25
20,901,05
30,310,36
50,220,48
80,053,90

Une fois le degré choisi, le modèle a été mesuré une seule fois sur le jeu de test : 0,39 q/ha.

Par où commencer ? Calculer, pour chaque degré, l'écart entre l'erreur de validation et l'erreur d'apprentissage, avant de regarder laquelle est la plus basse.

Vérification rapideon peut se reprendre

Pourquoi annoncer l'erreur de test plutôt que la plus basse des erreurs de validation ?

Le corrigé
  1. Calculer les écarts. Validation moins apprentissage : 0,15, 0,15, 0,05, 0,26 et 3,85 q/ha pour les degrés 1, 2, 3, 5 et 8.
  2. Diagnostiquer chaque degré. Aux degrés 1 et 2, les deux erreurs sont élevées et proches : le modèle est trop rigide, c'est du sous-apprentissage. Aux degrés 5 et 8, l'erreur d'apprentissage baisse encore mais l'écart se creuse : le modèle apprend le bruit, c'est du sur-apprentissage.
  3. Retenir le minimum de validation. Le degré 3, à 0,36 q/ha, avec l'écart le plus faible.
  4. Annoncer l'erreur de test. La coopérative peut annoncer 0,39 q/ha pour la prochaine moisson, et non 0,36, qui est le meilleur de cinq essais et profite de ce choix.
  5. Vérifier la cohérence. 0,39 est proche de 0,36 et un peu au-dessus : c'est l'écart attendu entre un minimum choisi et une mesure neuve. Un test nettement meilleur que la validation aurait signalé une fuite.
Une pénalité réduit-elle le nombre de paramètres du modèle ?

Par où commencer ? Compter les coefficients du modèle de degré 10 avant et après la pénalité, sur la figure de la section.

Le corrigé
  1. Compter les coefficients. Le modèle pénalisé du chapitre a exactement les onze mêmes coefficients que celui qui ondulait : aucun n'est retiré.
  2. Regarder leur amplitude. C'est elle qui change : le plus grand passe de 4 116 à 2,3.
  3. Relier l'amplitude à l'ondulation. Une courbe ondule parce que ses coefficients sont grands et de signes opposés, chacun compensant l'autre pour passer par un point de plus. Leur interdire d'être grands interdit l'ondulation, sans rien interdire d'autre.
  4. Vérifier sur l'erreur de test. Elle tombe de 720 à 0,30, le niveau du degré 3, avec onze coefficients au lieu de quatre. Ce n'est donc pas le nombre de paramètres qui nuit à la généralisation, c'est la liberté qu'on leur laisse.
Un exploitant d'éoliennes a comparé cinq degrés pour modéliser la puissance produite selon le vent. Lequel retenir, et quelle erreur annoncer ?

Les mesures ont été partagées en apprentissage, validation et test. Voici les erreurs de chaque degré, en kilowatts.

DegréErreur d'apprentissageErreur de validation
1180190
295104
35260
44045
62196

Une fois le degré choisi, le modèle a été mesuré une seule fois sur le jeu de test : 49 kW.

Par où commencer ? Calculer, pour chaque degré, l'écart entre l'erreur de validation et l'erreur d'apprentissage.

Le corrigé
  1. Calculer les écarts. 10, 9, 8, 5 et 75 kW pour les degrés 1, 2, 3, 4 et 6.
  2. Diagnostiquer chaque degré. De 1 à 3, les deux erreurs restent élevées et proches : sous-apprentissage. Au degré 6, l'erreur d'apprentissage est la plus basse et l'écart explose : sur-apprentissage.
  3. Retenir le minimum de validation. Le degré 4, à 45 kW.
  4. Annoncer l'erreur de test. 49 kW, et non 45, qui est le meilleur de cinq essais.
  5. Vérifier en comparant au cas précédent. La démarche est la même et la réponse diffère : ici le degré 4 l'emporte, parce que la courbe de puissance a plus de forme que celle des pertes au champ. Le bon degré ne se devine pas, il se mesure sur des données que l'ajustement n'a pas vues.

Chapitre révisé en novembre 2026 · Une erreur dans ce chapitre ?

Dans la bibliothèque d'exercices