Qu'est-ce que l'overfitting ?
4
 min
Monter en compétences
 Publié le 
28/8/2021

Qu'est-ce que l'overfitting ?

L'overfitting ou "surapprentissage" décrit un phénomène dégradant la performance des algorithmes de Machine Learning. Ce problème présent est très fréquent et problématique pour tout Data Scientist. C'est pour cette raison que celui-ci se doit de maîtriser en profondeur le sujet portant sur le Machine Learning ! Comment éviter l'overfitting ? Quelles sont les solutions mis en place ?

L'overfitting est l'un des pires ennemis du Data Scientist. Il s'agit d'un problème fréquemment rencontré en Machine Learning. Il survient lorsque le modèle essaie de trop s'adapter aux données d'entraînement. Il est trop flexible et trop complexe et s'adapte à des données qui ne sont pas forcément à prendre en compte. Cette situation augmente considérablement les marges d'erreur, alors que la précision est ce que l'on recherche le plus en matière d'analyse de données. Comment détecter l'overfitting et outrepasser le problème ?

Contexte : où retrouve-t-on de l'overfitting ?

L'overfitting est un problème courant dans le Machine Learning. Il faut savoir que l'algorithme de Machine Learning a une mission prédictive. En d'autres termes, il va prédire un résultat en se basant sur différentes variables et en généralisant les données. Il doit parvenir à se rapprocher le plus possible de la réalité.

On peut lui donner différents objectifs : classifier un texte en fonction de son contenu, détecter un objet sur une image ou encore reconnaître certaines voix. Cependant, pour parvenir à généraliser des données qu'il n'a pas encore, il est entraîné sur des données d'apprentissage. Il va se baser sur ces dernières pour ensuite faire ses prédictions. Pour cette raison, les données d'apprentissage doivent se rapprocher le plus possible des problématiques du métier. Le modèle pourra alors faire des corrélations exactes.

L'overfitting survient lorsque votre modèle essaie de trop s'adapter aux bruits dans les données d'entraînement. Par bruits on entend les points qui ne représentant par les réelles propriétés de vos données, mais des variations et fluctuations aléatoires. Le fait d'étudier ces points rend votre modèle plus flexible, mais présente également un risque d'overfitting. L'overfitting est le contraire de l'underfitting, lorsque le modèle n'est pas assez avancé pour capturer un phénomène dans son intégralité. Il est recommandé de suivre une formation Data Scientist pour mieux appréhender ces différentes problématiques en matière d'intelligence artificielle.

définition overfitting
Définition Overfitting

Que se passe-t-il lorsqu'un modèle de Machine Learning overfit ?

On dit qu'un modèle de Machine Learning overfit lorsqu'il a compris le problème qu'on lui apprend lors des phases d'entraînement, mais que dorénavant, il se base uniquement sur ces données initiales d'apprentissage. Il souffre alors d'un problème de généralisation et ne pourra pas reconnaître d'autres données.

Les problèmes d'overfitting interviennent généralement lorsque l'on utilise des modèles très complexes et manquant de généralisation sur des problèmes simples, mais bruités. Pour détecter un modèle qui overfit, on pourra constater qu'il offre de très bonnes performances sur les données d'apprentissage, mais n'y parvient pas lorsqu'il est réellement en production. Les notions de base en Machine Learning nous enseignent que l'on distingue principalement deux types d'erreurs de surapprentissage ou d'overfit : le biais et la variance.

Le biais est l'erreur sur la solution générale trouvée. Lorsque vous entraînez le modèle à détecter, il se produit des formes rectangulaires par exemple, alors qu'il sera plutôt utilisé pour détecter des voitures sur des images en production. La variance, quant à elle, correspond à l'instabilité du modèle. Il souffre de problèmes de variance. Le résultat va alors énormément varier en fonction des données qui lui sont soumises.

Qu'est ce que l'overfitting ?
Qu'est ce que l'overfitting ?

Pourquoi est-ce si problématique ?

L'overfitting est problématique, car même si le modèle peut produire de très bonnes prédictions sur les données d'entraînement, il se généralisera mal. Il va alors mal prédire les données qu'il n'a pas vues auparavant lors des phases d'apprentissage, ce qui va fausser les résultats. Le problème est qu'en pensant avoir eu des résultats prometteurs, vous pourrez être tenté de lancer rapidement votre modèle en production. Or, vos clients vont rapidement revenir se plaindre. Et pour cause, le modèle prédira de mauvais résultats, ce qui peut être catastrophique en fonction des activités de chacun.

Comment outrepasser l'overfitting ?

Il existe différentes méthodes auxquelles on peut avoir recours pour pallier ce problème.

La cross-validation

Connue en français comme la validation croisée ou k-fold, cette méthode se différencie de la validation classique qui consiste à séparer les données d'entraînement uniquement en 2 : les données d'apprentissage et les données test. Ici, on va les séparer en plusieurs groupes et les tester sur chacun. Si on a créé K groupes, on entraînera alors le modèle K fois sur chaque groupe en variant la répartition d'apprentissages et de tests.

À la fin des essais, vous pouvez être sûr que vos données auront à la fois servi à l'apprentissage, mais également au test. Votre modèle a alors été parfaitement contrôlé, ce qui limite les probabilités d'avoir un modèle qui overfit. En règle générale, on utilise surtout cette méthode pour tester les performances des Machines Learning. Cependant, dans le cas d'un overfitting, elle peut être utilisée pour détecter l'anomalie. Elle permet d'analyser les erreurs à travers les tests et de décider quels paramètres fonctionnent le mieux pour votre modèle.

