Cours
Pourquoi votre modèle affiche-t-il 99 % de précision sur les données d’entraînement mais n’arrive plus à prédire correctement en production ?
Il y a une différence entre un modèle qui mémorise et un modèle qui apprend. La généralisation est l’objectif même de l’apprentissage automatique : vous voulez des prédictions solides sur des données jamais vues, pas seulement sur celles utilisées pendant l’entraînement. Quand ce n’est pas le cas, le problème prend presque toujours l’une de deux directions.
Ces deux directions sont le surapprentissage et le sous-apprentissage. Il faut identifier lequel des deux vous affrontez avant de pouvoir le corriger.
Dans cet article, je vous montre comment reconnaître le surapprentissage et le sous-apprentissage, pourquoi ils surviennent, et les actions concrètes à mettre en place pour retrouver l’équilibre.
Qu’est-ce que le sous-apprentissage ?
Le sous-apprentissage survient quand votre modèle est trop simple pour représenter ce qui se passe réellement dans les données.
Imaginez prédire le prix des logements avec une seule règle : « chaque maison coûte 300 000 $. » Cette règle sera fausse presque partout. Elle ne voit pas les quartiers, la surface, le nombre de chambres, le garage, ni l’année de construction. Le modèle manque totalement de flexibilité pour suivre le motif.
Vous pouvez repérer le sous-apprentissage de la même manière à chaque fois : la précision est faible sur l’entraînement et faible aussi sur le test. Les deux chiffres sont mauvais, mais l’essentiel, c’est qu’ils sont mauvais ensemble.
Un cas classique : ajuster une droite à des données qui suivent une courbe. La droite passe au milieu et manque la forme. Aucune donnée supplémentaire n’y changera rien si le modèle ne peut pas représenter la relation.

Exemple de sous-apprentissage
Qu’est-ce que le surapprentissage ?
Le surapprentissage, c’est le problème inverse. Le modèle est trop complexe.
Au lieu d’apprendre le motif général, il mémorise l’ensemble d’entraînement. Chaque bruit, chaque valeur aberrante, chaque pic et chaque creux, chaque coïncidence dans les données est traité comme un motif réel. Le modèle devient quasi parfait sur les données d’entraînement.
L’avantage du surapprentissage, c’est qu’on le repère facilement : la précision à l’entraînement est excellente, mais celle sur le test est désastreuse.
Pensez à un·e étudiant·e qui apprend les réponses d’un examen par cœur sans comprendre la matière. Iel réussit les examens blancs et échoue sur le vrai.

Exemple de surapprentissage
Surapprentissage vs sous-apprentissage : les différences clés
Après avoir vu les deux, la différence saute aux yeux. Les modèles en sous-apprentissage performent mal même sur des données déjà vues. Les modèles en surapprentissage échouent dès qu’ils voient du neuf.
Les signatures pendant l’entraînement diffèrent :
- Le sous-apprentissage se manifeste par des performances plates et moyennes partout : le modèle n’apprend jamais grand-chose
- Le surapprentissage se voit à l’écart qui se creuse : le score d’entraînement continue de progresser tandis que le score de test stagne ou se dégrade
Leurs causes se reflètent aussi : le sous-apprentissage vient d’un manque de complexité (modèles simples, caractéristiques manquantes). Le surapprentissage vient d’un excès (modèles complexes, trop de caractéristiques).
En résumé :

Sous-apprentissage comparé au surapprentissage
Comment identifier le surapprentissage et le sous-apprentissage
Connaître la théorie, c’est une chose ; les détecter dans vos propres modèles en est une autre.
Le plus simple est de comparer l’erreur d’entraînement à l’erreur de test et d’examiner les courbes d’apprentissage.
Erreur d’entraînement vs erreur de test
La vérification la plus rapide consiste à scinder vos données en un jeu d’entraînement et un jeu de test, à entraîner le modèle, puis à comparer les erreurs sur chacun.
En sous-apprentissage, les deux erreurs sont élevées. Le modèle n’a pas bien appris les données d’entraînement et ne fera pas mieux sur des données nouvelles. Le résultat est mauvais des deux côtés.
En surapprentissage, l’erreur d’entraînement est très faible alors que l’erreur de test reste élevée. Le modèle a mémorisé l’entraînement, mais ce savoir ne généralise pas.

