7.6 Principes d'apprentissage supervisé : validation croisée
L'apprentissage supervisé est une approche d'apprentissage automatique qui consiste à entraîner un modèle à partir de données étiquetées. L'objectif est que le modèle apprenne à prédire la sortie correcte pour les nouvelles entrées en fonction des fonctionnalités apprises au cours de la formation. Cependant, l’un des défis les plus importants de l’apprentissage supervisé est de garantir que le modèle est généraliste et fonctionne bien sur des données inédites, et pas seulement sur des données d’entraînement. C'est là qu'intervient la technique de validation croisée.
Qu'est-ce que la validation croisée ?
La validation croisée est une technique permettant d'évaluer la capacité de généralisation d'un modèle statistique, c'est-à-dire ses performances sur un ensemble de données indépendant non utilisé lors de l'entraînement. Cela est essentiel pour éviter le surajustement, qui se produit lorsqu'un modèle apprend des modèles spécifiques à partir de données d'entraînement qui ne sont pas applicables à d'autres ensembles de données. La validation croisée permet aux développeurs de tester l'efficacité du modèle sur différentes « tranches » de données, fournissant ainsi une mesure plus fiable de ses performances.
Comment fonctionne la validation croisée ?
En pratique, la validation croisée implique de diviser l'ensemble de données en plusieurs parties, ou « plis ». Le modèle est entraîné en plusieurs itérations, en utilisant à chaque fois une combinaison différente de plis pour l'entraînement et un pli différent pour la validation. Par exemple, dans la validation croisée k fois, l'ensemble de données est divisé en k parties égales. Dans chaque itération, une partie est réservée aux tests et les k-1 parties restantes sont utilisées pour entraîner le modèle. Ce processus est répété k fois, de sorte que chaque partie ait été utilisée une fois comme ensemble de validation.
Types de validation croisée
- Validation croisée K-Fold : Comme mentionné précédemment, l'ensemble de données est divisé en k sous-ensembles égaux. Chaque sous-ensemble est utilisé une fois comme ensemble de test, tandis que les sous-ensembles k-1 restants constituent l'ensemble d'apprentissage.
- Validation croisée stratifiée : il s'agit d'une variante du facteur K qui est principalement utilisée pour les ensembles de données déséquilibrés. Cela garantit que chaque pli contient la même proportion d'exemples de chaque classe que l'ensemble des données.
- Leave-One-Out (LOO) : : il s'agit d'un cas particulier de k-fold où k est égal au nombre total de données. Autrement dit, pour chaque itération, une seule donnée est utilisée comme test et le reste comme formation. Ceci est particulièrement utile pour les petits ensembles de données, mais peut s'avérer très coûteux en termes de calcul pour les ensembles de données plus volumineux.
Avantages et inconvénients
La validation croisée est un outil puissant, mais elle a aussi ses limites. Parmi les avantages, nous pouvons souligner :
- Fournit une estimation plus précise de la généralisabilité du modèle.
- Utilise efficacement les données disponibles, permettant à chaque exemple d'être utilisé à la fois pour la formation et la validation.
- Réduit le risque de surajustement car le modèle est testé en plusieurs itérations avec différents ensembles de données.
D'un autre côté, les inconvénients incluent :
- Nécessite plus de temps et de ressources de calcul, car le modèle doit être entraîné plusieurs fois.
- Peut ne pas être approprié pour les ensembles de données très volumineux en raison du coût de calcul accru.
- Les résultats peuvent varier en fonction de la façon dont les données sont divisées, en particulier si l'ensemble de données est petit ou déséquilibré.
Mise en œuvre de la validation croisée avec Python
Python, via des bibliothèques telles que scikit-learn, propose des outils robustes pour mettre en œuvre efficacement la validation croisée. Le code suivant illustre comment effectuer une validation croisée k-fold :
à partir de sklearn.model_selection importer cross_val_score
à partir de sklearn.ensemble importer RandomForestClassifier
à partir de sklearn.datasets importer make_classification
# Générer un ensemble de données synthétiques
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42)
# Instanciation du classificateur
clf = RandomForestClassifier (n_estimators=100, random_state=42)
# Effectuer une validation croisée k-fold
scores = cross_val_score(clf, X, y, cv=5)
print(f"Précision dans chaque pli : {scores}")
print(f"Précision moyenne : {scores.mean()}")
Cet exemple démontre la simplicité d'effectuer une validation croisée à l'aide de scikit-learn. La fonction cross_val_score
automatise le processus de division des données et d'entraînement du modèle, renvoyant des métriques de performances pour chaque pli.
Conclusion
La validation croisée est une technique essentielle dans l'apprentissage supervisé pour garantir la bonne performance des modèles.capacité de généralisation. En utilisant cette technique, les data scientists peuvent créer des modèles plus robustes et plus fiables qui fonctionneront bien dans des situations réelles. Même si elle peut s'avérer plus coûteuse en termes de temps et de ressources informatiques, la validation croisée est un investissement qui s'avère souvent rentable en termes de qualité du modèle obtenu.