Ajouter des données d'entraînement

Le problème est que si l'on entraîne le modèle avec une faible quantité de données, il risque de faire des erreurs. Il faudra alors ajouter des données d'entraînement pour que la machine puisse mieux généraliser. Il faut une bonne variété de données. Si vous souhaitez que le modèle détecte des voitures par exemple, il faudra réaliser la phase d'apprentissage avec différentes formes, catégories, couleurs, tailles, positions différentes, etc. Si vos données sont trop faibles, il y a des chances que votre modèle ait du mal à atteindre l'objectif souhaité et le risque de variance sera très grand.

Cependant, dans la plupart des cas, on a déjà mobilisé toutes les données disponibles. Heureusement, il existe des techniques accessibles pour augmenter ses données. Lorsqu'il s'agit d'images, vous pouvez par exemple utiliser des filtres pour modifier légèrement les couleurs, étirer les traits ou encore faire pivoter les images. La plupart des Machines Learning proposent ce genre d'options.

Enlever certaines variables

Si vous souhaitez améliorer les performances de votre modèle, il est également conseillé de bien sélectionner les variables ou features, utilisés pour l'entraîner. Retirez tous ceux qui ne servent pas à grand-chose, notamment ceux qui ont une variance trop faible et qui n'impactent pas réellement le phénomène, mais peuvent fausser le résultat. Il en est de même pour des variables qui sont corrélées, vous pouvez en retirer au moins une. Cette méthode permet de simplifier les données et d'améliorer les performances de votre Machine Learning, et par conséquent les risques d'overfitting.

Pour ce faire, il faut entraîner le modèle plusieurs fois en retirant une variable à chaque fois et analyser l'impact sur les résultats. En revanche, cette méthode est vraiment utilisable uniquement lorsque l'on utilise des données avec une quantité de variables relativement faible.

La régularisation

Relativement similaire à la méthode précédente, il s'agit d'une forme de régression dont l'objectif est de réduire les variances. Elle sert à éviter que la machine étudie des modèles trop complexes et ne devienne trop flexible, et ainsi d'éviter les risques d'overfitting. Il existe différentes techniques de régularisation : régularisation L1, ridge, régularisation L2, lasso.

Concevoir un modèle simple

Les risques d'overfitting sont minimisés avec un modèle de Machine Learning simple. Dans la majorité des cas, il pourra résoudre les différentes applications qui lui sont soumises, avec précision. Il est alors conseillé de concevoir un modèle simple qui saura donner de bons résultats plutôt qu'un modèle complexe qui prendra énormément de temps à être entraîné et qui présente des risques accrus de résultats faussés. Vous pouvez également tester plusieurs modèles et en comparer les résultats avant d'en lancer un en production.

L'early stopping

Cette technique consiste à stopper intuitivement l'entraînement en cas de risque d'overfitting. Il faut pour cela déterminer la bonne durée d'entraînement. Au fur et à mesure que l'on entraîne le modèle, les résultats prédictifs vont en effet s'affiner. Cependant si on continue d'entraîner longuement le modèle, il y a un risque qu'il s'adapte trop aux données d'entraînement et donc overfit. Il faut alors trouver le juste milieu, soit avant que le taux d'erreur n'augmente. Le modèle sera alors abouti et bien généralisable. Si vous constatez par ailleurs qu'un modèle commence à overfitter alors que les performances ne sont pas très bonnes, il est peut-être préférable d'en changer.

La manière de se former à la Data Science

Éviter l'overfitting est un art qu'un Data Scientist se doit de maîtriser. Pour cela, il doit bien comprendre le fonctionnement théorique des modèles, en plus de savoir utiliser les différentes techniques citées ci-dessus. Cela nécessite d'approfondir le sujet du Machine Learning. Il est pour cela nécessaire de se former à la data science pour apprendre les fondamentaux. Suivre une formation Data Scientist permet de tout apprendre depuis les bases, notamment l'analyse pure des données, mais également des algorithmes, ainsi que l'application de tous les outils nécessaires dans ce domaine. Cela permet également de connaître les problématiques courantes, comme c'est le cas de l'overfitting.

Après vous être exercé avec des concepts théoriques sur des exercices simples, vous serez également confronté à des challenges, avec de véritables projets Data. À l'issue de la formation, en tant que Data Scientist digne de ce nom, vous serez alors en mesure d'extraire des données et de les analyser pour les présenter aux décideurs, mais également de faire le relais entre les équipes techniques et non techniques, d'organiser les données pour que chaque équipe ait accès à celles dont elle a besoin, etc. Ce type de formation est donc indispensable.

Rejoignez la communauté sur JULIE !

Python, SQL, gestion de projet Data, toutes les compétences à acquérir pour monter en compétences avec cours en ligne gratuits.

Alain Demenet
Écrit par
Alain Demenet
 - 
Développeur
@ Jedha

Python : le language de programmation le plus
populaire parmi les professionnels de la Data !

Obtenez notre livre d'Introduction Pratique à Python !

Programmes, thématiques Data, admissions,
vous avez une question ?

Prenez rendez-vous avec nos équipes