1 Introduction 🎯
Les modèles d’apprentissage automatique possèdent souvent des hyperparamètres, qui ne sont pas appris directement à partir des données d’entraînement mais doivent être configurés avant l’entraînement (par exemple, le nombre de voisins \(k\) dans k-NN, ou le taux d’apprentissage dans les réseaux de neurones). Le choix optimal de ces hyperparamètres est crucial pour la performance du modèle.
La validation croisée (CV) est une technique statistique robuste permettant d’estimer la performance de généralisation d’un modèle et de sélectionner les hyperparamètres qui offrent les meilleurs résultats sur des données “invisibles”, évitant ainsi le surapprentissage des hyperparamètres à un unique ensemble de validation.
2 Principe Général 🔄
L’idée fondamentale de la validation croisée pour l’estimation des hyperparamètres est la suivante :
- Définir une grille (ou un espace) de recherche pour les hyperparamètres à optimiser.
- Pour chaque combinaison candidate d’hyperparamètres dans cet espace :
- Appliquer une stratégie de validation croisée (décrite ci-dessous) qui divise l’ensemble de données d’entraînement initial en plusieurs sous-ensembles.
- Entraîner itérativement le modèle sur une partie de ces sous-ensembles et l’évaluer sur la partie restante (le pli de validation).
- Calculer une métrique de performance moyenne (par exemple, exactitude, F1-score, Erreur Quadratique Moyenne) sur l’ensemble des plis de validation.
- Sélectionner la combinaison d’hyperparamètres qui a produit la meilleure performance moyenne lors de la validation croisée.
- Optionnellement mais recommandé : Ré-entraîner le modèle une dernière fois sur l’intégralité de l’ensemble de données d’entraînement initial en utilisant les hyperparamètres optimaux sélectionnés.
3 Principales Stratégies de Validation Croisée 🛠️
Plusieurs stratégies de validation croisée peuvent être employées. Le choix dépendra souvent de la taille, de la nature des données et des ressources computationnelles.
K-Fold Cross-Validation (Validation Croisée à K Plis)
- Principe: L’ensemble de données d’entraînement est divisé de manière aléatoire en \(K\) sous-ensembles distincts (ou “plis”, “folds” en anglais) de taille approximativement égale. L’algorithme effectue \(K\) itérations. À chaque itération \(i \in \{1, \dots, K\}\) :
- Le \(i\)-ème pli est retenu comme ensemble de validation.
- Les \(K-1\) autres plis sont combinés pour former l’ensemble d’entraînement.
- Le modèle est entraîné sur cet ensemble d’entraînement et sa performance est évaluée sur l’ensemble de validation (le \(i\)-ème pli).
- La performance finale pour un jeu d’hyperparamètres donné est typiquement la moyenne des performances obtenues lors des \(K\) itérations. Des valeurs courantes pour \(K\) sont 5 ou 10. Un \(K\) plus élevé réduit le biais de l’estimation de la performance mais augmente la variance et le coût computationnel.
- Principe: L’ensemble de données d’entraînement est divisé de manière aléatoire en \(K\) sous-ensembles distincts (ou “plis”, “folds” en anglais) de taille approximativement égale. L’algorithme effectue \(K\) itérations. À chaque itération \(i \in \{1, \dots, K\}\) :
Stratified K-Fold Cross-Validation (Validation Croisée Stratifiée à K Plis)
- Principe: Cette variante est spécifiquement conçue pour les problèmes de classification. Elle fonctionne comme le K-Fold standard, mais avec une contrainte supplémentaire lors de la création des plis : la proportion de chaque classe est préservée dans chaque pli. Autrement dit, si une classe représente 20% de l’ensemble de données total, elle représentera approximativement 20% de chaque pli d’entraînement et de validation.
- Ceci est crucial pour les ensembles de données déséquilibrés, où un K-Fold aléatoire standard pourrait accidentellement créer des plis où certaines classes (notamment minoritaires) sont absentes ou sous-représentées, conduisant à des estimations de performance peu fiables.
Leave-One-Out Cross-Validation (LOOCV)
- Principe: Il s’agit d’un cas particulier de K-Fold où le nombre de plis \(K\) est égal au nombre total d’échantillons \(n\) dans l’ensemble de données. Ainsi, pour chaque itération (il y en a \(n\)) :
- Un unique échantillon est sélectionné comme ensemble de validation.
- Les \(n-1\) autres échantillons sont utilisés pour entraîner le modèle.
- Le processus est répété \(n\) fois, chaque échantillon servant une fois de point de validation. La performance est la moyenne des \(n\) erreurs.
- Avantages: Utilise presque toutes les données pour l’entraînement à chaque étape (biais faible pour l’ajustement du modèle), pas d’aléa dans la constitution des plis.
- Inconvénients: Très coûteux en calcul pour les grands \(n\). L’estimation de l’erreur de prédiction peut avoir une variance élevée (sensible aux points individuels).
- Principe: Il s’agit d’un cas particulier de K-Fold où le nombre de plis \(K\) est égal au nombre total d’échantillons \(n\) dans l’ensemble de données. Ainsi, pour chaque itération (il y en a \(n\)) :
Repeated K-Fold Cross-Validation (Validation Croisée à K Plis Répétée)
Principe: Pour augmenter la robustesse de l’estimation de la performance, la procédure de K-Fold Cross-Validation est répétée \(N\) fois. Avant chaque répétition complète du K-Fold :
- L’ensemble de données est mélangé (brassé) aléatoirement d’une nouvelle manière.
- Les \(K\) plis sont ensuite formés à partir de cet ensemble mélangé.
Cela produit \(N \times K\) évaluations de performance. La performance finale est la moyenne de toutes ces évaluations. Cette méthode aide à réduire la variance de l’estimation due à la manière particulière dont les plis ont été initialement constitués.
Time Series Cross-Validation (Validation Croisée pour Séries Temporelles)
Principe: Les méthodes de CV standard qui mélangent les données ne sont pas adaptées aux séries temporelles car elles violent la dépendance temporelle (le futur ne doit pas être utilisé pour prédire le passé). Les approches spécifiques incluent :
Forward Chaining / Rolling Origin Validation (Fenêtre Glissante/Expansible):
- Un point de coupure initial est défini. Les données jusqu’à ce point forment l’ensemble d’entraînement, et les données immédiatement suivantes forment l’ensemble de validation.
- Pour les itérations suivantes, le point de coupure avance dans le temps.
- Fenêtre expansive: L’ensemble d’entraînement s’agrandit à chaque pas en incluant les données de validation précédentes. Ex: Entraînement sur \([1 \dots t_0]\), Validation sur \([t_0+1 \dots t_0+h]\); puis Entraînement sur \([1 \dots t_0+h]\), Validation sur \([t_0+h+1 \dots t_0+2h]\).
- Fenêtre glissante: La taille de l’ensemble d’entraînement reste fixe. Ex: Entraînement sur \([t_0-W+1 \dots t_0]\), Validation sur \([t_0+1 \dots t_0+h]\); puis Entraînement sur \([t_0-W+h+1 \dots t_0+h]\), Validation sur \([t_0+h+1 \dots t_0+2h]\).
Cela simule le déploiement d’un modèle dans le temps.
Group K-Fold Cross-Validation (Validation Croisée à K Plis par Groupes)
- Principe: Utilisée lorsque les données présentent une structure de dépendance groupée, c’est-à-dire que certaines observations sont naturellement regroupées et ne sont pas indépendantes (par exemple, plusieurs images d’un même objet, plusieurs relevés pour un même patient, plusieurs commentaires d’un même utilisateur).
- Cette méthode garantit que toutes les observations appartenant à un même groupe sont assignées entièrement soit à l’ensemble d’entraînement, soit à l’ensemble de validation lors d’une itération donnée. Un groupe n’est jamais divisé entre l’entraînement et la validation.
- Cela prévient la “fuite de données” qui pourrait survenir si des observations corrélées d’un même groupe se retrouvaient à la fois dans l’entraînement et la validation, conduisant à une estimation de performance trop optimiste.
LeaveOneGroupOut(LOGO) est un cas particulier où chaque groupe sert une fois de pli de validation.
ShuffleSplit (et StratifiedShuffleSplit)
Principe: Contrairement au K-Fold où chaque échantillon apparaît exactement une fois dans un ensemble de validation, ShuffleSplit offre plus de flexibilité. Pour un nombre spécifié d’itérations (
n_splits) :- L’ensemble de données complet est mélangé aléatoirement.
- Un ensemble d’entraînement et un ensemble de validation sont créés en fonction des tailles spécifiées (par exemple, 70% pour l’entraînement, 30% pour la validation).
Les ensembles de validation générés à différentes itérations peuvent se chevaucher. Cela permet un contrôle fin sur le nombre d’itérations et la proportion des données allouées à l’entraînement/validation, indépendamment du nombre de “plis”.
StratifiedShuffleSplitest la variante qui maintient la proportion des classes dans chaque division aléatoire, à l’instar de Stratified K-Fold.
Note sur la Validation Croisée Imbriquée (Nested Cross-Validation):
Principe: La validation croisée imbriquée est une procédure plus avancée, particulièrement importante lorsque l’on souhaite obtenir une estimation non biaisée de la performance de généralisation d’un modèle après que le processus de sélection des hyperparamètres ait eu lieu. Elle utilise deux boucles de validation croisée :
- Boucle Externe: Divise les données en \(K_{ext}\) plis (par exemple). À chaque itération de cette boucle, un pli sert de véritable ensemble de test (pour évaluer la performance finale), et les \(K_{ext}-1\) autres plis servent de “super” ensemble d’entraînement.
- Boucle Interne: Sur chaque “super” ensemble d’entraînement de la boucle externe, une validation croisée complète (par exemple, \(K_{int}\)-Fold utilisant l’une des stratégies ci-dessus) est effectuée pour trouver le meilleur jeu d’hyperparamètres uniquement pour ce “super” ensemble d’entraînement.
Le modèle, entraîné sur le “super” ensemble d’entraînement avec les meilleurs hyperparamètres trouvés par la boucle interne, est ensuite évalué sur le pli de test de la boucle externe. La moyenne des performances sur les plis de test de la boucle externe donne une estimation moins biaisée de la performance du pipeline de modélisation global (incluant la sélection d’hyperparamètres).
4 Avantages et Considérations ✅🤔
Avantages Clés:
- Estimation de performance plus fiable: Fournit une estimation plus robuste de la manière dont le modèle (avec des hyperparamètres donnés) se comportera sur des données non vues, par rapport à une simple division train/validation.
- Utilisation efficace des données: Chaque échantillon est utilisé à la fois pour l’entraînement et la validation au cours du processus (sauf pour certaines variantes de ShuffleSplit où tout n’est pas garanti d’être utilisé en validation).
- Réduction du surapprentissage des hyperparamètres: Diminue le risque de choisir des hyperparamètres qui fonctionnent bien par hasard sur un unique ensemble de validation.
Considérations:
- Coût computationnel: L’entraînement du modèle est répété plusieurs fois (par exemple, \(K\) fois pour chaque combinaison d’hyperparamètres), ce qui peut être long pour des modèles complexes ou de grands ensembles de données. La validation croisée imbriquée est encore plus coûteuse.
- Choix de la stratégie et de K: Un \(K\) trop petit peut donner une estimation de performance à variance élevée. Un \(K\) trop grand augmente le coût. Le choix de la stratégie doit être adapté à la structure des données (temporelle, groupée, équilibre des classes).
5 Conclusion ✨
La validation croisée est une technique indispensable dans la boîte à outils du praticien en apprentissage automatique. Elle permet une sélection d’hyperparamètres plus rigoureuse et mène à des modèles plus performants et plus fiables en conditions réelles. Malgré son coût computationnel parfois élevé, les bénéfices en termes de robustesse et de performance justifient généralement son utilisation.