- QCM théoriques (5 questions sur les concepts clés) - Analyse de cas (diagnostic overfitting, matrices de confusion, hyperparamètres) - Exercices pratiques (prédiction, complétion de code, debugging) - Questions ouvertes (trade-offs, biais d'évaluation, cas réels) - Flashcards pour révision rapide (10 concepts essentiels) - Barème d'auto-évaluation sur 32 points Format interactif avec balises <details> pour cacher/afficher les réponses. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ML Model Generalization Lab
Objectif du Lab
Ce lab démontre les techniques essentielles pour améliorer la généralisation d'un modèle de Machine Learning et éviter l'overfitting (surapprentissage).
Concepts Clés
1. Split des Données (Train/Validation/Test)
Total: 2000 échantillons
├── Train: 64% (1280 échantillons) - entraînement du modèle
├── Validation: 16% (320 échantillons) - ajustement des hyperparamètres
└── Test: 20% (400 échantillons) - évaluation finale
Pourquoi 3 splits ?
- Train : apprend les patterns
- Validation : détecte l'overfitting pendant l'entraînement
- Test : mesure la performance réelle sur des données jamais vues
2. Early Stopping
EarlyStopping(
monitor='val_loss',
patience=3,
min_delta=0.01,
restore_best_weights=True
)
Rôle : Arrête l'entraînement quand la val_loss ne s'améliore plus
- Évite l'overfitting en stoppant avant que le modèle ne "mémorise" les données
- Restaure les meilleurs poids (epoch 7 dans notre cas)
3. Learning Rate Scheduler
ReduceLROnPlateau(
monitor='val_loss',
factor=0.5,
patience=2,
min_lr=1e-5
)
Rôle : Réduit le learning rate quand l'apprentissage stagne
- Learning rate initial : 0.05
- Réduction par 2 après 2 epochs sans amélioration
- Permet une convergence plus fine vers l'optimum
4. Architecture du Réseau
Input (20 features)
↓
Dense(64, relu)
↓
Dense(32, relu)
↓
Dense(1, sigmoid) → Probabilité binaire
Architecture simple mais efficace pour la classification binaire.
Résultats Obtenus
Métriques de Performance
| Métrique | Valeur |
|---|---|
| Accuracy | 97% |
| Precision (classe 0) | 95% |
| Precision (classe 1) | 99% |
| Recall (classe 0) | 99% |
| Recall (classe 1) | 95% |
Matrice de Confusion
Prédictions
0 1
Réel 0 [205 2]
1 [ 10 183]
- Vrais positifs : 183 + 205 = 388
- Faux positifs : 2 + 10 = 12
- Taux d'erreur : 3% seulement
Ce qu'il faut Retenir
✅ Bonnes Pratiques Appliquées
- Toujours séparer les données en 3 ensembles distincts
- Utiliser la validation pour monitorer l'overfitting en temps réel
- Early stopping est crucial pour éviter le surapprentissage
- Learning rate adaptatif améliore la convergence
- Normalisation des features avec StandardScaler pour stabiliser l'apprentissage
📊 Signes d'une Bonne Généralisation
- ✅ Performance similaire sur train et test
- ✅ Val_loss se stabilise sans diverger
- ✅ Le modèle s'arrête avant de surapprendre (epoch 10/100)
- ✅ Métriques équilibrées entre les classes
⚠️ Signes d'Overfitting (absents ici)
- ❌ Train accuracy >> Test accuracy
- ❌ Val_loss augmente alors que train_loss diminue
- ❌ Performance dégradée sur nouvelles données
Exécution
# Activer l'environnement virtuel
source venv/bin/activate
# Lancer Jupyter
jupyter notebook lab.ipynb
Technologies Utilisées
- TensorFlow/Keras : construction et entraînement du réseau de neurones
- Scikit-learn : génération de données, preprocessing, métriques
- Python 3.12 : langage de programmation
Conclusion
Ce lab illustre qu'un modèle bien régularisé avec early stopping et learning rate scheduling peut atteindre d'excellentes performances (97%) tout en généralisant correctement sur des données non vues.
Principe fondamental : Un bon modèle ne mémorise pas les données, il apprend les patterns généraux.
Description
Languages
Jupyter Notebook
100%