Validation Croisée
Dans le chapitre précédent, nous avons étudié la méthode de séparation train-test pour évaluer le modèle. Cette méthode présente certains inconvénients :
- Seule une partie du jeu de données est utilisée pour l'entraînement : en général, plus le modèle dispose de données pour s'entraîner, meilleures seront ses performances ;
- Le résultat peut fortement dépendre de la séparation : comme vous l'avez constaté dans le chapitre précédent, puisque la séparation du jeu de données est aléatoire, exécuter le code plusieurs fois peut donner des résultats sensiblement différents.
Ainsi, une autre méthode d'évaluation d'un modèle, appelée validation croisée, existe.
Tout d'abord, le jeu de données complet est divisé en 5 parties égales, appelées plis.
Ensuite, un pli est utilisé comme ensemble de test et les autres plis servent d'ensemble d'entraînement.
Comme toujours, nous utilisons l'ensemble d'entraînement pour entraîner le modèle et l'ensemble de test pour évaluer le modèle.
Ensuite, répéter le processus en utilisant chaque pli comme ensemble de test à tour de rôle.
En conséquence, nous obtenons cinq scores de précision, un pour chaque division. Nous pouvons ensuite calculer la moyenne de ces scores pour mesurer la performance moyenne du modèle.
Pour calculer le score de validation croisée en Python, nous pouvons utiliser la fonction cross_val_score()
du module sklearn.model_selection
.
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())
Elle fournit des résultats plus stables et fiables que la méthode de séparation train-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 vous définissez n plis), contre une seule fois avec la séparation train-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, lors de la détermination du nombre optimal de voisins dans un algorithme des k plus proches voisins, vous effectueriez 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, vous 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
Awesome!
Completion rate improved to 3.13
Validation Croisée
Glissez pour afficher le menu
Dans le chapitre précédent, nous avons étudié la méthode de séparation train-test pour évaluer le modèle. Cette méthode présente certains inconvénients :
- Seule une partie du jeu de données est utilisée pour l'entraînement : en général, plus le modèle dispose de données pour s'entraîner, meilleures seront ses performances ;
- Le résultat peut fortement dépendre de la séparation : comme vous l'avez constaté dans le chapitre précédent, puisque la séparation du jeu de données est aléatoire, exécuter le code plusieurs fois peut donner des résultats sensiblement différents.
Ainsi, une autre méthode d'évaluation d'un modèle, appelée validation croisée, existe.
Tout d'abord, le jeu de données complet est divisé en 5 parties égales, appelées plis.
Ensuite, un pli est utilisé comme ensemble de test et les autres plis servent d'ensemble d'entraînement.
Comme toujours, nous utilisons l'ensemble d'entraînement pour entraîner le modèle et l'ensemble de test pour évaluer le modèle.
Ensuite, répéter le processus en utilisant chaque pli comme ensemble de test à tour de rôle.
En conséquence, nous obtenons cinq scores de précision, un pour chaque division. Nous pouvons ensuite calculer la moyenne de ces scores pour mesurer la performance moyenne du modèle.
Pour calculer le score de validation croisée en Python, nous pouvons utiliser la fonction cross_val_score()
du module sklearn.model_selection
.
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())
Elle fournit des résultats plus stables et fiables que la méthode de séparation train-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 vous définissez n plis), contre une seule fois avec la séparation train-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, lors de la détermination du nombre optimal de voisins dans un algorithme des k plus proches voisins, vous effectueriez 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, vous permettant de sélectionner la valeur qui offre systématiquement les meilleures performances.
Merci pour vos commentaires !