394 mga pagbabasa
394 mga pagbabasa

Musika at ML: Pag-cluster sa Spotify Audio Features

sa pamamagitan ng Aidar Gain7m2025/04/01
Read on Terminal Reader

Masyadong mahaba; Upang basahin

Ginalugad ko kung paano gumamit ng unsupervised machine learning para ipangkat ang 5,000 kanta sa mga makabuluhang playlist gamit ang mga feature ng Spotify na audio. Sa pamamagitan ng pagsasama-sama ng mga diskarte sa clustering tulad ng K-Means, PCA, at external na validation mula sa mga genre ng Last.fm, sinuri ko ang kalidad ng clustering na may mga sukatan tulad ng Silhouette Score at NMI—pagbabalanse ng statistical soundness sa musical sense.
featured image - Musika at ML: Pag-cluster sa Spotify Audio Features
Aidar Gain HackerNoon profile picture
0-item


Panimula

Pinapalibutan tayo ng musika araw-araw. Ito ay nagse-set up sa amin, nag-uudyok sa amin, at kahit na pinahuhusay ang cognitive performance. Ang mabilis na ritmikong beats ay maaaring magpalakas ng ating enerhiya, habang ang mas mabagal, mas melodic na himig ay nakakatulong sa atin na makapagpahinga. Gayunpaman, ang paglikha ng perpektong playlist ay kadalasang isang personal at masinsinang gawain. Ang mga pangunahing streaming platform ay umaasa sa mga eksperto sa musika upang mag-curate ng mga playlist, ngunit malinaw naman, tulad ng karamihan sa mga lugar, kailangan namin ng ilang automation at tulong sa makina gamit ang data.


Bilang isang taong nakikinig ng higit sa 2 oras ng musika araw-araw sa iba't ibang genre, gumagawa ng musika, at gumagawa ng mga playlist para sa personal na paggamit, ang paksang ito ay lubos na sumasalamin sa akin. Ang proyektong ito ay nagbigay-daan sa akin na pagsamahin ang aking hilig sa musika sa aking propesyonal na kadalubhasaan sa data analytics habang nag-e-explore ng mga praktikal na aplikasyon ng mga machine learning algorithm. Dagdag pa, na-inspire ako sa artikulo ng engineering ng Spotify — bilang nangunguna sa streaming ng musika, itinakda nila ang benchmark para sa pagbabago sa espasyong ito at nagbigay sa amin ng mataas na kalidad na data.

Paglalahad ng Problema

Ang layunin ng proyektong ito ay tuklasin ang mga diskarte sa clustering upang awtomatikong ipangkat ang mga kanta sa mga makabuluhang playlist. Matutulungan ba tayo ng machine learning na gumawa ng mga playlist na parang na-curate ng mga eksperto ng tao? O, kahit papaano, masisiguro ba nito na ang death metal at mga classical na suite ay wala sa parehong listahan?


Para matugunan ito, gumamit ako ng isang dataset ng ~5,000 kanta na may mga feature na audio ng Spotify, gaya ng sayaw, tempo, at enerhiya. Bukod pa rito, isinama ko ang data ng Last.fm API upang makuha ang impormasyon ng genre, na nagbibigay-daan sa panlabas na pagpapatunay ng kalidad ng clustering.


Ang aming gawain:

  • I-cluster ang mga kanta sa magkakaugnay na playlist batay sa mga audio feature.
  • I-validate ang mga cluster na ito laban sa mga genre ng Last.fm para matiyak ang kalidad.

Paunang Pagtingin sa Data

Bago sumabak sa machine learning, na-visualize ko ang dataset gamit ang mga pangunahing feature. Nasa ibaba ang isang scatter plot ng mga kanta batay sa tempo at sayaw :

Kahit na walang mga advanced na diskarte, natutukoy namin ang ilang mga pattern. Halimbawa, ang Brahms' Lullaby ay madaling matukoy sa low-tempo, low-danceability na rehiyon, habang ang Eminem's The Real Slim Shady ay lumalabas sa mid-tempo, high-danceability na lugar.


