You are currently viewing Systèmes de recommandation

Systèmes de recommandation

Alors que les cas d’usage révolutionnaires promis par les progrès récents en machine learning, telle la voiture autonome, ou l’aide au diagnostic médical sont encore à l’état de balbutiement, nous explorons aujourd’hui un cas d’usage mature qui bénéficie directement de ces progrès : les systèmes de recommandation.

Principes d’un système de recommandation

Au sens strict, un système de recommandation est un système de filtrage de données qui classe des objets en fonction de leur pertinence pour l’utilisateur. Il construit pour cela un modèle des préférences de l’utilisateur, afin de prédire la « note » que l’utilisateur attribuerait à chaque objet. La recommandation finale consiste à conseiller l’objet le mieux noté.

Les systèmes de recommandation ont envahi de nombreux domaines : ils sont aujourd’hui utilisés par les plates-formes de divertissement (pour suggérer des morceaux de musique ou des films), les réseaux sociaux (pour mettre en relation des personnes susceptible de se connaître), les commerces en ligne (pour suggérer des produits en fonction de comportements d’achat passés), mais on les trouve également dans des domaines plus experts (pour conseiller par exemple à des équipes métiers des collaborateurs ou des services pertinents).

Classiquement, les paramètres entrant dans la confection du modèle de préférences utilisateurs peuvent être de deux types :

selon qu’il proviennent des caractéristiques des objets à recommander eux-mêmes : on parle alors de content-based filtering. Cette approche consiste à modéliser explicitement la préférence des utilisateurs en utilisant l’historique de leurs notes des différents objets. L’idée derrière cette approche est que la pertinence d’un objet dépend de la relation entre ses caractéristiques et la « personnalité » de l’utilisateur (on parle parfois pour cette raison d’approche personality-based).

selon qu’ils proviennent des caractéristiques du réseau d’utilisateurs et de leurs interactions avec les différents objets. On parle ici de collaborative filtering. Dans cet ensemble de méthode, aucune hypothèse n’est faite sur les liens sous-jacents entre les utilisateurs et les objets : la recommandation est déduite uniquement de l’historique des interactions des utilisateurs avec les objets, auquel est appliquée une heuristique tirée de la structure du réseau d’utilisateurs ou d’objets. Un exemple très simple consiste à utiliser la similarité entre utilisateurs: si une personne A aime un objet apprécié également par B, alors A a plus de chance d’aimer un autre objet apprécié par B que par un utilisateur pris au hasard. Un exemple célèbre de cette approche est l’algorithme de recommandation d’Amazon : les consommateurs qui achètent A achètent B.

Au sens strict, un système de recommandation est un système de filtrage de données qui classe des objets en fonction de leur pertinence pour l’utilisateur. Il construit pour cela un modèle des préférences de l’utilisateur, afin de prédire la « note » que l’utilisateur attribuerait à chaque objet. La recommandation finale consiste à conseiller l’objet le mieux noté.

Les systèmes de recommandation ont envahi de nombreux domaines : ils sont aujourd’hui utilisés par les plates-formes de divertissement (pour suggérer des morceaux de musique ou des films), les réseaux sociaux (pour mettre en relation des personnes susceptible de se connaître), les commerces en ligne (pour suggérer des produits en fonction de comportements d’achat passés), mais on les trouve également dans des domaines plus experts (pour conseiller par exemple à des équipes métiers des collaborateurs ou des services pertinents).

Classiquement, les paramètres entrant dans la confection du modèle de préférences utilisateurs peuvent être de deux types :

  • selon qu’il proviennent des caractéristiques des objets à recommander eux-mêmes : on parle alors de content-based filtering. Cette approche consiste à modéliser explicitement la préférence des utilisateurs en utilisant l’historique de leurs notes des différents objets. L’idée derrière cette approche est que la pertinence d’un objet dépend de la relation entre ses caractéristiques et la « personnalité » de l’utilisateur (on parle parfois pour cette raison d’approche personality-based)
  • selon qu’ils proviennent des caractéristiques du réseau d’utilisateurs et de leurs interactions avec les différents objets. On parle ici de collaborative filtering. Dans cet ensemble de méthode, aucune hypothèse n’est faite sur les liens sous-jacents entre les utilisateurs et les objets : la recommandation est déduite uniquement de l’historique des interactions des utilisateurs avec les objets, auquel est appliquée une heuristique tirée de la structure du réseau d’utilisateurs ou d’objets. Un exemple très simple consiste à utiliser la similarité entre utilisateurs: si une personne A aime un objet apprécié également par B, alors A a plus de chance d’aimer un autre objet apprécié par B que par un utilisateur pris au hasard. Un exemple célèbre de cette approche est l’algorithme de recommandation d’Amazon : les consommateurs qui achètent A achètent B.

Pourquoi le Big Data et le Machine Learning ont changé la donne

