Tamás

A Last.fm zenekarok hasonlósági gráfja

©   Tamás   |   adatbányászat zene

Volt már szó itt a blogon régebben a Last.fm-ről, úgyhogy csak röviden: ez egy közösségi oldal, ami alapvetően a zenei ízlés köré szerveződik. Felraksz egy plugint a zenelejátszódhoz, ami innentől kezdve folyamatosan küldi a Last.fm szerverének, hogy mit hallgatsz, az pedig megjelenik a saját Last.fm-es profiloldaladon, és boldogság van. Eddig kb annyi értelme van, mint az iWiW-nek (azaz semmi). A dolog ott kezd izgalmas lenni, amikor egy kicsit elkezdjük analizálni ezt a rengeteg adatot, ami ily módon összegyűlik a Last.fm szerverein. Pár hete volt némi időm és elszórakoztam az oldallal egy keveset; ha érdekel, hogy mi jött ki, olvass tovább.


Ha rendelkezésünkre áll, hogy ki mit hallgat, elvileg kiszámíthatjuk, mennyire hasonlít egymáshoz két adott zenekar. Az alapelv egyszerű: ha Józsi és én mindketten ugyanazt a zenekart hallgatjuk (minél többet, annál jobb), akkor feltehetőleg a zenei ízlésünk hasonlít. Ha több átfedés is van a kedvenc zenekaraink között, akkor azok feltehetőleg egymásra is hasonlítanak. Ugyanígy lehet hasonlósági relációkat kikövetkeztetni az egyes Last.fm juzerek között is a zenei ízlésük metszetének mérete alapján. A jó dolog az, hogy a Last.fm egy egyszerű API-n keresztül elérhetővé teszi, hogy szerintük a fenti megfontolások alapján melyik zenekar melyik másik zenekarokra hasonlít. Valami ilyesmit kell elképzelni, egyszerű szöveges adatfájl, amit könnyen fel lehet dolgozni. Kb egy hét alatt egyszerű snowball sampling módszerrel letöltöttem úgy nagyjából ötvenezer zenekar adatlapját a hasonlósági adatokkal együtt, és gyártottam belőle egy gráfot, ahol a pontok a zenekarok és két pont akkor van összekötve, ha hasonlóak. Arra voltam kíváncsi, hogy vajon hogyan néz ki ez a gráf, ha kirajzolom. Az eredményeket itt lehet megnézni egy egyszerű interaktív térképpel kiegészítve: beírsz egy zenekarnevet és megmutatja, hol van a zenekar a gráfban. Többet is be lehet írni, vesszővel elválasztva, így ha van türelmed begépelgetni az összes (max 20) kedvenc zenekarod nevét, akkor kvázi megnézheted, mennyire változatos vagy kiterjedt a zenei ízlésed. Előre is bocs azért, hogy az egész angolul van, de a build.last.fm is linkel rá, és két nyelven nem volt kedvem megírni az egészet.

Kis technikai részlet: a hasonlósági reláció érdekes módon aszimmetrikus. Ez azért van, mert a Last.fm minden zenekarhoz csak a 100 leghasonlóbbat adja meg, hasonlóság szerint súlyozva, és semmi nem garantálja, hogy a hasonlóság mértéke oda-vissza irányban egyforma. Valószínűleg van valamiféle átskálázás vagy normalizálás a rendszerben.

Mellőzvén a tudományos és algoritmuselméleti részleteket (pl hogy hogyan sikerült értelmes pont-elrendezést találni, hogy ne csak egy nagy összevisszaság látszódjon), érdemes megnézni, hogy a gráfon az egyes zenei stílusok mennyire szépen szétválnak. Ez különösen annak fényében érdekes, hogy a pontok elrendezése során nem használtam fel, hogy melyik zenekart milyen stílusba kategorizálták be a Last.fm-en, sőt, a kapcsolatokon kívül semmilyen más információt nem használtam. Lehet, hogy kicsit meredek következtetés, de ez alapján úgy tűnik, hogy — mivel a hasonlósági adatokat a felhasználók zenehallgatási szokásai alapján vezetik le a Last.fm-nél — az emberek általában ugyanazt a zenei stílust preferálják, és kevés az olyan ember, akinek az ízlése egyszerre több stílust is átfogna. A másik érdekes jelenséget akkor láthatjuk, ha megnézzük, hogy kik azok a zenekarok, amelyekre nagyon sok más zenekar nagymértékben hasonlít (gráfelméleti nyelven szólva: melyek azok a pontjai a gráfnak, amelyek bejövő éleinek az összsúlya a legnagyobb). Én előzetesen minimum azt vártam volna, hogy ily módon megkapom a valamilyen stílusban stílusteremtőnek számító nagy klasszikus zenekarokat (Pink Floyd-tól a Kraftwerk-ig vagy a Tangerine Dream-ig), hiszen elvileg ők azok, amelyek nagyon sok zenekarra nagy hatással voltak, így sokan hasonlítanak hozzájuk. A helyzet azonban egészen más.: az első tíz zenekar ebben a sorrendezésben az indie rock vagy indie pop irányzathoz tartozik, ráadásul fogalmam sem volt eddig egyik zenekar létezéséről sem (ami jelentheti persze azt is, hogy teljesen immunis vagyok ezekre az irányzatokra). Úgyhogy vagy úgy tűnik, hogy az indie rock lesz a jövő domináns zenei irányzata, vagy - amit sokkal valószínűbbnek tartok - hogy a ráérő amerikai tinédzsereknek nincs jobb dolguk, mint indie rock zenekarokat alapítani, és ez az egész hullám le fog csengeni pár év alatt, és majd jönnek az újabb és újabb stílusok, amiket lehet hype-olni pár évig.

Update júl. 17. 12:35: az lenne igazán szép, ha az embernek elég lenne beírni a Last.fm-es usernevét és a térkép automatikusan letöltené a kedvenc zenekarait, majd kirakná a térképre. Ugyan egy adott user kedvenc zenekarai is elérhetőek a Last.fm API-n keresztül (ilyen formában), a böngészők sajnos nem engedik, hogy Javascript-ből más domainre eső fájlokat töltögessek le, így marad a kézzel beírás.

RSS: hozzászólások ehhez a bejegyzéshez 14 hozzászólás

Szólj hozzá Te is!

Hát ez marhajó!

Én azt javaslom, hogy tegyél a markerekre title attributumot, amiben legalább a bubi által reprezentált együttes neve benne van (de biztosan rendelkezésre áll más, oda illő info).
Ezen kívül mókás lenne tooltipeket rakni a kép többi részére is, vagy ajaxos-javascriptes-buborékraálláskor-lekérdezős módon, vagy HTML image mappel, vagy CSS image mappel, bár ez utóbbi macera.

Mégegyszer gratu, nagyon jó cucc!

Nagyon tuti, szépen egy csoportban van a zenei ízlésem, kivéve a Mansont és a Nightwisht. Roppant meglepő volt számomra pl. hogy az ábrán a Scooter és a Prodigy milyen közel helyezkedik el (Mindkettőt szeretem de egész más stílusúak.)



Madonna és Britney nem a kedvenceim, de azért ráraktam őket is.

Btw a tipikus ízlésem a kép legtetején csoportosul.

Köszi a visszajelzéseket!

Zeal_,
Én azt javaslom, hogy tegyél a markerekre title attributumot, amiben legalább a bubi által reprezentált együttes neve benne van (de biztosan rendelkezésre áll más, oda illő info).
Ez kész van, title attribútumban ott van az együttes neve, klikkelésre pedig a hozzá tartozó Last. Fm profiloldalt hozza be. Legalábbis Safariban és Firefoxban, IE-n sajna nem tudom kipróbálni, szóljatok, ha ott nem menne.

Haszprus,
Roppant meglepő volt számomra pl. hogy az ábrán a Scooter és a Prodigy milyen közel helyezkedik el
Vannak annál meglepőbbek is, pl az a nagy sárga (jazz) pöcök a zöld (pop) klaszter közepén. Na, az Amy Winehouse. Szóval lehet, hogy jazz-nek taggelték fel, de a hasonlósági gráf alapján inkább pop (mivel az r&b-t és a soul-t is oda soroltam).

…a böngészők sajnos nem engedik, hogy Javascript-ből más domainre eső fájlokat töltögessek le, így marad a kézzel beírás.
És ha írsz egy webservice-t, ami lekérdezi az API-ból a user kedvenc zenekarait, és azt hívod javascript-ből?

Baromi jo lett, gratula. A FAQ-n hangosan felrohogtem

Tamás: igen, most már van a markereken tooltip (reggel mikor néztem még nem láttam hogy van, ha volt, bocsi

A kommentem másik része arra vonatkozott, hogy a piros-sárga-kék-zöld-stb karikák fölé vivve az egérállatot kiírhatná, hogy a karika ki

poklacsek, amíg nem támadja le az internetezők hada az oldalt, addig működhet a dolog; a gond ott van, hogy ugyanarról az IP-ről a Last. Fm webservice-t kb öt másodpercenként egyszer illik csak hívni. Elvileg megcsinálhatom, hogy valami fájlban tárolom, hogy mikor nyúltam utoljára a Last. Fm szerveréhez, és ha öt másodpercen belül vagyok, akkor azt írom vissza az usernek, hogy várjon egy picit. Valószínűleg előbb-utóbb meg is fogom (csak impulzus kell hozzá).

Zeal_, tooltip: reggel még nem is volt, azóta raktam oda. A kommented másik részére vonatkozóan: igen, az ötlet jó, csak vagy azt csinálom, hogy leküldöm előre mind az ötvenezer zenekar X-Y koordinátáját Javascript-ben (nincs az, aki kivárja), vagy az egér mozgatása során on-demand módon a háttérben HTTP kérésekkel bombázom a szervert, azt viszont kétlem, hogy bírná. Úgyhogy ez sajnos szerintem megvalósíthatatlan; esetleg egyszer majd csinálok egy offline browser-t hozzá, és akkor úgy működhet.

Tamás: lehet úgy, hogy onmouseover, ha az user 500 ms -ig egyhelyben állítja az ő egerét, akkor megy a $.get

Így elég kevés kérésből meg lehet úszni

Már valahogy épp rábukkantam erre múlthéten, de eltűntem fesztiválozni tüzetesebb vizsgálódás nélkül, de ez.. ez.. fantasztikus! :o

Mellesleg én örömmel olvasnám a gráf- és algoritmuselméleti kiselőadás részét is a dolognak

Pas, meglesz, irok majd rola egyszer kommentet, csak most epp Maltan vagyok es van vagy napi 5 percem netezni, meg hat van jobb dolgom is

Szégyentelen önreklám: néhány lelkes Microsoft Live Labs jómunkásembernek hála már van egy extra nagy felbontású (300 megapixel) és nagyítható változat is a térképből - ez elég nagy felbontású ahhoz, hogy majdnem az összes zenekar neve látszik rajta. A Gallery-ben alul az ötödik képre kell kattintani.


Haszprus I'll second that. Mondjuk gond, hogy eltakarják egymást a buborékok, és nincs lehetőség alájuk nézni (vagy én nem találtam meg).
Egyébként nem tudom miért, ez a last.fm eddig kimaradt az életemből, de a napokban újraolvastam vmelyik itteni írást róla, és regeltem, és hát srácok, vaz…
Legyen elég annyi, hogy azóta a winampot csak azért indítom el hogy finomítsak a statisztikáimon, egyébként csak a rádió.
Most küzdök hogy PSP-n is jöjjön be.

Nincs lehetőség alájuk nézni, mert a kép maga előregenerált és statikus Azon gondolkozom, lehet, hogy a legközelebbi újragenerálásnál kipróbálok mondjuk 70%-os opacity-t.
Hozzászólásod:


Nem vagy bejelentkezve, de...

A)
hozzászólhatsz regisztrálatlanul...

B)
ha regisztrálva vagy, bejelentkezhetsz...