K-Fold Cross Validation
La validation croisée en k parties est une méthode d’évaluation des modèles qui consiste à diviser un jeu de données en k sous-ensembles (folds). Chaque fold est utilisé une fois comme ensemble de test, tandis que les k−1 folds restants servent à l’entraînement. La performance finale est obtenue en faisant la moyenne des résultats sur les k itérations.
Contexte
Cette technique est largement utilisée en apprentissage automatique car elle fournit une évaluation plus robuste que la simple séparation train/test. Elle réduit le risque qu’un modèle soit trop dépendant d’une unique partition des données.
Exemple
Avec k=5 :
- Les données sont divisées en 5 blocs égaux.
- Le modèle est entraîné 5 fois, chaque fois avec 4 blocs en entraînement et 1 bloc en test.
- Les performances (ex. précision, F1-score) sont moyennées.
Avantages et limites
- ✅ Évaluation plus fiable et moins sensible au hasard.
- ✅ Exploite toutes les données disponibles pour l’entraînement et le test.
- ❌ Plus coûteux en calcul car nécessite k entraînements.
- ❌ Moins adapté aux ensembles de données très grands.
La validation croisée en k plis est un outil incontournable pour évaluer la robustesse d’un modèle. Elle permet de limiter le hasard lié à une partition unique des données en multipliant les scénarios d’entraînement et de test.
Le choix du nombre de plis est stratégique : k=5 ou k=10 sont des standards, mais rien n’empêche d’ajuster cette valeur selon la taille du jeu de données. Pour les ensembles déséquilibrés, on privilégie une validation croisée stratifiée, qui conserve la proportion des classes dans chaque pli.
Cette technique est précieuse pour comparer plusieurs algorithmes ou régler les hyperparamètres. Néanmoins, elle peut vite devenir coûteuse en temps de calcul. Dans certains contextes temps réel ou avec des modèles profonds, on préfère donc des approches plus légères (validation simple, validation progressive) avant d’appliquer la validation croisée de manière ciblée.
📚 Références
- Géron, A. (2019). Apprentissage automatique avec Scikit-Learn, Keras et TensorFlow