[ Langage : Python, Frameworks : Pandas, TensorFlow, Keras ]
Contexte et Objectif :
Ce projet, proposé initialement sur Kaggle, s'articule dans le contexte d'une entreprise de type opérateur téléphonique / internet. Disposant d'un fichier client relatif à 5986 clients, l'objectif de ce projet est de permettre à cette entreprise d'améliorer sa capacité à déterminer quels clients ont le plus de risque de partir (en résiliant leur abonnement typiquement) afin de leur proposer une offre adaptée pour les faire changer d'avis.
Chaque ligne de ce fichier correspond à un client et comporte 22 colonnes explicitant diverses caractéristiques personnelles (genre, âge...) ainsi que certaines caractéristiques liées aux services qui leur sont délivrés. Parmi ces colonnes, la dernière d'entre elles, nommée "churn", relate le fait que le client correspondant soit parti ("Yes") ou non ("No") ; ce qui va nous permettre d'entraîner un algorithme d'apprentissage supervisé.
Enfin, il est à noter que ce fichier client comporte plus d'exemples de clients étant restés (73.4%) que de clients étants partis (26.6%). Cette proportion peut donc représenter le taux de réussite minimal (sans valeur ajoutée pour l'entreprise) que puisse avoir notre modèle prédictif : il lui suffirait de prédire systématiquement que le client va rester pour atteindre ces performances.
5 premières lignes du fichier client : 11 premières colonnes...
5 premières lignes du fichier client : 9 dernières colonnes
Méthodologie :
L'objectif global étant de produire un modèle prédictif d'une caractéristique à partir de milliers de données, la méthodologie employée s'est déclinée principalement en 3 grandes étapes :
Le chargement et le nettoyage du fichier client initial
L'analyse pré-traitement et la préparation des données pour la modélisation
L'implémentation et l'optimisation d'un algorithme de Machine Learning
Plan de développement suivi :
Sommaire extrait du Jupyter Notebook
Résultats de développement :
Le produit de cette étude est un modèle prédictif : un algorithme de type réseau de neurones capable de classifier chaque client selon qu'il devrait partir ou pas. Cet algorithme a été entraîné sur 4782 exemples issus du fichier client (environ 80% du total).
Parmi les 20% d'exemples restants dans ce fichier client, la moitié (597) a été regroupé dans un "dev set" et l'autre (597 également) dans un "test set" :
le "dev set", qui contient des exemples n'ayant pas été "vus" par l'algorithme lors de son entraînement permet de tester ses performances de prédiction dessus et d'orienter son optimisation afin qu'il atteignent les meilleures performances possibles sur cet échantillon sur lequel il n'est pas entraîné.
le "test set", quant à lui, est aussi un échantillon sur lequel l'algorithme ne s'est pas entraîné, mais qui n'a également pas servi à orienter son optimisation.
Architecture :
La phase d'optimisation nous a conduit à choisir une architecture de réseau de neurones relativement simple comportant 1 couche d'entrée avec 19 unités (correspondant aux 19 variables d'entrée retenues), 1 couche cachée composée de 25 neurones et une couche de sortie avec un neurone binaire prenant la valeur 0 pour prédire que le client ne part pas et 1 pour le contraire.
Hyperparamètres :
La phase d'optimisation nous a également conduit à choisir une fonction d'optimisation de type RMSprop, dont nous avons ajuster le taux d'apprentissage, couplée à une initialisation des paramètres du réseau de type "He Initialization" (He et al, 2015). Enfin, pour éviter un phénomène de surajustement des paramètres à l'échantillon d'entraînement ('training set'), nous avons retenu une régularisation de type l2 et ajuster en conséquence son taux de régularisation.
Performances finales :
Les taux de réussite obtenus avec ce modèle prédictif sur les différents échantillons sont les suivants :
82.39% sur le training set
81.91% sur le dev set
79.40% sur le test set
Conclusion & Discussion :
Cet algorithme permet à l'entreprise de prédire avec un taux de réussite supérieur de 6% (si l'on se réfère uniquement au 'test set') aux performances minimales attendues. Bien qu'il puisse sembler ne pas être extrêmement performant, il remplit sa mission d'améliorer la capacité de prévention des départs clients de l'entreprise.