Projet de fin d'études · 2025 / 2026
Prédire la souscription d'un Crédit Habitat (CHAB) sur 340 765 clients, à travers une chaîne de données industrialisée, auditable et explicable.
SECTION 01
Organisme d'accueil, enjeux métier et méthodologie de conduite du projet.
Organisme d'accueil
Un acteur historique du marché marocain, structuré en quatre pôles d'activité.
1943
Création
≈ 382
Agences au Maroc
> 3 000
Collaborateurs
4
Pôles d'activité
Le projet s'inscrit dans le pôle Retail Banking.
| Filiale | Création | Activité |
|---|---|---|
| BMCI Leasing | 1986 | Crédit-bail |
| BMCI Bourse | 1995 | Intermédiation boursière |
| BMCI Banque Offshore | 1995 | Place financière de Tanger |
| ARVAL Maroc | 2002 | Location longue durée |
| BMCI Assurance | 2005 | Bancassurance |
| BMCI Najmah | — | Finance participative |
Équipe d'accueil
Trois streams complémentaires structurent le pôle.
Gouvernance et qualité des données.
Reporting et tableaux de bord.
Scoring et ciblage — périmètre du projet.
Problématique
Situation actuelle
Campagnes diffusées largement sur 340 765 clients, dont 18 % souscrivent.
Traitements manuels et peu reproductibles.
Cible du projet
Un score qui classe chaque client sans CHAB.
Une chaîne orchestrée, auditable et explicable.
Objectif
Prédire la souscription d'un Crédit Habitat sous cinq mois.
340 765 clients · 2 snapshots · ≈ 9,6 M lignes · chaîne automatisée.
Méthodologie
Planning
Février
Onboarding et cadrage
Mars
Collecte et nettoyage
Avril–Mai
Features et algorithmes
Juin
Évaluation comparative
Juillet
Docker et rapport
SECTION 02
Sources, volumétrie, construction de la variable cible et rigueur méthodologique.
Sources
T0 = 01/01/2026 et T1 = 01/06/2026, soit cinq mois d'observation.
| Vue | Contenu | Lignes | Colonnes |
|---|---|---|---|
| Vue_RC | Référentiel client | 340 765 | 42 |
| Vue_PC | Produits et contrats | 781 790 → 822 676 | 44 |
| Vue_MVT | Mouvements de comptes | 4 004 800 | 19 |
Variable cible
Cible = 1 si un CHAB apparaît entre T0 et T1.
≈ 328 000
Clients éligibles, sans CHAB en T0
59 018
Souscriptions observées
≈ 18 %
Taux de base — déséquilibre 1 : 4,6
5 mois
Horizon de prédiction
Déséquilibre des classes
L'exactitude devient inutilisable. L'arbitrage se fait sur la PR AUC, avec pondération des classes.
Répartition de la variable cible sur les ≈ 328 000 clients éligibles.
Rigueur méthodologique
Le modèle ne voit jamais le futur qu'il prédit.
Calculées sur le seul snapshot de janvier.
chab, target_chab, snapshot_id.
nom_tiers, identifiant_national.
Un IV > 0,5 déclenche une alerte.
SECTION 03
Stack technique open source et couches Medallion, du fichier brut au feature store.
Stack technique
Socle Ubuntu 22.04 et Python 3.11, sans dépendance cloud.
| Domaine | Outils | Rôle |
|---|---|---|
| Stockage | MinIO · Parquet ZSTD | Data lake en 4 buckets |
| Traitement | Polars · DuckDB · PyArrow | Transformations streaming |
| Suivi ML | MLflow · PostgreSQL | Expériences et registre |
| Orchestration | Airflow 2.10 | Sept DAG |
| Restitution | Streamlit · Plotly · FastAPI | Interface et API |
| Déploiement | Docker Compose · Nginx | Onze services |
Architecture Medallion
Couche Bronze
3 Go
Volume CSV source
0,4 Go
Parquet ZSTD
9 min
Durée d'ingestion
Couche Silver
Couche Gold
≈ 328 000 lignes × ≈ 140 colonnes, une ligne par client.
| Famille | Variables | Exemples |
|---|---|---|
| Référentiel client | ≈ 35 | Âge, ancienneté, rating |
| Produits | ≈ 50 | Épargne, PEL, encours conso |
| Mouvements | ≈ 50 | Salaire proxy, taux d'effort |
| Croisées | 6 | Épargne sur revenu |
Feature engineering
mvt_salaire_proxy — revenu reconstitué.mvt_capacite_epargne — solde structurel.mvt_taux_effort_prlv — poids des prélèvements.pc_has_pel — signal d'épargne logement.rc_age_cible_habitat — tranche de primo-accession.x_profil_projet_immobilier — indicateur combiné.SECTION 04
EDA orientée pouvoir discriminant, cinq algorithmes en concurrence, explicabilité SHAP.
Analyse exploratoire
Hiérarchiser les variables plutôt que les décrire.
Classement du pouvoir prédictif.
Discrétisation monotone.
Cohérence des effets par tranche.
Détection des redondances.
Sélection de variables
Le profil relationnel domine, l'épargne confirme.
| Variable | Lecture métier |
|---|---|
rc_segment | Segment relationnel du client |
rc_age / rc_tranche_age | Cycle de vie et primo-accession |
rc_age_cible_habitat | Tranche d'âge cible du CHAB |
pc_nb_produits_actifs | Niveau d'équipement bancaire |
pc_epargne_totale | Épargne constituée |
mvt_capacite_epargne | Capacité d'épargne mensuelle |
Protocole
class_weight et scale_pos_weight.Benchmark
CatBoost l'emporte sur la PR AUC : 0,705.
| Modèle | Hyperparamètres retenus | PR AUC |
|---|---|---|
| Régression logistique | C = 0,1 | 0,683 |
| Random Forest | 400 arbres, prof. 14 | 0,692 |
| LightGBM | 800 arbres, 63 feuilles | 0,697 |
| XGBoost | 600 arbres, lr 0,05 | 0,700 |
| CatBoost | 800 itérations, prof. 6 | 0,705 |
ROC AUC par modèle
Cinq modèles très proches : ROC AUC de 0,901 à 0,909. Échelle volontairement resserrée (0,898 – 0,912) pour rendre l'écart lisible — l'arbitrage se joue sur la PR AUC et le KS.
Métriques
Avec 18 % de positifs, le hasard plafonne à 0,18.
0,705
PR AUC — quatre fois le niveau du hasard
0,909
ROC AUC — métrique de contrôle
0,65
KS — pouvoir de séparation
0,82
Gini — lecture bancaire usuelle
Explicabilité
SECTION 05
Orchestration Airflow, scoring batch, suivi de la dérive, interface Streamlit et déploiement Docker.
Orchestration

