Introduction
La musique nous entoure tous les jours. Elle nous met en place, nous motive, et même améliore les performances cognitives. Les battements rythmiques rapides peuvent stimuler notre énergie, tandis que les sons plus lents et plus mélodiques nous aident à nous détendre.La création de la liste de lecture parfaite est cependant souvent une tâche personnelle et longue.Les grandes plateformes de streaming comptent sur des experts musicaux pour organiser des playlists, mais évidemment, comme dans la plupart des domaines, nous avons besoin d'une certaine automatisation et d'une aide automatique à l'aide de données.
En tant que quelqu'un qui écoute plus de 2 heures de musique par jour dans différents genres, produit de la musique et crée des playlists pour un usage personnel, ce sujet résonne profondément avec moi.Ce projet m'a permis de combiner ma passion pour la musique avec mon expertise professionnelle en analyse de données tout en explorant les applications pratiques des algorithmes d'apprentissage automatique.Plus, j'ai été inspiré par L'article d'ingénierie de Spotify - étant le leader dans le streaming de musique, ils ont établi le point de référence pour l'innovation dans cet espace et nous ont fourni des données de haute qualité.
Article d'ingénierie de SpotifyDéclaration du problème
L'objectif de ce projet était d'explorer des techniques de regroupement pour regrouper automatiquement des chansons en listes de lecture significatives.Le machine learning peut-il nous aider à créer des listes de lecture qui se sentent aussi curées que celles des experts humains?Ou, au moins, peut-il s'assurer que le death metal et les suites classiques ne figurent pas sur la même liste?
Pour y remédier, j'ai utilisé un ensemble de données de ~5.000 chansons avec des fonctionnalités audio Spotify, telles que la danse, le rythme et l'énergie.En outre, j'ai incorporé les données de l'API Last.fm pour récupérer des informations de genre, permettant une validation externe de la qualité du cluster.
Notre mission :
- Cluster des chansons dans des playlists cohérents basés sur des caractéristiques audio.
- Validez ces clusters contre les genres Last.fm pour assurer la qualité.
Observation des données
Avant de plonger dans l'apprentissage automatique, j'ai visualisé le dataset en utilisant des fonctionnalités de base. Ci-dessous est un scatter de chansons basées sur tempo et danceability:
Temps de travailDansabilitéPar exemple, Brahms' Lullaby est facilement identifiable dans la région à bas rythme, à bas rythme, tandis que Eminem's The Real Slim Shady apparaît dans la zone à moyen rythme, à haut rythme.
Toutefois, en tirant parti de toutes les fonctionnalités disponibles, nous pourrons découvrir des modèles plus riches et automatiser la création de listes de lecture.
Classification non supervisée
Maintenant, notre objectif est de réaliser un cluster initial.L’idée ici est d’appliquer l’apprentissage automatique pur non supervisé – nous ne connaissons pas les vraies étiquettes de cluster et nous visons à déterminer le nombre optimal de clusters en utilisant des méthodes pratiques.
Scalage
CréationPour la plupart des algorithmes et méthodes que nous appliquerons ultérieurement, les données évolutives sont essentielles. Ces algorithmes s'appuient sur des calculs (tels que les distances ou les variances) qui sont sensibles à l'échelle des caractéristiques.
En dessous est un exemple de la projection de nos données sur deux caractéristiques: duration_ms
et tempo
. Le parcours gauche affiche les données originales; le côté droit affiche le résultat après l'application de deux échelles - PowerTransformer et MinMaxScaler:
duration_ms
à partir deTemps et temps
Réduction de la dimension avec PCA
Réduction de la dimension avec PCALa prochaine étape est l'analyse des composants principaux (PCA), qui réduit le nombre de fonctionnalités tout en conservant les informations les plus importantes.
Cela facilite la visualisation et accélère le regroupement.
Parlant figurativement, PCA trouve des projections – comme allumer un phare sur un objet 3D pour créer une ombre 2D. Le phare est positionné de sorte que l'ombre (projection) conserve autant de détails que possible sur l'objet d'origine.
Nous allons essayer différents nombres de composants et comparer les résultats. Dans notre cas, nous allons tester 10 options. Voici un exemple de la projection de chansons sur deux composants principaux:
K signifie cluster
K-Means est un algorithme de clustering populaire qui regroupe les données en un nombre prédéfini de clusters (k).
Parfois, nous avons des contraintes commerciales. Notre ensemble de données comprend environ 5 000 chansons. Typiquement, les playlists sur les services de streaming contiennent entre 20 et 250 chansons.
Le score de silhouette aide à évaluer la qualité du regroupement en mesurant à quel point chaque point de données s'intègre dans son regroupement attribué par rapport aux autres.Un score de silhouette plus élevé (plus proche de 1) signifie que les regroupements sont bien définis et clairement séparés.
Score de silhouetteMeilleure combinaison de paramètres
Avec tant de degrés de liberté, comment pouvons-nous trouver la meilleure combinaison de paramètres? La réponse est la simulation.Je peux essayer différentes combinaisons – scalers, nombre de composants PCA et nombre de clusters – et choisir celle qui fonctionne le mieux. Dans mon cas, il y avait 935 candidats possibles.
Cette parcelle montre des scores de silhouette (x-axe) pour différentes combinaisons de composants PCA (représentés par la taille du cercle), des échelles (couleur) et le nombre de clusters (y-axe).Pour simplifier le choix, nous devrions nous concentrer sur les options dans la zone supérieure droite, comme ceci:
La première combinaison significative avec le score de silhouette le plus élevé utilise l'échelleur MinMax, 2 composants principaux et 6 clusters.
Résultat de cluster initial
Comme mentionné précédemment, j'ai incorporé les données Last.fm avec des informations de genre pour nos artistes. C'est le moment idéal pour l'appliquer à notre ensemble de données en tant que critère de validation utile. J'ai sélectionné les 5 genres les plus populaires de ce groupe de données, le reste étant regroupé sous « autre ».
En revenant à notre combinaison de performances les plus élevées, nous sommes maintenant prêts à comparer les clusters obtenus en utilisant les étiquettes de genre.
Si vous vous souvenez, j’ai mentionné dans la déclaration du problème que l’un de mes objectifs était de distinguer le death metal de la musique classique – honnêtement, c’était un exemple aléatoire.Mais étonnamment, ce critère fonctionne assez bien pour cette configuration de clustering particulière.Regardez de plus près: les clusters 0 et 4 sont composés d’environ la moitié de la musique classique, sans presque aucun death metal, tandis que les clusters 2 et 3 sont le contraire, représentant fortement le death metal.Un début prometteur!
Cela dit, nous observons toujours un mélange de genres dans de nombreux clusters, dont certains ne sont pas compatibles sur le plan musical.
En fin de compte, l'objectif est de trouver une solution de regroupement qui soit à la fois statistiquement robuste et pratiquement significative pour votre cas d'utilisation spécifique.
Cluster avec validation externe
Dans cette section, nous allons utiliser plus largement les informations de genre. Ces données agissent comme nos « étiquettes idéales » pour valider la qualité du regroupement. Bien sûr, ce n’est pas un critère parfait ou l’approche la plus sophistiquée pour la création de playlists – mais pour moi personnellement, en tant que fan de musique, cela fonctionne bien. Par exemple, je préfère souvent écouter de la musique spécifique au genre: le hip-hop pour la motivation, le rock aux fêtes ou le classique pendant le travail.
Tentons-nous répondre à une telle question: Pourrions-nous séparer la musique par genre en utilisant uniquement des caractéristiques telles que la danse, l'énergie, le tempo, etc.?
Pouvons-nous séparer la musique par genre en utilisant uniquement des caractéristiques telles que la danse, l'énergie, le tempo, etc.?Information mutuelle normalisée (NMI)
Information mutuelle normalisée (NMI)Normalised Mutual Information (NMI) mesure la similitude entre deux clusters. Il note entre 0 et 1, où:
- 0 signifie qu'il n'y a pas de superposition entre les attributions de cluster et les étiquettes vraies.
- 1 signifie une correspondance parfaite avec la vérité fondamentale.
Avant de commencer à trouver la meilleure configuration de clustering à l'aide de NMI, évaluons-la sur une configuration familière - celle que nous avons identifiée plus tôt: MinMaxScaler, 2 composants PCA et 6 clusters.
Nous voyons que le score NMI pour n=6 est significativement plus élevé que pour n=2 (0.29 vs. 0.18).n = 6 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Ceci est déjà une grande amélioration.Nous voyons maintenant le death metal bien isolé en deux groupes et toute la musique classique regroupée en un seul. Pour référence, voici une comparaison des scores NMI dans différentes configurations de clustering: Le score NMI le plus élevé indique le meilleur regroupement axé sur le genre. Ce résultat est très attendu – en utilisant les données de validation, nous pouvons améliorer considérablement notre regroupement de musique. Dans ce projet, j'ai exploré comment l'apprentissage automatique peut aider à regrouper des pistes musicales en clusters significatifs en utilisant uniquement des fonctionnalités audio. À partir de techniques d'apprentissage non supervisées de base telles que l'échelle, PCA et K-Means, j'ai validé les résultats en utilisant des données de genre du monde réel de Last.fm. Tandis que les scores de silhouette ont contribué à optimiser la cohérence interne, la validation externe à travers l'alignement de genre a offert une meilleure compréhension de la qualité pratique des clusters. Ce n'est qu'un point de départ.Les améliorations futures incluraient l'exploration de techniques avancées telles que UMAP et HDBSCAN pour améliorer le regroupement et l'utilisation de SHAP pour une meilleure interprétation.
Conclusion
En fin de compte, l'apprentissage automatique peut certainement compléter la guérison humaine.Pour l'instant, il offre un moyen évolutif d'organiser et d'explorer de vastes bibliothèques de musique.