Projet de fin d'études · 2025 / 2026

Pipeline MLOps & Score d'Appétence

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.

BMCI · Pôle Data & CRM Master Big Data & Cloud Computing jihad
Illustration : une agence bancaire connectée à un réseau de données

SECTION 01

Contexte général

Organisme d'accueil, enjeux métier et méthodologie de conduite du projet.

Organisme d'accueil

BMCI — banque universelle du groupe BNP Paribas

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é

Un groupe structuré en filiales spécialisées

Le projet s'inscrit dans le pôle Retail Banking.

FilialeCréationActivité
BMCI Leasing1986Crédit-bail
BMCI Bourse1995Intermédiation boursière
BMCI Banque Offshore1995Place financière de Tanger
ARVAL Maroc2002Location longue durée
BMCI Assurance2005Bancassurance
BMCI NajmahFinance participative

Équipe d'accueil

Pôle Data & CRM — Retail Analytic Office

Trois streams complémentaires structurent le pôle.

Data Domain Management

Gouvernance et qualité des données.

Analytique descriptive

Reporting et tableaux de bord.

CRM prédictif

Scoring et ciblage — périmètre du projet.

Problématique

Pourquoi un score d'appétence CHAB ?

Situation actuelle

Campagnes diffusées largement sur 340 765 clients, dont 18 % souscrivent.

Traitements manuels et peu reproductibles.

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

Une conduite de projet agile, cadrée par Scrum

01

Trois piliers

  • Transparence — backlog et avancement partagés.
  • Inspection — revue des livrables de chaque phase.
  • Adaptation — périmètre réajusté à chaque sprint.
02

Dispositif

  • Sprints de une à quatre semaines.
  • Product Owner, Scrum Master, équipe technique.
  • Pilotage par JIRA : tickets, priorisation, traçabilité.

Planning

Déroulement — février à juillet 2026

Février

Onboarding et cadrage

Mars

Collecte et nettoyage

Avril–Mai

Features et algorithmes

Juin

Évaluation comparative

Juillet

Docker et rapport

SECTION 02

Étude et compréhension des données

Sources, volumétrie, construction de la variable cible et rigueur méthodologique.

Sources

Trois vues métier, deux snapshots, ≈ 9,6 M lignes

T0 = 01/01/2026 et T1 = 01/06/2026, soit cinq mois d'observation.

VueContenuLignesColonnes
Vue_RCRéférentiel client340 76542
Vue_PCProduits et contrats781 790 → 822 67644
Vue_MVTMouvements de comptes4 004 80019

Variable cible

Une cible construite par comparaison de snapshots

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

Une classe minoritaire : 18 % de souscripteurs

L'exactitude devient inutilisable. L'arbitrage se fait sur la PR AUC, avec pondération des classes.

Non-souscripteurs
268 982
Souscripteurs
59 018

Répartition de la variable cible sur les ≈ 328 000 clients éligibles.

Rigueur méthodologique

Prévention systématique de la fuite de données

Le modèle ne voit jamais le futur qu'il prédit.

Features T0

Calculées sur le seul snapshot de janvier.

Colonnes interdites

chab, target_chab, snapshot_id.

Identifiants exclus

nom_tiers, identifiant_national.

Contrôle automatique

Un IV > 0,5 déclenche une alerte.

SECTION 03

Conception de l'architecture

Stack technique open source et couches Medallion, du fichier brut au feature store.

Stack technique

Une plateforme MLOps entièrement open source

Socle Ubuntu 22.04 et Python 3.11, sans dépendance cloud.

DomaineOutilsRôle
StockageMinIO · Parquet ZSTDData lake en 4 buckets
TraitementPolars · DuckDB · PyArrowTransformations streaming
Suivi MLMLflow · PostgreSQLExpériences et registre
OrchestrationAirflow 2.10Sept DAG
RestitutionStreamlit · Plotly · FastAPIInterface et API
DéploiementDocker Compose · NginxOnze services

Architecture Medallion

Trois couches, une seule source de vérité

BRONZEConserve la donnée brute, convertie en Parquet.
SILVERApplique typage, nettoyage et qualité.
GOLDPorte la cible et le feature store.
Schéma des trois couches Medallion : données brutes affinées couche par couche

Couche Bronze

CSV → Parquet : la compression comme premier gain

3 Go

Volume CSV source

0,4 Go

Parquet ZSTD

9 min

Durée d'ingestion

Couche Silver

Trois contrôles avant toute modélisation

01

Typage strict

  • Dates et montants convertis.
02

Dédoublonnage

  • 4 800 doublons retirés.
03

Rapport qualité

  • Complétude et cohérences.

Couche Gold

Un feature store de ≈ 140 variables par client

≈ 328 000 lignes × ≈ 140 colonnes, une ligne par client.

FamilleVariablesExemples
Référentiel client≈ 35Âge, ancienneté, rating
Produits≈ 50Épargne, PEL, encours conso
Mouvements≈ 50Salaire proxy, taux d'effort
Croisées6Épargne sur revenu

Feature engineering

Des variables construites sur une hypothèse métier

01

Capacité financière

  • mvt_salaire_proxy — revenu reconstitué.
  • mvt_capacite_epargne — solde structurel.
  • mvt_taux_effort_prlv — poids des prélèvements.
02

Intention immobilière

  • pc_has_pel — signal d'épargne logement.
  • rc_age_cible_habitat — tranche de primo-accession.
  • x_profil_projet_immobilier — indicateur combiné.

