Comment fonctionne l’algorithme de Spotify ?

On t'explique ce qui se cache derrière l'algorithme qui connait mieux tes goûts que personne !

2024-08-15

Tech

Si tu es un passionné de musique et de technologie, tu t’es sûrement demandé comment l'algorithme de Spotify trouve exactement ce que tu veux écouter. Bien sûr, le secret du code complet est bien gardé, mais on va t'expliquer ici les principes généraux.

🎯 L’engagement pour objectif

L’objectif principal de l’algorithme de recommandation est de maximiser le temps d’écoute en proposant des morceaux qui captivent l’utilisateur, que ces morceaux soient déjà connus ou non.

Cela se traduit par une quête incessante pour offrir des recommandations qui boostent ton engagement. L’algorithme va tout faire pour te faire streamer plus de 30sec, liker, partager, ajouter en playlist les recommandations qu’il va te proposer.

🐙 La pieuvre de Spotify

Spotify utilise un algorithme dit “d’apprentissage par renforcement” appelé BaRT pour “BAndits for Recommendations as Treatments”. C’est un algorithme de la famille des “Multi-armed Bandits”.

Pour simplifier on imagine souvent une pieuvre dans un casino, avec plusieurs machines à sous au bout de chaque bras. Chaque machine a une probabilité différente de donner un gain, mais ces probabilités sont inconnues de notre pieuvre... Le but est de tester progressivement ces machines pour gagner le plus d'argent.

Illustration d'une pieuvre avec différents choix

Pour comprendre l'algorithme de Spotify, il suffit de remplacer les machines à sous par des morceaux de musique et les gains par l'engagement des utilisateurs. La pieuvre est alors l’algorithme de recommandation, qui va devoir apprendre des différents engagement d’utilisateurs comment recommander tel ou tel morceau.

📊 Les données

Pour faire des recommandations pertinentes, l’algorithme a besoin de données. Heureusement, Spotify en dispose d'une quantité énorme, incluant :

1️⃣ Les interactions des utilisateurs :

👂 Implicites : écoutes, skip, écoutes en boucle

👍 Explicites : likes, notes, playlists

2️⃣ Les profils des utilisateurs :

👤 Données démographiques : âge, genre, localisation…

📊 Données comportementales : historique d’écoute, genres préférés, artistes favoris…

Données temporelles : heure de la journée, jour de la semaine…

3️⃣ Les données sur la musique elle-même :

🎵 Métadonnées classiques : genre, artiste, date de sortie…

🔍 Analyse des morceaux : audio, paroles…

👥 Comportement des autres utilisateurs

🎵 Analyse des morceaux

Pour recommander efficacement des morceaux, Spotify analyse minutieusement chaque piste. Cela inclut des représentations détaillées des paroles et des éléments audio sous forme de vecteurs, c’est-à-dire des tableaux numériques.

Sont aussi ajoutées des variables descriptives comme par exemple : 

💃 La "Dançabilité" : Peut-on danser sur ce morceau ?

L’Énergie : Est-ce un morceau tonique ou une douce mélodie ?

😊 La Valence : Est-ce un morceau positif ou triste ?

🎵 La segmentation rythmique : Comment est structuré le rythme du morceau ?

Illustration d'un exemple de segmentation rythmique

🕺 Analyse du comportement des autres utilisateurs

Mais ce n’est pas tout. Ce qui fait vraiment la différence, c’est l’analyse du comportement des autres utilisateurs. En fait, c’est le cœur même du système de recommandations !

L’idée est de créer une “matrice” (ou tableau) où chaque ligne correspond à un utilisateur et chaque colonne à un morceau. Chaque utilisateur attribue une note à un morceau en fonction de son engagement — que ce soit des streams, des likes, ou autre. Les morceaux que les utilisateurs n’ont pas encore écoutés restent alors des cases vides.

Tableau simplifié du problème Utilisateur/Morceau

L’objectif est de remplir ces cases manquantes pour estimer ce que chaque utilisateur pourrait penser de chaque morceau. Une fois ces estimations obtenues, il suffit de recommander les morceaux avec les meilleures notes prédites.

