Système de recommandation : comment en créer ?
Sélectionnez un chapitre
Nos élèves en formation Fullstack, Elena, Charles, Clément, Maxime et Zahira vous présentent leurs projet finaux proposés par le partenaire professionnel, SALTO, service français de vidéo à la demande par abonnement, qui propose des films et des séries télévisées. L'enjeu de leur projet ? Mettre en place un système de recommandation permettant de proposer des contenus personnalisés à chaque utilisateur. Découvrez les outils, approches, algorithmes et techniques utilisés par nos élèves !
Qu'est ce que SALTO ?
Salto est une plateforme de streaming française disponible depuis le 20 octobre 2020. Elle est le fruit d’un partenariat inédit entre les trois géants de l’audiovisuel français : TF1, France Télévision et M6, pour faire face à l’émergence des plateformes de streaming en France, comme Netflix, Amazon Prime, OCS, Disney +, Canal + et ADN. Afin d'augmenter l’expérience utilisateur et le taux d’engagement des utilisateurs, l’équipe Salto nous a demandé de mettre un place un système de recommandation permettant de proposer des contenus personnalisés à chaque utilisateur.
Qu'est-ce qu'un moteur de recommandation ?
La recommandation est un système qui permet aux utilisateurs de rencontrer du contenu, dont ils ne sont pas au courant. Par exemple Spotify nous recommande des chansons chaque semaine, Amazon nous recommande des produits pour augmenter leurs ventes. Salto est un service client permettant d'améliorer le produit et faire de la plus-value pour les utilisateurs regardant les programmes télévision sur Internet.
Première approche : Content-based
Le content-based permet de voir le film et analyser si d’autres programmes sont similaires en sujet ou en popularité.
Deuxième approche : User-based
L’idée du user-based est de se poser les questions sur l’utilisateur en question , comme son âge, ses habitudes lorsqu' ils regardent la télévision. Le but est d’assembler les utilisateurs ensemble pour améliorer les recommandations de contenu.
Présentation du jeu de données
Le projet est composé d’environ 31 millions de lignes. Une ligne représente une session. Dès que l’utilisateur lance une vidéo cela crée une session. Les données étaient anonymisées, c’est pour cela que nous n’avions pas accès aux noms et prénoms des utilisateurs.
On pouvait récupérer à partir d’une ligne un certain nombre d’informations sur l'utilisateur, dont son genre, son âge, la date à laquelle il a regardé le contenu ainsi que l'outil qu’il a utilisé pour regarder le contenu que ce soit sur tablette, mobile etc. Bien également nous avons d'autres données concernant le programme qu’il a regardé, le genre du programme, à quel point il a regardé le programme. Si le chiffre de satisfaction est proche de 1 , cela veut dire que l'utilisateur a regardé en totalité le programme. Si le chiffre est plutôt proche de 0 , cela signifie qu’il n’a pas regardé le programme et la description du programme.
Le dashboard SALTO
Voici le dashboard avec quelques graphiques pour présenter nos données. En haut à gauche nous voyons la distribution de l’âge. On peut voir qu’il y a une forte disparité entre les genres avec beaucoup plus de femmes que d’hommes. Nous avons environ 70% de femmes et 50% d’hommes. Sur le graphique de droite représentant la distribution de l'âge, nous pouvons constater qu’il s’agit d’ une population plutôt jeune qui utilise Salto, entre 20 et 30 ans principalement.
Regardons le graphique en bas à gauche :
Le graphique représente le moment de la journée où les utilisateurs regardent le plus la plateforme. On voit que les utilisateurs regardent la plateforme en majorité plutôt le soir entre 19 et 23 heures, mais également le matin et en deuxième partie de soirée. Pour les appareils utilisés, la télévision est utilisée en priorité avec 36% d’utilisation.
En haut à gauche on observe le nombre de sessions par type de profil. Nous constatons qu’une grande majorité d'adultes sont sur Salto. Le graphique de droite indique le nombre de sessions ou les programmes jeunesses par type de profil. On en conclut que la majorité des adultes regardent les dessins animés.
Le graphique du bas, représente le nombre de sessions par format de vidéo et par genre. Nous pouvons constater que c'est le preview, les avant-premières des programmes qui sont mis en avant et qui sont le plus regardés. Les divertissements et les séries ont le plus de succès.
Sur le quatrième graphique de gauche, nous observons le nombre de sessions par genre de programme. Le top sont les séries, le divertissement et les jeunesses. Ce sont les programmes les plus regardés. Le graphique de droite quant à lui indique le nombre de programmes par genre , comme le nombre de programmes dans le catalogue Salto et le top 3 sont les séries, les jeunesses et les documentaires. Nous pouvons ajouter plus de divertissement et de séries et mettre en place moins de documentaires dans le catalogue Salto par exemple.
L’objectif est de recommander des programmes similaires à un programme donné. Pour cela nous nous basons sur trois axes :
Tout d'abord il s’agit de recommander des programmes qui ont le même genre de contenus. Par exemple pour un divertissement de téléréalité, il s’agit de proposer d’autres divertissements de téléréalité.
Nous pouvons analyser le taux d’engagement. Cela consiste à voir les utilisateurs qui sont engagés dans un programme. Regardent-ils beaucoup ce programme ou apprécient-ils beaucoup ce programme ?
La dernière approche est celle de la similarité des descriptions, où on va étudier les synopsis de chacun des programmes et appliquer un NLP par rapport à ces descriptions. Le NLP est une branche du Machine Learning qui étudie les textes. On utilise ce modèle pour trouver la similarité entre les programmes.
L'application Salto : recommandation de programmes
Nous retrouvons ici une liste de tous les programmes proposés par Salto. Prenons par exemple les Marseillais, un divertissement de sous-genre téléréalité. Notre algorithme nous renvoie 13 programmes similaires aux Marseillais. Il nous propose uniquement des divertissements de type téléréalité. Ce qui est intéressant et de croiser les Marseillais avec d’autres sous-genres comme la série-téléréalité. L'algorithme nous recommande les Marseillais à Dubaï , Manon & Julien et les Marseillais contre le reste du monde par exemple.
Dans cette liste nous avons deux colonnes, dont le taux d'engagement qui est le rapport entre les personnes qui ont vraiment regardé le contenu et les personnes qui ont regardé le contenu, mais qui ont abandonné. Dans ce cas, il est intéressant de regarder les programmes qui engagent vraiment l’utilisateur. La deuxième colonne est la similarité de la description avec un indice allant de 0 à 1 pour savoir si la description est similaire entre par exemple les Marseillais à Dubaï et notre programme les Marseillais. Avec l’indice de 1, la description est quasiment identique.
Comment peut-on calculer ce taux d’engagement ?
Le calcul de ce taux est basé sur le temps de visionnage d’un programme. Pour chaque programme et pour chaque utilisateur, on a regardé combien de temps il a passé sur le programme. Si l’utilisateur passe moins de deux minutes sur un programme, on considère que c’est une vue non-significative.
Tous ces critères sont totalement empiriques pour déterminer si le programme est engageant. Pour savoir si l'utilisateur est engagé dans le cas d’un film, on considère que si il a regardé plus de 75% du film est que le film a plutôt été aimé et pour une série il faut avoir vu plus de 4 épisodes. Pour pratiquer la recommandation pour chaque programme, on utilise le NLP faisant partie du Machine Learning.
On utilise la méthode IDF qui décrit l’importance d’un mot dans la description, tout autant que la fréquence d’un mot dans la description. Dans le but de mesurer en quoi deux descriptions sont similaires, on utilise la distance cosine qui compare deux descriptions de nos programmes basées sur l'angle de nos vecteurs. Le modèle est basé sur le TF-IDF.
Nous travaillons également avec la méthode du word2vector qui comprend la définition d’un mot basé sur le contexte autour de ce mot qui se transforme en vecteur et avec la cosine distance.
L'approche “ User-based”
L’objectif est de regrouper des utilisateurs par rapport à leurs caractéristiques personnelles, afin de leur proposer du contenu pertinent. L’approche est centrée sur l’utilisateur lui-même. L'objectif est de proposer du contenu pertinent par rapport à ce qui le caractérise. On a défini 5 variables pour créer des groupes de profil, selon l’âge, le genre et la population d’une ville.
Nous avons remarqué que des personnes de grandes villes ne regardent pas forcément le même contenu que les personnes habitant des petites villes. Nous avons deux autres variables liées aux préférences et habitudes de consommation, notamment les appareils utilisés comme la tablette, le mobile, les télévisions et les moments de la journée, si une personne regarde plutôt le matin, le midi ou le soir.
Pour créer les groupes d’utilisateurs, on utilise un algorithme de Machine Learning qui s’appelle DBSCAN et qui s’appuie sur la densité. Sur le graphique de gauche, nos points représentent nos utilisateurs. On va définir deux paramètres importants, dont l'epsilon, le rayon et un minimum sample, un border point et les outliner pour créer nos clusters assez homogènes.
Chercher les meilleurs clusters : les hyperparamètres
On a joué avec 50 milles données. Dans ces graphiques on voit en colonne, chaque cluster qu’on a sorti avec le modèle de clustering, chaque groupement de personne et combien de personnes dans chaque cluster. Si on regarde en haut à gauche dans le graphique bleu, on voit qu’il y a 25 clusters. On a opté pour celui en bas à gauche en vert pour sa répartition. A droite on à un epsilon pour un cluster plus grand.
On a pu constaté qu'il y a beaucoup plus de femmes dans les données que d’hommes. Prenons 15 dimensions de variables ensemble et cherchons les zones plus denses de ces données. L’idée avec ces clusters est de voir quels sont les programmes les plus regardés au total de seconde.
Les limites du projet
Pour tous les systèmes il y a un intérêt à utiliser la recommandation programmée. Les limites soulèvent les questions lorsque les préférences évoluent.
Comment l’algorithme gère l’évolution des préférences ? Comment recommander du contenu à des nouveaux utilisateurs pour lesquels nous n'avons pas d’informations sur leurs préférences ?
On a aussi une limite de l’algorithme lorsqu’il s’agit de définir le niveau d’appréciation d’un contenu. On pourrait notamment ajouter un score de satisfaction. L'effet bulle, attention à l’hyperpersonnalisation ! Il serait préférable de ne pas recommander les mêmes contenus, mais de sortir du contenu de temps en temps avec une recommandation semi-programmée.
Les perspectives de SALTO
Content-based : On peut améliorer la robustesse de notre modèle en servant une variable supplémentaire qui est le score de satisfaction et pour le modèle NLP on pourrait améliorer ce modèle en combinant le word2wec et le TF-IDF pour améliorer les résultats.
User-based : L’idée est d’intégrer d’autres variables comme des données sur le revenu.
Complémentarité des deux approches : Ces deux approches sont tout à fait complémentaires. Nous pouvons pour cela proposer une approche user-based, lorsque l'utilisateur se connecte à son compte sur la home page et lorsqu’il navigue sur l’interface du programme sélectionné, nous pouvons dans ce cas proposer l’approche content-based.
Comment évaluer la pertinence du système ? Il faudrait soit mettre en place une mesure du degré de satisfaction, comme le score de satisfaction en fin de visionnage ou mesurer les impacts de la mise en place du système de recommandation comme avec les KPI à suivre comme la durée de visionnage, le taux d’engagement, la croissance du chiffre d’affaires et la mise en place d’un A/B testing ou d’une enquête de satisfaction.
Si vous souhaitez, comme nos élèves en Fullstack vous former à la Data et obtenir de telles compétences sur l'ensemble du pipeline Data, n'hésitez pas à regarder nos formations Data.