1. 程式人生 > >讀讀書,敲敲程式碼,寫寫部落格,思考思考人生。

讀讀書,敲敲程式碼,寫寫部落格,思考思考人生。

z

從網易雲音樂看音樂推薦演算法

對於音樂推薦來說,網易雲音樂無疑是國內最為出色的音樂APP,很多人驚喜地發現使用網易雲音樂聽的歌曲基本上都是自己喜歡的歌曲,這是在其他音樂APP身上不能得到的體驗。根據使用網易雲音樂的經驗和推薦演算法的一些知識,嘗試分析網易雲音樂的音樂推薦。當然具體的雲音樂推薦系統肯定是複雜而又精細的,也肯定是不會透露出來的,只是希望能從這樣的分析中,找到冰山一角。

網易雲音樂的個性化推薦是什麼樣的?

網易雲音樂的推薦頁面放在了最顯眼的位置,減少了使用者的進入的深度。

主要的推薦內容集中在私人FM和每日歌曲推薦中,所推薦的這些單曲是根據使用者的口味形成的,並且在FM和每日歌曲中,可以通過標註喜歡或者不喜歡的方式進一步修正“口味”。另外一個推薦的地方是推薦歌單,該歌單中雲音樂的編輯會給出推薦理由,每天推薦的6個歌單,基本上有3個以上是根據前天所聽的單曲進行推薦,剩下的是感性推薦,與時令、情景等有關等,比如說上圖中的“三八婦女節”。

另外一個推薦的地方就是朋友圈子了,在朋友圈子裡面,可以關注一些音樂達人,通過他們分享的單曲或者歌單進行推薦,實際上對於我等只會聽歌打發時間的人來說,朋友圈子的推薦,經常會收到“原來這首歌那麼好聽”的驚喜,當然也可以新增自己真正意義上的朋友,進行音樂社交。

那麼,怎麼形成口味?

說實話,這是人家的商業機密,怎麼可能告訴我們呢,告訴我們也是很籠統的答案啊--“口味”是“綜合了你的聽歌記錄、收藏的歌曲、歌單、歌手、收看的MV以及本地歌曲等多種因素得到的結果,經過強大又有點複雜的計算之後推薦出來的”

從如此籠統的答案中,我們可以知道:

1

使用了歷史記錄

也許你會覺得這是一句廢話,實際上確實是的。這是一個大家都懂但是又非常重要的事實。筆者曾經做過實驗,在其他條件不變的情況下,每天聽不同的歌曲,發現第二天推薦的音樂基本上只跟昨天聽得歌曲有關。

2

使用了標籤

就拿歌手這一項來說吧,如果只用歌手ID進行編號,也能做推薦但是效果呢?要知道coco和那英,都是同時代的女歌手,但是風格迥異啊。那麼這些tag如何而來,記得剛開始使用雲音樂的時候,要求新增自己喜歡的tag(現在沒有了),可能現在已經形成了雲tag了吧。

3

考慮了時間漂移因素

這也是一句廢話,因為所有的人都知道每一天推薦的東西不同。但是在技術上,卻沒有那麼簡單,因為這意味著每天都要為每個使用者算一遍要推薦的東西,要知道去年中旬雲音樂就宣佈使用者過億了的啊。

怎麼可能有,商業機密商業機密啊,不過筆者倒是可以想到基於標籤的推薦演算法,可以進行音樂推薦(我可沒說這是網易雲音樂的演算法哈),在這裡就簡單介紹一下,也算是更深入地瞭解了推薦演算法。

1

設定tag--假設設定的都是對的

對使用者、歌曲和歌單分別設定tag,用來標示。如使用者U1=U1(ut1,ut2,...,utn)

2

相似度計算

由於使用者等採用了向量的表示方式,因此此處可以採用餘弦相似度計算方法(還有還多方式),計算使用者之間、歌曲之間、歌單之間的相似度。

3

推薦

單曲推薦:1、如使用者i聽了單曲a,則推薦與a相似度最高的給使用者。2、可將與使用者i口味相近的使用者j的歌曲推薦給使用者i。3、把單曲所在的歌單中其它歌曲進行推薦

歌單推薦:推薦風格相近的歌單

等等根據設定好的推薦規則進行推薦。

4

tag更新

人的口味會變,可以根據歷史記錄更新tag。一般歌曲的tag不會變,除非特殊情況(如某首歌突然變成神曲)

至此,基於標籤的推薦演算法介紹完成。

本文通過分析網易雲音樂的個性化推薦特點,尋找音樂推薦中應該要注意的問題,並簡要介紹了基於標籤的音樂推薦演算法。行文中可能會有很多錯漏的地方,歡迎大家一起來探討音樂推薦的相關問題