DEV Community

Victor reginald
Victor reginald

Posted on

🏦 Comment la Data Science révèle les secrets d'une campagne bancaire. Analyse complète avec Python

Comment la Data Science révèle les secrets d'une campagne bancaire


"Qui contacter ? Quand ? Et surtout... pourquoi certains clients disent OUI ?"

C'est la question à laquelle une banque portugaise a tenté de répondre entre 2008 et 2010, en passant plus de 45 000 appels téléphoniques. Nous allons y répondre chiffres à l'appui.


Le contexte: Une banque, 45 211 clients, et un mystère

Imaginez la scène. Nous sommes en 2008, en pleine crise financière mondiale. Une banque portugaise cherche à convaincre ses clients de placer leur argent dans des dépôts à terme. La stratégie retenue ? Des campagnes de marketing direct par téléphone, menées sur deux ans, de mai 2008 à novembre 2010.

À la fin, le bilan est posé sur la table : 45 211 appels passés, 5 289 souscriptions obtenues, soit seulement 11,7 %. La banque a mobilisé d'importants moyens humains pour un rendement décevant. Mais la vraie question n'est pas combien d'appels ont été passés. C'est à qui fallait-il vraiment téléphoner.

C'est exactement ce que nous avons cherché à découvrir en appliquant les outils de la statistique multivariée sur le célèbre Bank Marketing Dataset de l'UCI (Cortez & Moro, 2012) :

  • Statistiques univariées et détection d'outliers
  • Tests de corrélation (Pearson, Spearman, Chi-deux, V de Cramér)
  • Analyses factorielles : AFC et ACM
  • Réduction de dimension : ACP
  • Clustering : CAH, K-Means, K-Médoïdes

Chaque méthode apporte une pièce du puzzle. Ensemble, elles révèlent quelque chose que personne n'aurait vu à l'œil nu.


Partie I : Ce que les chiffres cachent au premier regard

La trahison des moyennes

Avant toute modélisation, on inspecte les données. Et là, le premier piège se dévoile immédiatement.

La variable balance (solde annuel moyen du client) affiche une médiane de 448€ mais une moyenne de 1 362€. L'écart est gigantesque. Comment est-ce possible ?

Réponse : 4 729 clients (10,5 % du dataset !) présentent un solde supérieur à 3 462€, avec un maximum à 102 127€. Ces quelques clients fortunés tirent la moyenne vers le haut comme un mensonge statistique. Si on construisait une stratégie marketing basée sur la "moyenne", on ciblerait un profil fantôme qui ne représente presque personne.

Variable   | Médiane  | Moyenne  | Outliers | Skewness
-----------|----------|----------|----------|----------
age        | 39 ans   | 40,9 ans | 487 (1%) | 0,69
balance    | 448 €    | 1 362 €  | 4 729 !! | 8,36 
duration   | 180 s    | 258 s    | 3 235 7% | 3,14
Enter fullscreen mode Exit fullscreen mode

La distribution de balance avec un skewness de 8,36 est un cas d'école. La règle IQR est formelle :

  • Borne inférieure : −1 962€
  • Borne supérieure : 3 462€
  • Tout ce qui dépasse = aberrant statistiquement

Stratégie de traitement retenue : log-transformation après décalage pour balance (distribution trop asymétrique), winsorisation pour duration et age. La variable pdays (−1 = "jamais contacté") est recodée à 0 avant normalisation.

La variable duration raconte une autre histoire. La plupart des appels durent moins de 5 minutes, mais certains dépassent l'heure. Ces appels très longs correspondent souvent à des clients qui posent beaucoup de questions... avant de signer. Ils sont précieux, mais leur présence déforme les calculs de distance dans les algorithmes de clustering. Winsorisation au seuil Q3+1,5×IQR = 643 secondes.


Partie II : Le prédicteur que personne n'aurait deviné

Chi-deux et la variable qui change tout

J'ai calculé le test du Chi-deux entre chaque variable catégorielle et la variable cible y. Et parmi toutes les corrélations testées, une variable sort du lot avec une force statistique écrasante : poutcome le résultat de la campagne de marketing précédente.

Résultat χ² = 4 391,51  |  p ≈ 0  |  V de Cramér = 0,31 (FORTE liaison)
Enter fullscreen mode Exit fullscreen mode

Pour comprendre pourquoi c'est si puissant, il suffit de regarder les taux de souscription par modalité :

poutcome Clients Taux souscription vs référence
success 1 511 64,7 % ▲ ×5,5
other 1 840 16,7 % ▲ +5pp
failure 4 901 12,6 % ≈ référence
unknown 36 959 9,2 % ▼ −2,5pp

Un client qui a souscrit lors de la dernière campagne a 5,5 fois plus de chances de souscrire à nouveau. 64,7 % contre 11,7 % en moyenne. Ce n'est pas une coïncidence, c'est une signature comportementale. Ces clients ont déjà franchi le pas psychologique. Ils font confiance à leur banque. Ils comprennent le produit.

À l'inverse, les 36 959 clients unknown (jamais contactés avant dans ce contexte) affichent seulement 9,2 %. Autrement dit, contacter quelqu'un sans historique de relation est statistiquement moins efficace que la moyenne globale.

L'AFC (Analyse Factorielle des Correspondances) confirme visuellement cette structure : poutcome=success se positionne à l'extrémité droite de l'axe F1, exactement là où y=yes se trouve. Ces deux modalités sont si proches dans l'espace factoriel qu'elles se confondent presque.

L'ACM Voir tout le paysage à la fois

L'ACM appliquée sur 9 variables catégorielles simultanément donne une vue d'ensemble impossible à obtenir autrement.

L'axe F1 (7,75 % d'inertie) révèle une opposition structurelle entre deux profils de clients :

Côté positif (+F1) = profil souscripteur :

  • education=tertiary (CTR=17,1 %) 1er contributeur
  • job=management (CTR=13,0 %)
  • poutcome=success (CTR=6,1 %)
  • y=yes (CTR=8,3 %)

Côté négatif (−F1) = profil non-souscripteur :

  • job=blue-collar (CTR=11,4 %)
  • contact=unknown (CTR=8,6 %)
  • education=primary (CTR=6,3 %)

L'écart entre les centroïdes des deux groupes sur F1 est de 0,61 significatif et cohérent avec l'analyse précédente. F1 est littéralement un "axe de propension à souscrire".

Insight clé : L'ACM nous dit que le niveau d'éducation, la catégorie professionnelle et le résultat de la campagne précédente sont les trois variables qualitatives les plus prédictives. Et ces trois variables convergent vers le même profil.


Partie III : ACP : réduire 7 dimensions à 3 sans perdre l'essentiel

Le critère de Kaiser et les 3 composantes qui comptent

Avec 7 variables numériques (age, balance, day, duration, campaign, pdays, previous), visualiser directement les données est impossible. L'ACP projette ces 7 dimensions dans un espace réduit en maximisant l'information conservée.

Le critère de Kaiser (λ ≥ 1) retient 3 composantes :

PC1 : λ = 1,509  →  21,6 % de variance  
PC2 : λ = 1,155  →  16,5 % de variance    
PC3 : λ = 1,097  →  15,7 % de variance  
PC4 : λ = 0,975  →  exclue              
→ Total retenu : 53,7 %
Enter fullscreen mode Exit fullscreen mode

Ce que les cercles de corrélations nous disent

Les cercles de corrélations sont les graphiques les plus riches de cette analyse. Ils montrent comment chaque variable originale se "projette" sur les axes factoriels.

Sur le plan PC1 × PC2 :

  • pdays et previous (flèches orange) pointent fortement vers la droite → PC1 = "Historique de contact"
  • campaign et day (flèches bleues) pointent vers le haut-gauche → PC2 = "Intensité de la campagne en cours"
  • duration (flèche verte) pointe vers le bas → durée d'appel longue = peu de relances

