394 lectures
394 lectures

Música i ML: agrupació a les funcions d'àudio de Spotify

per Aidar Gain7m2025/04/01
Read on Terminal Reader

Massa Llarg; Per llegir

Vaig explorar com utilitzar l'aprenentatge automàtic no supervisat per agrupar 5.000 cançons en llistes de reproducció significatives mitjançant les funcions d'àudio de Spotify. En combinar tècniques d'agrupació com ara K-Means, PCA i validació externa dels gèneres Last.fm, vaig avaluar la qualitat de l'agrupació amb mètriques com Silhouette Score i NMI, equilibrant la solidesa estadística amb el sentit musical.
featured image - Música i ML: agrupació a les funcions d'àudio de Spotify
Aidar Gain HackerNoon profile picture
0-item


Introducció

La música ens envolta cada dia. Ens configura, ens motiva i fins i tot millora el rendiment cognitiu. Els ritmes rítmics ràpids poden augmentar la nostra energia, mentre que les melodies més lentes i melòdiques ens ajuden a relaxar-nos. Crear la llista de reproducció perfecta, però, sovint és una tasca personal i que requereix molt de temps. Les principals plataformes de reproducció depenen d'experts musicals per curar les llistes de reproducció, però òbviament, com en la majoria de les àrees, necessitem una mica d'automatització i assistència de màquines amb dades.


Com a algú que escolta més de dues hores de música al dia en diversos gèneres, produeix música i crea llistes de reproducció per a ús personal, aquest tema em ressona profundament. Aquest projecte em va permetre combinar la meva passió per la música amb la meva experiència professional en anàlisi de dades mentre explorava aplicacions pràctiques dels algorismes d'aprenentatge automàtic. A més, em va inspirar l'article d'enginyeria de Spotify : sent el líder en streaming de música, van establir la referència per a la innovació en aquest espai i ens van proporcionar dades d'alta qualitat.

Declaració del problema

L'objectiu d'aquest projecte era explorar tècniques d'agrupació per agrupar cançons automàticament en llistes de reproducció significatives. L'aprenentatge automàtic ens pot ajudar a crear llistes de reproducció que se sentin tan curades com les dels experts humans? O, com a mínim, pot assegurar-se que les suites de death metal i clàssiques no estiguin a la mateixa llista?


Per fer-ho, vaig utilitzar un conjunt de dades d'aproximadament 5.000 cançons amb funcions d'àudio de Spotify, com ara la capacitat de ballar, el tempo i l'energia. A més, vaig incorporar dades de l'API de Last.fm per recuperar informació de gènere, permetent la validació externa de la qualitat de la agrupació.


La nostra tasca:

  • Agrupa les cançons en llistes de reproducció cohesionades basades en funcions d'àudio.
  • Valideu aquests clústers amb els gèneres de Last.fm per garantir la qualitat.

Vista inicial de les dades

Abans de capbussar-me en l'aprenentatge automàtic, vaig visualitzar el conjunt de dades utilitzant funcions bàsiques. A continuació es mostra un diagrama de dispersió de cançons basat en el tempo i la ballabilitat :

Fins i tot sense tècniques avançades, som capaços d'identificar alguns patrons. Per exemple, la cançó de bressol de Brahms és fàcilment identificable a la regió de baix ritme i ballable, mentre que The Real Slim Shady d'Eminem apareix a la zona de ritme mitjà i alt ball.


Tanmateix, aprofitar totes les funcions disponibles ens permetrà descobrir patrons més rics i automatitzar la creació de llistes de reproducció. Aquí teniu la llista completa de funcions:

Obteniu la mostra de resposta de l'API de funcions d'àudio de Track

Clúster no supervisat

Ara, el nostre objectiu és realitzar una mica de clustering inicial. La idea aquí és aplicar l'aprenentatge automàtic pur sense supervisar: no coneixem les etiquetes de clúster reals i pretenem determinar el nombre òptim de clústers mitjançant mètodes pràctics. Per aconseguir-ho, seguirem alguns passos bàsics. Al final, farem una ullada als resultats de l'agrupació i tractarem d'entendre els patrons emergents.