Ciblage
Les déciles 1 et 2 concentrent l'essentiel des souscriptions.
Lift par décile de score : un décile 1 quatre fois plus dense en souscripteurs que la moyenne.
Scoring batch

Exploitation
La promotion passe par le registre MLflow.
| Indicateur | Seuil | Décision |
|---|---|---|
| PSI stable | < 0,10 | Maintien en production |
| PSI modéré | 0,10 – 0,25 | Surveillance renforcée |
| PSI fort | ≥ 0,25 | Ré-entraînement déclenché |
| Écart AUC | > 0,05 | Modèle rejeté |
| Information Value | > 0,50 | Investigation d'une fuite |
Interface Streamlit
Le métier consulte et justifie sans coder.
Volumétrie et structure.
EDA, IV/WoE et modèles.
Contributions SHAP.
Score, décile et segment.
Docker
11
Services orchestrés
5
Images applicatives
9 min
Build du socle
12 Go
RAM en pointe
25 Go
Empreinte disque
2 h
Chaîne complète
Performance
L'entraînement concentre le calcul. Les couches de préparation restent sous quinze minutes.
Durée médiane par étape du pipeline, en minutes.
SECTION 06
Ce que le projet livre au métier, les limites assumées et les évolutions envisagées.
Bilan
340 765
Clients scorés
≈ 140
Variables versionnées
20 000
Clients prioritaires
Recul critique
Limites
Deux snapshots seulement : la stabilité n'est pas encore mesurée.
Horizon figé et revenu approché par des proxys.
Perspectives
Étendre l'historique pour un backtesting réel.
Ré-entraînement piloté par le PSI, uplift testé en A/B.
Conclusion