Cas clients
09.

Yves Rocher améliore la performance de ses scores grâce au machine learning

Des algorithmes de partitionnement pour améliorer le scoring
Le package « mlr » et un dashboard R markdown
Un déploiement sur Google Cloud Plateform
Expertise
  • Machine learning
  • Gradient boosting
  • GCP
La mission

Avec plus de 3500 boutiques, 30 millions de clientes à travers le monde, Yves Rocher est un géant de la cosmétique dont la stratégie marketing se décline autour d’une valeur mère : une relation client de proximité. Pour réduire le nombre de mailings papiers sans perdre sa performance commerciale, l’entreprise bretonne a fait appel à Datastorm. Objectif : explorer de nouvelles méthodes de scoring basées sur des techniques de machine learning.

N°1 de la cosmétique en France, Yves Rocher a su depuis des décennies instauré une relation de proximité avec ses clientes, notamment entretenue par des campagnes de mailing papier. Pour son marché français (700 boutiques, 8 millions de clientes), Yves Rocher génère ainsi une quinzaine de campagnes par an. Une stratégie marketing qui s’avère redoutablement efficaces : une majorité de clientes qui se présentent en boutique sont munies de ces courriers.

15 campagnes de mailing, 5 groupes de clientes constitués selon une segmentation RFM (habitudes d’achat) : Yves Rocher produit chaque année 75 scores dont l’entreprise a souhaité revoir la méthodologie avec deux objectifs :

  • Explorer des méthodes de machine learning permettant d’augmenter la performance des scores et ainsi réduire le nombre de mailings papiers sans perdre l’efficacité commerciale de ce canal.
  • Porter la méthodologie retenue sur Google Cloud Platform en lieu et place de la solution historique développée en SAS.

Etape 1 : refonte du score

CREATION DE NOUVEAUX AGREGATS

La méthodologie actuelle d’Yves Rocher repose sur la production de scores par régression logistique pour chacun des 5 segments de clientes et un regroupement saisonnier de campagne. Nous avons pour notre part travaillé sur les données agrégées de 2 segments correspondant à des clientes venant rarement en magasin.

Première étape : créer des agrégats plus riches à partir des données détaillées des transactions des clientes pour identifier des comportements d’achat plus fins.

Pour l’ensemble des nouveaux agrégats, plusieurs vues ont été calculées : annuelle, semestrielle et trimestrielle par rapport au mois de la campagne considérée, avec des évolutions annuelles, semestrielles et trimestrielles.

LE MACHINE LEARNING AU CHEVET DU SCORING

L’objectif étant de mettre en évidence le potentiel des algorithmes de machine learning sur la performance des campagnes, nous avons retenu les algorithmes de type « arbres de partitionnement », notamment connus pour apporter de bons résultats sur des problématiques similaires de scoring : random forests, gradient boosting et xgboost.

Ces différentes méthodes de machine learning ont été évaluées selon deux critères :

AUC : pour l’optimisation des hyperparamètres d’une même méthode. Les différences d’AUC entre les nouveaux modèles testés par rapport au modèle logistique initial étaient relativement faibles, de l’ordre du centième. Il paraissait cependant intéressant de regarder comment se répartissait la variable réponse par rapport aux valeurs du score.

Nombre de clientes retournées en magasin : (dont la variable réponse, Y, vaut 1) par tranche et selon les différents taux de ciblage des mailings (70, 80 ou 90 % de la population). En comparant une nouvelle méthode par rapport à la régression logistique, on la jugera meilleure si pour un pourcentage x de la population ciblée, i.e les x % des scores les plus élevés, on capte plus de clientes retournées en magasin (i.e Y=1). On regarde dans notre cas la performance pour des taux de ciblages allant de 70 à 90 % de la population, l’entreprise ayant l’habitude de cibler la quasi-totalité des 2 segments considérés.

La solution

APPORT DES NOUVEAUX AGREGATS ?

