Qu'est-ce que l'overfitting ?
Sélectionnez un chapitre
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 ? Comment évaluer et améliorer son modèle de Machine Learning ?
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.
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.
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.
Articles recommandés
Intelligence Artificielle
Algorithmes de Machine Learning : présentation et fonctionnement
Les algorithmes de Machine Learning sont des programmes à même d'apprendre à partir de données. Ils sont capables de s'améliorer avec les entraînements et sont employés pour accomplir des tâches comme la simple analyse de données ou des prédictions. Ils sont également capables de prendre de meilleures décisions sur la base de données qui leur sont fournies en amont.
Intelligence Artificielle
Méthodes de Machine Learning | Jedha
Différentes méthodes de travail existent en Machine Learning, découvrez ce qu'est une méthode Machine Learning, et comment évaluer son modèle ML.
Intelligence Artificielle
Qu'elle est la différence entre la régression logistique et linéaire ?
Prédire la probabilité qu'un évènement se produise, c'est possible avec la régression logistique ! Apprenez le Machine Learning avec notre formation Data.
Intelligence Artificielle
Algorithme Gradient Boosting, Présentation et fonctionnement | Jedha
L'algorithme de la descente de gradient, un algorithme en Machine Learning indispensable pour chaque Data Scientist. Comment utiliser cet algorithme ?
Intelligence Artificielle
Algorithme XGBoost, Présentation et fonctionnement | Jedha
XGBoost est un modèle de Machine Learning très populaire chez les Data Scientists. Cet article vous explique son fonctionnement et son apprentissage.
Intelligence Artificielle
Le Machine Learning automatisé | Jedha
Prédire, automatiser, recommander. Les usages du Machine Learning en entreprise sont toujours plus nombreux. Adoptés par un nombre grandissant d’entreprises, ces outils bousculent les codes et process métiers. Aujourd'hui, des technologies existent pour les automatiser, faisons un focus dessus !