Titre RNCP Niveau 7

Maîtrisez pipelines, cloud & IA pour devenir Data Engineer opérationnel.

Devenez Data Engineer

DataScientist.fr

Formations

L'équipeLa plateforme
Offre entreprises

🇫🇷

Divisez votre dataset avec train_test_split de scikit learn - Tutoriel pratique en Python
Data Scientist
Artificial Intelligence
Python

Divisez votre dataset avec train_test_split de scikit learn - Tutoriel pratique en Python

Romain DE LA SOUCHÈRE

Lead Developer, Expert Cloud et DevOps

Publié le 2 janvier 2025 · 12 min de lecture

Dans le monde de l'apprentissage automatique, la clé d'un modèle performant réside souvent dans la manière dont les données sont divisées. Une séparation judicieuse entre les ensembles d'entraînement, de validation et de test est cruciale pour éviter les écueils du sous-apprentissage et du sur-apprentissage. Cet article explore l'importance de ces divisions et présente des méthodes efficaces pour optimiser l'utilisation de traintestsplit, garantissant ainsi des résultats robustes et fiables dans le cadre de l'apprentissage supervisé. Plongez-vous dans les subtilités de cette étape fondamentale pour renforcer vos modèles prédictifs.

L'importance de la division des données

Pour bien comprendre l'importance de la division des données, il est essentiel de saisir comment cette étape influence les performances et la fiabilité des modèles d'apprentissage automatique. La division des données est une pratique courante qui consiste à séparer un ensemble de données en deux sous-ensembles : un ensemble d'entraînement et un ensemble de test. Cette séparation est cruciale pour évaluer la capacité d'un modèle à généraliser sur des données non vues.

Prévenir le surapprentissage

L'une des principales raisons de diviser les données est de prévenir le surapprentissage, ou overfitting. Lorsque vous entraînez un modèle sur l'intégralité de votre ensemble de données, il risque de s'adapter trop précisément aux particularités de cet ensemble, capturant le bruit au lieu de saisir les tendances générales. En divisant les données, vous pouvez évaluer la performance du modèle sur un ensemble de test qui n'a pas été utilisé durant l'entraînement, vous assurant ainsi que le modèle généralise bien.

Évaluation de la performance

La division des données permet également d'évaluer objectivement la performance d'un modèle. Sans un ensemble de test séparé, il serait difficile de déterminer si un modèle fonctionne bien simplement parce qu'il s'adapte aux données d'entraînement ou s'il est vraiment capable de prédire correctement de nouvelles données. En utilisant des métriques comme l'exactitude, la précision, le rappel, ou le score F1 sur l'ensemble de test, vous obtenez une indication plus fiable des capacités prédictives de votre modèle.

Ajustement des hyperparamètres

Une autre raison clé de la division des données est l'ajustement des hyperparamètres. Les hyperparamètres sont des paramètres définis avant l'entraînement du modèle, et leur ajustement peut avoir un impact significatif sur la performance du modèle. En utilisant une technique comme la validation croisée, où l'ensemble de données est divisé en plusieurs parties, vous pouvez tester différentes configurations de modèles et choisir celle qui offre la meilleure performance sur l'ensemble de validation sans contaminer l'ensemble de test.

Répartition équilibrée

Enfin, il est important d'assurer que la division des données est effectuée de manière à conserver une répartition équilibrée des classes dans les ensembles d'entraînement et de test. Cela garantit que le modèle est entraîné et évalué de manière équitable, surtout dans le cas de données déséquilibrées où certaines classes pourraient être sous-représentées. Un déséquilibre pourrait fausser l'évaluation de la performance du modèle, menant à des conclusions erronées.
En conclusion, la division des données est une étape fondamentale dans le développement de modèles d'apprentissage automatique robustes et fiables.

Ensembles d'entraînement, de validation et de test

Lorsque vous travaillez avec des modèles d'apprentissage automatique, il est essentiel de bien comprendre les rôles spécifiques des ensembles d'entraînement, de validation et de test. Chacun de ces ensembles a un objectif précis qui contribue à la création de modèles efficaces et fiables.

Ensemble d'entraînement

