Dans un marché télécoms ultra‑concurrentiel, chaque client perdu (churn) pèse lourd : au-delà du manque à gagner immédiat, remplacer un abonné coûte jusqu’à cinq fois plus cher que le conserver.
Plutôt que d’empiler offres promotionnelles et relances manuelles, le Big Data et le Machine Learning permettent d’anticiper l’attrition : en analysant les historiques d’usage (appels, data, interactions) et les signaux faibles, on identifie les clients à risque et on oriente les actions de rétention là où elles sont réellement nécessaires.
Dans cet article , nous détaillerons d’abord les enjeux du churn dans les télécoms – son ampleur, ses conséquences financières et les limites des approches traditionnelles – puis décrirons rapidement comment construire un modèle prédictif de churn à l’aide des technologies Big Data et ML.
Table des matières
ToggleI. Comprendre l’enjeu du churn dans les télécoms : utiliser le Big Data pour prédire le churn
Avant de déployer des solutions, encore faut-il bien cerner l’ampleur du phénomène, les approches marketing traditionnellement mises en œuvre pour le contrer, ainsi que l’impact concret du churn sur la performance des entreprises.
1. Le churn, un phénomène omniprésent dans un marché compétitif
L’arrêt d’utilisation des services par les clients existants est un phénomène omniprésent dans le milieu des business et en particulier dans les milieux économiques à forte compétitivité.
Le domaine des télécommunications est en perpétuelle effervescence du fait de la forte attractivité que suscite ce milieu.
De là, nous comprenons l’ampleur du phénomène d’attrition dans les compagnies de télécommunications.
Les data enthousiasts de la société BAAMTU ont mis en place une solution visant entre autres à réduire ce phénomène de l’attrition que le marketing appel » churn » par utilisation combinée du Big Data et du Machine Learning.
2. Le churn ou attrition client , un défi stratégique majeur
L’attrition client peut être définie comme quand un client suspend définitivement l’utilisation des services auxquels il a auparavant souscrit. Cette suspension peut également être synonyme de non utilisation pendant une période donnée.
Les stratégies marketing traditionnellement utilisées par les entreprises de télécommunications pour gérer leurs clients sont souvent de l’ordre de trois :
- l’acquisition de nouveaux clients,
- la vente incitative aux clients existants et
- la rétention client.
L’utilisation de chacune de ces techniques est liée à un coût. L’acquisition occupe une place prépondérante dans les stratégies marketing des entreprises de télécommunications.
Tant que l’acquisition continuera à monopoliser les efforts marketing, la rétention client ne cessera d’en pâtir et le taux d’attrition ( churn rate ) ne cessera d’augmenter.
3. Le taux d’attrition : un indicateur clé de santé business
Le taux d’attrition est la mesure du nombre de clients de la compagnie arrêtant l’utilisation des services mesurée sur une période donnée. Sa mesure est très importante car ses fluctuations peut informer sur “l’état de santé”, je me permet le terme, du business.
Ce taux d’attrition donc, quand il n’est pas contrôlé, réduit à zéro les efforts d’acquisition consentis par le marketing. D’où la nécessité de mettre en place une politique de rétention efficace.
4. Cibler les bons clients pour des actions marketing efficaces
Les entreprises de télécommunications ont souvent un nombre très élevé de clients à gérer et le service marketing ne peut donc s’offrir le loisir de s’intéresser à chacun d’entre eux de façon isolée.
Mais, imaginez qu’il puisse avoir l’information qu’un client est à une très forte probabilité de les quitter/de churn. Cela peut réduire les efforts marketing liés à la rétention en redirigeant ces dernières vers le type précis de clients à risque.
II. Processus de mise en place un modèle prédictif de churn : (Marketing)
L’idée est de mettre en place un modèle prédictif de l’attrition, autrement dit un outil à même de nous dire qu’un client donné va “churn-er”, arrêter l’utilisation de services, avec un certain score. L’objectif étant de permettre à un manager de faire ces prédictions de manière interactive avec un temps de latence s’apparentant au temps réel et de disposer à vue d’une stratification des clients par rapport à leurs scores d’appétences.
Le modèle prédictif à utiliser sera mis en place à partir de données historiques. Par données historiques, nous entendons les données issues de clients ayant arrêté l’utilisation des services mais également celles de clients demeurant dans le service conformément à l’idéologie machine learning.
Pour cela, plusieurs technologies et outils doivent être mis en place. Nous allons donc les présenter dans la section suivante.
1. Architecture de la solution : technologies utilisées (Marketing : utiliser le Big Data pour prédire le churn)
En matière de connaissance client, plus les données les décrivant sont les plus variées et nombreuses, mieux on se porte ! Le problème que pourrait soulever leur stockage et leur traitement ne sont plus d’ordre grâce notamment au paradigme distribué.
Apache Spark est un moteur de traitement de données massives offrant plusieurs possibilités de traitement incluant le traitement des données en batch, en temps réel, des graphes et finalement du machine learning.
La librairie Machine Learning de Spark, Mllib, offre le support à plusieurs classes d’algorithmes de classification, de régression, de réduction de dimension ainsi qu’un nombre important d’outils pour le prétraitement de données.
Mais, nous utilisons pour la création de notre modèle la librairie XGBoost à travers ses packages JVM combinées à Apache Spark. Ceci nous permet de gagner en rapidité lors de l’entraînement, le choix des paramètres à travers la validation croisée est également fait de manière distribuée.
Nous utilisons Spark à travers son API scala.
XGBoost ou eXtreme Gradient Boosting est un algorithme se basant sur le boosting de la descente du gradient. Le boosting à l’opposé du bagging consiste à l’exécution séquentielle de plusieurs arbres de décisions dont chacun corrige les erreurs effectuées lors de la précédente itération. Les modèles sont ajoutés de manière séquentielle jusqu’à ce qu’aucune amélioration ne puisse être faite. La prédiction finale est obtenue en sommant les prédictions effectuées par les différents arbres de décisions.
Le terme ‘gradient boosting’ fait référence à l’utilisation de l’algorithme de descente du gradient pour minimiser la perte ou l’erreur en ajoutant de nouveaux modèles.
On a souvent besoin de fournir à l’utilisateur final la possibilité d’interagir avec notre modèle soit à travers une application web, mobile ou à travers des API…
Pour ce faire, le modèle entraîné a besoin d’être utilisable sur tous types de plateformes. C’est en cela que le projet MLeap a été créé. MLeap est le successeur probable du format PMML, format d’exportation des modèles de machine learning sous format xml. Mleap propose la sérialisation de modèles codées avec la librairie Mllib de Spark, Scikit Learn, Tensorflow sous un format JSON ou protobuff et de les exporter sous un format unique appelée Bundle, utilisable en particulier sur les plateformes exécutant la JVM.
Les modèles peuvent être utilisés indépendamment (sans aucune dépendance) de leur plateforme d’entraînement d’origine(Spark, Tensorflow, Scikit Learn, …) par utilisation seule du runtime : MLeap Runtime.
Nous utilisons MLeap à travers son API Scala.
Play est un framework MVC permettant de créer des applications web.
Play offre un support pour les langages de programmation Java et Scala.
De plus, Play ! vient packagé avec son propre serveur : Akka depuis la version 2.6.X et Netty depuis sa dernière version. Il n’est donc pas besoin de configurer un serveur web dans son environnement de développement et de production.
En outre, il offre un moteur asynchrone basé sur Akka.
Dans notre cas, nous utilisons Play à travers son API scala pour mettre en place une application web à travers laquelle un manager peut envoyer des requêtes de prédiction pour ses clients et visualiser les résultats.
Vous l’aurez sans doute remarqué, mais nous adorons Scala. Pourquoi ? C’est somme toute assez simple :.
Nous aimons positivement cette phrase qui dit :
Il est fonctionnel, il est orienté-objet, il est …, il est tout ce dont vous avez besoin et plus encore !
Vous l’aurez compris, Scala est un langage de programmation orienté objet dans le sens où tout est objet et fonctionnel dans le sens où toute fonction est valeur. Scala dispose d’un excellent support de gestion des types et offre de plus l’inférence de ces types.
2. Les données utilisées pour entraîner le modèle (Marketing : utiliser le Big Data pour prédire le churn)
Comme souligné plus haut, nous mettons en place un modèle prédictif de l’attrition (“churn”) autrement dit nous proposons un modèle à même de prédire un certain score d’appétence du client à arrêter l’utilisation des services. Le modèle produit est issu d’un apprentissage supervisé et plus précisément d’une classification binaire et donc a nécessité des données labellisées (informant sur la variable à prédire).
CHAMP | DESCRIPTION |
Account Length | Equivalent de l’ancienneté du client dans le business |
VMail Message | Agrégation des messages vocaux du client |
Day Minutes | Cumul des minutes des actions du client durant le jour |
Eve Minutes | Cumul des minutes des actions du client durant la soirée |
Night Minutes | Cumul des minutes des actions du client durant la nuit |
International Minutes | Cumul des minutes des actions du client à l’international |
Customer Service Calls | Cumul des appels du client au service client |
Churn | Variable cible que l’on cherche à prédire, client churner ou pas |
International Plan | Est-ce que le client dispose du service International |
Vmail Plan | Est-ce que le client dispose du service de messagerie vocale |
Day Calls | Cumul des appels du client durant le jour |
Day Charge | Cumul du montant de crédit des actions du client durant le jour |
Eve Calls | Cumul des appels du client durant la soirée |
Eve Charge | Cumul du montant de crédit des actions du client durant la soirée |
Night Calls | Cumul des appels du client durant la nuit |
Night Charge | Cumul du montant de crédit des actions du client durant la nuit |
International Calls | Cumul des appels du client à l’international |
International Charge | Cumul du montant de crédit des actions du client à l’international |
State | État d’origine du client |
Area Code | Area Code |
Phone | Numéro de téléphone du client |
Ces données regroupent quelques catégories de données client couramment utilisées dans les entreprises de télécommunications, à savoir :
- Les données d’usage : toute donnée liée au client faisant référence à son utilisation des services, les appels,les messages vocaux, les services internet…
- Les données d’interaction : informant sur les interactions du client avec les services telles le service client, les centres d’appels, …
- Les données de contexte : toute autre donnée pouvant caractériser le client telles les données personnelles.
3. Architecture fonctionnelle
L’on peut remarquer que les données contextuelles telles state, area code et phone ne sont pas très significatives dans le problème que nous cherchons à résoudre. Ces variables ont donc été écartées du processus.
Les outils sont pour gérer les différentes tâches impliquées dans la mise en place d’un modèle en machine learning.
Nous n’aurons donc plus à travailler avec des valeurs catégorielles dans le processus de construction de notre modèle.
Comme dit plus haut, Spark fournit des outils pour gérer les différentes tâches impliquées dans la mise en place d’un modèle :
- Les Transformeurs sont utilisées lors de conversions ou modifications de features
- Les Extracteurs aident à extraire les features des données brutes
- Les Sélecteurs fournissent le moyen de sélectionner un nombre donné de features sur un plus grand ensemble de features
- Les Estimateurs constituent l’abstraction du concept d’algorithme d’apprentissage automatique qui est utilisé pour produire un modèle par application sur des données
III. Traitement des données et modélisation
Notre première étape consiste à faire quelques tâches exploratoires des données : statistiques numériques sur les différentes colonnes de variables numériques, étude de corrélation et d’intercorrélation et pouvoir de prédiction de chaque variable.
Ces tâches visent à fournir une assez bonne compréhension des données qui nous sont fournies.
Durant le prétraitement, nous effectuons le ‘bucketing’ des colonnes de variables continues. Le transformeur Bucketizer de Apache Spark transforme une colonne de features continues en une autre constituée de ‘buckets’ qui sont spécifiés par l’utilisateur.
On crée finalement un vecteur unique de features en utilisant le transformeur VectorAssembler de Apache Spark. Cela nous permet d’effectuer une réduction de dimensions en utilisant le transformeur PCA de Apache Spark.
1.L’Analyse en Composantes Principales (PCA) (Marketing : utiliser le Big Data pour prédire le churn)
L’Analyse en Composantes Principales (PCA) est une procédure statistique utilisant une transformation orthogonale pour convertir un ensemble d’observations corrélées en un ensemble d’observations non corrélées que l’on appelle composantes principales.
val assembler = new VectorAssembler(« Churn_Assembler »)
.setInputCols(assemblerColumns.toArray)
.setOutputCol(« assembled »)
stages :+= assembler
val reducer = new PCA(« Churn_PCA »)
.setInputCol(assembler.getOutputCol)
.setOutputCol(« features »)
.setK(reducer_num_dimensions)
stages :+= reducer
L’estimateur utilisée est la classe XGBoostClassifier du package classification de XGBoost. Il lui est donné les valeurs adéquates des paramètres obtenues après validation croisée.Pour explication de la signification de ces paramètres et plus, se rendre sur le site de XGBoost.
val xgbParam = Map(
« eta » -> booster_eta,
« max_depth » -> booster_max_depth,
« objective » -> booster_objective,
« num_round » -> booster_num_round,
« num_workers » -> booster_num_workers,
« min_child_weight » -> booster_min_child_weight,
« gamma » -> booster_gamma,
« alpha » -> booster_alpha,
« lambda » -> booster_lambda,
« subsample » -> booster_subsample,
« colsample_bytree » -> booster_colsample_bytree ,
« scale_pos_weight » -> booster_scale_pos_weight,
« base_score » -> booster_base_score
)
val xgbClassifier = new XGBoostClassifier(xgbParam)
.setFeaturesCol(reducer.getOutputCol)
.setLabelCol(« label »)
Le classifieur est alors ajouté à nos stages pour constituer le pipeline final :
stages :+= xgbClassifier
val pipeline = new Pipeline(« Churn_Pipeline »).setStages(stages)
Le modèle est obtenu par application de ce pipeline sur les données d’entraînement. Ce modèle obtenu est exporté sous forme d’un Bundle Mleap :
implicit val sbc : SparkBundleContext = SparkBundleContext()
.withDataset(model.transform(train))
(for (bundle <- managed(BundleFile(« jar:file:/tmp/churn-model-protobuff.zip »))) yield {
model.writeBundle.format(SerializationFormat.Protobuf).save(bundle).get
}).tried.get
Le modèle exporté sera utilisé dans notre application web pour effectuer la prédiction de churn pour les ‘nouveaux’ clients “en ligne”.
val dirBundle : Transformer= (for(bundle <- managed(BundleFile(« jar: »+cwd+« conf/resources/churn-model-protobuff.zip »))) yield {
bundle.loadMleapBundle().get.root
}).tried.get
val transformedLeapFrame = dirBundle.transform(leapFrame).get
2. Résultat : Ajout de clients et prédiction de leur risque de churn
Eventuellement, nous aurons besoin d’ajouter les informations des clients à ‘scorer’. Pour cela, on peut les ajouter individuellement ou en ajouter plusieurs à la fois en uploadant un fichier. Pour rappel, le modèle étant issu d’un apprentissage automatique, pour l’utiliser il doit lui être donné des données de même nom et contenant le même nombre de variables que celles utilisées lors de l’entraînement.
L’étape suivante après l’ajout de clients est la prédiction proprement dite en utilisant le modèle précédemment exporté.
Les données ci-dessous sont sorties par le modèle. Ils informent sur la probabilité et la confidence du client d’appartenir à chacune des deux classes autrement dit le score d’appétence d’un client à ‘churner’ ou non.