Visualisation erreur d’entraînement vs erreur de test
Analysez l’écart entre ces deux valeurs. Un faible écart avec des erreurs élevées pointe vers le sous-apprentissage. Un grand écart avec une faible erreur d’entraînement et une forte erreur de test indique un surapprentissage. Un petit écart avec de faibles erreurs des deux côtés est l’objectif, car le modèle a appris la bonne représentation.
Courbes d’apprentissage
Les courbes d’apprentissage tracent les erreurs d’entraînement et de validation en fonction de la taille de l’ensemble d’entraînement ou du nombre d’itérations. Elles montrent ce qui se passe au fil de l’apprentissage.
Dans un modèle en sous-apprentissage, les deux courbes se stabilisent vite à une erreur élevée. Ajouter des données n’aide pas, car le modèle ne sait pas représenter le motif. Les deux courbes restent hautes.

Courbes d’un modèle sous-appris
Dans un modèle en surapprentissage, la courbe d’entraînement chute vers zéro tandis que la courbe de validation reste élevée. L’écart s’accentue avec l’entraînement. C’est exactement l’empreinte du surapprentissage sur un graphique.

Courbes d’un modèle surappris
Un modèle sain montre les deux courbes qui baissent et se rejoignent à une erreur faible, avec un petit écart.
Pourquoi le surapprentissage et le sous-apprentissage se produisent
Une fois que vous savez les détecter, la question suivante est : pourquoi apparaissent-ils ? Dans les deux cas, il y a un décalage entre le modèle et le problème, mais dans des sens opposés.
Causes du sous-apprentissage
Le sous-apprentissage se résume presque toujours à l’un de ces trois points.
- Modèle trop simple : un modèle linéaire ne peut pas représenter une relation courbe. La capacité du modèle est inférieure aux besoins du problème.
- Caractéristiques insuffisantes : même un modèle capable sous-apprendra si vous lui donnez les mauvaises entrées. Prédire le prix d’une maison depuis le code postal n’a pas de sens et ignore la surface, les chambres, l’état, l’âge, la taille du terrain. Le modèle n’a rien d’utile à exploiter.
- Entraînement insuffisant : le modèle n’a pas eu assez de profondeur, d’itérations, d’époques ou d’ajustements de taux d’apprentissage pour converger. L’entraînement s’est arrêté trop tôt.
Causes du surapprentissage
Le surapprentissage vient d’une liberté excessive laissée au modèle par rapport à ce que les données exigent.
- Modèle trop complexe : un réseau de neurones profond avec des millions de paramètres entraîné sur un tout petit jeu de données a largement de quoi tout mémoriser. La capacité excède le besoin réel.
- Trop de caractéristiques : quand il y a plus de variables que de motifs pertinents, le modèle apprend des corrélations propres à l’échantillon qui ne généralisent pas.
- Jeu de données trop petit : avec peu d’exemples, même une complexité modérée suffit à tout mémoriser. Il n’y a pas assez de cas pour généraliser.
- Entraînement trop long : le modèle continue d’ajuster les poids après avoir appris le motif réel et finit par ajuster le bruit. Dès lors, prolonger l’entraînement aggrave la situation.
Le compromis biais-variance
Le compromis biais-variance explique pourquoi la performance d’un modèle consiste à trouver le juste milieu : bien généraliser sur des données nouvelles sans simplifier à l’excès ni surajuster l’ensemble d’entraînement.
Biais élevé
Le biais est l’erreur issue des hypothèses du modèle sur les données. Un modèle à fort biais fait des hypothèses fortes et simplistes. Il ne peut pas refléter la complexité réelle des données.
C’est exactement le sous-apprentissage : le modèle est trop rigide pour suivre les motifs et produit des prédictions fausses, quel que soit le volume de données.
Si vous entraînez un modèle à fort biais 100 fois sur des échantillons différents, les 100 feront des erreurs similaires. Leurs prédictions se regroupent autour de la mauvaise réponse.
Variance élevée
La variance est l’erreur due à une sensibilité excessive du modèle aux données d’entraînement. Un modèle à forte variance capte tous les petits motifs, souvent du bruit.
C’est le surapprentissage : le modèle colle très près à l’entraînement, mais de légères variations des données d’entraînement mènent à des prédictions très différentes.
Si vous entraînez un modèle à forte variance 100 fois sur des échantillons différents, vous obtiendrez 100 modèles très différents. Leurs prédictions partent dans tous les sens, y compris sur la même entrée.
Le compromis
Vous ne pouvez éliminer ni le biais ni la variance : seulement jouer sur l’équilibre entre les deux.
Réduisez le biais en complexifiant le modèle : la variance augmente. Réduisez la variance en simplifiant le modèle : le biais augmente. L’objectif est le point d’équilibre où l’erreur totale est minimale.

Exemple de compromis biais-variance
Comment corriger le sous-apprentissage
Une fois le sous-apprentissage diagnostiqué, plusieurs leviers s’offrent à vous. Tous visent à donner plus de capacité au modèle pour représenter les motifs des données.
- Augmenter la complexité du modèle : passer à un modèle plus flexible. De la régression linéaire à la régression polynomiale, ou d’un arbre peu profond à un plus profond.
- Ajouter des caractéristiques : intégrer de nouvelles entrées vraiment informatives. Créer des interactions, des termes polynomiaux ou des variables spécifiques au domaine auxquelles le modèle n’avait pas accès.
- Entraîner plus longtemps : le modèle n’a peut-être pas eu le temps de converger. Donnez plus d’époques ou ajustez le planning de taux d’apprentissage.
- Réduire la régularisation : la régularisation contraint la simplicité du modèle : c’est l’inverse de ce dont souffre le sous-apprentissage. Diminuez-la ou supprimez-la pour redonner de la liberté au modèle.
Quelques bonnes caractéristiques ont souvent plus d’impact qu’un changement d’architecture. Commencez par là avant de modifier le modèle lui-même.
Comment corriger le surapprentissage
Pour le surapprentissage, la démarche est inverse : il faut contraindre le modèle pour l’empêcher de mémoriser l’entraînement.
- Collecter plus de données : un jeu de données plus grand rend la mémorisation beaucoup plus difficile. Le modèle doit alors trouver des motifs qui tiennent sur l’ensemble, pas sur quelques lignes.
- Appliquer de la régularisation : régularisation L1 et L2 ajoute une pénalité sur les grands poids, évitant qu’un modèle ne s’appuie trop sur une seule variable. C’est l’un des correctifs les plus fiables.
- Réduire la complexité du modèle : si le modèle est trop grand pour les données, diminuez-le : moins de paramètres, arbres moins profonds, réseaux plus petits.
- Utiliser la validation croisée : validation croisée donne une lecture plus honnête des performances sur des données nouvelles, en multipliant les scissions apprentissage/test à partir d’un seul jeu.
- Appliquer le dropout pour les réseaux de neurones : Dropout désactive aléatoirement un pourcentage de neurones pendant l’entraînement. Le réseau apprend des représentations redondantes, moins dépendantes d’un neurone unique.
- Arrêt précoce de l’entraînement : surveillez l’erreur de validation et arrêtez quand elle augmente ou plafonne, même si l’erreur d’entraînement baisse encore. Cet early stopping est l’un des changements les plus simples à mettre en place.
La régularisation et l’early stopping sont généralement les premiers leviers à tester : peu coûteux et souvent efficaces.
Surapprentissage et sous-apprentissage selon les modèles
Les familles de modèles révèlent ces phénomènes chacune à leur manière. Voici comment trois approches courantes peuvent dérailler dans les deux sens.
Modèles linéaires
- Sous-apprentissage : les modèles linéaires supposent une relation en droite. Si le motif réel est courbe, ils ne pourront pas le suivre, même avec beaucoup de données.
- Sur-apprentissage : avec assez de termes polynomiaux ou d’interaction, même la régression linéaire peut mémoriser le bruit. Les méthodes de régularisation comme Ridge et Lasso existent en grande partie pour cela.
Arbres de décision
- Sous-apprentissage : un arbre peu profond ne peut faire que quelques coupes. Avec deux ou trois décisions, il ne peut pas capturer des motifs plus nuancés.
- Sur-apprentissage : les arbres profonds surajustent volontiers. Un arbre qui segmente jusqu’à avoir une observation par feuille obtient une précision parfaite en entraînement et mauvaise en test. D’où des paramètres comme
max_depth,min_samples_splitet l’élagage.
Réseaux de neurones
- Sous-apprentissage : des réseaux trop petits pour le problème sous-apprennent. Idem si l’entraînement s’arrête trop tôt ou si l’optimiseur se bloque sur une solution sous-optimale.
- Sur-apprentissage : fréquent en deep learning. Un réseau à millions de paramètres peut même mémoriser de grands jeux de données avec assez d’époques. Dropout, décroissance de poids, augmentation de données et early stopping existent pour l’éviter.
Exemples supplémentaires : surapprentissage vs sous-apprentissage
Je vais maintenant vous présenter deux exemples classiques avec du code pour rendre ces schémas visibles.
Régression polynomiale
Une onde sinusoïdale bruitée est un bon cas de test. En ajustant des polynômes de différents degrés, on observe les changements de comportement du modèle.
import numpy as np
# Data
np.random.seed(7)
X = np.linspace(0, 1, 30)
y_true = np.sin(2 * np.pi * X)
y = y_true + np.random.normal(0, 0.2, X.shape)
# Fit polynomials of three degrees
X_smooth = np.linspace(0, 1, 300)
degrees = [1, 3, 15]
for degree in degrees:
coefs = np.polyfit(X, y, deg=degree)
y_pred = np.polyval(coefs, X_smooth)

Exemple de régression polynomiale
Le degré 1 est une droite qui sous-apprend : elle ne suit pas la courbe. Le degré 3 capte la forme réelle : il absorbe un peu de bruit mais reste proche de la vérité. Le degré 15 sur-apprend en passant par chaque point d’entraînement et en générant de fortes oscillations entre eux.
Arbres de décision à profondeur variable
Même constat avec les arbres de décision. En entraînant des arbres de profondeur croissante sur les mêmes données, on mesure l’erreur sur l’entraînement et sur le test.
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# Data
np.random.seed(11)
X = np.linspace(0, 10, 250).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.3, 250)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0
)
depths = range(1, 21)
train_errors = []
test_errors = []
for depth in depths:
tree = DecisionTreeRegressor(max_depth=depth, random_state=0)
tree.fit(X_train, y_train)
train_errors.append(mean_squared_error(y_train, tree.predict(X_train)))
test_errors.append(mean_squared_error(y_test, tree.predict(X_test)))

Exemple d’arbre de décision
L’erreur d’entraînement diminue avec la profondeur, tendant vers zéro quand chaque feuille contient un seul point d’entraînement. L’erreur de test baisse d’abord en capturant les bonnes relations, puis remonte quand les coupes plus profondes ajustent le bruit. Le minimum se situe à la profondeur qui équilibre les deux.
Erreurs courantes lors du diagnostic des performances
Même avec la bonne métrique, on tire vite de mauvaises conclusions. Voici ce qu’il ne faut pas faire lors de l’évaluation d’un modèle :
- Se limiter à la précision d’entraînement : elle mesure l’ajustement sur des données déjà vues, pas la performance sur de nouvelles entrées. Évaluez toujours sur un jeu séparé avant de conclure.
- Ignorer les données de validation : elles servent à ajuster l’architecture, les hyperparamètres et le point d’arrêt. Sinon, le modèle finira par surajuster à la fois l’entraînement et le test réutilisé trop souvent.
- Penser que plus complexe est toujours mieux : un modèle plus grand n’est pas automatiquement plus performant. Si vos données sont petites ou les relations simples, la complexité dégrade la performance. Commencez simple et n’augmentez la capacité que si les diagnostics l’exigent.
- Confondre bruit et signal : tous les motifs dans les données d’entraînement ne valent pas la peine d’être appris. Fluctuations aléatoires, biais d’échantillonnage, valeurs aberrantes et artefacts de collecte peuvent sembler pertinents à un modèle flexible. Si vous ne pouvez pas expliquer pourquoi une relation devrait exister, traitez-la avec prudence.
Vérifiez toujours ces quatre points avant d’arrêter votre choix. La plupart des échecs en production y sont liés.
Conclusion
Le sous-apprentissage et le surapprentissage sont les deux façons dont un modèle échoue à généraliser. L’un reste trop simple pour apprendre le motif. L’autre essaie d’apprendre chaque point de votre jeu de données.
L’objectif réel de l’entraînement est de se situer entre les deux, là où biais et variance s’équilibrent et où l’erreur totale est minimale.
La performance sur validation est votre boussole. Suivez-la pendant l’entraînement et laissez l’écart entre erreur d’entraînement et de validation guider vos décisions. Si l’erreur de validation cesse de baisser alors que celle d’entraînement continue, vous avez dépassé le point d’équilibre. Si les deux restent élevées, vous ne l’avez pas encore atteint.
Vous souhaitez approfondir des notions avancées de data science et être opérationnel·le d’ici 2026 ? Inscrivez-vous au Machine Learning Engineer track pour passer des bases au MLOps.
FAQs
Quelle est la différence entre surapprentissage et sous-apprentissage ?
Le sous-apprentissage survient quand un modèle est trop simple pour représenter les motifs dans vos données : il performe mal à la fois sur l’entraînement et le test. Le surapprentissage, c’est l’inverse : le modèle apprend trop bien l’entraînement, y compris le bruit, réussit en entraînement mais échoue sur des données nouvelles. Les deux produisent de faibles performances, pour des raisons différentes.
Comment savoir si mon modèle surapprend ou sous-apprend ?
Comparez l’erreur d’entraînement et l’erreur de test. Si les deux sont élevées, vous êtes en sous-apprentissage. Si l’erreur d’entraînement est très faible mais celle de test élevée, vous êtes en surapprentissage. Les courbes d’apprentissage aident aussi : les erreurs d’entraînement et de validation divergent en surapprentissage et restent plates à un niveau élevé en sous-apprentissage.
Qu’est-ce que le compromis biais-variance ?
Le biais est l’erreur dû à un modèle trop simple, la variance est l’erreur dû à une trop grande sensibilité aux données d’entraînement. Réduire l’un augmente généralement l’autre ; l’enjeu est donc de trouver l’équilibre où l’erreur totale est minimale. Les modèles les mieux équilibrés généralisent le mieux.
Collecter plus de données corrige-t-il le surapprentissage ?
Cela aide souvent, mais ce n’est pas une garantie. Plus de données rendent la mémorisation plus difficile, poussant le modèle à apprendre des motifs valables sur tout l’ensemble. Mais si votre modèle est beaucoup trop complexe pour le problème, ou si vos variables sont surtout du bruit, plus de données ne suffiront pas. Dans ces cas, préférez la régularisation et des modèles plus simples.
Puis-je utiliser l’early stopping pour éviter le surapprentissage en réseaux de neurones ?
Oui, et c’est l’un des correctifs les plus simples à mettre en place. Surveillez l’erreur de validation pendant l’entraînement et arrêtez quand elle plafonne ou augmente, même si l’erreur d’entraînement diminue encore. Cela saisit le point où le modèle a appris le motif réel et commence à ajuster le bruit. La plupart des frameworks de deep learning intègrent des callbacks d’early stopping.
