Portail Étudiant

Plateforme de cours en ligne

Projet Machine Learning

Bienvenue dans le projet final du cours Machine Learning !

Ce projet vous propose 3 exercices au choix. Vous devez en réaliser 2 sur 3 pour valider le cours.

Chaque exercice couvre des aspects différents du ML : Régression avec Optimisation, Classification avec Explainabilité, ou Clustering avec Segmentation.

Durée totale : 20-30 heures (10-15h par exercice)

Vue d'Ensemble

Exercice 1 : Prédiction Prix Immobilier

Régression avancée avec feature engineering et optimisation complète.

Difficulté : ⭐⭐⭐ Moyenne

Exercice 2 : Détection Fraude Bancaire

Classification déséquilibrée avec explainabilité SHAP et seuil optimisé.

Difficulté : ⭐⭐⭐⭐ Difficile

Exercice 3 : Segmentation E-Commerce

Clustering avancé avec RFM analysis et stratégies marketing.

Difficulté : ⭐⭐⭐ Moyenne-Difficile

Important : Vous devez choisir 2 exercices minimum. Vous pouvez en faire 3 pour des points bonus. Chaque exercice doit être remis avec :
  • Code Python complet (.ipynb ou .py)
  • Rapport d'analyse (PDF ou HTML)
  • Visualisations (graphiques, tableaux)
EXERCICE 1

Prédiction du Prix Immobilier

Difficulté : Moyenne

Contexte

Vous travaillez pour une agence immobilière qui souhaite prédire les prix de vente des appartements à Paris. Votre mission : construire un modèle ML optimisé capable de prédire le prix avec précision.

Objectifs

  • Charger et explorer un dataset immobilier réaliste
  • Effectuer du feature engineering avancé
  • Sélectionner les meilleures features
  • Construire et comparer 4 modèles de régression
  • Optimiser les hyperparamètres avec GridSearchCV
  • Évaluer avec les bonnes métriques (RMSE, R², MAE)
  • Créer un pipeline complet et reproductible

Dataset

Source : Crée un dataset synthétique ou utilise un dataset public
Format : CSV avec 300-500 appartements
Features : surface, nb_pieces, nb_etages, age, distance_metro, presence_balcon, presence_garage, quartier, annee_construction
Target : prix (en euros)

Tâches Détaillées

Phase 1 : Exploration (EDA)
  • Charger et visualiser les données
  • Analyser les distributions (histogrammes, boxplots)
  • Calculer les corrélations avec la cible
  • Identifier les valeurs manquantes et outliers
Phase 2 : Feature Engineering
  • Créer des features composées (surface par pièce, prix/m², etc.)
  • Transformer les variables catégoriques (one-hot encoding)
  • Gérer les valeurs manquantes intelligemment
  • Normaliser/Scaler les features numériques
Phase 3 : Feature Selection
  • Calculer l'importance des features (3 méthodes : Tree-based, Permutation, Corrélation)
  • Sélectionner les top 15 features
  • Comparer performance avec/sans sélection
Phase 4 : Modélisation
  • Entraîner 4 modèles : Linear Regression, Ridge, Random Forest, Gradient Boosting
  • Cross-validation 5-fold sur tous les modèles
  • Comparer RMSE, R², MAE
Phase 5 : Optimisation
  • Utiliser GridSearchCV pour le meilleur modèle
  • Tuner 3-4 hyperparamètres clés
  • Comparer avant/après tuning
Phase 6 : Pipeline & Validation
  • Créer un pipeline complet (Scaler → Feature Selection → Model)
  • Évaluer sur données de test (30% du dataset)
  • Analyser les erreurs (résidus, cas mal prédits)
  • Créer des visualisations (Actual vs Predicted, résidus)
Phase 7 : Rapport & Recommandations
  • Écrire un rapport de 3-5 pages avec conclusions
  • Proposer des recommandations pour l'agence immobilière
  • Discuter limitations du modèle

Métriques & Critères de Réussite

