Qu'est-ce que la cross validation ?

Marina Kia
Par 
Marina Kia
Responsable Contenu & Évènementiel
Dernière mise à jour le 
09
 
November
 
2023
Devenez Data Scientist et donnez un tournant décisif à votre carrière !
Découvrir notre formation
Qu'est-ce que la cross validation ?
Sommaire

En Machine Learning, des méthodes sont souvent utilisées pour permettre d'évaluer les performances des différents modèles d'apprentissage automatique. Il existe donc des outils statistiques comme le théorème central limite, ainsi que le cross validation, aussi appelé validation croisée. Comment mener à bien une cross validation ? En quoi consiste cette méthode ? Comment l'apprendre ? Les réponses dans cet article !

Devenez Data Scientist et donnez un tournant décisif à votre carrière !
Découvrir notre formation
Formation IAFormation IA

La cross validation ou validation croisée est une méthode de Machine Learning qui permet d'évaluer les performances des modèles d'apprentissage automatique. Lorsqu'on entraîne un modèle sur des données étiquetées, on émet l'hypothèse qu'il doit également fonctionner sur de nouvelles données. Une confirmation supplémentaire sera tout de même nécessaire pour s'assurer de l'exactitude ou non de ses prédictions. La validation croisée permet justement de vérifier si cette hypothèse est valide, ou non. On pourra ensuite choisir l'algorithme de Machine Learning approprié pour effectuer une tâche précise.

Quelle est la méthode pour mener à bien une cross validation ?

Il existe plusieurs méthodes pour effectuer une validation croisée. Découvrez deux des principales techniques que sont : le Train-Test split et la méthode K-Folds.

Le Train-Test Split

Avec le Train-Test Split, on commence par décomposer l'ensemble de données de façon aléatoire. Une partie permettra d'entraîner le modèle de Machine Learning, tandis que l'autre servira pour le test de validation. Dans la majorité des cas, 70 à 80% des données du dataset sont utilisées pour l'entraînement. Le reste sera exploité dans le cadre de la Cross-Validation.

C'est une technique qui se montre très efficace, excepté si les données disponibles sont limitées. Dans ce cas on peut se retrouver avec des informations manquantes, qui n'ont pas été utilisées pour l'entraînement. Les résultats obtenus peuvent ainsi être biaisés. Par contre, lorsque l'ensemble de données est vaste et qu'on arrive à faire une distribution égale entre les deux échantillons, l'approche Train-Test Split est tout à fait adaptée. Une séparation manuelle des données peut être effectuée ou encore l'utilisation de la méthode train test split de Scikit-learn.

Train-Test Split
Qu'est-ce que le Train-Test Split ?

La méthode K-Folds

Facile à comprendre et très populaire auprès des professionnels, la technique K-Folds propose généralement un modèle moins biaisé que les autres méthodes qui existe. La principale raison est qu'elle permet de s'assurer que toutes les observations du jeu de données original puissent apparaître dans l'ensemble d'entraînement, mais aussi dans l'ensemble utilisé pour le test. Dans la situation où les données d'input sont limitées, c'est l'une des meilleures solutions à considérer.

Pour commencer, on effectue d'abord une séparation de l'ensemble de données de façon aléatoire en K folds. Un paramétrage unique dénommé « K » est inséré dans la procédure, se référant au nombre de groupe dans lequel l'échantillon sera réparti. K doit avoir une valeur ni trop basse ni trop haute. La plupart du temps, on choisira une valeur qui se situe entre 5 et 10 selon la taille du dataset. Dans le cas où K=10, cela implique qu'il faut diviser le dataset en 10 parties.

Plus la valeur K est élevée, moins le modèle risque d'être biaisé. Sans oublier qu'une variance trop large peut amener à un surajustement. Avec une valeur plus basse, l'approche rejoint simplement la méthode Train-Test Split.

L'ajustement du modèle est réalisé avec les folds K-1 (K moins 1), puis le modèle est validé en utilisant le K-fold restant. Tous les scores ainsi que les erreurs doivent être notés. On répète le même processus jusqu'à ce que tous les K-fold servent dans l'ensemble d'entraînement. On calcule ensuite la moyenne des scores enregistrés qui représente la métrique de performance du modèle.