Gayunpaman, ang paggamit ng lahat ng magagamit na mga tampok ay magbibigay-daan sa amin upang tumuklas ng mas mayayamang pattern at i-automate ang paggawa ng playlist. Narito ang kumpletong listahan ng mga tampok:

Kunin ang sample ng tugon ng API ng Audio Features ng Track

Unsupervised Clustering

Ngayon, ang aming layunin ay magsagawa ng ilang paunang clustering. Ang ideya dito ay maglapat ng purong unsupervised machine learning — hindi namin alam ang totoong cluster label at nilalayon naming matukoy ang pinakamainam na bilang ng mga cluster gamit ang mga praktikal na pamamaraan. Upang makamit ito, dadaan tayo sa ilang pangunahing hakbang. Sa huli, titingnan natin ang mga resulta ng clustering at susubukan naming maunawaan ang mga umuusbong na pattern.

Pagsusukat

Para sa karamihan ng mga algorithm at pamamaraan na ilalapat namin sa ibang pagkakataon, mahalaga ang naka-scale na data. Ang mga algorithm na ito ay umaasa sa mga kalkulasyon (gaya ng mga distansya o pagkakaiba) na sensitibo sa laki ng mga feature. Ang pag-scale ay nagko-convert ng lahat sa isang karaniwang yunit upang ang lahat ng mga tampok ay tratuhin nang patas. Tinitiyak nito na ang bawat feature ay pantay na nag-aambag sa proseso ng clustering. Gagamit kami ng iba't ibang scaler.


Nasa ibaba ang isang halimbawa ng pag-project ng aming data sa dalawang feature: duration_ms at tempo . Ang kaliwang plot ay nagpapakita ng orihinal na data; ang kanan ay nagpapakita ng resulta pagkatapos maglapat ng dalawang scaler — PowerTransformer at MinMaxScaler:

Ginagawang maihahambing ng pag-scale ang mga feature — mas may saysay na ngayon ang clustering


Pagbabawas ng Dimensionality Gamit ang PCA

Ang susunod na hakbang ay ang Principal Component Analysis (PCA), na binabawasan ang bilang ng mga feature habang pinapanatili ang pinakamahalagang impormasyon. Pinapadali nito ang visualization at pinapabilis ang clustering.


Sa matalinghagang pagsasalita, ang PCA ay nakakahanap ng mga projection - tulad ng pagpapasikat ng flashlight sa isang 3D na bagay upang lumikha ng isang 2D na anino. Ang flashlight ay nakaposisyon upang ang anino (projection) ay nagpapanatili ng maraming detalye hangga't maaari tungkol sa orihinal na bagay.


Susubukan namin ang iba't ibang bilang ng mga bahagi at ihambing ang mga resulta. Sa aming kaso, susubukan namin ang 10 mga opsyon. Narito ang isang halimbawa ng pag-project ng mga kanta sa dalawang pangunahing bahagi:

projection ng PCA


K-Means Clustering

Ang K-Means ay isang sikat na clustering algorithm na nagpapangkat ng data sa isang paunang natukoy na bilang ng mga cluster (k). Ngunit paano tayo magpapasya sa pinakamainam na k?

Minsan, may mga hadlang sa negosyo. Kasama sa aming dataset ang humigit-kumulang 5,000 kanta. Kadalasan, naglalaman ang mga playlist sa mga serbisyo ng streaming sa pagitan ng 20 at 250 kanta. Kaya, para sa aking partikular na kaso ng paggamit, kailangan ko ng higit sa 20 kumpol.


Ang Silhouette Score ay tumutulong na suriin ang kalidad ng clustering sa pamamagitan ng pagsukat kung gaano kahusay ang bawat data point sa loob ng nakatalagang cluster nito kumpara sa iba. Ang mas mataas na marka ng silhouette (mas malapit sa 1) ay nangangahulugan na ang mga cluster ay mahusay na tinukoy at malinaw na pinaghihiwalay.

Pinakamahusay na Kumbinasyon ng Mga Parameter

Sa napakaraming antas ng kalayaan, paano natin mahahanap ang pinakamahusay na kumbinasyon ng mga parameter? Ang sagot ay simulation. Maaari kong subukan ang iba't ibang kumbinasyon — mga scaler, bilang ng mga bahagi ng PCA, at bilang ng mga kumpol — at piliin ang isa na pinakamahusay na gumaganap. Sa aking kaso, mayroong 935 na posibleng kandidato. Tingnan natin ang mga resulta.

Ipinapakita ng plot na ito ang mga marka ng silhouette (x-axis) para sa iba't ibang kumbinasyon ng mga bahagi ng PCA (kinakatawan ng laki ng bilog), mga scaler (kulay), at bilang ng mga cluster (y-axis). Upang gawing simple ang pagpili, dapat tayong tumuon sa mga opsyon sa kanang bahagi sa itaas, tulad nito:

Ang unang makabuluhang kumbinasyon na may pinakamataas na marka ng silhouette ay gumagamit ng MinMax scaler, 2 pangunahing bahagi, at 6 na cluster. Bagama't hindi natutugunan ng 6 na kumpol ang aming kinakailangan sa negosyo na magkaroon ng higit sa 20 kumpol, sulit pa ring suriin nang mas mabuti.

Paunang Resulta ng Clustering

Gaya ng nabanggit kanina, isinama ko ang Last.fm data na may impormasyon sa genre para sa aming mga artist. Ito ang perpektong sandali upang ilapat ito sa aming dataset bilang isang kapaki-pakinabang na pamantayan sa pagpapatunay. Pinili ko ang 5 pinakasikat na genre ng dataset na ito, na ang iba ay nakapangkat sa ilalim ng "iba pa."


Bumabalik sa aming kumbinasyong nangungunang gumaganap, handa na kaming ikumpara ang mga resultang cluster gamit ang mga label ng genre. Nasa ibaba ang isang visualization na nagpapakita ng porsyentong bahagi ng mga genre ayon sa cluster, kasama ang bilang ng mga kanta sa bawat cluster.

Kung maaalala mo, binanggit ko sa pahayag ng problema na ang isa sa aking mga layunin ay upang makilala ang pagitan ng death metal at classical na musika — sa totoo lang, iyon ay isang random na halimbawa. Ngunit nakakagulat, ang pamantayang ito ay gumagana nang maayos para sa partikular na pag-setup ng clustering. Tingnang mabuti: ang mga cluster 0 at 4 ay binubuo ng halos kalahating klasikal na musika, na halos walang death metal, habang ang cluster 2 at 3 ay ang kabaligtaran, na lubos na kumakatawan sa death metal. Isang magandang simula!


Sabi nga, napapansin pa rin namin ang isang halo ng mga genre sa maraming kumpol, ang ilan sa mga ito ay hindi tugma sa musika. Iminumungkahi nito na sulit na tuklasin ang iba pang mga diskarte at sukatan ng pagsusuri.


Sa huli, ang layunin ay makahanap ng clustering solution na parehong matatag sa istatistika at praktikal na makabuluhan para sa iyong partikular na kaso ng paggamit.

Clustering Gamit ang External Validation

Sa seksyong ito, gagamitin namin ang impormasyon ng genre nang mas malawak. Ang data na ito ay gumaganap bilang aming "ideal na mga label" para sa pagpapatunay ng kalidad ng clustering. Siyempre, hindi ito perpektong criterion o ang pinaka-sopistikadong diskarte para sa paggawa ng playlist — ngunit para sa akin personal, bilang mahilig sa musika, gumagana ito nang maayos. Halimbawa, madalas kong mas gusto ang pakikinig sa musikang partikular sa genre: hip-hop para sa pagganyak, rock sa mga party, o classical habang nagtatrabaho. Ibig sabihin ay ayaw kong magkahalo ang mga playlist na ito.