Critère Excellent (90-100%) Bon (75-89%) Acceptable (60-74%)
Feature Engineering 5+ features innovantes créées 3-4 features créées pertinentes 1-2 features basiques
Modélisation 4 modèles comparés proprement 3 modèles comparés 2 modèles seulement
Optimisation GridSearchCV + 5+ hyperparamètres GridSearchCV + 3-4 hyperparamètres Tuning basique ou absent
Performance R² > 0.85, RMSE < 5% prix moyen R² > 0.75, RMSE < 10% prix moyen R² > 0.60, RMSE < 15% prix moyen
Code & Documentation Code propre, commenté, reproductible Code lisible, moyennement commenté Code peu commenté, peu structuré

Livrables

Vous devez remettre :
  • exercice1_code.ipynb : Jupyter notebook complet (toutes les phases)
  • exercice1_rapport.pdf : Rapport d'analyse (3-5 pages)
  • dataset_immobilier.csv : Dataset utilisé (ou lien vers source)
  • visualizations/ : Dossier avec 6+ graphiques (PNG/PDF)
  • model_final.pkl : Modèle entraîné sauvegardé (pickle)

Bonus Points (+10%)

Gagnez des points en faisant :
  • Analyse SHAP pour interpréter les prédictions
  • API Flask simple pour tester le modèle sur de nouveaux appartements
  • Prédictions intervalles (intervalle de confiance)
  • Benchmark : comparer votre modèle à d'autres datasets immobiliers publics

Ressources & Datasets

Datasets Publics
  • Housing dataset (sklearn)
  • Paris Housing (Kaggle)
  • Real Estate Price (UCI)
Documentation
  • Scikit-Learn docs
  • Pandas user guide
  • Matplotlib gallery
Tutoriels
  • Module 3 : Régression
  • Module 6 : Optimisation
  • Cours en ligne (Coursera)
EXERCICE 2

Détection de Fraude Bancaire

Difficulté : Difficile

Contexte

Vous travaillez pour une banque qui détecte les fraudes. Problème : seulement 0.5% des transactions sont frauduleuses (données déséquilibrées !). Construisez un système de détection performant avec explainabilité.

Objectifs

  • Gérer le déséquilibre de classes (0.5% fraude vs 99.5% légitime)
  • Comparer 4 stratégies : baseline, class_weight, SMOTE, threshold tuning
  • Utiliser les bonnes métriques (Precision, Recall, F1, ROC-AUC)
  • Implémenter SHAP pour l'explainabilité
  • Optimiser le seuil de décision (pas toujours 0.5)
  • Créer un rapport de risque pour chaque fraude détectée

Dataset

Source : Utiliser Credit Card Fraud Detection (Kaggle) ou créer synthétiquement
Format : CSV avec 100k+ transactions
Features : Amount, Time, V1-V28 (features transformées PCA), Class
Target : Class (0=légitime, 1=fraude)
Déséquilibre : ~0.5% fraude

Tâches Détaillées

Phase 1 : Exploration du Déséquilibre
  • Analyser la distribution des classes (ratio 1:200 environ)
  • Visualiser avec pie chart et histogrammes
  • Comprendre l'impact sur les métriques (accuracy ≠ performance réelle)
Phase 2 : Baseline Naïf
  • Entraîner modèle sans gestion du déséquilibre
  • Évaluer : Accuracy (trap !), Precision, Recall, F1, ROC-AUC
  • Montrer que accuracy n'est pas appropriée
Phase 3 : Stratégie 1 - Class Weight
  • Utiliser class_weight='balanced' dans les modèles
  • Entraîner Random Forest et Gradient Boosting
  • Comparer avec baseline
Phase 4 : Stratégie 2 - SMOTE
  • Installer : pip install imbalanced-learn
  • Appliquer SMOTE pour sur-échantillonner fraudes
  • Attention : SMOTE sur train uniquement !
  • Comparer performance
Phase 5 : Stratégie 3 - Threshold Tuning
  • Utiliser precision_recall_curve()
  • Tracer F1 vs seuil
  • Trouver seuil optimal (ex: 0.25 au lieu de 0.5)
  • Comparer Precision/Recall à ce seuil