L'ensemble d'entraînement est la portion des données utilisée pour ajuster les paramètres internes du modèle. C'est sur cet ensemble que le modèle "apprend" à partir des exemples, en minimisant une fonction de coût qui mesure l'erreur entre les prédictions du modèle et les valeurs réelles. Pour maximiser l'apprentissage, il est souvent souhaitable que cet ensemble soit le plus grand possible, tout en conservant une portion suffisante pour les ensembles de validation et de test.

Ensemble de validation

L'ensemble de validation joue un rôle crucial dans le réglage des hyperparamètres du modèle et la prévention du surapprentissage. En évaluant le modèle sur cet ensemble pendant l'entraînement, vous pouvez ajuster des aspects tels que le taux d'apprentissage, le nombre de couches dans un réseau neuronal, ou les paramètres de régularisation. La validation croisée, souvent utilisée, consiste à diviser l'ensemble de données en plusieurs sous-ensembles et à faire tourner les rôles d'entraînement et de validation pour optimiser ces hyperparamètres de manière robuste sans utiliser l'ensemble de test.

Ensemble de test

L'ensemble de test est utilisé uniquement à la fin du processus de modélisation pour évaluer définitivement la performance du modèle. Il fournit une évaluation impartiale de la capacité de généralisation du modèle sur des données non vues. Il est crucial de ne pas exposer cet ensemble durant le processus d'entraînement et de validation pour éviter de biaiser les résultats et de surestimer les performances du modèle.

Pratiques recommandées

Pour garantir une évaluation précise, une bonne pratique consiste à utiliser une répartition typique de 70% pour l'entraînement, 15% pour la validation, et 15% pour le test. Cependant, cette répartition peut varier en fonction de la taille de l'ensemble de données et de la complexité du modèle. Il est aussi recommandé de veiller à ce que chaque ensemble soit représentatif de l'ensemble de données global, en particulier dans le cas de données déséquilibrées.
En synthèse, la distinction entre ces ensembles et leur utilisation appropriée est fondamentale pour construire des modèles robustes et fiables.

Sous-apprentissage et sur-apprentissage

Dans le domaine de l'apprentissage automatique, sous-apprentissage et sur-apprentissage sont deux problèmes courants qui peuvent affecter la performance d'un modèle. Comprendre ces concepts est crucial pour ajuster les modèles de manière efficace.

Sous-apprentissage

Le sous-apprentissage, ou underfitting, se produit lorsque le modèle est trop simple pour capturer les tendances sous-jacentes des données. Cela peut résulter de l'utilisation d'un modèle avec trop peu de paramètres ou d'une complexité insuffisante. Par exemple, tenter de modéliser une relation non linéaire complexe avec une régression linéaire peut conduire à un sous-apprentissage.
Les indicateurs de sous-apprentissage incluent une faible performance à la fois sur les ensembles d'entraînement et de validation. Pour y remédier, il est souvent nécessaire de complexifier le modèle, soit en ajoutant plus de paramètres, soit en optant pour un modèle plus sophistiqué, comme un réseau de neurones plus profond ou un modèle d'ensemble.

Sur-apprentissage

Le sur-apprentissage, ou overfitting, se produit lorsque le modèle s'ajuste trop bien aux données d'entraînement, capturant des bruits et des variations mineures qui ne généralisent pas bien aux nouvelles données. Cela se traduit généralement par une excellente performance sur l'ensemble d'entraînement, mais une performance médiocre sur l'ensemble de validation et de test.
Pour détecter le sur-apprentissage, il est utile de surveiller l'écart de performance entre les ensembles d'entraînement et de validation. Si le modèle affiche une performance beaucoup meilleure sur l'ensemble d'entraînement que sur l'ensemble de validation, il y a probablement sur-apprentissage.

Stratégies d'atténuation

Plusieurs stratégies peuvent être mises en œuvre pour atténuer le sur-apprentissage :
  • Régularisation : Ajout de termes de régularisation dans la fonction de coût pour pénaliser les modèles complexes.
  • Pruning : Dans les arbres de décision, la taille de l'arbre peut être réduite pour éviter qu'il ne s'adapte trop aux données d'entraînement.
  • Augmentation des données : Générer plus de données d'entraînement à travers des transformations pour renforcer la capacité de généralisation du modèle.