Subukan nating sagutin ang ganoong tanong: Maaari ba nating paghiwalayin ang musika ayon sa genre gamit lang ang mga feature tulad ng danceability, energy, tempo, atbp.?

Normalized Mutual Information (NMI)

Sinusukat ng Normalized Mutual Information (NMI) ang pagkakatulad sa pagitan ng dalawang clustering. Ito ay may marka sa pagitan ng 0 at 1, kung saan:

  • Ang ibig sabihin ng 0 ay walang overlap sa pagitan ng mga cluster assignment at true label.
  • Ang ibig sabihin ng 1 ay perpektong tugma sa ground truth.


Bago pumunta sa paghahanap ng pinakamahusay na clustering setup gamit ang NMI, suriin natin ito sa isang pamilyar na configuration — ang isa na natukoy namin kanina: MinMaxScaler, 2 PCA component, at 6 na cluster. Ngayon, aayusin natin ang scaler para sa pagiging simple at tututukan kung paano nakakaapekto ang bilang ng mga bahagi ng PCA sa marka ng NMI.

Nakikita namin na ang marka ng NMI para sa n=6 ay mas mataas kaysa sa n=2 (0.29 kumpara sa 0.18). Tingnan natin ang mga resultang pamamahagi ng cluster:

Malaking improvement na ito. Nakikita na natin ngayon ang death metal na mahusay na nakahiwalay sa dalawang kumpol at lahat ng klasikal na musika ay pinagsama sa isa. Nangangako!


Para sa sanggunian, nasa ibaba ang isang paghahambing ng mga marka ng NMI sa iba't ibang mga configuration ng clustering:

Ang pinakamataas na marka ng NMI ay nagpapahiwatig ng pinakamahusay na clustering na nakatuon sa genre. Ang resultang ito ay lubos na inaasahan — gamit ang validation data, maaari naming makabuluhang mapabuti ang aming music clustering. Ngunit ang pangunahing punto dito ay upang patunayan ang aming K-Means clustering at magkaroon ng mas mahusay na pag-unawa sa kalidad ng label gamit ang parehong mga parameter.

Konklusyon

Sa proyektong ito, ginalugad ko kung paano makakatulong ang pag-aaral ng machine sa pagpapangkat ng mga track ng musika sa mga makabuluhang cluster gamit lang ang mga audio feature. Simula sa mga basic na unsupervised learning techniques tulad ng scaling, PCA, at K-Means, na-validate ko ang mga resulta gamit ang real-world genre data mula sa Last.fm.


Bagama't nakatulong ang mga marka ng silhouette na i-optimize ang internal consistency, ang external validation sa pamamagitan ng genre alignment ay nag-aalok ng mas malalim na insight sa praktikal na kalidad ng mga cluster. Nanghihikayat, kahit na ang mga simpleng pamamaraan ay matagumpay na makapaghihiwalay ng mga genre tulad ng classical at death metal — na nagha-highlight sa kapangyarihan ng mga audio feature.


Ito ay isang panimulang punto lamang. Kasama sa mga pagpapabuti sa hinaharap ang pagtuklas ng mga advanced na diskarte tulad ng UMAP at HDBSCAN upang mapahusay ang clustering at paggamit ng SHAP para sa mas mahusay na interpretability. Gamit ang mga tool na ito, maaari tayong lumapit sa pagbuo ng mga playlist system na parehong matalino at makabuluhan sa musika.


Sa huli, ang pag-aaral ng makina ay tiyak na makakadagdag sa curation ng tao. Sa ngayon, nag-aalok ito ng nasusukat na paraan upang ayusin at tuklasin ang mga malalaking library ng musika.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks