🔄 Validation Croisée

K-Fold Cross-Validation : La méthode fiable

Comment être sûr que votre modèle
fonctionne vraiment bien ?

🎯 Objectif : Évaluer un modèle de manière robuste et fiable
1 / 12

⚠️ Le Problème du Train/Test Simple

Pourquoi une seule division ne suffit pas

🎲 Le problème de la chance

Avec une seule division Train/Test, vous pouvez avoir de la chance ou de la malchance

😊 Scénario Chanceux

Les données test sont faciles

Score : 92%

Vous pensez avoir un excellent modèle... mais est-ce vrai ?

😟 Scénario Malchanceux

Les données test sont difficiles

Score : 68%

Vous pensez avoir un mauvais modèle... mais peut-être pas !

⚠️ Problème : Une seule division ne donne pas une estimation fiable de la vraie performance
2 / 12

💡 La Solution : Validation Croisée

Tester sur plusieurs divisions

Au lieu de diviser une seule fois,
diviser K fois différemment
et faire la moyenne des performances

✅ Avantages

  • Estimation plus fiable
  • Utilise toutes les données
  • Réduit l'effet de la chance
  • Détecte mieux l'overfitting
🎯 K-Fold = Diviser en K parties et tester K fois
3 / 12

📊 5-Fold Cross-Validation

Exemple visuel avec K=5

Les données sont divisées en 5 parties égales (folds).
Chaque partie sert de test une fois, les autres servent d'entraînement.

Fold 1:
TEST
TRAIN
TRAIN
TRAIN
TRAIN
Fold 2:
TRAIN
TEST
TRAIN
TRAIN
TRAIN
Fold 3:
TRAIN
TRAIN
TEST
TRAIN
TRAIN
Fold 4:
TRAIN
TRAIN
TRAIN
TEST
TRAIN
Fold 5:
TRAIN
TRAIN
TRAIN
TRAIN
TEST
✅ Chaque donnée est testée exactement 1 fois
4 / 12

🏠 Exemple : Prédiction Prix Immobilier

Validation croisée en action

Dataset : 1000 maisons à Casablanca
Objectif : Prédire les prix

1Diviser en 5 folds (200 maisons chacun)

2Entraîner et tester 5 fois

Fold 1 : 85%
Fold 2 : 87%
Fold 3 : 83%
Fold 4 : 86%
Fold 5 : 84%

3Calculer la moyenne

Score final = 85% ± 1.5%

5 / 12

🔢 Les Étapes de la Validation Croisée

Processus complet

1Mélanger les données

Pour éviter les biais d'ordre

2Diviser en K parties égales

K = 5 ou K = 10 généralement

3Pour chaque fold i de 1 à K :

  • Utiliser fold i comme test
  • Utiliser les K-1 autres comme train
  • Entraîner le modèle
  • Calculer le score sur test

4Calculer la moyenne et l'écart-type

Moyenne = performance attendue
Écart-type = stabilité du modèle

6 / 12

💻 Code Python avec Scikit-learn

Implémentation simple

# Importer les bibliothèques from sklearn.model_selection import cross_val_score from sklearn.ensemble import RandomForestRegressor # Créer le modèle model = RandomForestRegressor() # Validation croisée à 5 folds scores = cross_val_score( model, X, # Features y, # Target cv=5, # Nombre de folds scoring='r2' # Métrique ) # Résultats print(f"Scores: {scores}") print(f"Moyenne: {scores.mean():.3f}") print(f"Écart-type: {scores.std():.3f}")
✅ Simple et efficace : Une seule fonction fait tout le travail !
7 / 12

⚖️ Train/Test vs Cross-Validation

Quelle différence ?

Critère Train/Test Simple Validation Croisée
Fiabilité Dépend de la chance Très fiable
Utilisation des données 20-30% perdus pour test 100% utilisées
Temps de calcul Rapide (1 entraînement) Plus lent (K entraînements)
Détection overfitting Moins précis Très précis
Estimation de variance Impossible Écart-type disponible
🎯 Cross-validation = Plus fiable mais plus coûteux
8 / 12

🤔 Quelle valeur de K choisir ?

Le compromis biais-variance

K = 3

👎 Trop petit

  • Rapide
  • Moins fiable
  • Biais élevé

K = 5 ou 10

👍 Recommandé

  • Bon équilibre
  • Fiable
  • Temps raisonnable

K = N (LOOCV)

⚠️ Extrême

  • Très fiable
  • Très lent
  • Variance élevée

💡 Conseil pratique :
K=5 pour datasets moyens (1000-10000)
K=10 pour grands datasets (>10000)

9 / 12

🔍 Détecter l'Overfitting avec CV

L'écart-type révèle tout

✅ Bon Modèle

Moyenne : 85%
Écart-type : ±1.2%

✓ Scores stables
✓ Modèle robuste
✓ Pas d'overfitting

❌ Overfitting

Moyenne : 78%
Écart-type : ±12.5%

✗ Scores instables
✗ Modèle fragile
✗ Overfitting probable

⚠️ Règle : Si l'écart-type est > 10% de la moyenne, il y a un problème !
📊 Un faible écart-type = un modèle stable
10 / 12

⚠️ Erreurs à Éviter

Les pièges classiques

❌ Erreur 1 : Ne pas mélanger les données

Si vos données sont ordonnées (par date, par catégorie...), les folds seront biaisés

✅ Solution : Toujours utiliser shuffle=True

❌ Erreur 2 : Faire du preprocessing avant le split

Normaliser ou standardiser avant de faire les folds crée du data leakage

✅ Solution : Preprocessing dans chaque fold séparément

❌ Erreur 3 : Utiliser CV pour sélectionner ET évaluer

Si vous optimisez sur les scores CV, vous faites de l'overfitting sur CV !

✅ Solution : Garder un test set final séparé

🎯 La validation croisée est un outil, pas une solution magique
11 / 12

🎯 Conclusion

Ce qu'il faut retenir

  • La validation croisée donne une estimation fiable
  • K=5 ou K=10 sont les valeurs recommandées
  • L'écart-type révèle la stabilité du modèle
  • Toujours mélanger les données avant
  • Attention au data leakage

Formule magique :
Score CV = Moyenne ± Écart-type

🚀 Prochaine étape : GridSearch avec Cross-Validation
12 / 12