網(wǎng)易云音樂分析之推薦算法
文章從網(wǎng)易云音樂的推薦功能出發(fā),為我們分享了互聯(lián)網(wǎng)的常用推薦策略。
在上一篇文章中我們對網(wǎng)易云音樂的核心功能——音樂推薦進行了簡單分析,時隔三個月,從app store等評分中可以看出,部分用戶對網(wǎng)易云音樂推薦曲目的準確度存在質疑。本篇文章我們從網(wǎng)易云音樂的推薦功能出發(fā),結合我的實習工作,聊一聊互聯(lián)網(wǎng)的常用推薦策略。
網(wǎng)易云音樂推薦
首先來回顧一下云音樂的推薦功能。音樂推薦是創(chuàng)始人丁磊先生愿景最直接的體現(xiàn),也是網(wǎng)易云音樂的主推功能和核心競爭力所在,備受用戶推崇。
推薦算法簡單說就是在海量的用戶數(shù)據(jù)(行為記錄等)中對用戶進行劃分,對同一群體的用戶推薦其他用戶喜歡的音樂。這其中需要給音樂分類并建立評分細則、建立用戶模型、尋找相似用戶?;谟脩舻男袨閿?shù)據(jù)將歌曲分類匹配——實現(xiàn)“盲聽”。
網(wǎng)易云將音樂推薦分成三個部分:私人FM、每日歌曲推薦、推薦歌單。
(1)從準確性、多樣性角度分析
私人FM(準確性低、多樣性高):多樣性高能為用戶帶來新鮮感,如果發(fā)現(xiàn)了一首從未聽過但特別喜歡的歌,會帶來驚喜感,調動用戶正面情緒。可是由于準確性低,很可能新歌很不被用戶喜歡,所以在私人FM在播放界面設置“刪除”、“下一首”兩個按鍵便于用戶切換歌曲。
每日歌曲推薦(準確性高、多樣性低):準確性高使得每日推薦的20首歌曲比較好的滿足用戶口味,但是存在音樂類型單一化的問題,因此設置了播放列表以提供用戶瀏覽、操作的權利,彌補曲目單一化帶給用戶的失望。
推薦歌單(準確性中、多樣性中):推薦歌單有別于其他兩個個性化推薦功能,它準確性多樣性的閾值不只是由算法決定的,更多的是它功能形式所決定的,首先把功能的面向對象分為兩類,一類是用戶,一類是UGC歌單,系統(tǒng)分別為歌單和用戶加標簽以提高準確度,由于UGC歌單是由很多用戶創(chuàng)建,所以UGC歌單就具有多樣性,兩者糅合從而保證了準確度和多樣性共存。
(2)從操作流程上分析
三個功能從看見功能按鍵到最終獲得推薦曲目的步驟:
- 看見私人FM>點擊私人FM>獲取音樂
- 看見每日歌曲推薦>點擊每日歌曲推薦>看見推薦列表>篩選喜歡曲目>點擊喜歡曲目>獲取音樂
- 看見推薦歌單>點擊推薦歌單>跳轉歌單頁面>發(fā)現(xiàn)類型標簽>篩選類型標簽>點擊類型標簽>看見標簽下的推薦歌單>篩選歌單>點擊歌單>瀏覽歌單列表>篩選喜歡歌曲>點擊喜歡歌曲>獲取音樂
可以發(fā)現(xiàn)三種方式獲取推薦音樂的操作流程由簡入繁。
(3)從用戶使用階段分析
三個功能對應著三種用戶階段:
私人FM-新用戶:私人FM位于首頁黃金位置,新用戶初次體驗的產(chǎn)品功能時大概率點擊這個按鍵,所以要簡化用戶使用流程,用戶在快速感受產(chǎn)品個性化推薦的魅力后才產(chǎn)生繼續(xù)了解其他功能的欲望。
每日歌曲推薦-普通用戶:新用戶使用私人FM過后需要不一樣的體驗來滿足個性化需求,每日20首歌曲推薦對用戶來說是可預知的,20首上限的設定給用戶物以稀為貴的感覺,會珍惜每日的推薦,而每日更新無法回看以往推薦的設定,會讓用戶覺得一天不看就錯過了什么的緊迫感。推薦算法設定了基于不同用戶行為的權重,“下載”最高,收藏、搜索、分享其次,此外你也可以點擊“不感興趣”,或許會避開這類歌。
推薦歌單-深度用戶:歌單是云音樂連接個性化推薦和社交的重要橋梁,推薦歌單是個性化推薦功能最后一環(huán),在深度體驗了推薦歌單之后,用戶會得到歌單可被分享和推薦的認識,很可能會產(chǎn)生自建歌單的沖動,而歌單在云音樂中具有社交屬性,用戶可以互相收藏、評論、分享歌單,而且歌單在個人主頁中也反映了個人音樂風格,讓用戶能夠更好地展現(xiàn)自己給他人。
(4)從參與元素分析
- 私人FM:系統(tǒng)
- 每日歌曲推薦:系統(tǒng)+自己
- 推薦歌單:系統(tǒng)+自己+其他用戶
歐氏距離vs余弦相似度
在線下導購時代,導購員會通過系統(tǒng)的話術掌握消費者的情況,來推薦商品。類比導購員推銷時的思維邏輯,我們可以得到音樂推薦算法需要解決的三個核心問題:
- 將用戶信息轉化為用戶類型;
- 了解曲目的歸屬類型;
- 將不同類型的用戶與不同類型的曲目對應;
我們怎么量化兩個事物之間的相似度呢?常見的方法是利用歐式距離和余弦相似度。以A、B用戶間相似度為例:
利用歐式距離時,我們把A、B用戶看做兩點,用兩點間距離表示二者相似度。
使用余弦相似度時,則把二者看成同一坐標系下的兩個向量。兩個向量間夾角大小反應出他們的相似度,夾角越小則相似度越大。二維空間向量表示為r(x1,x2),多維空間向量表示為r(x1,x2…,xn)
比如,假設用戶有5個維度
對流行的喜歡程度(1~5分),對搖滾的喜歡程度(1~5分),對民謠的喜歡程度(1~5分),對說唱的喜歡程度(1~5分),對爵士的喜歡程度(1~5分)。
用戶A:對流行的喜歡程度3,對搖滾的喜歡程度1,對民謠的喜歡程度4,對說唱的喜歡程度5,對爵士的喜歡程度0,用戶A可以用向量表示為r_A (3,1,4,5,0)
一個用戶B:對流行的喜歡程度3,對搖滾的喜歡程度4,對民謠的喜歡程度5,對說唱的喜歡程度0,對爵士的喜歡程度2,用戶B可以用向量表示為r_B (3,4,5,0,2)
對于向量A和B而言,他們的在多維空間的夾角可以用向量余弦公式計算:
余弦相似度取值在0到1之間,0代表完全蒸餃,1代表完全一致。那么用戶A和B的相似度計算:
即代表了兩個用戶音樂偏好的相似程度。
余弦相似度是一種很好的數(shù)據(jù)策略,對計算用戶類型是很好的解決方法,我們來對比分析它和歐式距離。
上圖中,我們反方向延長點A,很明顯向量A和B之間夾角余弦值不變,但歐式距離發(fā)生改變。也就是說,利用歐式距離更能突出數(shù)值絕對差異,因此常用于歌曲間相似度的計算。例如,喜歡A歌曲的用戶數(shù)量是10000,喜歡B歌曲的用戶數(shù)是20000,因為樣本足夠大,我們認為用戶對歌曲喜愛的程度相同,也就是相同的分數(shù),那么直接通過數(shù)量上的差異來計算相似程度即可。
由此可見,小到一個數(shù)學公式,大到一個數(shù)據(jù)模型甚至是推薦系統(tǒng),都沒有單純的對錯之分,只有是否適合產(chǎn)品需求,能在有限的計算量內結合情景滿足預期。先入為主的方法論是數(shù)據(jù)策略工作中的大忌。
常見推薦方法
推薦和搜索本質有相似的地方。搜索滿足用戶從海量數(shù)據(jù)中迅速找到自己感興趣內容的需求,屬于用戶主動獲取。推薦則是系統(tǒng)從海量數(shù)據(jù)中根據(jù)獲取到的用戶數(shù)據(jù),猜測用戶感興趣的內容并推薦給用戶,屬于系統(tǒng)推薦給用戶。本質上都是為了在這個信息過載的時代,幫助用戶找到自己感興趣的東西。這里我們介紹四種常見的推薦方法。
- 基于歌曲的推薦
- 基于歌曲的協(xié)同過濾
- 基于用戶的協(xié)同過濾
- 基于標簽的推薦
(1)基于歌曲的推薦
基于歌曲的推薦是比較基礎的推薦方法,根據(jù)我們播放收藏或下載的某類型的歌曲,推薦這種類型下的其他歌曲。這種方式很容易被理解,但是比較依賴內部曲庫完善的分類體系,且需要用戶有一定的數(shù)據(jù)積累,不適用于冷啟動。
(2)基于歌曲的協(xié)同過濾
協(xié)同過濾與傳統(tǒng)的基于內容分析直接進行推薦不同,協(xié)同過濾會分析系統(tǒng)已有數(shù)據(jù),并結合用戶表現(xiàn)的數(shù)據(jù),對該指定用戶對此信息的喜好程度預測。
基于歌曲的協(xié)同過濾,通過用戶對不同歌曲的評分(下載收藏評論分享對應不同分數(shù))來評測歌曲之間的相似性,基于歌曲之間的相似性做出推薦;一個典型的例子是著名的“啤酒加尿布”,就是通過分析知道啤酒和尿布經(jīng)常被美國爸爸們一起購買,于是在尿布邊上推薦啤酒,增加了啤酒銷量。
計算用戶u對歌曲j的喜愛程度:
N(u)表示與用戶有關聯(lián)的歌曲歌單等集合,w_ji表示歌曲/歌單j和i的相似度,r_ui表示用戶對i的打分。
推薦時也要綜合考慮其他業(yè)務數(shù)據(jù),比如兩首歌曲越多的被加入兩個歌單,則認為兩首歌越相似。
(3)基于用戶的協(xié)同過濾
基于用戶的協(xié)同過濾是通過用戶對不同歌曲/單的行為,來評測用戶之間的相似性,基于用戶之間的相似性做出推薦。這部分推薦本質上是給相似的用戶推薦其他用戶喜歡的歌曲,一句話概括就是:和你類似的人還喜歡下列歌曲。
計算用戶u對歌曲i的喜愛程度:
N(i)表示對歌曲/單i有過行為的用戶集合,w_uv是用戶u和用戶v之間的相似度,r_vi表示用戶v對歌曲/單i的打分。
(4)基于標簽的推薦
歌曲有標簽,用戶也會基于行為被打上標簽,系統(tǒng)通過標簽將二者關聯(lián)。
根據(jù)標簽進行推薦需要產(chǎn)品在初期就有標簽概念,網(wǎng)易云音樂不同的曲目類型是天然的素材標簽,通過對UGC內容的處理和對用戶行為的數(shù)據(jù)分析則可以得到用戶標簽。
總結
在廣場舞大媽都在談論AI的時代,基于機器學習的推薦算法實在算不上風口。但是沒有任何一種推薦方法或系統(tǒng)能適用全部的情形,在真正實現(xiàn)過程中一定要對算法有熟悉的掌握,另外和一些前輩的交流讓我認識到,一個優(yōu)秀的pm必備的素養(yǎng)之一就是對每一條業(yè)務線深刻的理解。
在構建一個推薦方法時,我們一般會用到加權、降權、屏蔽。一個方法是否能支持靈活調節(jié)權重,后期是否能持續(xù)迭代,都是要通過不斷的測試驗證,最終讓數(shù)據(jù)說話。
根據(jù)一些用戶反饋和我自身的使用感受,提一些建議:
- 網(wǎng)易云音樂推薦算法把用戶最近的行為權重置高,因此系統(tǒng)容易大量推薦相似類型的歌曲,使用戶審美疲勞、興奮度降低。建議在算法中加入用戶使用場景的分析,并對同類型歌曲出現(xiàn)的次數(shù)、位置加以限制;
- 針對長尾冷門歌曲,由于數(shù)據(jù)量相對較少,更要重視效果反饋;深度挖掘數(shù)據(jù),豐富推薦元素,比如根據(jù)某位用戶喜愛歌手的創(chuàng)作/成長背景,推薦影響該歌手的音樂、專輯、歌手;
網(wǎng)易云的情懷令人歡喜,在商業(yè)化的今天彌足珍貴。祝越來越好。
最后,萬望不吝賜教。
作者:獅子田,武漢大學研究生一年級在讀,尋求暑期實習~
本文由 @獅子田 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉載。
題圖來自PEXELS,基于CC0協(xié)議
,
準確率不是和多樣性放到一個維度討論的指標,和準確率相對的是召回率,多樣性是控制rerank的,屬于優(yōu)化體驗的,還有如打散控制、去重、重定向。
因為連著看了幾篇類似的內容,所以覺得這篇前半部分和2017年的一篇文章(http://www.codemsi.com/evaluating/626691.html)很像,后面又和一篇介紹推薦算法的文章很像。。。我覺得我們學習別人的思路什么的是可以的,但是如果沒有原創(chuàng)的內容就沒必要發(fā)出來吧,或者至少注明一下。如果措辭不當,還望諒解。 ??
跟這篇 也驚人的相似 http://www.codemsi.com/pd/683304.html
其實我想問個問題,網(wǎng)易云音樂不推出屏蔽歌手的功能,是出于什么考慮的?
也很好奇,這是之前搜知乎一個此類問題,罕見的大家回答十分統(tǒng)一。https://www.zhihu.com/question/50433826
沙發(fā)
很喜歡文主的思考方式,尤其是運用到了相應的數(shù)學知識對問題進行的一個解剖,收獲挺大的,最后同網(wǎng)易云音樂的支持者,哈哈!
??
是不是歐式距離 舉例舉錯了 應該是兩首歌的相似度吧 例如A歌的流行的程度3,搖滾程度1,民謠程度4,說唱程度5,爵士程度0,A歌可以用向量表示為r_A (3,1,4,5,0) B歌的流行的程度4,搖滾程度2,民謠程度5,說唱程度4,爵士程度1,A歌可以用向量表示為r_A (4,2,5,4,1)
系統(tǒng)通過用戶行為數(shù)據(jù)可以得到用戶的分數(shù),從而計算出用戶間相似度;當歌曲不和用戶行為建立聯(lián)系時,可以針對歌曲的風格等特點,像您說的這樣利用余弦相似度計算;當歌曲與用戶行為結合,由于樣本數(shù)量足夠大,就要通過歐式距離來判斷,例如認為被20000個用戶喜歡的歌曲,和被21000個用戶喜歡的歌曲之間的相似度,要大于被500個用戶喜歡的歌曲。
itemcf得考慮用戶的吧,20000∩21000=0而20000∩500=500的話,顯然500這首與20000的相似度遠大于21000這首