Validation Croisée
Dans le chapitre précédent, la séparation train-test a été utilisée pour l'évaluation du modèle. Cette méthode présente deux principaux inconvénients :
- Données d'entraînement limitées : seule une partie du jeu de données est utilisée pour l'entraînement, alors qu'une quantité de données plus importante améliore généralement les performances.
- Dépendance à la séparation : comme la séparation est aléatoire, les résultats peuvent varier sensiblement d'une exécution à l'autre.
Pour remédier à ces problèmes, une méthode d'évaluation alternative appelée validation croisée est utilisée.
Commencez par diviser l'ensemble du jeu de données en 5 parties égales, appelées plis.
Ensuite, utilisez un pli comme ensemble de test et combinez les plis restants pour former l'ensemble d'entraînement.
Comme dans tout processus d'évaluation, l'ensemble d'entraînement est utilisé pour entraîner le modèle, tandis que l'ensemble de test sert à mesurer ses performances.
Le processus est répété de sorte que chaque pli serve une fois d'ensemble de test, tandis que les plis restants constituent l'ensemble d'entraînement.
Ce processus produit cinq scores de précision, un pour chaque division. Prendre la moyenne de ces scores fournit la performance moyenne du modèle.
En Python, le score de validation croisée peut être calculé avec cross_val_score()
du module sklearn.model_selection
.
Bien que l'exemple utilise 5 plis, il est possible de choisir n'importe quel nombre de plis pour la validation croisée. Par exemple, il est possible d'utiliser 10 plis, en allouant 9 au jeu d'entraînement et 1 au jeu de test. Ce paramètre est ajustable via le paramètre cv
dans la fonction cross_val_score()
.
1234567891011import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
Cette méthode fournit des résultats plus stables et fiables que la méthode de séparation entraînement-test ; cependant, elle est nettement plus lente car elle nécessite d'entraîner et d'évaluer le modèle cinq fois (ou n fois si un nombre de plis n est défini), contre une seule fois avec la séparation entraînement-test.
La validation croisée est généralement utilisée lors de l'ajustement des hyperparamètres, où l'ensemble du processus de validation croisée est exécuté pour chaque valeur potentielle d'hyperparamètre.
Par exemple, pour déterminer le nombre optimal de voisins dans un algorithme des k plus proches voisins, il convient d'effectuer un cycle complet de validation croisée pour chaque valeur candidate. Cette méthode garantit une évaluation approfondie de chaque configuration d'hyperparamètre sur l'ensemble du jeu de données, permettant de sélectionner la valeur qui offre systématiquement les meilleures performances.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how cross-validation improves model evaluation compared to train-test split?
What are some common use cases for cross-validation in machine learning?
How do I choose the number of folds for cross-validation?
Awesome!
Completion rate improved to 3.13
Validation Croisée
Glissez pour afficher le menu
Dans le chapitre précédent, la séparation train-test a été utilisée pour l'évaluation du modèle. Cette méthode présente deux principaux inconvénients :
- Données d'entraînement limitées : seule une partie du jeu de données est utilisée pour l'entraînement, alors qu'une quantité de données plus importante améliore généralement les performances.
- Dépendance à la séparation : comme la séparation est aléatoire, les résultats peuvent varier sensiblement d'une exécution à l'autre.
Pour remédier à ces problèmes, une méthode d'évaluation alternative appelée validation croisée est utilisée.
Commencez par diviser l'ensemble du jeu de données en 5 parties égales, appelées plis.
Ensuite, utilisez un pli comme ensemble de test et combinez les plis restants pour former l'ensemble d'entraînement.
Comme dans tout processus d'évaluation, l'ensemble d'entraînement est utilisé pour entraîner le modèle, tandis que l'ensemble de test sert à mesurer ses performances.
Le processus est répété de sorte que chaque pli serve une fois d'ensemble de test, tandis que les plis restants constituent l'ensemble d'entraînement.
Ce processus produit cinq scores de précision, un pour chaque division. Prendre la moyenne de ces scores fournit la performance moyenne du modèle.
En Python, le score de validation croisée peut être calculé avec cross_val_score()
du module sklearn.model_selection
.
Bien que l'exemple utilise 5 plis, il est possible de choisir n'importe quel nombre de plis pour la validation croisée. Par exemple, il est possible d'utiliser 10 plis, en allouant 9 au jeu d'entraînement et 1 au jeu de test. Ce paramètre est ajustable via le paramètre cv
dans la fonction cross_val_score()
.
1234567891011import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
Cette méthode fournit des résultats plus stables et fiables que la méthode de séparation entraînement-test ; cependant, elle est nettement plus lente car elle nécessite d'entraîner et d'évaluer le modèle cinq fois (ou n fois si un nombre de plis n est défini), contre une seule fois avec la séparation entraînement-test.
La validation croisée est généralement utilisée lors de l'ajustement des hyperparamètres, où l'ensemble du processus de validation croisée est exécuté pour chaque valeur potentielle d'hyperparamètre.
Par exemple, pour déterminer le nombre optimal de voisins dans un algorithme des k plus proches voisins, il convient d'effectuer un cycle complet de validation croisée pour chaque valeur candidate. Cette méthode garantit une évaluation approfondie de chaque configuration d'hyperparamètre sur l'ensemble du jeu de données, permettant de sélectionner la valeur qui offre systématiquement les meilleures performances.
Merci pour vos commentaires !