Génie civil & structural
Mise en œuvre de la validation croisée dans l'apprentissage supervisé : pratiques exemplaires et exemples pratiques
Table of Contents
La validation croisée est une technique utilisée dans l'apprentissage supervisé pour évaluer la performance d'un modèle. Elle aide à évaluer la manière dont un modèle généralise les données invisibles, réduisant ainsi le risque de suradaptation.
Comprendre la validation croisée
La validation croisée consiste à diviser l'ensemble de données en sous-ensembles multiples, à former le modèle sur certains de ces sous-ensembles et à le tester sur d'autres. Ce processus fournit une estimation plus précise de la performance du modèle par rapport à une seule division d'essai de train.
Techniques communes de validation croisée
- K-Fold Cross-Validation:[ Divise les données en parties égales «k», en entraînement sur des parties k-1 et en essai sur le reste. Ce processus répète k fois.
- Stratifié K-Fold: Similaire à K-Fold mais maintient la distribution de classe entre les plis, utile pour les ensembles de données déséquilibrés.
- Supporter-One-Out (LOO):[ Utilise un seul point de données comme ensemble de tests, le reste étant des données de formation.
Meilleures pratiques de mise en œuvre
Pour assurer une validation croisée efficace, il faut tenir compte des pratiques suivantes :
- Utiliser un échantillonnage stratifié pour traiter des classes déséquilibrées.
- Choisissez le nombre de plis en fonction de la taille de l'ensemble de données; les choix communs sont 5 ou 10.
- Combiner la validation croisée avec l'accordage hyperparamétrique pour obtenir des résultats optimaux.
- S'assurer que les données sont éparpillées avant de se diviser pour réduire le biais.
Exemple pratique en Python
La mise en œuvre de la validation croisée en Python avec scikit-learn est simple. Voici un exemple simple:
Échantillon de code:
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
# Load dataset
data = load_iris()
X = data.data
y = data.target
# Initialize model
model = RandomForestClassifier()
# Perform 5-fold cross-validation
scores = cross_val_score(model, X, y, cv=5)
print("Cross-validation scores:", scores)
print("Average score:", scores.mean())