Les nouveaux agrégats combinés à ceux déjà utilisés par Yves Rocher ont considérablement augmenté la dimension des données d’entrainements (+1300 nouveaux agrégats construits). Nous avons eu recourt au modèle LASSO pour sélectionner les agrégats les plus significatifs et les réduire à environ 300. Cependant, malgré les nouvelles informations contenues dans ces agrégats, leur apport n’a pas amélioré le meilleur modèle retenu avec les agrégats d’origine d’Yves Rocher. C’était une piste intéressante à explorer dont le résultat confirme la bonne approche des gens du métier chez Yves Rocher.

APPORT DES NOUVEAUX MODELES ?

L’application de méthodes de machin learning en respectant un modèle par segment et par saison n’apportait aucun gain de performance. Cependant, en considérant un modèle sur toutes les campagnes et en ajoutant une variable de type « mois de la campagne », on observe un léger gain d’AUC.

Parmi les trois méthodes testées – random forests, GBM et xgboost – xgboost est celle qui améliore le plus le score d’origine. Les données d’origine comprennent 240 variables et à travers une méthode de sélection basée sur l’importance des variables, nous avons pu réduire les variables d’entrainement à 45 pour un même niveau de performance. Ainsi, une méthodologie à base d’un xgboost unique pour toutes les campagnes et pour ces 2 segments est plus performante que la méthodologie d’origine à base de régressions logistiques par sous-ensemble de campagnes et par segment.

Le résultat

LE PACKAGE R « MLR » ET UN DASHBOARD R MARKDOWN

Le tuning des hyperparamètres des méthodes a été réalisé grâce au package R « mlr ». Le package « mlr » a l’avantage de présenter un ensemble relativement complet de méthodes de machine learning, testables simplement et rapidement grâce à une syntaxe générique. Les résultats ont été restitués sous forme d’un dashboard R Markdown afin d’y inclure des graphiques et tables interactifs, favorisant leur appropriation et leur comparaison :

R markdown dashboard

Etape 2 : Déploiement sur Google Cloud Plateform

L’objectif était de transcrire le modèle livré en R à Python et d’accompagner sa livraison de notebooks Python permettant de relancer l’entrainement du modèle et l’optimisation de ses hyperparamètres. Les notebooks doivent être exploitables sur la plateforme Google Cloud Platform.

TRANSCRIPTION DES FONCTIONS EN PYTHON

Après avoir retranscrit chacune des étapes réalisées en R en Python :

  • Preprocessing des données ;
  • Division du jeu de données en train/test (en fonction de listes de mailings train et test) ;
  • Différentes options d’entrainement du modèle xgboost :
    • Avec un jeu d’hyperparamètres donné ;
    • Avec un ensemble de combinaisons d’hyperparamètres à optimiser avec hyperopt ;
  • Prédictions ;
  • Sauvegarde du modèle (et des prédictions) ;
  • Analyse du score avec calcul des tables de clientes scorées à 1 par tranche de vingtiles.

STRUCTURATION DU CODE EN NOTEBOOKS

Nous avons restructuré l’enchainement des scripts R en notebooks Python utilisables de manière indépendante pour chacune des étapes de la modélisation :

  • Un notebook d’optimisation des hyperparamètres ;
  • Un notebook d’entrainement pour un jeu d’hyperparamètres donnés ;
  • Un notebook de prédictions pour un jeu de test et un modèle donné ;
  • Un notebook d’analyse des scores.

La partie modélisation de cette étape a été très légère : nous avons uniquement ré-entrainé un modèle xgboost dans les mêmes conditions qu’en R. Seule la recherche d’optimisation des hyperparamètres est différente, nous avons utilisé ici la librairie hyperopt.

Le livrable à la fin de cette étape était donc un ensemble de notebooks ainsi que des scripts Python avec les mêmes fonctionnalités que dans les notebooks, plus faciles à lancer pour des traitements en masse.

Chaque notebook est lançable indépendamment, prenant en entrée un type de fichier (données, jeu d’hyperparamètre, modèles, prédictions) et renvoyant un objet sauvegardable au format pickle, et pouvant être utilisé en entrée du notebook suivant.

Les notebooks sont très détaillés et font office de documentation, notamment sur la méthodologie d’entrainement/optimisation des modèles et définitions des hyperparamètres à optimiser dans un modèle xgboost.