Phase 6 : Explainabilité SHAP
  • Entraîner meilleur modèle avec stratégie 3
  • Installer shap : pip install shap
  • Créer SHAP summary plots
  • Interpréter les top 10 features frauduleuses
  • Créer rapport de risque pour 5 transactions frauduleuses
Phase 7 : Rapport Final
  • Résumer les 3 stratégies : avantages/inconvénients
  • Recommander la meilleure pour la banque
  • Discuter coûts vs bénéfices (FP vs FN)
  • Proposer amélioration future

Métriques & Critères de Réussite

Critère Excellent (90-100%) Bon (75-89%) Acceptable (60-74%)
Gestion Déséquilibre 3 stratégies comparées rigoureusement 2 stratégies comparées 1 stratégie ou comparaison superficielle
Métriques Appropriées F1, Precision, Recall, ROC-AUC utilisés correctement F1 et Precision/Recall principalement Accuracy ou peu de métriques
SHAP & Explainabilité SHAP complet avec interprétations SHAP basique mais présent SHAP absent ou très basique
Performance ROC-AUC > 0.95, F1 > 0.8 ROC-AUC > 0.90, F1 > 0.70 ROC-AUC > 0.85, F1 > 0.60
Analyse Métier Discussion cost-benefit FP vs FN Recommandations stratégiques claires Rapport purement technique

Livrables

Vous devez remettre :
  • exercice2_code.ipynb : Notebook avec toutes les stratégies
  • exercice2_rapport.pdf : Rapport d'analyse (4-6 pages)
  • shap_analysis.html : SHAP visualisations interactives
  • fraud_reports.csv : 10 cas frauduleux avec risque score
  • strategie_comparaison.png : Graphique résumé des 3 stratégies

Bonus Points (+10%)

Gagnez des points en faisant :
  • Utiliser XGBoost ou LightGBM (plus rapide que Gradient Boosting)
  • Implémenter LIME en plus de SHAP
  • Créer une courbe Coût-Bénéfice pour la banque
  • Tester sur une période différente (validation temporelle)
EXERCICE 3

Segmentation E-Commerce avec RFM

Difficulté : Moyenne-Difficile

Contexte

Vous travaillez pour une plateforme e-commerce qui veut segmenter ses 1000+ clients pour des stratégies marketing ciblées. Construisez un système de clustering avec analyse RFM (Recency, Frequency, Monetary).

Objectifs

  • Calculer RFM score pour chaque client
  • Implémenter 3 algorithmes de clustering (K-Means, Hiérarchique, DBSCAN)
  • Déterminer le nombre optimal de clusters
  • Profiler et nommer les segments clients
  • Créer des stratégies marketing par segment
  • Calculer ROI estimé pour chaque stratégie

Dataset

Source : Online Retail (UCI ML Repository) ou créer synthétiquement
Format : CSV avec transactions (invoice_id, customer_id, date, amount, etc.)
Nombre clients : 500-1000
Features : InvoiceNo, CustomerID, InvoiceDate, Quantity, UnitPrice
À créer : Recency, Frequency, Monetary, RFM_Score

Tâches Détaillées

Phase 1 : Exploration & Préparation
  • Charger dataset de transactions
  • Aggréger par client (agrégations multiples)
  • Visualiser distributions
  • Gérer outliers si besoin
Phase 2 : Calcul RFM
  • Recency : Jours depuis dernier achat
  • Frequency : Nombre de transactions
  • Monetary : Montant total dépensé
  • Normaliser R, F, M pour scaling équitable
  • Créer RFM_Score = (R + F + M) / 3
Phase 3 : Sélection Nombre Clusters
  • Elbow Method : tracer inertia vs K
  • Silhouette Score : tracer vs K
  • Davies-Bouldin Index : minimiser
  • Recommander K optimal (ex: K=4 ou K=5)
Phase 4 : Clustering - Algorithme 1 (K-Means)
  • Normaliser les données (StandardScaler)
  • Entraîner K-Means avec K optimal
  • Calculer métriques d'évaluation
  • Assigner clusters aux clients
