Qu'est-ce que la cross validation ?
4
 min
Monter en compétences
 Publié le 
4/11/2021

Qu'est-ce que la cross validation ?

En Machine Learning, une méthode est souvent utilisée pour permettre d'évaluer les performances des différents modèles d'apprentissage automatique, c'est la méthode statistique de cross validation. Comment mener à bien une cross validation ? En quoi consiste cette méthode ? Comment l'apprendre ? Les réponses dans cet article !

La cross validation ou validation croisée est une méthode statistique 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.

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.

Marina Kia
Écrit par
Marina Kia
 - 
Content & Event Manager
@ 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