C'est un processus qui se fait manuellement, ou encore en utilisant les fonctions « cross_val_score » et « cross_val_predict » qui se retrouvent dans la bibliothèque du programme Python Scikit-Learn. La première fonction (cross_val_score) indique le score de chaque fold de test. Tandis que la seconde (cross_val_predict) donne le score prédit pour chacune des observations dans le dataset d'input quand il était encore dans l'ensemble de test.

Par ailleurs, on peut se retrouver avec un modèle estimateur qui est un classificateur alors que la variable cible est de type binaire ou multiclasse. Dans ce cas de figure, c'est la technique du « StratifiedKfold » qui est utilisé par défaut. C'est une approche qui permet d'avoir des folds stratifiés. Le pourcentage d'échantillons pour chacune des classes pouvant être maintenue par exemple dans tous les folds. Cela permet une distribution équitable des données des folds d'entraînement et de test.

Pour les autres cas, c'est la méthode K-Fold qui est utilisé par défaut. Elle sert à diviser et entraîner le modèle, les folds pouvant être utilisés en tant qu'itérateurs ou dans une boucle pour réaliser un entraînement sur un dataframe Pandas.

méthode K-Folds
La méthode K-Folds


L'importance d'un jeu de données équilibrées

Il n'est pas toujours évident de choisir une métrique appropriée pour les modèles de Machine Learning. Mais réaliser une cross validation est encore plus difficile en présence d'un jeu de données déséquilibrées.

En effet, lorsqu'on dispose d'un ensemble de données composé d'une classe fortement majoritaire, les algorithmes se retrouvent la plupart du temps biaisés. Avec leurs fonctions de perte, ils essaient d'optimiser les métriques comme le taux de bonnes prédictions en ne considérant pas la distribution des données.

Dans les situations plus graves, les classes minoritaires seront simplement traitées comme des valeurs absurdes de la classe majoritaire. Ce qui amène l'algorithme d'apprentissage à générer simplement un classifieur trivial qui regroupe chaque exemple dans la classe majoritaire. Un tel modèle peut sembler performant, mais il ne s'agit que du reflet de la surreprésentation de la classe majoritaire appelée accuracy paradoxe.

Dans la réalité, c'est généralement la classe minoritaire qui a le plus d'intérêt dans l'étude qu'on souhaite mener. Le degré de déséquilibre varie d'un jeu de données à un autre, mais le but est souvent de les identifier comme dans l'exemple de la détection de panne, de dépistage de maladies, de ciblage marketing, etc.

Les astuces pour lutter contre le déséquilibre de données

Plusieurs méthodes permettent de mieux organiser les données avant de procéder à la validation du modèle de Machine Learning. En présence d'un jeu de données déséquilibré, on peut :

  • Collecter des données supplémentaires
  • Utiliser les techniques de rééchantillonnage
  • Générer des échantillons synthétiques
  • Utiliser un modèle pénaliser
  • Générer des sous-ensembles de données
  • Repenser le problème

Collecter davantage de données est une méthode simple, mais qui peut s'avérer très efficace. Lorsqu'il y a possibilité d'avoir plus de données pour le problème, les collecter pourrait permettre de rééquilibrer les classes à un degré variable.

Le rééchantillonnage permet de modifier son ensemble de données avant d'entraîner le modèle prédictif pour avoir des données plus équilibrées. On distingue deux procédés : le suréchantillonnage (Oversampling) et le sous-échantillonnage (Undersampling). Le suréchantillonnage fonctionne en augmentant le nombre d'observations des classes minoritaires pour obtenir un ratio classe minoritaire/classe majoritaire satisfaisant. Tandis que le sous-échantillonnage consiste plutôt à réduire le nombre d'observations des classes majoritaires. Simple à réaliser, on recommande de privilégier le sous-échantillonnage pour un volume important de jeux de données (des dizaines voire des centaines de milliers de cas ou plus) et le suréchantillonnage quand il n'y a pas beaucoup de données (des dizaines de milliers ou moins). On pourra aussi tester différents ratios de classe et vérifier si cela va améliorer les métriques de performances choisies.