Escalat

Per a la majoria dels algorismes i mètodes que aplicarem més endavant, les dades escalades són essencials. Aquests algorismes es basen en càlculs (com ara distàncies o variàncies) que són sensibles a l'escala de les característiques. L'escalat ho converteix tot en una unitat comuna de manera que totes les característiques es tracten de manera justa. Això garanteix que cada característica contribueixi per igual al procés d'agrupació. Utilitzarem diversos escaladors diferents.


A continuació es mostra un exemple de projectació de les nostres dades en dues característiques: duration_ms i tempo . La gràfica de l'esquerra mostra les dades originals; la dreta mostra el resultat després d'aplicar dos escaladors: PowerTransformer i MinMaxScaler:

L'escalat fa que les característiques siguin comparables; ara la agrupació té més sentit


Reducció de la dimensionalitat amb PCA

El següent pas és l'anàlisi de components principals (PCA), que redueix el nombre de funcions alhora que conserva la informació més important. Això facilita la visualització i accelera l'agrupació.


En sentit figurat, PCA troba projeccions, com fer brillar una llanterna sobre un objecte en 3D per crear una ombra en 2D. La llanterna es col·loca de manera que l'ombra (projecció) conservi tants detalls com sigui possible sobre l'objecte original.


Provarem diferents nombres de components i compararem els resultats. En el nostre cas, provarem 10 opcions. Aquí teniu un exemple de projectar cançons en dos components principals:

Projecció PCA


K-Means Clustering

K-Means és un algorisme de agrupació popular que agrupa dades en un nombre predefinit de clústers (k). Però, com decidim la k òptima?

De vegades, tenim limitacions empresarials. El nostre conjunt de dades inclou unes 5.000 cançons. Normalment, les llistes de reproducció dels serveis de streaming contenen entre 20 i 250 cançons. Per tant, per al meu cas d'ús específic, necessito més de 20 clústers.


La puntuació de la silueta ajuda a avaluar la qualitat de l'agrupació mesurant com s'adapta cada punt de dades al seu clúster assignat en comparació amb altres. Una puntuació de silueta més alta (més propera a 1) significa que els grups estan ben definits i estan clarament separats.

Millor combinació de paràmetres

Amb tants graus de llibertat, com podem trobar la millor combinació de paràmetres? La resposta és la simulació. Puc provar diferents combinacions (escaladors, nombres de components PCA i nombres de clústers) i seleccionar la que millor funciona. En el meu cas, hi havia 935 candidats possibles. Visualitzem els resultats.

Aquesta gràfica mostra les puntuacions de la silueta (eix x) per a diferents combinacions de components PCA (representades per la mida del cercle), escaladors (color) i nombre de clústers (eix y). Per simplificar l'elecció, hauríem de centrar-nos en les opcions de l'àrea superior dreta, com aquesta:

La primera combinació significativa amb la puntuació de silueta més alta utilitza l'escalador MinMax, 2 components principals i 6 grups. Tot i que 6 clústers no compleixen el nostre requisit empresarial de tenir més de 20 clústers, val la pena examinar-ho més de prop.

Resultat inicial de l'agrupació

Com s'ha esmentat anteriorment, vaig incorporar dades de Last.fm amb informació de gènere per als nostres artistes. Aquest és el moment perfecte per aplicar-lo al nostre conjunt de dades com a criteri de validació útil. Vaig seleccionar els 5 gèneres més populars d'aquest conjunt de dades, amb la resta agrupats a "altres".


Tornant a la nostra combinació de millor rendiment, ara estem preparats per comparar els grups resultants mitjançant les etiquetes de gènere. A continuació es mostra una visualització que mostra la quota percentual de gèneres per clúster, juntament amb el nombre de cançons de cada clúster.

Si recordeu, vaig esmentar a la declaració del problema que un dels meus objectius era distingir entre el death metal i la música clàssica, sincerament, aquest era un exemple aleatori. Però, sorprenentment, aquest criteri funciona força bé per a aquesta configuració de clúster en particular. Fes una ullada més de prop: els clústers 0 i 4 estan compostos per aproximadament la meitat de música clàssica, gairebé sense death metal, mentre que els clústers 2 i 3 són el contrari, representant en gran mesura el death metal. Un començament prometedor!


Dit això, encara observem una barreja de gèneres en molts clústers, alguns dels quals no són musicalment compatibles. Això suggereix que val la pena explorar altres tècniques i mètriques d'avaluació.


En última instància, l'objectiu és trobar una solució de clúster que sigui estadísticament robusta i pràcticament significativa per al vostre cas d'ús específic.

Clúster amb validació externa

En aquesta secció, utilitzarem la informació de gènere de manera més àmplia. Aquestes dades actuen com les nostres "etiquetes ideals" per validar la qualitat del clustering. Per descomptat, no és un criteri perfecte ni l'enfocament més sofisticat per a la creació de llistes de reproducció, però per a mi personalment, com a amant de la música, funciona bé. Per exemple, sovint prefereixo escoltar música específica del gènere: hip-hop per motivació, rock a les festes o clàssica mentre treballo. Això vol dir que no vull que aquestes llistes de reproducció es barregin.


Intentem respondre aquesta pregunta: podem separar la música per gènere utilitzant només característiques com la ballabilitat, l'energia, el tempo, etc.?

Informació mútua normalitzada (NMI)

La informació mútua normalitzada (NMI) mesura la similitud entre dos agrupacions. Es puntua entre 0 i 1, on:

  • 0 significa que no hi ha cap superposició entre les assignacions de clúster i les etiquetes reals.
  • 1 significa una combinació perfecta amb la veritat del terreny.


Abans de saltar a trobar la millor configuració de clúster mitjançant NMI, avaluem-la en una configuració familiar, la que vam identificar anteriorment: MinMaxScaler, 2 components PCA i 6 clústers. Ara, arreglarem l'escalador per simplificar-lo i ens centrarem en com el nombre de components PCA afecta la puntuació NMI.

Veiem que la puntuació NMI per a n=6 és significativament més alta que per a n=2 (0,29 vs. 0,18). Visualitzem les distribucions de clúster resultants:

Això ja és una gran millora. Ara veiem el death metal ben aïllat en dos grups i tota la música clàssica agrupada en un sol. Prometent!


Com a referència, a continuació es mostra una comparació de les puntuacions de l'NMI en diverses configuracions de clúster:

La puntuació NMI més alta indica la millor agrupació centrada en gènere. Aquest resultat és força esperat: utilitzant dades de validació, podem millorar significativament la nostra agrupació de música. Però el punt principal aquí va ser validar la nostra agrupació K-Means i obtenir una millor comprensió de la qualitat de l'etiqueta utilitzant els mateixos paràmetres.

Conclusió

En aquest projecte, vaig explorar com l'aprenentatge automàtic pot ajudar a agrupar pistes de música en grups significatius utilitzant només funcions d'àudio. A partir de tècniques bàsiques d'aprenentatge no supervisat com l'escala, PCA i K-Means, vaig validar els resultats mitjançant dades de gènere del món real de Last.fm.


Si bé les puntuacions de silueta van ajudar a optimitzar la consistència interna, la validació externa mitjançant l'alineació de gènere va oferir una visió més profunda de la qualitat pràctica dels clústers. De manera encoratjadora, fins i tot mètodes senzills podrien separar amb èxit gèneres com el clàssic i el death metal, destacant el poder de les funcions d'àudio.


Aquest és només un punt de partida. Les millores futures inclourien l'exploració de tècniques avançades com UMAP i HDBSCAN per millorar l'agrupació i utilitzar SHAP per a una millor interpretació. Amb aquestes eines, podem apropar-nos a la creació de sistemes de llistes de reproducció intel·ligents i musicalment significatius.


En definitiva, l'aprenentatge automàtic pot complementar definitivament la curació humana. De moment, ofereix una manera escalable d'organitzar i explorar biblioteques musicals massives.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks