Mis à jour le 14/05/2018
  • 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

La généralisation du modèle

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Rappelez-vous, j'ai déjà parlé de la généralisation du modèle lorsque j'ai parlé de 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 (quelque fois 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 :

Comparaison entre un modèle en overfitting vs une modélisation plus réaliste du phénomène
Comparaison entre un modèle en overfitting (bleu) et un modèle plus réaliste du phénomène (droite noire)

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.

Un exemple classique d'overfitting
Un exemple classique d'overfitting

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é.

Underfitting de modèle
Un exemple d'underfitting comparé avec la zone de séparation idéale en noir

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 ?

Et bien, é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 :

Le tradeoff entre biais et variance
Le compromis entre biais et variance

En réalité, ce graphique n'est pas exact !

Quoi tu nous aurais menti ??

Non pas vraiment, mais c'est juste que la courbe d'erreur totale n'est valable que sur le testing set. En réalité, si on mesure l'erreur sur le training set, on obtient en fait la courbe bleue suivante : 

L'erreur totale va avoir tendance à diminuer sur les données d'entraînement
Lorsque la complexité du modèle augmente, l'erreur totale a tendance à diminuer sur les données d'entraînement, contrairement aux données test

Et oui, 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 généralisation des capacité 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.

 

Exemple de certificat de réussite
Exemple de certificat de réussite