En ce qui concerne les échantillons synthétiques, ils peuvent être générés de façon automatique à partir d'algorithmes. L'un des plus populaires est l'algorithme SMOTE (Synthétic Minority Over-sampling Technique) qui permet de créer des échantillons synthétiques à partir de la classe minoritaire au lieu d'avoir de simples copies. L'algorithme d'undersampling ClusterCentroids permet quant à lui de créer un certain nombre de centroïdes grâce aux données d'origine pour ne pas perdre des informations sur la classe majoritaire lorsqu'on veut la réduire.

déséquilibre de données
Lutter contre le déséquilibre de données

Avec la classification pénalisée, un coût supplémentaire est imposé au modèle pour les erreurs de classification qui sont commises sur la classe minoritaire durant la formation. Ce sont des pénalités qui peuvent biaiser le modèle de sorte qu'il accorde plus d'importance à la classe minoritaire.

Une autre solution est d'utiliser des classes contenant des modèles d'ensembles (sous-ensembles) comme le Boosting ou Bagging proposé par le module imblearn.ensemble. Ces classes sont alors entraînées à chaque étape de l'algorithme sur un échantillon rééquilibré automatique entre les différentes classes. Implémenter de nouveaux modèles permet de se passer de méthodes de rééchantillonnage avant l'entraînement. Ils seront appliqués automatiquement à chaque sélection de données par l'algorithme.

Les différentes techniques présentées peuvent être testées individuellement ou même combinées pour arriver à un meilleur résultat. On pourra même relabéliser les données d'une classe majoritaire en sous-classes pour avoir un problème de classification multiclasse plus équilibrée. D'autres méthodes de Machine Learning telles que l'Anomaly Detection et l'Active Learning sont aussi utilisées par les professionnels. Tout cela démontre la complexité de travailler avec ce genre de données et l'importance d'avoir un jeu de données équilibré pour obtenir des résultats concluants.

Comment apprendre à faire une cross validation ?

Incontournable dans le processus de Machine Learning, la cross validation permet de valider ou d'invalider une hypothèse. Pour devenir un professionnel dans ce domaine, il est important de maîtriser son utilisation. L'apprentissage peut se faire au cours d'une formation Machine Learning où sont enseignées toutes les notions de base requises pour un parcours de ML Engineer, de Data Analyst ou de Data Scientist. C'est une formation sur l'utilisation des algorithmes de Machine Learning, les méthodes, les processus ainsi que les outils qui permettent d'entraîner les modèles et de les mettre en production.

Qu'il s'agisse d'un premier choix de carrière ou d'une reconversion professionnelle, le domaine de la data reste accessible à tous. Opter pour un programme pratique, élaboré par des professionnels de la data qui connaissent parfaitement les besoins des entreprises, permet de s'insérer plus rapidement. À plein temps ou en temps partiel, il est possible d'apprendre à son rythme pour acquérir à terme toutes les compétences requises pour faire son entrée dans les métiers de la Data Science. Les étudiants apprennent à faire une cross validation, à maîtriser les langages de programmation comme Python, l'exploitation des bases de données, etc.

Soirée Portes Ouvertes Jedha BootcampSoirée Portes Ouvertes Jedha Bootcamp
Marina Kia
Marina Kia
Responsable Contenu & Évènementiel
Marina est une passionnée du monde de l'éducation. C'est pour cette raison qu'elle a rejoint Jedha pour animer notre communauté d'alumnis et créer du contenu destiné à aider nos élèves à concrétiser leur projet de reconversion professionnelle dans la Data et la Cybersécurité.

Articles recommandés

Intelligence Artificielle
Formation Machine Learning | Jedha
Le Machine Learning est une discipline scientifique pouvant être classée comme une branche de l'intelligence artificielle. De plus en plus de postes requiert des compétences en ML, on vous explique pourquoi et surtout s'y former.
Intelligence Artificielle
Qu'est-ce que l'overfitting | Jedha
L'overfitting ? Le pire ennemi du Data Scientist ! Comment détecter ce problème et tenter de l'améliorer ? Les réponses et solutions dans cet article !
Intelligence Artificielle
Scikit-Learn librairie Python de Machine Learning | Jedha
Scikit-learn est une bibliothèque de machine learning en Python, découvrez son contenu, ses avantages et son utilité.
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
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
Feature engineering, traitement de données en machine learning | Jedha
Le Feature Engineering est un processus de machine learning consistant au traitement de données brutes pour les exploiter plus précisément. Découvrez son fonctionnement complet.