En gérant soigneusement le sous-apprentissage et le sur-apprentissage, vous pouvez développer des modèles qui non seulement s'ajustent bien à vos données d'entraînement, mais qui sont également capables de généraliser efficacement à de nouvelles données.

Prérequis pour l'utilisation de traintestsplit

Pour utiliser efficacement la fonction traintestsplit de la bibliothèque Scikit-learn en Python, certains prérequis et considérations doivent être pris en compte. Cette fonction est essentielle pour diviser votre ensemble de données en sous-ensembles d'entraînement et de test, et parfois de validation, afin d'évaluer les performances de votre modèle de manière fiable.

Compréhension des données

Avant de diviser vos données, il est crucial de bien comprendre la structure et les caractéristiques de votre ensemble de données. Cela inclut la vérification des types de données, la gestion des valeurs manquantes et la compréhension de la répartition des classes dans le cas de classifications. Une bonne compréhension vous aidera à décider de la proportion appropriée pour les ensembles d'entraînement et de test.

Prétraitement des données

Avant l'application de traintestsplit, un prétraitement des données peut être nécessaire. Ce prétraitement peut inclure la normalisation ou la standardisation des caractéristiques, la conversion des catégories en variables numériques, ou la gestion des valeurs aberrantes. Ces étapes garantissent que les données sont prêtes pour un apprentissage efficace et que les ensembles d'entraînement et de test sont comparables.

Paramètres de traintestsplit

L'utilisation de traintestsplit implique de spécifier certains paramètres :
  • test_size : Détermine la proportion de l'ensemble de données à inclure dans l'ensemble de test. Par exemple, test_size=0.2 signifie que 20% des données seront utilisées pour le test.
  • random_state : Fixe la graine du générateur aléatoire pour obtenir des résultats reproductibles. Cela est particulièrement utile pour comparer les performances de différents modèles de manière cohérente.
  • stratify : Assure que la répartition des classes est similaire dans les ensembles d'entraînement et de test, ce qui est crucial pour les ensembles de données déséquilibrés. Utiliser stratify=yy est le vecteur des classes.

Exécution de la fonction

Voici un exemple de code pour illustrer l'utilisation de traintestsplit :
python
En suivant ces prérequis et considérations, vous pouvez utiliser traintestsplit pour diviser vos données de manière efficace et préparer votre modèle pour des évaluations robustes.

Application de traintestsplit

L'application de la fonction traintestsplit de Scikit-learn est une étape clé dans le processus de préparation des données pour l'apprentissage automatique. Elle permet de séparer un ensemble de données en sous-ensembles d'entraînement et de test de manière aléatoire et contrôlée.

Exemple pratique

Imaginons que vous travaillez avec un ensemble de données de classification pour prédire si un client achètera un produit. Cet ensemble contient des caractéristiques telles que l'âge, le revenu, et l'historique d'achats.
python
Dans cet exemple, nous avons utilisé test_size=0.25 pour spécifier que 25% des données devraient être réservées pour le test. Le paramètre random_state=42 assure la reproductibilité des résultats.

Importance de la stratification

La stratification est particulièrement importante dans le cas de données déséquilibrées. Supposons que notre vecteur y représente un problème de classification binaire avec une forte prédominance de la classe 0. En utilisant la stratification, nous nous assurons que les proportions de chaque classe sont maintenues dans les ensembles d'entraînement et de test :
python

Vérification des ensembles

Après la division, il est judicieux de vérifier les dimensions des ensembles résultants pour s'assurer que la séparation s'est faite correctement :
python
Cette vérification rapide garantit que vos ensembles sont correctement configurés pour la phase d'entraînement et de test. En suivant ces étapes, vous pouvez vous assurer que traintestsplit est appliqué de manière optimale pour préparer vos données à l'apprentissage automatique.

Apprentissage supervisé avec traintestsplit

L'apprentissage supervisé est un paradigme de l'apprentissage automatique où un modèle est formé pour faire des prédictions basées sur des données étiquetées. L'utilisation de traintestsplit joue un rôle essentiel dans ce processus en permettant une évaluation efficace des performances du modèle.

Entraînement du modèle

Avec traintestsplit, l'ensemble d'entraînement est utilisé pour ajuster le modèle. Par exemple, si vous utilisez une régression logistique pour une tâche de classification binaire, vous pouvez entraîner votre modèle comme suit :
python
Dans ce scénario, le modèle apprend les relations dans les données d'entraînement pour effectuer des prédictions sur de nouvelles données.