Phase 5 : Clustering - Algorithme 2 (Hiérarchique)
  • Utiliser SciPy : linkage() avec Ward
  • Créer dendrogramme
  • Couper pour K clusters
  • Comparer silhouette avec K-Means
Phase 6 : Clustering - Algorithme 3 (DBSCAN)
  • Trouver eps avec k-distance graph
  • Entraîner DBSCAN
  • Analyser outliers détectés
  • Comparer nombre clusters & qualité
Phase 7 : Profiling & Nommage
  • Utiliser K-Means (meilleur pour cette tâche)
  • Calculer moyennes R, F, M par cluster
  • Créer profils : VIP, Standard, At-Risk, Dormant, etc.
  • Visualiser avec scatter 2D/3D
Phase 8 : Stratégies Marketing
  • Segment 1 (VIP) : Programme premium, offres exclusives
  • Segment 2 (Standard) : Campagnes régulières, cross-sell
  • Segment 3 (At-Risk) : Réactivation, offres spéciales
  • Segment 4 (Dormant) : Win-back campaigns
  • Estimer budget marketing par segment
Phase 9 : ROI & Recommandations
  • Estimer LTV (Lifetime Value) par segment
  • Calculer budget marketing proposé (% de LTV)
  • ROI estimé : (gain espéré - budget) / budget
  • Rapport final avec recommandations

Métriques & Critères de Réussite

Critère Excellent (90-100%) Bon (75-89%) Acceptable (60-74%)
RFM Analysis Calculs corrects, interprétation fine Calculs corrects, interprétation basique Calculs corrects mais peu interprétés
Clustering 3 algos comparés, K optimal justifié 2 algos comparés, K raisonnable 1 algo seulement ou K arbitraire
Profiling 5+ segments bien nommés et profils clairs 3-4 segments avec profils cohérents Segments peu différenciés
Stratégies Marketing Stratégies détaillées par segment + ROI Stratégies claires mais peu de détail Stratégies génériques ou absentes
Visualisations 8+ graphiques professionnels 5-7 graphiques pertinents <5 graphiques ou peu informatifs

Livrables

Vous devez remettre :
  • exercice3_code.ipynb : Notebook avec RFM + 3 algos clustering
  • exercice3_rapport.pdf : Rapport d'analyse (4-6 pages)
  • clients_segmentes.csv : Dataset avec colonne cluster
  • segment_profiles.xlsx : Tableau avec profils moyens par cluster
  • strategie_marketing.md : Stratégies détaillées par segment
  • visualizations/ : 8+ graphiques (scatter, pie, heatmap, etc.)

Bonus Points (+10%)

Gagnez des points en faisant :
  • PCA pour visualisation 2D avant clustering
  • Prédiction : modèle pour classer nouveaux clients
  • Analyse temporelle : évolution des segments sur le temps
  • API Dashboard : interface pour explorer les segments

Instructions Finales

Critères d'Évaluation Globaux

Catégorie Poids Description
Code Python 25% Propreté, documentation, absence d'erreurs, reproductibilité
Analyse Technique 40% Méthodologie, justifications, comparaisons, optimisation
Résultats & Performance 20% Qualité du modèle, métriques, validation
Rapport & Communication 15% Clarté, visualisations, recommandations, conclusions

Conseils Généraux

✓ À faire :
  • Commencez par l'exploration des données (EDA)
  • Testez plusieurs approches et comparez
  • Commentez votre code
  • Créez des visualisations claires et informatives
  • Documentez vos choix et justifications
  • Validez avec cross-validation
✗ À éviter :
  • Data leakage (normaliser avant split !)
  • Surapprentissage (trop proche de 100%)
  • Négliger la validation (test set important)
  • Code non reproductible (random_state manquant)
  • Rapport purement technique sans conclusion métier
  • Oublier de gérer les valeurs manquantes

Dates Importantes

Calendrier du Projet :
  • Date de démarrage : 02/12
  • Date limite : 4 semaines (ajustable)
  • Présentation : 15 min par étudiant/groupe
  • Barème : 2 exercices = note finale