Vi erbjuder tech-lösningar och konsultation för projekt inom områden som AI, SaaS och säkerhet
Stockholm, Sweden
caj@maiosolutions.com
+46707866941
Att hantera flera spellistor på flera olika plattformar kan vara mycket arbete; särskilt för ett musikbolag med mycket på sitt fat. Hit Music Group är ett internationellt skivbolag i samarbete med MAIO Solutions AB, som tillhandahåller IT-relaterade lösningar.
Det finns ett hav av olika musikströmningstjänster som Spotify och Apple Music för att nämna några få; för ett skivbolag är det en smart strategi att vara tillgänglig på flera tjänster för att maximera sin marknadsföring. Problemet? Det är lättare sagt än gjort att genomföra.
Ett flertal företag förser lösningar till detta problem, men ofta är matchningsfunktionen inte tillräckligt bra, vilket då kräver mycket extra manuellt arbete vid överföring av stora spellistor.
Resten av denna rapport handlar om hur vi förbättrade matchningar emellan olika låtar, baserad på dess metadata.
With our data science expertise, we applied several Machine Learning solutions to solve this problem. Some platforms such as Spotify support song search using their corresponding ISRC codes; it's an unique barcode assigned to every distributed song. If that was the case for all platforms, we wouldn't have had to dip our toes into AI-solutions to begin with.
Med vår expertis inom data tillämpade vi flera maskininlärningslösningar för att lösa detta problem. Vissa plattformar som Spotify stöder låtsökning med hjälp av ISRC-koder; det är en unik streckkod som tilldelas varje distribuerad låt. Om det hade varit fallet för alla plattformar, hade vi inte behövt använda AI-lösningar från första början.
Precis som med alla dataprojekt är den tillgängliga datan och dess egenskaper som dikterar processen och resultatet. Det finns ett begränsat antal tillgängliga gemensamma attribut för en låt på 2 separata plattformar, vi identifierade följande:
Vår hypotes var att dessa egenskaper var tillräckliga för att vi skulle kunna träna en modell för att matcha låtar med ett bra resultat.
Maskininlärningsalgoritmer är beroende av data, därför byggde vi först en scraper som hämtade metadata från ungefär 3000 olika spår. Vi behövde åtminstone ett par hundra exempel på minoritetsklassen; nämligen den sanna positiva klassen som indikerar en “match”. Uppenbarligen är detta en binär klassificeringsuppgift; en låt är antingen en match eller inte; sant/falskt.
Även om ett stort fokus inom Maskininlärning är runt själva modellerna, så är det långt ifrån den viktigaste aspekten för ett framgångsrikt projekt. Eftersom klassificering inom dessa typer av projekt vanligtvis är enkel, var interaktionen av egenskaperna mellan ett par låtar av största fokus.
In order to design an adequate instance space, we had to extract attributes from both of the songs metadata and combine them in clever ways. The primary focus was to look at the available text metadata, namely:
Track Name
Artist(s) Name(s)
Album Name
Across different music services, it's plausible that songs contain slight differences in the metadata; this might include having (.feat) in the track name among others. Thus we can't naively trust if the track names matches exactly:
För att utforma en lämplig instansrymd var vi tvungna att extrahera attribut från båda låtarnas metadata och kombinera dem på ett smart sätt. Huvudfokus låg på att titta på den tillgängliga datan, nämligen:
Olika musiktjänster kan ibland ha något olik metadata, en relativt vanlig sådan är avvikelser gällande (.feat) i låtnamnet m.m. Därför kan vi inte naivt lita på att låtnamnen matchar exakt:
if track_1.name == track_2.name: #it's a match else: #it's not
Vi behöver något smartare.
Ett annat förslag är att först sammanfoga textmetadatan till en sträng och sedan använda en teknik som kallas N-gram. Över textsträngen används ett glidande fönster med storleken n=2 med uppgiften att samla antalet förekomster av intilliggande bokstavspar. Som exempel skulle meningen “hello there” producera “he: 2, el: 1, ll: 1, lo: 1, o: 1, t: 1, th: 1, er: 1, re: 1” där heltalen indikerar förekomster. Även om detta inte är en felfri metod, är den användbar eftersom vi kan skapa en sannolikhetsfördelning för två olika meningar och kvantifiera deras likhet.
Det finns många tillgängliga verktyg för att bestämma likhet mellan fördelningar. För denna enkla uppgift användes KL-divergence för att kvantifiera fördelningslikheten mellan de två meningarna. Efter att fördelningarna hade uppskattats tillämpades följande formel för KL-divergens:
Där , är varje möjligt n-gram av de kombinerade meningarna och är de respektive n-gram fördelningarna av meningarna. Värdemängden av denna funktion är ett värde . Detta värde används sedan som en extraherad egenskap till maskininlärningsmodellen.
Den andra lite mer komplicerade egenskapen som extraherades använde omslagsbilden för varje låt. Kortfattat extraherade vi flera egenskaper från spårparets RGB-kanaler: medelvärde, standardavvikelse, entropi och skevhet. Egenskaperna normaliserades sedan och placerades i ett par vektorer. För att uträkna ett likhetsvärde utfördes kosinlikhet på de motsvarande bildvektorerna:
Där , innebär identiska omslagsbilder.
De återstående tre egenskaperna var enklare och av Boolesk typ:
De gav mer vikt till modellen, då när dessa inte matchar, gör oftast inte de olika låtarna det heller. Däremot kan de matcha fast det inte är samma spår, och därför behöver vi fler egenskaper än dessa. Intressant nog har många låtar som är en cover av originalspåret vanligtvis samma låtlängd men inte samma utgivningsdatum. Låtnamnet, artistnamnet och albumnamnet är också ibland liknande; detta är en strategi som vissa coverartister använder som en marknadsföringsknep. Sammanfattningsvis, medan dessa egenskaper verkligen hjälper modellen, är de inte tillräckliga i alla situationer.
Med valet av följande fem egenskaper:
För att inte överanpassa modellen lades brus till i liten grad till de två första egenskaperna i listan ovan. Geometriskt kommer resultatet av denna åtgärd att öka “marginalzonen” mellan de olika klasserna av datan och göra modellen mer “jämn”.
På grund av den en del multikollinearitet mellan egenskaperna kan mycket av den multivariata informationen vara överflöd. Vi kan tillämpa en teknik för dimensionell reduktion som kallas Principalkomponentanalys (PCA). Att minska dimensionerna har flera fördelar, såsom att skapa större numerisk stabilitet i modellen; det gör det också möjligt för oss att visualisera instansrymden.
Intressant nog så finns det två särskiljbara kluster för en "matchning" och "icke-matchning" gällande datapunkterna. I två dimensioner så verkar de också vara linjärt separerbara, vilken innebär att vi endast kommer behöva att använda en enklare modell.
En Stödvektormaskin där en linjär kärna verkade vara ett rimligt val som modellhypotes för detta specifika scenario. Målet med en SVM är att hitta hyperplanet (en linje i detta 2D-fall) som separerar alla olika klasser med maximal marginal. På ett elegant sätt lär sig algoritmen detta hyperplan med hjälp av några intressanta matematiska beräkningar; ett perfekt ämne för en framtida artikel1.
Vi samlade in och utförde extraheringen av egenskaper på tusentals träningsprover och delade in dem i ett tränings- och testset. Därefter tränade vi modellen för att hitta beslutsgränserna, med kontrasterande klasser på vardera sidan; detta är observerbart i grafen nedan.
Modellen evaluerades med test datasettet med följande resultat:
Accuracy Score: 99.57%
Precision: 99.16%
Recall: 100%
Notera att detta är en väldigt hög träffsäkerhet vilket är en reflektion av problemets domän och egenskapsutvinningen; för andra problem, kan ofta resultat som dessa vara orealistiska.
Vi har gått igenom en kort demonstration av ett litet verkligt dataanalysfall med användning av maskininlärningsmetoder. Även om man troligen kan bygga en ganska bra algoritm för matchning av metadata med hjälp av en uppsättning logikregler, såsom if-else-satser, bör man vara medveten om att det kan vara svårt att få till. Därför fungerar maskininlärningsmetoder survärent i domäner med motsvarande problem.
Letar du efter en liknande lösning eller kanske något helt annat? Vi hjälper dig från start till mål inom våra expertisområden. Boka in ett kostnadsfritt rådgivningsmöte redan idag.
Kontakta OssVi erbjuder tech-lösningar och konsultation för projekt inom områden som AI, SaaS och säkerhet
Stockholm, Sweden
caj@maiosolutions.com
+46707866941