Évaluation du modèle

Une fois le modèle entraîné, l'ensemble de test est utilisé pour évaluer sa performance. Cela permet de mesurer la capacité de généralisation du modèle. Par exemple, vous pouvez calculer l'exactitude du modèle avec :
python
python
Cette étape est cruciale pour s'assurer que le modèle ne souffre pas de surapprentissage et qu'il peut bien généraliser à de nouvelles données.

Ajustement des hyperparamètres

L'utilisation de traintestsplit facilite également l'ajustement des hyperparamètres. En répétant le processus de division, d'entraînement et de test avec différentes configurations de paramètres, vous pouvez optimiser les performances du modèle.
En utilisant les sous-ensembles générés par traintestsplit, l'apprentissage supervisé devient un processus structuré qui garantit que le modèle est non seulement bien entraîné mais aussi correctement évalué pour un déploiement efficace.

Conclusion

À travers cet article, nous avons exploré en profondeur l'importance et l'application de la fonction traintestsplit dans le cadre de l'apprentissage supervisé. Cette méthode de division des données est essentielle pour garantir que les modèles d'apprentissage automatique sont non seulement bien entraînés, mais aussi capables de généraliser efficacement à de nouvelles données.

Résumé des points clés

Nous avons commencé par souligner l'importance de la division des données, qui empêche le surapprentissage et assure une évaluation juste des performances du modèle. Ensuite, nous avons distingué les rôles des ensembles d'entraînement, de validation et de test, chacun jouant un rôle crucial dans le développement d'un modèle robuste.
L'analyse des problèmes de sous-apprentissage et de sur-apprentissage a mis en lumière les défis potentiels dans l'entraînement des modèles et les stratégies pour les prévenir, telles que la régularisation et l'augmentation des données.
Nous avons ensuite détaillé les prérequis pour l'utilisation de traintestsplit, notamment la compréhension des données et le prétraitement nécessaire pour garantir que la division est efficace et représentative.

Application dans l'apprentissage supervisé

L'application de traintestsplit dans le cadre de l'apprentissage supervisé a été illustrée par l'exemple de la régression logistique, démontrant comment cette fonction facilite l'entraînement et l'évaluation des modèles. Grâce à une division judicieuse des données, les modèles peuvent être évalués de manière fiable, ce qui permet d'optimiser leur performance par l'ajustement des hyperparamètres.

Importance de la validation

Nous avons également souligné l'importance de la validation croisée comme complément à traintestsplit, surtout lorsque l'on souhaite affiner les hyperparamètres sans compromettre l'intégrité de l'ensemble de test final.
En intégrant ces pratiques dans votre flux de travail, vous pouvez vous assurer que vos modèles sont non seulement performants sur vos données d'entraînement, mais qu'ils sont aussi prêts à affronter des données du monde réel avec efficacité. Grâce à une évaluation rigoureuse et à un entraînement bien structuré, vous pourrez développer des solutions d'apprentissage automatique qui apportent une réelle valeur ajoutée.

Partager avec

💙 Merci d'avoir parcouru l'article jusqu'à la fin !

Romain DE LA SOUCHÈRE

Romain DE LA SOUCHÈRE - Lead Developer, Expert Cloud et DevOps

Ingénieur de formation avec plus de 11 ans d'expérience dans le développement back-end et le data engineering. Expert dans l’industrialisation des projets data dans le cloud.

» En savoir plus

Formations associés

Toutes nos formations

Préparez la certification PL‑300
Préparez la certification PL‑300
24 heures
Débutant
Garantie
Préparez la certification AZ-900
Préparez la certification AZ-900
10 heures
Débutant
Garantie
Préparez la certification DP‑700
Préparez la certification DP‑700
24 heures
Débutant
Garantie
Préparez la certification DP‑900
Préparez la certification DP‑900
10 heures
Débutant
Garantie

DataScientist.fr

By AXI Technologies

128 Rue de la Boétie,
75008, Paris, France

bonjour@datascientist.fr

+33 1 70 39 08 31

+33 6 86 99 34 78

© 2026 DataScientist.fr - AXI Technologies - Tous droits réservés