SECTION 04

Modélisation et benchmark

EDA orientée pouvoir discriminant, cinq algorithmes en concurrence, explicabilité SHAP.

Analyse exploratoire

Une EDA orientée pouvoir discriminant

Hiérarchiser les variables plutôt que les décrire.

Information Value

Classement du pouvoir prédictif.

Weight of Evidence

Discrétisation monotone.

Taux de cible

Cohérence des effets par tranche.

Corrélations

Détection des redondances.

Sélection de variables

Les variables les plus influentes (SHAP)

Le profil relationnel domine, l'épargne confirme.

VariableLecture métier
rc_segmentSegment relationnel du client
rc_age / rc_tranche_ageCycle de vie et primo-accession
rc_age_cible_habitatTranche d'âge cible du CHAB
pc_nb_produits_actifsNiveau d'équipement bancaire
pc_epargne_totaleÉpargne constituée
mvt_capacite_epargneCapacité d'épargne mensuelle

Protocole

Un cadre figé pour comparer équitablement

01

Split et rééquilibrage

  • Split stratifié 60 / 20 / 20, graine 42.
  • Pondération par class_weight et scale_pos_weight.
  • Aucun SMOTE : structure réelle préservée.
02

Calibration et garde-fous

  • Calibration isotonique, vérifiée par diagramme de fiabilité.
  • Alerte si l'écart d'AUC train / test dépasse 0,05.
  • Traçabilité complète dans MLflow.

Benchmark

Cinq algorithmes mis en concurrence

CatBoost l'emporte sur la PR AUC : 0,705.

ModèleHyperparamètres retenusPR AUC
Régression logistiqueC = 0,10,683
Random Forest400 arbres, prof. 140,692
LightGBM800 arbres, 63 feuilles0,697
XGBoost600 arbres, lr 0,050,700
CatBoost800 itérations, prof. 60,705

ROC AUC par modèle

Régression log.
0,9006
Random Forest
0,9031
LightGBM
0,9060
XGBoost
0,9070
CatBoost
0,9088

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

Pourquoi la PR AUC arbitre le benchmark

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é

Un score que le métier peut justifier

01

Lecture globale

  • Importance SHAP sur tout le portefeuille.
  • Segment, âge et équipement dominent le score.
  • Sens des contributions vérifié un à un.
02

Lecture individuelle

  • Décomposition SHAP client par client.
  • Variables qui poussent ou freinent le score.
  • Restitution consultable dans l'interface.

SECTION 05

Industrialisation et exploitation

Orchestration Airflow, scoring batch, suivi de la dérive, interface Streamlit et déploiement Docker.

Orchestration

Un DAG par tâche, un DAG maître

chab_00 → 02Bronze, Silver, Gold
chab_03 → 05Stats, benchmark, scoring
chab_99Chaîne complète rejouée
Illustration du cycle MLOps continu, du packaging à la planification

Ciblage

Un lift de 4,2 sur le premier décile

Les déciles 1 et 2 concentrent l'essentiel des souscriptions.

Décile 1
4,18 ×
Décile 2
2,70 ×
Décile 3
1,42 ×
Décile 4
0,80 ×
Décile 5
0,58 ×

Lift par décile de score : un décile 1 quatre fois plus dense en souscripteurs que la moyenne.

Scoring batch

Du score au fichier de campagne

DécoupageDix déciles et cinq segments de A à E.
cible_campagneIsole les déciles 1 et 2.
Livrable20 000 clients prioritaires.
Illustration du passage du portefeuille scoré au fichier de campagne

Exploitation

Promotion du modèle et suivi de la dérive

La promotion passe par le registre MLflow.

IndicateurSeuilDécision
PSI stable< 0,10Maintien en production
PSI modéré0,10 – 0,25Surveillance renforcée
PSI fort≥ 0,25Ré-entraînement déclenché
Écart AUC> 0,05Modèle rejeté
Information Value> 0,50Investigation d'une fuite

Interface Streamlit

Sept écrans pour rendre le score exploitable

Le métier consulte et justifie sans coder.

Portefeuille

Volumétrie et structure.

Stats & benchmark

EDA, IV/WoE et modèles.

Explicabilité

Contributions SHAP.

Scoring client

Score, décile et segment.

Docker

Une plateforme reconstructible d'une commande

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

Répartition du temps d'exécution

L'entraînement concentre le calcul. Les couches de préparation restent sous quinze minutes.

Bronze
9 min
Silver
11 min
Gold
7 min
Stats
6 min
Entraînement
27 min
Benchmark
5 min
Scoring
3 min

Durée médiane par étape du pipeline, en minutes.

SECTION 06

Bilan et perspectives

Ce que le projet livre au métier, les limites assumées et les évolutions envisagées.

Bilan

Ce que le projet livre au métier

340 765

Clients scorés

≈ 140

Variables versionnées

20 000

Clients prioritaires

Recul critique

Limites assumées et perspectives

Limites

Deux snapshots seulement : la stabilité n'est pas encore mesurée.

Horizon figé et revenu approché par des proxys.

Conclusion

Trois idées à retenir

  • 01La valeur tient à la chaîne reproductible, pas à l'algorithme.
  • 02Sur un événement rare, la rigueur pèse plus que le modèle.
  • 03Medallion, Airflow et Docker en font un actif industriel.