Hur iTunes Genius verkligen fungerar

Ända sedan inslaget debuterade 2008 har det funnits en hel del spekulation om hur iTunes Genius åstadkommer sin spellistbyggande magi. Nu har en ingenjör på Apple som arbetar på iTunes Genius-teamet avslöjat några lockande ledtrådar –en sällsynt avslöjande för det ökända hemlighetsfulla företaget.





Rekapitulera vad Steve Jobs har sagt tidigare om iTunes Genius, skriver Apples ingenjör Erik Goldman i sin inlägg på Quora att utgångspunkten för Genius-tjänsten är ett paket med användningsdata – vilka låtar en användare har i sitt bibliotek (och, antagligen, hur ofta han eller hon spelar dem) – skickat från iTunes-applikationen som viks ihop till en större databas med användare och låtar.

I grund och botten jämförs ditt bibliotek med spår med alla andra Genius-användares spårbibliotek. Apple kör sedan en uppsättning tidigare hemliga algoritmer, som Goldman beskrev som enkla rekommendationsalgoritmer liknande de som används av andra tjänster som t.ex. Netflix när det föreslår filmer för en användare att titta på nu eller lägga till sin quene, för att generera statistik för varje låt. Denna statistik beräknas globalt med jämna mellanrum och lagras i en cache, konstaterar Goldman, eftersom data om likheten mellan två låtar ändras långsamt – det antas att den enda anledningen till att den förändras överhuvudtaget är på grund av den ändrade smaken hos den lyssnande allmänheten, och introduktionen av nya spår och artister.

Goldman skämtar om att om han berättade för dig hur Genius fungerar så måste han döda dig (eller åtminstone ha en grupp poliser plundra din hjärna för att hämta Apples rättmätiga egendom), men han fortsätter att beskriva hur programmet fungerar ändå.

För att avslöja en del av hur iTunes Genius fungerar, säger Goldman, titta på algoritmer för informationshämtning, särskilt de som utnyttjar vektor-rymdmodellen. Men innan du kan jämföra faktorer, såsom frekvensen av en viss artist eller genre i en användares bibliotek eller spellistor, mellan iTunes-bibliotek via en Vector-Space-modell, behöver du ett smart sätt att definiera faktorn som ger mer vikt åt sakerna som verkligen spelar roll.



Ett enkelt sätt att korrekt vikta faktorer för jämförelse är vad som kallas term frekvens-invers dokumentfrekvens (tf-idf). Det är helt enkelt ett sätt att jämföra hur ofta en viss faktor förekommer i ett enda dokument (eller låt eller bibliotek) med hur ofta den faktorn förekommer i en större kropp, som summan av alla iTunes-bibliotek som lagras av Genius-servrarna. En faktor som förekommer ganska ofta i en given användares bibliotek – till exempel en affinitet för ett obskyrt indy-band – tenderar att vara en mer kraftfull determinant, såvida den inte också råkar förekomma ganska ofta i den totala uppsättningen av data – som skulle vara fallet om faktorn var en affinitet för Beatles.

När du har sorterat dina tf-idf-vikter kan du representera dem i en vektorrymdsmodell som vektorer.

I det här exemplet (artighet Wikipedia ) två olika dokument (eller låtar) har alla sina olika tf-idf-vikter representerade som en enda vektor (t.ex. d1) som sedan kan jämföras med ett andra dokument/vektor (t.ex. d2) och en fråga (q) – som t.ex. av dessa två låtar är mest lik den som jag just har klickat på 'geni'-knappen för. Vilken som än ligger närmast din frågevektor är mer lik.



Goldman gräver djupare in i iTunes Genius-systemet och berättar om användningen av latentfaktoralgoritmer. Speciellt latenta faktoralgoritmer tenderar att fungera väldigt bra på enorma datamängder med ett enormt antal dimensioner och mycket brus, säger Goldman.

Latenta faktorer är vad som skakar ut när du gör en viss typ av statistisk analys, kallad a faktoranalys , på en uppsättning data och letar efter de dolda, osynliga variablerna som orsakar variationen i alla olika variabler du undersöker. Låt oss säga att variationen i ett dussin olika variabler visar sig vara orsakad av bara fyra eller fem dolda variabler - det är dina latenta faktorer. De gör att många andra variabler rör sig i mer eller mindre låssteg.

Att upptäcka de dolda eller latenta faktorerna i din datamängd är ett praktiskt sätt att minska storleken på problemet som du måste beräkna, och det fungerar eftersom människor är förutsägbara: människor som gillar emo-musik är ledsna, och ledsna människor gillar också ljudspåret till filmversioner av vampyrromaner som handlar om längtan, etc. Du kanske tänker på det som det matematiska uttrycket för en stereotyp – bara det fungerar.



Om du vill gå riktigt djupt in i detta ämne, föreslår Goldman att du läser Tidningarna som kom ur Netflix-priset på miljoner dollar, som vanns av en kombination av team ledda av ingenjörer från AT&T. Deras utmaning var att förbättra Netflixs rekommendationsmotor, och en av deras primära innovationer var att minska beräkningsintensiteten för de algoritmer som används i rekommendationsmotorer.

Tidigare har mängden beräkning som krävs för att göra en parvis jämförelse av två objekt i Netflix (och förmodligen Apples) bibliotek skalat som en kvadratisk funktion av antalet jämförelser som ska utföras. Men AT&T-teamet kom på hur man skulle skriva om en grundläggande algoritm för att få problemet att skala endast linjärt med mängden data som är involverad. Så, vad som helst Apples nya datacenter är för, det är förmodligen inte för att beräkna Genius-resultat.

Dölj