Comment évaluer et améliorer son modèle de Machine Learning
3
 min
Monter en compétence
 Publié le 
12/1/2020

Comment évaluer et améliorer son modèle de Machine Learning

Une fois que vous avez construit votre modèle de Machine Learning, quelles sont les prochaines étapes ? Il va falloir l’évalue puis l’améliorer si ses performances ne sont pas bonnes. Une baseline vous permettra de démarrer cette analyse.

Évaluer son modèle

Tout va partir de votre baseline !

Qu'est-ce qu'une baseline

Une baseline est un élément vous permettant de comparer votre modèle par rapport à autre chose.

Elle peut être de 2 types :
– Vous avez déjà construit un algorithme de Machine Learning, vous comparez alors les performances de celui-ci avec celles du nouvel algorithme que vous avez crée.
– Vous pouvez également comparer les performances de votre modèle avec les connaissances métier d’expert de votre entreprise. Un exemple : dans la métallurgie, vous souhaitez savoir si votre métal est de bonne ou mauvaise qualité. Vous pouvez demander à un expert son point de vue, il aura sans doute 90% de précision dans la prédiction qu’il va réaliser (bonne ou mauvaise qualité) . Cela donne également une baseline « à battre ».

Toujours éviter l'overfitting

Une deuxième chose à étudier dans l’évaluation de votre modèle, ou plutôt un élément à surtout éviter : l’overfitting.

Vous pouvez tout à fait avoir des modèles qui sont très bons dans la prédiction de jeux de données d’entraînement. Il est possible que les performances soient moins grandes dans le jeux de données de test. Cela veut dire que votre modèle a sur-appris (overfit). Prenant l’exemple parlant d’un élève qui révise ses leçons, et qui les apprend par coeur – lors de son entraînement –. Le jour de l’évaluation – du test – celui a 2/20.

Cela signifie qu’il bien trop appris la leçon dans le cadre de ce qui avait dans son cours, mais qu’il n’a pas réussi à généraliser sur d’autres exercices. Les modèles de Machine Learning sont pareils.

L’overfitting correspond à l’incapacité de votre modèle à généraliser sur des données de test, car elles ont appris par coeur sur des données d’entraînement.

Un de nos alumni, Adrien Dodinet explique d’ailleurs ce concept en image dans son projet Fullstack (construction d’une voiture autonome !) Vous ne pouvez alors pas vous fier aux performances de votre modèle pour le mettre en production et le mettre à échelle.

Comment savoir si mon modèle overtfit ?

Pour savoir cela, il vous faudra comparer les performances des prédictions de votre modèle sur des jeux de données d’entraînement et des jeux de données de test.

Si les performances sur les jeux d’entraînement sont largement supérieures à celle sur les données de test, vous avez overfitté. Si l’écart est faible, vous pouvez considérer qu’il n’y a pas eu d’overfitting.

Il reste donc primordial d’avoir une baseline (comparer les performances de votre modèles à autre chose) tout en faisant attention à ne pas avoir d’overfitting.

Une fois l’évaluation faite, il va falloir le réévaluer de manière périodique. Si votre modèle n’overfit pas et que vous avez décidé de le mettre en production, il va falloir l’évaluer périodiquement pour qu’il n’ait pas de baisse de performance avec le temps.

Pur un algorithme, voir ses performances baisser est structurel : beaucoup de facteurs peuvent ré-influencer le projet que vous menez, et que l’algorithme n’avait pas vu au moment de l’entraînement. Il vous faudra alors re-entraîner votre modèle avec des nouvelles données, pour l’améliorer.

Améliorer votre modèle

Si votre modèle n’est pas meilleur que votre baseline, il vous faudra améliorer votre modèle pour obtenir de meilleures performances. À cela 2 techniques :

– Le Feature Engineering : adapter vos données à votre algorithme
– Jouer sur la complexité de vos données

Feature Engineering

Une technique très utilisée qui améliore grandement les performances de votre modèle. Le Feature Engineering est le fait d’adapter vos données à votre algorithme. Un exemple mathématique. Vous faites un algorithme simple de régression linéaire (une droite qui doit passer au plus proche de tous vos points de données et qui permettra de réaliser vos prédictions). Or, la visualisation de vos données donne un nuage de points avec une représentation exponentielle, et non une droite. Elle ne correspond donc pas à la représentation graphique de la régression linéaire. Je vais donc appliquer la fonction inverse à la fonction exponentielle – la fonction logarithmique – pour lisser le nuage de données, pour qu’il s’adapte mieux à ma fonction de régression et la suive. Une fois votre prédiction réalisée, vous pouvez repasser à votre fonction exponentielle.

Le feature engineering : une technique très utilisée qui améliore grandement les performances de votre modèle.

L’idée est ainsi d’adapter vos données pour que votre algorithme les ingère mieux. Les gains de performances sont assez signifiants avec cette technique puisque vous avez à la fois un algorithme performant, et des données qui lui correspondent bien. Cette méthode requiert cependant des connaissance statistiques poussées. L’exemple ici cité est simple comparé à d’autres : vous pouvez faire des calculs beaucoup plus complexes. Des connaissances métiers sont donc importantes, ne serait-ce que sur le jeu de donnée traité (par exemple si vous travaillez sur une projet dans l’immobilier, la santé, la banque, le divertissement etc).

Jouer sur la complexité des algorithmes

Vous pouvez prendre des algorithmes plus complexes pour améliorer vos performances. Vous avons pris l’exemple de la régression linéaire qui est un des plus simples. Vous avez les arbres de décisions qui peuvent être beaucoup plus performants, ou encore bien au dessus, les réseaux de neurones.

Mais il ne suffit pas d’appliquer un algorithme plus puissant pour avoir de meilleures performances.

Un concept majeur en Data Science est la balance entre biais et la variance. Un algorithme à fort biais est un algorithme qui crée des modèles simples (la régression linéaire par exemple). Mais la réalité pouvant être trop simplifiée (par du Feature Engineering par exemple), vous pouvez omettre beaucoup de cas que l’algorithme ne prendra pas en compte dans son scénario. Vous allez donc choisir d’augmenter la complexité d’une algorithme (à forte variance). Si vous augmentez cette complexité, un réseau de neurones prendra en compte ces scénarios. En revanche, ce genre d’algorithmes plus complexes ont tendance à sur-apprendre (overfitté), à mal généralisé sur des données de test, car ils ont appris par coeur sur votre jeu de données d’entraînement.

Cette balance entre biais et variance est extrêmement importante. Si vous avez un modèle peu performant à un instant T, vous pouvez décider de complexifier votre modèle ce qui vous permettra d’augmenter ses performances : en revanche il vous fera faire attention à ce que ce modèle plus complexe n’overfit pas, en comparant vos scores sur jeux de données d’entraînement et de test.

Écrit par
 - 

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

Obtenez notre livre d'Introduction Pratique à Python !

Testez-vous avec notre quizz !

Des compétences toujours plus recherchées par les recruteurs : évaluer votre niveau actuel en programmation !

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

Prenez rendez-vous avec nos équipes
pattern purple

Découvrez JULIE

la plateforme d’apprentissage
en ligne de Jedha !
Aller sur JULIE
JULIE desktop interface
JULIE mobile interface