Si les outils de recommandation ont commencé à être utilisés à l’échelle industrielle dès le début des années 90, ce sont les technologies du Big Data et la puissance des algorithmes d’apprentissage statistique qui en ont considérablement amélioré leurs performances. Bien que les deux approches décrites ci-dessus aient bénéficié des essors dans ces deux domaines, chacune ont leur spécificité et des défis propres :

  • l’approche basée sur le contenu nécessite de définir et cartographier un «espace des objets ». Pour cela, il faut vectoriser les objets, c’est à dire en convertir les caractéristiques en une suite de valeurs numériques appelées features. La préférence de chaque utilisateur peut ensuite être exprimée simplement comme un vecteur de poids représentant l’importance de chaque feature pour l’utilisateur. C’est là qu’interviennent les techniques de machine learning : alors qu’auparavant, les ressources computationnelles limitaient fortement les méthodes de calcul de ce fameux vecteur de poids, les algorithmes plus performants tels classificateurs bayésien, arbres de décision, ou réseaux de neurones artificiels font maintenant partie des outils statistiques standard en data science et permettent de modéliser finement la préférence utilisateur
  • l’approche de filtrage collaboratif présente aussi des défis statistiques, notamment pour le calcul des distances entre utilisateurs, la segmentation des individus en clusters cohérents, et leur actualisation en temps réel en fonction des préférences enregistrées. Mais elle souffre surtout d’une grande faiblesse, appelée problème du « démarrage à froid » : aucun modèle utilisateur/objet n’étant posé, un système purement collaboratif ne peut élaborer de recommandation pour un objet nouvellement introduit (n’ayant pas encore de notes) dans le système.

Aujourd’hui, les techniques modernes d’exploration (data mining) et de prédiction (machine learning), combinées à une infrastructure Big Data permettant l’exploitation de données massives, ont donné naissance à des stratégies hybrides pour contourner ce problème : la recommandation est élaboré à l’air d’un modèle sur mesure, empruntant aux deux types approches.

Beaucoup de cas d’usage d’IA appliquée dans l’industrie consiste justement en la spécification de ce type de modèle sur mesure, en s’appuyant sur la puissance de l’apprentissage statistique et des données massives pour apprendre l’importance de chaque paramètre.

Dans ce billet, nous explorons la première étape de la découverte d’un tel modèle appliqué à l’industrie du tourisme : la collecte des données et leur exploration, préalable à toute modélisation.

Cas d’usage : un outil de recommandation de séjour touristique

Les technologies du numériques ont changé la manière dont nous planifions nos voyages. En 2015, 71% des Français ont utilisé Internet pour rechercher des informations, planifier, ou réserver leurs séjours.

La diversité et la quantité d’information dématérialisée permettant aux voyageurs de préparer leur séjour sont colossales. Les « infomédiaires » (infomediary), ces sites web qui agrègent les informations et les avis des voyageurs sur les établissements et activités touristiques, ont un rôle déterminant dans le choix des touristes. Ces dernières années, nombres de ces sites ont ajouté des fonctionnalités auparavant réservées aux réseaux sociaux : les utilisateurs peuvent maintenant y renseigner un profil très complet, incluant un « profil voyageur », et leur « réputation » est évaluée en fonction de leur niveau de contribution.

L’objectif de notre projet était d’utiliser cette information pour mieux prédire la satisfaction voyageur, une première brique dans la construction d’un assistant intelligent pour la préparation de voyage.

Collecter, nettoyer, et stocker les données

Le framework Scrapy

Afin d’obtenir un matériau pertinent, nous avons extrait et agrégé les données d’un célèbre site de tourisme américain. Pour satisfaire à nos exigences d’open-source, de flexibilité, de portabilité, et de scalabilité, le framework Scrapy a été choisi. Scrapy est une suite logicielle développée sous Python pour la conception et le déploiement automatique de robots d’indexation. Cette suite logicielle très complète inclut notamment une chaine de prétraitement permettant le nettoyage des données brutes et leur formatage. Elle dispose aussi de connecteurs permettant l’intégration à des bases de données NoSQL ou à un broker Kafka. En bref, Scrapy facilite aussi bien le travail du développeur que celui du data scientist.

 

Data flow : de l’extraction à l’intelligence

Deux robots ont été développés pour capter deux sources d’information : le premier récupérait les informations (adresse, équipements et caractéristiques) et la popularité (classement et notes utilisateurs) des hôtels des dix plus importantes destinations touristiques urbaines en 2017. Le second robot agrégeait les reviews et profils des voyageurs y ayant séjourné. Les données extraites étaient stockées sur une base Mongo. Après un contrôle qualité (inspection pour d’éventuels doublons et aberrations) et un enrichissement limité, l’analyse a été faite sous Python.

Analyser les données

Faire parler la donnée exige au préalable d’en avoir une bonne vision : cette phase exploratoire est capitale pour évaluer la qualité des données, détecter des tendances, et formuler des hypothèses intéressantes guidant des analyses plus poussées. Python et ses librairies de data mining (Panda), de calcul scientifique (NumPy, SciPy), et de visualisation graphique (Matplotlib, Seaborn), fournisse des outils clés en main pour cette étape.

  1. Statistiques exploratoires

Un référencement inégal entre les destinations

Notre jeu de données contenait un total de 18550 hôtels inégalement répartis entre les destinations.

