Rappelez-vous, j'ai déjà parlé de la généralisation du modèle quand j'ai abordé la séparation entre training et testing set. En effet, la généralisation du modèle représente sa capacité, une fois entraîné, à effectuer des prédictions sur des données qu'il n'a jamais vues ; d'où la création d'un testing set pour évaluer cette capacité.
En réalité, c'est un aspect du machine learning assez complexe... mais c'est aussi le plus intéressant ! Puisque quand on parle d'apprentissage de l'algorithme, on vise essentiellement sa capacité à généraliser, extrapoler les connaissances, et non pas juste à reproduire et ressortir des choses déjà vues.
L'overfitting et l'underfitting
La notion d'overfitting (quelquefois traduite par surapprentissage en français) désigne le fait que le modèle que vous avez choisi est trop collé aux données d'entraînement. C'est un problème classique de data science, lorsqu'on choisi un modèle trop "flexible", c'est-à-dire avec une complexité trop élevée qui prend aussi en compte le bruit du phénomène. C'est en fait ce qui arrive aux méthodes à haute variance dont je parlais dans le chapitre précédent.
Regardez le graphique ci-dessous :

Comme on peut s'en douter, on préférerait évidemment travailler sur un modèle qui ressemble à la droite noire, contrairement à la courbe bleue qui pourtant passe par tous les points. Si on est amené à prédire la valeur pour un nouveau point, on sait que celui-ci a plus de chance de se trouver proche de la droite noire que proche de la courbe bleue (surtout à gauche 😜).
Un autre bon exemple du problème d'overfitting est le 1-NN que nous avons vu précédemment. J'ai désigné avec des flèches blanches les endroits où on overfit les données d'entraînement.

A contrario, l'underfitting (ou sous-apprentissage) désigne une situation où le modèle n'est pas du tout assez complexe pour capturer le phénomène dans son intégralité.

Donc pour faire le lien avec le chapitre précédent, les méthodes à haute variance ont tendance à overfitter facilement sur du bruit non représentatif du modèle sous-jacent. À l'inverse, les algorithmes avec un biais élevé ont tendance à underfitter plus facilement les données d'entraînement, et donc à rater des informations importantes sur le phénomène.
Lorsqu'on veut généraliser un modèle, on a besoin qu'il n'overfit pas et qu'il n'underfit pas, qu'il soit pile entre les deux.
Comment prendre en compte ce problème ?
Évidemment, les mêmes méthodes que celles citées dans le précédent chapitre pour le compromis biais-variance restent valables ici :
bien sélectionner le modèle de départ ;
bien choisir la manière d'entraîner le modèle ;
utiliser des méthodes ensemblistes.
Mais, rappelez-vous également, dans le chapitre précédent, j'avais utilisé ce graphique :

En réalité, ce graphique n'est pas exact !
Quoi ? Ce n'est pas vrai !?
Non, pas vraiment, mais la courbe d'erreur totale n'est valable que sur le testing set. En réalité, si l'on mesure l'erreur sur le training set, on obtient en fait la courbe bleue suivante :

Augmenter la complexité du modèle va en fait diminuer l'erreur sur le training set (logique, on va coller de plus en plus aux données du training set). Si on ne se basait que sur cette erreur, on n'aurait qu'à prendre le modèle le plus complexe possible pour diminuer l'erreur de prédiction ! Et on risquerait alors de se retrouver en situation d'overfitting lors de la généralisation du modèle. Cela prouve encore une fois l'importance de bien séparer son testing set du reste des données, sous peine de ne pas pouvoir généraliser son modèle.
C'est donc une première solution pour assurer la capacité de généralisation du modèle.
En résumé
L'équilibre entre over- et underfitting est encore une composante à prendre en compte lors du choix et lors de l'entraînement du modèle.
L'over- ou l'underfitting se détecte grâce aux données test qu'on peut utiliser pour mesurer l'erreur du modèle, contrairement aux données d'entraînement qui pervertissent cette mesure.