Sur le plan PC1 × PC3 (non montré dans l'article) :

  • age et balance (flèches violettes) dominent PC3 → PC3 = "Profil financier du client"

La révélation : age et balance sont quasi-absents de PC1 et PC2. Cela signifie que le profil financier d'un client est presque indépendant de son comportement face aux campagnes. L'âge et le solde bancaire ne prédisent pas grand chose. C'est l'historique de contact qui prédit.

Les souscripteurs dans le plan factoriel

En projetant les 45 211 individus dans le plan PC1×PC2 et en les colorant selon leur décision :

  • Centroïde y=no : PC1 = −0,065
  • Centroïde y=yes : PC1 = +0,493

L'écart est clair, même si les deux nuages se superposent fortement. Les variables numériques seules ne suffisent pas à séparer parfaitement les groupes — mais elles indiquent la bonne direction.


Partie IV : Trois portraits de clients qui changent tout

Le dendrogramme raconte une histoire

La CAH (Classification Ascendante Hiérarchique) appliquée sur les 3 composantes principales donne un résultat net. Le dendrogramme révèle un grand saut entre h ≈ 30 et h ≈ 43, suggérant de couper à k = 3 clusters.

k=2 : silhouette = 0,43  — trop grossier
k=3 : silhouette = 0,25  — meilleur équilibre
k=4 : silhouette = 0,26  — marginal
Enter fullscreen mode Exit fullscreen mode

Les 3 profils révélés

Le graphique synthèse des profils CAH est celui qui concentre le plus d'information utile de toute l'analyse.

** Cluster 1 : Les "Fidèles" (n = 376, 18,8 %)**

Taux souscription : 22,0 % (+10,3 pp vs référence)
Âge moyen        : 41 ans
Solde moyen      : 1 529 €
Durée appel      : 251 s
pdays moyen      : 231 jours (contact précédent établi)
Enter fullscreen mode Exit fullscreen mode

Ces clients ont déjà répondu à une campagne précédente. La banque les connaît, eux connaissent la banque. Chaque conversation est productive. Ce sont vos meilleurs clients potentiels — et paradoxalement, ils ne représentent que 18 % du portefeuille.

** Cluster 2 : Les "Sur-sollicités" (n = 745, 37,3 %)**

Taux souscription : 5,0 % (−6,7 pp vs référence)
Âge moyen        : 36 ans
Solde moyen      : 543 €
Durée appel      : 186 s
pdays moyen      : −1 (jamais contacté avant)
campaign moy.    : 3,9 appels dans cette campagne
Enter fullscreen mode Exit fullscreen mode

Jamais contactés avant cette campagne, mais rappelés 4 fois en moyenne. Les appels sont courts — le client raccroche vite. Le taux de 5 % est bien en-dessous de la référence. Plus vous les appelez, plus vous gaspillez des ressources. C'est le cluster "stop".

** Cluster 3 : Les "Matures Aisés" (n = 879, 43,9 %)**

Taux souscription : 14,0 % (+2,3 pp vs référence)
Âge moyen        : 46 ans
Solde moyen      : 2 047 €
Durée appel      : 347 s
Enter fullscreen mode Exit fullscreen mode

Clients plus âgés, plus aisés, appels plus longs. Pas de contact récent mais réceptifs. Un segment à travailler avec un message adapté à leur maturité financière, sécurité, rendement garanti, transmission de patrimoine.


Ce que ça donne concrètement 3 stratégies marketing

Cluster Potentiel Stratégie Actions
C1 — Fidèles ÉLEVÉ Priorité absolue Relance personnalisée, offre exclusive, rappel historique
C2 — Sur-sollicités FAIBLE Réduire les contacts Pause 6 mois, changer de canal
C3 — Matures aisés MOYEN Ciblage adapté Message sécurité/patrimoine, appel unique bien préparé

Estimation de gain : Le Cluster 2 représente 13 716 clients avec un taux de 6,2 %. Réduire leur fréquence de contact de moitié représente ~6 800 appels économisés par campagne, pour un impact négligeable sur les souscriptions.


Quelques décisions techniques qui méritent une explication

Pourquoi Spearman et pas Pearson ?
Aucune des 5 variables numériques ne suit une loi normale (Shapiro-Wilk, p ≪ 0,05 pour toutes). previous affiche un skewness de 41,85 sa distribution est quasi-nulle sauf pour quelques pics. Pearson supposerait une distribution normale et une relation linéaire : les deux conditions sont violées. Spearman, basé sur les rangs, est la seule option robuste.

Pourquoi K-Médoïdes en plus de K-Means ?
balance a un maximum de 102 127€ pour une médiane de 448€. K-Means calcule des moyennes le centroïde C2 monte à 2 542€ alors que 75 % des clients ont balance < 1 428€. Ce centroïde ne représente personne. K-Médoïdes utilise des individus réels comme centres immunisés contre les outliers par construction.

# K-Means : centre = moyenne (point virtuel)
centroide_C2 = X_cluster2.mean()  # déformé par balance=102127€

# K-Médoïdes : centre = individu réel (minimise la somme des distances)
medoide_C2 = X_cluster2[argmin(sum(distances))]  # reste dans la zone dense
Enter fullscreen mode Exit fullscreen mode

Pourquoi la CAH sur les composantes ACP ?
Appliquer la CAH directement sur 7 variables brutes amplifierait les effets des outliers de balance et duration. Travailler sur les 3 composantes normalisées et décorrélées produit des clusters plus stables et interprétables. C'est une pratique standard en data science exploratoire.


Le stack technique

# Les bibliothèques essentielles
import pandas as pd           # manipulation des données
import numpy as np            # calculs numériques
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats       # tests statistiques (Shapiro, Pearson, Chi²)
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
import prince                 # AFC et ACM — pip install prince
Enter fullscreen mode Exit fullscreen mode

Tout le code tourne en Python 3.12 dans un Jupyter Notebook, avec uniquement des bibliothèques open source.


Ce que j'ai appris au-delà des formules

Ce projet était mon devoir de fin de cours en Statistiques Multivariées, mais il m'a appris des choses qui dépassent largement le cadre académique.

1. La convergence des méthodes est votre meilleur allié. Quand 5 méthodes indépendantes pointent toutes dans la même direction poutcome comme prédicteur dominant c'est le signal le plus fiable que vous puissiez avoir.

2. La significativité statistique ≠ l'importance pratique. Avec n = 45 211, une corrélation r = 0,015 est statistiquement significative (p = 0,002). Mais r = 0,015 explique... 0,02 % de la variance. Ne confondez jamais les deux.

3. Les graphiques sont la seule vérité universelle. Un tableau de valeurs propres, ça ne parle qu'aux statisticiens. Un dendrogramme avec un grand saut visible, ça parle à tout le monde. Investissez dans la visualisation.

4. Nettoyer les données n'est pas optionnel. La log-transformation de balance et la winsorisation de duration ont changé radicalement la qualité des clusters obtenus. Des données brutes bruyantes donnent des segments flous. Des données traitées donnent des profils actionnables.


Conclusion

Au début de cet article, la question était simple : qui contacter, et pourquoi ?

La réponse est maintenant chiffrée et actionnable :

Concentrez vos efforts sur les clients avec un historique de contact positif (poutcome≠unknown). Arrêtez de harceler les nouveaux clients sans historique. Laissez les clients qui posent des questions finir leur raisonnement.

Ces conclusions émergent de la convergence de 5 méthodes statistiques indépendantes. Ce n'est pas une opinion. Ce n'est pas une intuition. C'est ce que 45 211 lignes de données nous disent quand on leur pose les bonnes questions.

C'est ça, la puissance de la statistique multivariée.


Si cet article vous a été utile, un like ou un commentaire est toujours apprécié !
Des questions sur l'implémentation ? Les commentaires sont ouverts.

#datascience #python #statistics #machinelearning #clustering #pca #banking #frenchdev


Reginald Victor — Étudiant en Science des Données & IA | 2026

Top comments (0)