Quelques statistiques descriptives très simples permettent déjà quelques observations surprenantes : si le trio de tête Bangok/Paris/Londres se tient, Dubaï n’est pas du tout représenté à la hauteur de sa part dans le tourisme international (15,79 millions en 2017). De même les hôtels d’Istanbul sont surreprésentés dans notre jeu de donnée, tandis que les hôtels de New-York sont relativement sous-représentés.

Le graphique de droite révèle en outre qu’entre 8 et 20% des hôtels référencés dans chaque ville n’ont aucune activité sur ce canal web (aucune note, aucun commentaire client).

Qualité de l’hôtellerie : un biais général vers les bonnes notes, mais des disparités dans la distribution des notes

Quelle ville a la meilleure offre hôtelière ? De manière générale, en phase exploratoire, il est plus intéressant –et plus prudent- d’examiner la distribution des données brutes plutôt que de sauter trop rapidement à des statistiques récapitulatives qui, en réduisant le jeu à une mesure unique, éliminent de l’information potentiellement pertinente. Dans notre cas, résumer la qualité de l’hôtellerie de chaque ville par une tendance centrale (par exemple la moyenne ou la médiane) n’est pas adéquat : toutes les villes n’ont sûrement pas une offre hôtelière homogène, et ce sont justement ces variations qui peuvent signaler une différence de qualité de l’hôtellerie entre destinations. Ainsi par exemple, et pour le dire en termes statistiques, une variance des notes plus élevée dans une ville indiquerait une qualité d’hôtellerie plus fluctuante : le voyageur a plus de chance de tomber sur un très mauvais (ou un très bon) hôtel.

Examinons donc comment les notes des établissements se distribuent pour chaque ville. Pour cela, nous calculons des histogrammes représentant graphiquement la fréquence de chaque gamme de notes dans notre « population » d’hôtels. Chaque histogramme est accompagné d’une mesure de la moyenne et de l’écart-type (dispersion autour de la moyenne).

 

En considérant une note de 25 comme indicateur d’une qualité « moyenne », on observe que la plupart des hôtels sont de qualité correcte, centrée autour d’un score de 35. Tokyo ne faillit pas à sa réputation en présentant une offre hôtelière clairement au dessus, tandis que Kuala Lumpur est handicapée par plusieurs hôtels mal notés. Londres propose des hôtels de qualité plus disparate.

On observe une queue de distribution anormale dans cinq villes : Paris, Dubaï, New-York, Séoul, et Singapour. Ces villes semblent présenter une distribution bimodale, avec une gamme d’hôtellerie « classique » de bonne qualité, et une gamme de second choix comprenant des hôtels très mal notés.

Pour tester cette hypothèse, nous examinons la corrélation, pour chaque hôtel, entre la note et la popularité (mesuré par le classement ou rank sur le site). Si l’on vérifie bien qu’une corrélation existe entre la note d’un hôtel et son classement, quatre villes (Paris, Dubai, New-York, et Singapour) présentent clairement la distribution bimodale suspectée : plusieurs gammes d’hôtels coexistent donc dans notre set de données.

Différents profils voyageurs selon les villes

Certain type de voyageurs préfèrent-ils certaines villes ? Pour répondre à cette question, nous nous penchons à présent sur la répartition des profils voyageurs entre les trois villes « leader » du tourisme mondial : Paris, Bangkok, et Londres. Nous représentons sur des diagrammes en radar la proportion des différents traits de profil voyageurs pour chaque destination. Certains profils ont tendance à fréquenter certaines destinations : ainsi, Bangkok attire davantage de voyageurs cherchant des expériences luxueuse, alors que les visiteurs de Paris et Londres préfèrent vivre une expérience « auprès des locaux ». Les profils des visiteurs de ces deux villes sont assez similaires, même si Paris semble attirer plus d’amateurs d’architecture.

Les éco-touristes préfèrent-ils les hôtels éco-responsables ?

Pour aller plus loin, nous nous sommes demandés si les voyageurs se définissant éco-touristes avaient une préférence pour les hôtels éco-responsables. Si c’est le cas, cela pourrait se réfléter dans leurs notes : nous avons donc comparé les notes laissées par les éco-touristes aux hôtels éco-responsables, à celles laissées par des touristes lambda.

Seules trois villes comptent des hôtels respectant une charte écologique : Paris, Londres, et New-York. L’analyse ne portera donc que sur ces trois villes.

On n’observe aucune différence notable entre les notes laissées par les éco-touristes et les notes laissées par les autres touristes aux hôtels éco-responsables, tous niveaux confondus. Ainsi, le caractère éco-responsable d’un hôtel ne semble pas à première vue être un critère déterminant l’appréciation pour les touristes qui s’y déclarent pourtant sensibles. Ce résultat négatif est à prendre avec prudence cependant, étant donné l’échantillon limité.

Conclusion

Dans ce billet nous avons montré que la visualisation de données, première étape à toute exploration, permet déjà de commencer à poser des questions intéressantes et formuler des premières tentatives de réponse à une problématique data.

Dans le prochain article, nous approfondirons l’analyse des profils et nous nous demanderons si il est possible de segmenter des profils « types » pour prédire la satisfaction des voyageurs.

Benjamin R.