Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Validation Croisée | Modélisation
Introduction au ML Avec Scikit-Learn

bookValidation 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 :

  1. 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.
  2. 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.

Note
Remarque

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().

1234567891011
import 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())
copy

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.

question mark

Pourquoi la validation croisée peut-elle être préférée à la séparation entraînement-test pour évaluer la performance d’un modèle d’apprentissage automatique ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 4

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

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

bookValidation 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 :

  1. 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.
  2. 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.

Note
Remarque

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().

1234567891011
import 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())
copy

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.

question mark

Pourquoi la validation croisée peut-elle être préférée à la séparation entraînement-test pour évaluer la performance d’un modèle d’apprentissage automatique ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 4
some-alt