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.

Commencer par diviser l'ensemble du jeu de données en 5 parties égales, appelées plis.

Utiliser ensuite un pli comme ensemble de test et combiner 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. Le calcul de 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, vous pouvez choisir n'importe quel nombre de plis pour la validation croisée. Par exemple, vous pouvez 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

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 effectuez 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.

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

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.

Commencer par diviser l'ensemble du jeu de données en 5 parties égales, appelées plis.

Utiliser ensuite un pli comme ensemble de test et combiner 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. Le calcul de 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, vous pouvez choisir n'importe quel nombre de plis pour la validation croisée. Par exemple, vous pouvez 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

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 effectuez 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.

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