Pour y parvenir, on utilise une technique appelée “factorisation de matrice”. En gros, l’algorithme décompose notre grand tableau en deux tableaux plus petits : un pour les utilisateurs et un pour les morceaux. Les chiffres dans ces tableaux n’ont pas de signification concrète mais aident à représenter les morceaux grace aux comportement des utilisateurs, et les utilisateurs grace à leur consommation. Lorsqu'on multiplie ces deux tableaux, on re-obtient le tableau précédent, mais cette fois avec toutes les cases remplies.

C'est donc le petit tableau spécifiques aux morceaux qui est utilisé par notre pieuvre, pour interpréter chaque morceau par rapport aux comportement des utilisateurs.

Factorisation du tableau précédent en représentations distinctes pour les utilisateurs et les morceaux

Il existe tout un tas de méthodes pour y arriver, certaines plus précises que d’autres. Dans l'exemple précédent on pourrait s'attendre à voir un score élevé attribué à Jules et Freeze Rael puisqu'il a une consommation qui semble proche de celle de Maxime. En revanche Michel qui aime Allumer le feu, semble avoir une consommation différente des deux autres. Pour autant il pourrait très bien aimer les 3 morceaux ! Un tableau bien plus grand est nécessaire pour que les recommandations soient fines.

Et avec plus de 600 millions d’utilisateurs et plus de 100 millions de morceaux, tu imagines bien que Spotify doit jongler avec une complexité énorme pour mettre tout ça en place ! Parmi ces méthodes il utilisent surement : 

🌍 Une segmentation des utilisateurs par “marchés” (ou pays)

🔄 Des algorithmes dits “on-line” pour re-calculer seulement une partie de l’algorithme lorsqu’il y a des nouveaux utilisateurs ou des nouveaux morceaux

🖥️ Une immense infrastructure de calcul

🐙 Retour à notre pieuvre

Grâce à toutes ces données d'une part, et aux retours d'utilisation d'autre part, l’algorithme améliore constamment sa manière de choisir les morceaux chaque jour. Il devient de plus en plus précis grâce à aux interactions qu'on lui donne en écoutant ses recommandation, et enregistre toutes ces connaissances dans un modèle interne.

Pour mieux comprendre comment il apprend, prenons l’algorithme le plus simple “epsilon-greedy”, la pieuvre va simplement choisir : 

🎲 Au hasard pendant une certaine proportion de fois (epsilon)

📈 La plus haute probabilité de gain selon ce qu’elle a appris dans le reste des cas (1-epsilon)

C’est la méthode la plus simple mais il existe aujourd’hui plein de stratégies plus fines pour que la pieuvre apprennent le plus efficacement possible.

Mais donc au début, cet algorithme devait sûrement faire des erreurs, non ? Bonne question ! Pour éviter celà au départ, l’algorithme devait probablement privilégier des choix "sans risque", en recommandant des morceaux déjà connus ou très populaires pour éviter de proposer des choses aléatoires. Avec le temps, l’afflux massif d’utilisateurs et le travail acharné des ingénieurs de Spotify ont permis à l’algorithme de se stabiliser et de proposer des recommandations vraiment fines, comme celles que nous connaissons aujourd’hui.

Illustration de la culture d'inénieur chez Spotify

La réalité est toujours plus complexe qu’un simple article ne peut le refléter. Il existe probablement plusieurs pieuvres différentes, utilisant surement des centaines d’algorithmes plus ou moins grands. Il s’agit d’un exemple fort de système autonome, permettant à la fois la découverte d’artistes et la rétention d’utilisateurs. Alors en tant qu'artiste, pour être boosté par les algorithmes, il faut souvent redoubler d’effort : 30 premières secondes impactantes, présence dans dans de nombreuses playlists, identification de genre clair… Tout cela au point d’impacter profondément la création musicale d'aujourd'hui, mais ça c’est une autre histoire !

✍️ Écrit par Max Minerz
⬇️ Partager cet article :  

_______

Rejoins notre équipe de rédacteurs !

Message reçu ! On revient vers toi très vite
Oops! Something went wrong while submitting the form.