Tools & Stacks

Seaborn Folium Python Pandas Matplotlib Numpy Scipy Sklearn Jupyter-Notebook
portfolio thumbnail

Segmentez les clients d'un site d'e-commerce

Détail du projet

Image : "E-Commerce Visa (Test tamron 17-50 2.8)" by Fosforix is licensed under CC BY-ND 2.0

 

Problématique

Olist est une marketplace brésilienne mettant en relation les vendeurs et les clients. Notre rôle est de comprendre les différents types de clients sur leur plateforme par une segmentation exploitable et facile d'utilisation par l'équipe marketing.

Nous avons à notre disposition une base de données relationnelle composée de 8 tables et qui contient les informations sur 99441 clients et 96096 commandes uniques.

 

 

 

Segmentation RFM

 

Récupération de l'identifiant, de la date et de la valeur de chaque commande. Après jointure sur l'identifiant client on peut calculer les variables RFM :

 

  • Récence : le nombre de jours depuis la dernière commande
  • Fréquence : le nombre de commande passées sur la période étudiée
  • Valeur Monétaire : totale du prix des commandes sur la période étudiée

 

 

Puis on calcule les scores RFM en se basant sur les quintiles de la distribution (à défaut d'une connaissance métier suffisante pour définir ce  qu'est une bonne récence ou fréquence).

 

Segmentation par KMeans à 5 et 7 clusters. On retiendra le modèle à 5 clusters, les clusters supplémentaires étant peu actionnables d'un point de vue marketing (Clients moyennements récents à valeurs moyenne).

 

 

Cette segmentation produit des clusters relativement bien défini mais très instables (même si ré-entraîner tous les mois ou tous les 3 mois) comme le montre l'évolution de l'Adjusted Rand Index.

 

 

 

Clustering

 

KMeans à 7 clusters

On obtient des clusters assez mal définis (Silhouette Score ~ 0.17) mais actionnables, par exemple ici les clients non locaux à faible valeur.

 

 

 

De plus cette segmentation est très stable dans le temps, d'autant plus si le modèle est ré-entraîné :

 

 

Clustering Hiérarchique

 

L'optimisation par GridSearch (méthode single linkage) sélectionne un modèle à 4 clusters mais le tracé d'un dendrogramme par méthode de Ward rejoint le modèle des KMeans avec un nombre de clusters optimal de 7. On peut montrer par projection dans le premier plan factoriel que 4 clusters obtiennent un meilleur score de silhouette mais des clusters inutilisables.

 

 

 

DBSCAN

 

Ce modèle est relativement stable mais peu exploitable, mais l'optimisation des ses hyperparamètres (min_samples et eps) n'entraîne la création que de 3 clusters, dont un d'outliers ne comprenant que quelques points.

 

 

 

Conclusion

 

Seuls les modèles KMeans et hiérarchique donnent des résultats exploitables. Toutefois le premier est 10 fois plus rapide à entraîner et cette différence ne fera qu'empirer avec l'ajout de nouvelles données. On retiendra donc le KMeans à 7 clusters mis à jours tous les 3 mois comme notre modèle de choix.

 

On obtient des clusters certes mal définis, mais exploitables par une equipé marketing.