Affecter un score à vos clients pour prédire le churn et mener des actions sur-mesures
Dépendamment de ces valeurs, le client est prédit comme étant un potentiel ‘churner’ ou pas en respect au ‘threshold’ choisi.
Éventuellement ces prédictions peuvent être enregistrées dans une base de données pour des utilisations ultérieures.
Dépendamment de leurs scores d’appétence à ‘churner’, les clients peuvent être classés en clients à ‘haut risque’, à ‘risque moyen’ ou à ‘faible risque’.
Cette segmentation peut aider à rediriger les efforts marketing de rétention de manière plus précise vers les clients ciblés, comme l’envoi de messages ciblés :

En somme, le phénomène de ‘churn’ est omniprésent dans les télécommunications du fait notamment de la forte compétitivité qui y règne. Penser ce phénomène d’une manière différente en prônant la rétention pourrait s’avérer très bénéfique. A travers la prédiction, l’utilisation des techniques de machine learning couplées au Big Data peut aider à rediriger les stratégies marketing visant la rétention vers les clients qu’il faut.
Sur une autre dimension, en considérant qu’un client est influencé par son réseau (ensemble des autres clients avec qui il communique souvent), si certains membres de son réseau “churnent”, il est très probable qu’il suivra.
Considérer les informations non plus restreintes à son interaction avec les services mais y ajouter les informations liées à son interaction avec son réseau de clients peut contribuer à augmenter les performances et la précision d’un modèle prédictif de l’attrition client.
Anticiper le churn grâce au Big Data, c’est offrir au marketing une boussole pour mieux comprendre les comportements clients, agir de façon ciblée et renforcer la fidélité. Cette démarche s’inscrit dans une dynamique plus large de valorisation des données, où chaque information devient une opportunité d’action.
Baamtu accompagne les entreprises dans la mise en place de solutions sur mesure, depuis l’analyse des besoins jusqu’au déploiement de modèles opérationnels.
Découvrez donc notre article portant sur la gestion proactive de la relation client grâce aux chatbots, : CLIQUEZ ICI pour lire l’article.