Par Houssame Berkia, Florian Caringi, Yann Feunteun, Toufik Laichaoui, élèves du Parcours Data Science de l’IMT Atlantique.
Yelp est une entreprise créée en 2004 sur le marché de la recommandation. Les utilisateurs de Yelp, nommés les Yelpers, peuvent laisser des commentaires et des notes sur les différents commerces présents dans l’application en se créant un compte sur l’application. Ainsi les Yelpers ont accès aux évaluations et aux descriptions via l’expérience d’autres Yelpers. Chaque gérant de commerce (ou dirigeant) peut créer un compte gratuit pour publier des photos et envoyer des messages à ses clients. Yelp gagne de l’argent en vendant des publicités aux commerces de proximité. Elles sont clairement identifiées « Annonces Yelp » sur le site. Il y a un peu plus de 121000 publicités sur la plateforme aujourd’hui. Les commerces-annonceurs ne peuvent ni modifier les avis ni changer leur ordre d’apparition. De plus, Yelp possède en son sein un logiciel automatisé pour recommander les avis les plus utiles et fiables pour sa communauté, parmi les millions d’avis existants.
Yelp fait face à la concurrence des géants du web (google et facebook avec des services pros), de Tripadvisor et aux différentes communautés ou plateforme sur la recommandation collaborative. Le nombre de clients n’augmentant pas aussi vite que la concurrence, Yelp veut tout d’abord fidéliser sa communauté existante. Le prix de la publicité vendu aux commerces dépend de la visibilité que Yelp peut proposer à ces commerces et donc du nombre de Yelpers actifs sur la plateforme. Yelp doit trouver le moyen de garder ses bénéfices malgré un coût d’acquisition de plus en plus élevé d’une nouvelle clientèle.
Une des solutions est une des stratégies de génériques de Porter : se différencier par rapport à la concurrence sur les services proposés. Pour se faire, Yelp a lancé la réalisation d’une étude par notre groupe.
Pour mener à bien cette étude nous avons décidé d’utiliser une méthode pour ce projet de data-mining nommée CRISP-DM (Cross-Industry Standard Process for Data Mining). En tant que méthodologie, CRISP-DM comprend des descriptions des phases typiques d’un projet et des tâches à réaliser lors de chaque phase, et une explication des relations entre ces tâches. En tant que modèle de processus, CRISP-DM offre un
aperçu du cycle de vie d’un projet de data mining. Il y a 6 phases distinctes dans cette méthode. Une phase de compréhension du besoin métier, puis une autre pour comprendre les données fournies, ensuite préparer les données pour les utiliser lors de la phase de modélisation, et enfin une phase d’évaluation par rapport aux besoins métiers avant la phase de déploiement. Ces phases vont être le vecteur de présentation du projet dans cet article !
Compréhension du métier
Des objectifs commerciaux ont été définis pour répondre à cette problématique de différenciation par rapport à la concurrence :
- Sauvegarder la communauté de Yelpers
- Rendre plus user friendly l’application
- Augmenter la communauté de Yelpers
Pour pouvoir évaluer le projet des critères de réussite ont été définis :
- Diminuer le taux de churn de 10%
- Augmenter le taux d’acquisition de 5%
- Respect délai et coût
Yelp est une société habituée à avoir dans son sein de l’expertise en data-mining pour améliorer la pertinence du contenu et cibler au mieux la publicité sur la plateforme. De même, l’entreprise a déjà lancé de nombreux concours sur des problématiques variées en data-mining. Nous allons travailler en collaboration avec les experts en data-mining de Yelp et le pôle marketing. Yelp ayant plus de 12 ans d’existence et une grande communauté de Yelpers et de business, notre équipe dispose de nombreuses données bien formalisées. Pour ce projet seulement une partie des données sera étudiée. Toutefois, le programme pourra être étendu aux autres données si l’étude est une réussite. Enfin, la société ne prend pas beaucoup de risques mis à part le temps consacré par les experts de Yelp à travailler en collaboration avec notre équipe. L’entreprise, ayant souvent recours à des compétitions en ligne avec des récompenses, pourra arrêter l’étude si le délai n’est pas respecté pour faire passer le projet en mode compétition.
Les objectifs commerciaux du projet en commun avec notre équipe et les experts de Yelp ont été traduits en objectifs Data-Mining :
- Définir une sous-catégorie de commentaires pertinente pour vérifier la véracité des catégories choisies pour les labelliser avec labels: Food, Service, Worthiness, Ambiance
- Puis labelliser des commentaires avec les labels définis
- Puis appliquer des méthodes d’apprentissage supervisées (méthode qui apprend par rapport à un jeu de données et applique après ce qui a été appris) sur la sous-catégorie de commentaires, tester la performance de chacun pour choisir la meilleure
- Bilan à réaliser avec la direction marketing pour savoir si on réitère le processus
- Si bilan positif, réitération à d’autres sous-catégories
Pour aller plus loin, il nous faut maintenant comprendre les données fournies…
Compréhension des données
Nous avons pu travailler sur un dataset fourni par Yelp comprenant des données assez diversifiées. Il comprend plus de 8 millions de lignes qui concernent plus de 77000 commerces, avec des informations sur les caractéristiques de l’établissement comme l’ambiance, le service, la nourriture dans le cas des restaurants, etc.
Comme expliqué plus tôt, nous nous intéressons à classifier des commentaires. Pour cela une première étape est d’explorer les données sur les commentaires afin d’en juger la qualité. On retrouve alors 1980658 commentaires avec des informations sur le rating de chaque commentaire, à quel business il se rapporte, quel utilisateur l’a publié, etc.
Notre but est d’extraire des variables sur lesquels entraîner un modèle d’apprentissage (nous détaillerons cette partie-là par la suite). Il était donc nécessaire de savoir si nous disposons de commentaires de longueur suffisante.
Nous pouvons voir que la plupart des commentaires ont une longueur supérieure à 100 caractères. On peut en conclure que les commentaires sont de longueur suffisante pour pouvoir extraire une information pertinente.
Aussi, à la lecture des commentaires, il n’est pas évident de savoir pourquoi un utilisateur a préféré noter tel commentaire en quatre étoiles plutôt qu’en cinq, ou en deux étoiles plutôt qu’en une, c’est pour cela qu’on a préféré ne pas tenir compte du nombre d’étoiles attribuées à un commentaire pour notre démarche.
Pour nous atteler à la création d’un modèle d’apprentissage, nous devons préparer les données pour réaliser l’apprentissage sur un choix de données pertinent et ainsi réaliser des itérations sur le projet de manière intelligente…
Préparation des données
Les données sur lesquelles on a travaillé durant ce projet proviennent d’un dataset que Yelp a mis à disposition pour le challenge. On s’est proposé, dans un premier temps, de restreindre notre étude à une seule des catégories de restaurants présents dans nos données. Dans notre cas, la catégorie ayant le plus de commentaires est la catégorie des restaurants mexicains; notre étude s’est donc portée sur cette partie-là du dataset.
Afin d’avoir notre dataset pour l’étude, il nous a fallu faire une jointure entre les tables businesses et reviews du dataset. Nous avons ensuite conservé uniquement les attributs sur lesquels on va faire notre apprentissage (les commentaires) et on a créé quatre variables de sortie pour la catégorisation (nourriture, service, ambiance et rapport qualité-prix).
Dans le but d’avoir des données sur lesquelles on peut entraîner notre modèle, on devait labelliser à la main un minimum de reviews. Cependant, sachant que cette partie de notre étude peut être vraiment longue et n’ayant pas beaucoup de temps pour mener à bien le projet, il nous fallait trouver une autre solution. Nous avons donc trouvé un dataset labélisé de Yelp qui convenait très bien à ce qu’on voulait faire. En effet, il était constitué en prenant 10.000 commentaires aléatoirement dans le dataset pour avoir finalement, après nettoyage, 9.000 commentaires labellisés. Les mots les plus fréquents dans tous les commentaires ont été pris afin de tester leur présence ou non dans les commentaires à labelliser afin de constituer nos attributs en entrée. Nos attributs de sorties sont les catégories listées auparavant. Tous nos attributs dans notre table finale sont des attributs booléens (1 ou 0).
Avec la récupération d’un dataset pertinent, nous pouvons nous atteler à tester des modèles paramétrables ou non…
Modélisation
Après avoir vérifié quelques hypothèses lors de l’étape précédente (pas de données manquantes et encodage binaire des features) il convenait de déterminer le type de problème que nous devions résoudre. Ici il s’agit d’un problème de classification multi label. En effet, une review peut être classée dans plusieurs catégories différentes en même temps. Ainsi nous avons choisi les algorithmes les plus performants et les plus utilisés pour ce type de situation. Il s’agit du Random Forest, Gradient Boosting, Support Vector Machine et Naive Bayes.
Dans l’optique de simplifier le problème initial, nous avons choisi d’entraîner des classifieurs binaires, un pour chacune des catégories. Ainsi une review pourrait bien appartenir à plusieurs catégories. Nous avons répété cette opération sur les quatre algorithmes sus-cités afin de les comparer.
Nous avons choisi séparé le dataset d’origine comme suit: 80% des données pour l’entraînement des modèles et 20% pour le test.
Nous avons choisi la précision comme mesure de performance des modèles. La précision sera définie comme le pourcentage du nombre de reviews correctement classées sur le nombre de reviews évaluées. La figure suivante présente les résultats obtenus sur les données de test, après entraînement.
Algorithme | Random Forest | Gradient Boosting | SVM | Naive Bayes |
Précision | 71% | 75% | 62% | 54% |
Nous retiendrons le Gradient Boosting, ses performances sur le critère mesuré étant plus élevées.
Deux étapes sont primordiales pour terminer cette première itération …
Évaluation
Pour réaliser l’évaluation de la première itération du projet, nous avons pensé à un test sur groupe de population pour voir un changement de comportement par rapport à la plateforme sans et avec. Cette méthode se nomme l’A/B testing. De plus, nous pensons à un autre test en gardant pendant 1 mois une plateforme différente pour les utilisateurs anglophones pour évaluer le taux d’acquisition. Yelp est une société ayant l’habitude des projets de Data-Mining avec la méthode CRISP-DM. Notre équipe a dû se familiariser avec cette nouvelle méthode. Nous avons été hésitants au début sur les “retours arrière” possibles dans le processus. Par contre, comme toute méthode agile, nous avons bien compris l’intérêt d’un processus cyclique pour pouvoir fonctionner en itération du modèle sur des sous-catégories du dataset. Cette méthode a permis à notre équipe et à Yelp de comprendre les points suivants :
- l’exploration des données est une étape primordiale pour pouvoir choisir correctement les sous-catégories utilisées pour la modélisation
- la préparation des données n’a pas été simple, mais cette étape est primordiale pour pouvoir avoir les données choisies dans la modélisation
- le besoin métier ne doit pas être éclipsé à cause des difficultés techniques et le travail sur les données
- la phase de test à la fin de la première itération doit être menée rigoureusement pour savoir si notre première idée répond aux objectifs commerciaux.
Si l’évaluation est positive, nous nous devons de déployer la solution en collaboration avec les métiers nécessaires…
Déploiement
Pour réussir un déploiement, nous devons collaborer et donner les informations nécessaires aux personnes concernées dans le projet.
- Les décideurs devront être informés des changements sur la plateforme web, sur l’application mobile et le changement dans la structure de la base de données. En plus de l’utilité de ces changements. Si les résultats de l’étude sont jugés concluants, nous devons collaborer et informer le personnel suivant :
- Les experts en Data-Mining devront mettre en place le modèle de catégorisation des commentaires en fonctionnement pour les nouveaux commentaires
- Les experts en base de données devront être informés du changement de la base de données pour mettre en place la nouvelle base.
- Les développeurs web devront incorporer la nouvelle organisation des commentaires pour les commerces sur la plateforme web et récupérer les nouvelles infos de la base.
- Les développeurs de l’application mobile devront incorporer la nouvelle organisation des commentaires sur les commerces et récupérer les nouvelles données de la base.
- Le pôle communication et marketing devront informer les Yelpers des changements apportés et mettre en avant cette différenciation verticale par rapport aux applications concurrentes
Au niveau surveillance, les tâches seront :
- Surveillance de la plateforme web et de l’application mobile pour vérifier que les utilisateurs ont les commentaires catégorisés pour les commerces.
- Vérifier que les nouveaux commentaires sont correctement labellisés
Au niveau de la maintenance, les tâches seront :
- relancer le modèle avec les données récentes régulièrement avec une fréquence à définir.
Ainsi, la première itération s’achève. Si le résultat est probant, les décideurs peuvent décider de relancer d’autres itérations sur un autre jeu de données ou même changer la stratégie de data mining. Le but de la méthode CRISP-DM est de pouvoir adapter le projet et apprendre de chaque itération pour aller plus vite.