Underfitting et Overfitting dans l’apprentissage automatique
Croyez-le ou non, dans le monde réel, nous n’aurons jamais un ensemble de données propre et parfait. Chaque ensemble de données aura quelques parties étranges ou manquantes ou des données déséquilibrées. Ou bien, en tant que développeurs d’apprentissage automatique, nous introduirons certaines erreurs ou déficiences dans notre modèle. L’une des principales raisons de cette situation est que nous voulons que notre modèle soit capable de décrire un modèle sous-jacent. Malheureusement, la nature des données de la vie réelle est qu’elles viennent avec un certain niveau de bruit et de valeurs aberrantes, et pour la plupart, nous voulons que le modèle capture le signal dans les données et non le bruit.
Maintenant, pour capturer le modèle sous-jacent dans les données avec précision, le modèle peut avoir à incorporer le bruit. L’implication est que le modèle dérivé s’adapte bien aux données de modélisation mais ne se généralise pas assez bien à d’autres échantillons qui n’ont pas été inclus dans le processus de modélisation.
Il existe une terminologie pour décrire la façon dont un modèle d’apprentissage automatique apprend et se généralise à de nouvelles données, il s’agit de l’overfitting et du underfitting. L’objectif d’un bon modèle d’apprentissage automatique est de bien généraliser à partir de l’ensemble de données d’apprentissage à n’importe quel ensemble de données du domaine du problème. Cela nous permet de faire des prédictions basées sur un ensemble de données que le modèle n’a jamais vu.
En statistique, un ajustement est désigné comme, la façon dont votre modèle est proche de la classe / fonction / valeur cible. L’overfitting et l’underfitting sont les deux plus grandes causes de mauvaises performances des algorithmes ou modèles d’apprentissage automatique.
Comprenons ce qu’est le Best Fit, l’overfitting et l’underfitting ? Suivi de quelques codes.
Qu’est-ce que l’Overfitting & Underfitting?
L’Overfitting se réfère au scénario où un modèle d’apprentissage machine ne peut pas généraliser ou s’adapter correctement sur un ensemble de données non vues. Un signe clair de surajustement de l’apprentissage machine est si son erreur sur l’ensemble de données de test ou de validation est beaucoup plus grande que l’erreur sur l’ensemble de données de formation.
Le surajustement est un terme utilisé en statistique qui fait référence à une erreur de modélisation qui se produit lorsqu’une fonction correspond trop étroitement à un ensemble de données. En conséquence, l’overfitting peut échouer à s’adapter à des données supplémentaires, ce qui peut affecter la précision de la prédiction des observations futures.
L’overfitting se produit lorsqu’un modèle apprend les détails et le bruit dans l’ensemble de données d’entraînement au point d’avoir un impact négatif sur les performances du modèle sur un nouvel ensemble de données. Cela signifie que le bruit ou les fluctuations aléatoires de l’ensemble de données d’apprentissage sont captés et appris comme des concepts par le modèle. Le problème est que ces concepts ne s’appliquent pas aux nouveaux ensembles de données et ont un impact négatif sur la capacité du modèle à généraliser.
L’opposé de l’overfitting est l’underfitting.
L’underfitting fait référence à un modèle qui ne peut ni modéliser l’ensemble de données d’entraînement ni généraliser à de nouveaux ensembles de données. Un modèle d’apprentissage automatique underfit n’est pas un modèle approprié et sera évident car il aura de mauvaises performances sur le jeu de données d’entraînement.
L’underfitting n’est souvent pas discuté car il est facile à détecter étant donné une bonne métrique de performance.
Comprendre avec des exemples
Exemple 1:
Disons que trois étudiants ont préparé un examen de mathématiques.
Le premier étudiant n’a étudié que les opérations mathématiques d’addition et a sauté les autres opérations mathématiques telles que la soustraction, la division, la multiplication, etc.
Le deuxième étudiant a une mémoire particulièrement bonne. Ainsi, le deuxième étudiant a mémorisé tous les problèmes présentés dans le manuel.
Et le troisième étudiant a étudié toutes les opérations mathématiques et est bien préparé pour l’examen.
À l’examen l’étudiant un ne sera capable de résoudre que les questions relatives à l’Addition et échouera dans les problèmes ou les questions posées relatives aux autres opérations mathématiques.
L’étudiant deux ne pourra répondre aux questions que si elles se trouvent apparaître dans le manuel (car il l’a mémorisé) et ne pourra répondre à aucune autre question.
L’étudiant trois pourra résoudre tous les problèmes de l’examen raisonnablement bien.
Les algorithmes d’apprentissage automatique ont un comportement similaire à nos trois étudiants, parfois le modèle généré par l’algorithme est similaire au premier étudiant. Ils n’apprennent qu’à partir d’une petite partie du jeu de données d’entraînement, dans ce cas, le modèle est Underfitting.
Parfois, le modèle mémorise l’ensemble du jeu de données d’entraînement, comme le deuxième étudiant. Ils obtiennent de très bonnes performances sur des instances connues, mais échouent gravement sur des données non vues ou des instances inconnues. Dans ce cas, on dit que le modèle est surajusté.
Et lorsque le modèle donne de bons résultats à la fois dans le jeu de données d’entraînement et sur les données non vues ou les instances inconnues comme l’élève trois, il est bien ajusté.
Exemple 2 :
Avons un autre exemple et considérons que vous avez visité une ville « X » et pris un taxi. En parlant à des amis, vous vous rendez compte plus tard que le chauffeur de taxi vous a facturé deux ou trois fois plus que le tarif standard. Cela s’est produit car vous étiez nouveau dans la ville et le chauffeur vous a littéralement pris pour un tour.
Aussi, vous avez acheté quelques articles à un vendeur de rue, et vous avez encore une fois fini par payer plus que ce qu’ils valaient. Vous décidez finalement que les habitants de la ville « X » sont malhonnêtes. C’est un trait humain, les gens généralisent souvent. Les modèles d’apprentissage automatique ont également cette faiblesse si nous ne prenons pas soin d’éviter les biais lors des étapes de développement : modélisation, sélection des algorithmes, des caractéristiques, de l’ensemble de données d’entraînement, etc.
Supposons que dans la même ville « X », un autre chauffeur de taxi vous ait facturé raisonnablement et selon le compteur, mais sur la base de l’expérience, vous considérez que ce chauffeur a également facturé plus. Cela s’appelle Overfitting.
À partir des deux exemples ci-dessus, nous pouvons dire que, si le modèle se comporte bien sur le test ou le jeu de données non vu, alors c’est un best fit ou un bon modèle. Et si le modèle ne s’est pas bien comporté sur le jeu de données de test ou non vu mais s’est bien comporté sur le jeu de données d’entraînement alors c’est un modèle Overfit. Et tout modèle qui n’a pas bien fonctionné dans le jeu de données d’entraînement ni dans le jeu de données de test alors c’est un modèle Underfit.
La suite verra un exemple avec le code python.
Exemple 3:
Cet exemple démontre les problèmes d’underfitting et overfitting et comment nous pouvons utiliser la régression linéaire avec des caractéristiques polynomiales pour approximer des fonctions non linéaires.
Générons deux variables disons X et y. X aura un certain nombre aléatoire / échantillon, où comme y est une partie de la fonction cosinus.
Selon les données, le graphique ressemblera à… simple tracé de X et y.
Formons notre modèle en utilisant la régression linéaire, prédisons et visualisons-le.
Visualisons le modèle prédit.
Nous pouvons voir que la ligne droite est incapable de capturer les modèles dans les données. C’est un exemple de sous-adaptation. L’erreur sera énorme dans ce modèle.
Envisageons la fonction polynomiale avec quelques degrés et entraînons notre modèle.
Nous pouvons voir qu’une fonction linéaire (polynôme de degré 1) n’est pas suffisante pour s’adapter aux échantillons d’entraînement. On parle de sous-adaptation.
Un polynôme de degré 4 s’approche presque parfaitement de la vraie fonction. C’est ce qu’on appelle le meilleur ajustement ou le bon modèle.
Toutefois, pour des degrés plus élevés (avec le degré 15), le modèle surajuste l’ensemble des données d’entraînement, c’est-à-dire qu’il apprend le bruit des données d’entraînement.
Nous évaluons quantitativement le surajustement / sous-ajustement en utilisant la validation croisée.
Nous calculons également l’erreur quadratique moyenne (MSE) sur l’ensemble de données de validation, plus elle est élevée, moins le modèle est susceptible de généraliser correctement à partir de l’ensemble de données d’entraînement.
Le code complet peut être référencé à partir de
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing
Détecter le surajustement ou le sous-ajustement
Un défi clé de la détection de tout type d’ajustement (que ce soit le sous-ajustement ou le meilleur ajustement ou le surajustement), est presque impossible avant de tester les données. Cela peut aider à répondre aux caractéristiques inhérentes de l’overfitting, qui est l’incapacité à généraliser un ensemble de données. Les données peuvent donc être séparées en différents sous-ensembles afin de faciliter la formation et le test. Les données sont divisées en deux parties principales, c’est-à-dire un ensemble de données de test et un ensemble de données de formation.
La technique de fractionnement peut varier en fonction du type d’ensemble de données et on peut utiliser n’importe quelle technique de fractionnement.
Si notre modèle fait beaucoup mieux sur l’ensemble de données de formation que sur l’ensemble de données de test, alors nous sommes probablement surajusté Par exemple, notre modèle a fonctionné avec une précision de 99% sur l’ensemble de données de formation mais seulement 50-55% sur l’ensemble de données de test. Il s’agit d’un surajustement du modèle et n’a pas bien fonctionné sur unseen dataset.
Si notre modèle fait beaucoup mieux sur le dataset de test que sur le dataset d’entraînement, alors nous sommes probablement sous-adaptés.
Et si notre modèle fait bien sur les deux datasets d’entraînement et de test, alors nous avons le meilleur ajustement. Par exemple, notre modèle a obtenu une précision de 90 % sur le jeu de données d’entraînement et obtient une précision de 88 % à 92 % sur le jeu de données de test. C’est le modèle le mieux ajusté.
Une autre façon simple de détecter cela est d’utiliser la validation croisée. Cela tente d’examiner le modèle formé avec un nouvel ensemble de données pour vérifier sa précision prédictive. Étant donné un ensemble de données, une certaine partie de celui-ci est retenue (disons 30%) tandis que le reste est utilisé dans la formation du modèle. Une fois le modèle formé, les données réservées sont alors utilisées pour vérifier la précision du modèle par rapport à la précision dérivée des données utilisées pour la formation. Un écart significatif entre ces deux signaux signale un surajustement.
Comment prévenir le surajustement ou le sous-ajustement
Détecter le surajustement ou le sous-ajustement est utile, mais cela ne résout pas le problème. Heureusement, vous avez plusieurs options à essayer. Voici quelques-unes des solutions les plus populaires.
Le remède pour l’Underfitting, est de passer à autre chose et d’essayer d’autres algorithmes d’apprentissage automatique. Néanmoins, il fournit un bon contraste avec le problème de l’overfitting.
Pour prévenir l’overfitting, il existe différentes façons et quelques-unes d’entre elles sont présentées ci-dessous.
- La validation croisée :
- La validation croisée est une mesure préventive puissante contre l’overfitting.
- Utilisez vos données de formation initiales pour générer plusieurs mini-séparations formation-test. Utilisez ces fractionnements pour régler votre modèle.
- Dans la validation croisée k-fold standard, nous partageons les données en k sous-ensembles, appelés folds. Ensuite, nous formons itérativement l’algorithme sur k-1 plis tout en utilisant le pli restant comme ensemble de test (appelé « pli de maintien »).
- La validation croisée vous permet de régler les hyperparamètres avec seulement votre ensemble de données de formation original. Cela vous permet de conserver votre ensemble de données de test comme un ensemble de données véritablement inédit pour sélectionner votre modèle final.
- Entraînement avec plus de données
- Cela ne fonctionnera pas à chaque fois, mais l’entraînement avec plus de données peut aider les algorithmes à mieux détecter le signal.
- A mesure que l’utilisateur alimente le modèle avec plus de données d’entraînement, il sera incapable de sur-régler tous les échantillons et sera obligé de généraliser pour obtenir des résultats.
- Les utilisateurs devraient continuellement collecter plus de données comme un moyen d’augmenter la précision du modèle.
- Cependant, cette méthode est considérée comme coûteuse, et, par conséquent, les utilisateurs doivent s’assurer que les données utilisées sont pertinentes et propres.
- Bien sûr, ce n’est pas toujours le cas. Si nous ajoutons simplement plus de données bruyantes, cette technique ne sera d’aucune utilité. C’est pourquoi vous devez toujours vous assurer que vos données sont propres et pertinentes.
- Augmentation des données
- Une alternative à la formation avec plus de données est l’augmentation des données, qui est moins coûteuse par rapport à la première.
- Si vous ne pouvez pas collecter continuellement plus de données, vous pouvez faire en sorte que les ensembles de données disponibles semblent diversifiés.
- L’augmentation des données fait en sorte qu’un échantillon de données semble légèrement différent chaque fois qu’il est traité par le modèle. Ce processus fait en sorte que chaque ensemble de données semble unique pour le modèle et empêche le modèle d’apprendre les caractéristiques des ensembles de données.
- Réduction de la complexité ou simplification des données
- La suradaptation peut se produire en raison de la complexité d’un modèle, de sorte que, même avec de grands volumes de données, le modèle parvient toujours à suradapter l’ensemble de données d’entraînement.
- La méthode de simplification des données est utilisée pour réduire l’overfitting en diminuant la complexité du modèle pour le rendre suffisamment simple pour qu’il ne se surajuste pas.
- Certaines des actions qui peuvent être mises en œuvre comprennent l’élagage d’un arbre de décision, la réduction du nombre de paramètres dans un réseau neuronal et l’utilisation du dropout sur un réseau neuronal.
- Simplifier le modèle peut également rendre le modèle plus léger et s’exécuter plus rapidement.
- Régularisation
- La régularisation fait référence à un large éventail de techniques pour forcer artificiellement votre modèle à être plus simple.
- La méthode dépendra du type d’apprenant que vous utilisez. Par exemple, vous pouvez élaguer un arbre de décision, utiliser le dropout sur un réseau neuronal ou ajouter un paramètre de pénalité à la fonction de coût dans la régression.
- Souvent, la méthode de régularisation est également un hyperparamètre, ce qui signifie qu’elle peut être réglée par validation croisée.
- Pour en savoir plus sur la régularisation, référez-vous à l’article https://datascience.foundation/datatalk/regularization-machine-learning-teacher écrit et très bien expliqué par Abhishek Mishra.
- Ensemblage
- Les ensembles sont des méthodes d’apprentissage automatique permettant de combiner les prédictions de plusieurs modèles distincts. Il existe quelques méthodes d’ensemblisme différentes, mais les deux plus courantes sont : Boosting et Bagging.
- Le Boosting fonctionne en utilisant des modèles de base simples pour augmenter leur complexité agrégée. Il entraîne un grand nombre d’apprenants faibles disposés en séquence, de telle sorte que chaque apprenant de la séquence apprend des erreurs de l’apprenant qui le précède.
- Le Boosting tente d’améliorer la flexibilité prédictive des modèles simples.
- Le Boosting combine tous les apprenants faibles de la séquence pour faire émerger un apprenant fort.
- Le Bagging fonctionne en entraînant de nombreux apprenants forts disposés selon un modèle parallèle, puis en les combinant pour optimiser leurs prédictions.
- L’ensachage tente de réduire le risque de surajustement des modèles complexes.
- L’ensachage combine ensuite tous les apprenants forts ensemble pour « lisser » leurs prédictions.
- Arrêt précoce
- Lorsque vous entraînez un algorithme d’apprentissage de manière itérative, vous pouvez mesurer la performance de chaque itération du modèle.
- Jusqu’à un certain nombre d’itérations, les nouvelles itérations améliorent le modèle. Après ce point, cependant, la capacité du modèle à généraliser peut s’affaiblir car il commence à suradapter les données d’apprentissage.
- L’arrêt précoce fait référence à l’arrêt du processus d’apprentissage avant que l’apprenant ne passe ce point.
- Aujourd’hui, cette technique est surtout utilisée dans l’apprentissage profond alors que d’autres techniques (par ex. régularisation) sont privilégiés pour l’apprentissage automatique classique.
- Vous devez ajouter une régularisation dans le cas des modèles linéaires et SVM.
- Dans les modèles d’arbres de décision, vous pouvez réduire la profondeur maximale.
- Alors que dans les réseaux neuronaux, vous pouvez introduire une couche de décrochage pour réduire le surajustement.
Résumé rapide
L’overfitting est une erreur de modélisation qui introduit un biais dans le modèle parce qu’il est trop étroitement lié à l’ensemble des données.
L’overfitting rend le modèle pertinent pour son ensemble de données uniquement, et non pertinent pour tout autre ensemble de données.
Certaines des méthodes utilisées pour empêcher l’overfitting comprennent l’ensemblisme, l’augmentation des données, la simplification des données, et la validation croisée.