网易云音乐分析之推荐算法
本篇文章我們從網易云音樂的推薦功能出發,結合我的實習工作,聊一聊互聯網的常用推薦策略。
?
首先來回顧一下云音樂的推薦功能。
?
網易云音樂推薦
?
音樂推薦是創始人丁磊先生愿景最直接的體現,也是網易云音樂的主推功能和核心競爭力所在,備受用戶推崇。
?
推薦算法簡單說就是在海量的用戶數據(行為記錄等)中對用戶進行劃分,對同一群體的用戶推薦其他用戶喜歡的音樂。
?
這其中需要給音樂分類并建立評分細則、建立用戶模型、尋找相似用戶,基于用戶的行為數據將歌曲分類匹配——實現“盲聽”。
?
網易云將音樂推薦分成三個部分:私人FM、每日歌曲推薦、推薦歌單。
?
1. 從準確性、多樣性角度分析
?
私人FM
?
準確性低、多樣性高
?
多樣性高能為用戶帶來新鮮感,如果發現了一首從未聽過但特別喜歡的歌,會帶來驚喜感,調動用戶正面情緒。
?
可是由于準確性低,很可能新歌很不被用戶喜歡,所以在私人FM在播放界面設置“刪除”、“下一首”兩個按鍵便于用戶切換歌曲。
?
每日歌曲推薦
?
準確性高、多樣性低
?
準確性高使得每日推薦的20首歌曲比較好的滿足用戶口味,但是存在音樂類型單一化的問題,因此設置了播放列表以提供用戶瀏覽、操作的權利,彌補曲目單一化帶給用戶的失望。
?
推薦歌單
?
準確性中、多樣性中
?
推薦歌單有別于其他兩個個性化推薦功能,它準確性多樣性的閾值不只是由算法決定的,更多的是它功能形式所決定的。
?
首先把功能的面向對象分為兩類,一類是用戶,一類是UGC歌單,系統分別為歌單和用戶加標簽以提高準確度,由于UGC歌單是由很多用戶創建,所以UGC歌單就具有多樣性,兩者糅合從而保證了準確度和多樣性共存。
?
2. 從操作流程上分析
?
三個功能從看見功能按鍵到最終獲得推薦曲目的步驟:
?
-
看見私人FM>點擊私人FM>獲取音樂
-
看見每日歌曲推薦>點擊每日歌曲推薦>看見推薦列表>篩選喜歡曲目>點擊喜歡曲目>獲取音樂
-
看見推薦歌單>點擊推薦歌單>跳轉歌單頁面>發現類型標簽>篩選類型標簽>點擊類型標簽>看見標簽下的推薦歌單>篩選歌單>點擊歌單>瀏覽歌單列表>篩選喜歡歌曲>點擊喜歡歌曲>獲取音樂
?
可以發現三種方式獲取推薦音樂的操作流程由簡入繁。
?
3. 從用戶使用階段分析
?
三個功能對應著三種用戶階段:
?
私人FM-新用戶:
?
私人FM位于首頁黃金位置,新用戶初次體驗的產品功能時大概率點擊這個按鍵,所以要簡化用戶使用流程,用戶在快速感受產品個性化推薦的魅力后才產生繼續了解其他功能的欲望。
?
每日歌曲推薦-普通用戶:
?
新用戶使用私人FM過后需要不一樣的體驗來滿足個性化需求。
?
每日20首歌曲推薦對用戶來說是可預知的,20首上限的設定給用戶物以稀為貴的感覺,會珍惜每日的推薦,而每日更新無法回看以往推薦的設定,會讓用戶覺得一天不看就錯過了什么的緊迫感。
?
推薦算法設定了基于不同用戶行為的權重,“下載”最高,收藏、搜索、分享其次,此外你也可以點擊“不感興趣”,或許會避開這類歌。
?
?
推薦歌單-深度用戶:
?
歌單是云音樂連接個性化推薦和社交的重要橋梁,推薦歌單是個性化推薦功能最后一環。
?
在深度體驗了推薦歌單之后,用戶會得到歌單可被分享和推薦的認識,很可能會產生自建歌單的沖動。
?
而歌單在云音樂中具有社交屬性,用戶可以互相收藏、評論、分享歌單,而且歌單在個人主頁中也反映了個人音樂風格,讓用戶能夠更好地展現自己給他人。
?
4. 從參與元素分析
?
-
私人FM:系統
-
每日歌曲推薦:系統+自己
-
推薦歌單:系統+自己+其他用戶
?
歐氏距離vs余弦相似度
?
在線下導購時代,導購員會通過系統的話術掌握消費者的情況,來推薦商品。
?
類比導購員推銷時的思維邏輯,我們可以得到音樂推薦算法需要解決的三個核心問題:
?
將用戶信息轉化為用戶類型;
了解曲目的歸屬類型;
將不同類型的用戶與不同類型的曲目對應;
?
我們怎么量化兩個事物之間的相似度呢?常見的方法是利用歐式距離和余弦相似度。
?
以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,對3C的喜歡程度5,對圖書的喜歡程度0,對化妝品的喜歡程度2,用戶B可以用向量表示為r_B (3,4,5,0,2)
?
對于向量A和B而言,他們的在多維空間的夾角可以用向量余弦公式計算:
?
?
余弦相似度取值在0到1之間,0代表完全蒸餃,1代表完全一致。那么用戶A和B的相似度計算:
?
?
即代表了兩個用戶音樂偏好的相似程度。
?
余弦相似度是一種很好的數據策略,對計算用戶類型是很好的解決方法,我們來對比分析它和歐式距離。
?
上圖中,我們反方向延長點A,很明顯向量A和B之間夾角余弦值不變,但歐式距離發生改變。也就是說,利用歐式距離更能突出數值絕對差異,因此常用于歌曲間相似度的計算。
?
例如,喜歡A歌曲的用戶數量是10000,喜歡B歌曲的用戶數是20000,因為樣本足夠大,我們認為用戶對歌曲喜愛的程度相同,也就是相同的分數,那么直接通過數量上的差異來計算相似程度即可。
?
由此可見,小到一個數學公式,大到一個數據模型甚至是推薦系統,都沒有單純的對錯之分,只有是否適合產品需求,能在有限的計算量內結合情景滿足預期。先入為主的方法論是數據策略工作中的大忌。
?
常見推薦方法
?
推薦和搜索本質有相似的地方:
?
-
搜索滿足用戶從海量數據中迅速找到自己感興趣內容的需求,屬于用戶主動獲取。
-
推薦則是系統從海量數據中根據獲取到的用戶數據,猜測用戶感興趣的內容并推薦給用戶,屬于系統推薦給用戶。
?
本質上都是為了在這個信息過載的時代,幫助用戶找到自己感興趣的東西。
?
這里我們介紹四種常見的推薦方法:
?
基于歌曲的推薦
基于歌曲的協同過濾
基于用戶的協同過濾
基于標簽的推薦
?
1. 基于歌曲的推薦
?
基于歌曲的推薦是比較基礎的推薦方法,根據我們播放收藏或下載的某類型的歌曲,推薦這種類型下的其他歌曲。
?
這種方式很容易被理解,但是比較依賴內部曲庫完善的分類體系,且需要用戶有一定的數據積累,不適用于冷啟動。
?
2. 基于歌曲的協同過濾
?
協同過濾與傳統的基于內容分析直接進行推薦不同,協同過濾會分析系統已有數據,并結合用戶表現的數據,對該指定用戶對此信息的喜好程度預測。
?
基于歌曲的協同過濾,通過用戶對不同歌曲的評分(下載收藏評論分享對應不同分數)來評測歌曲之間的相似性。
?
基于歌曲之間的相似性做出推薦,一個典型的例子是著名的“啤酒加尿布”,就是通過分析知道啤酒和尿布經常被美國爸爸們一起購買,于是在尿布邊上推薦啤酒,增加了啤酒銷量。
?
計算用戶u對歌曲j的喜愛程度:
?
?
N(u)表示與用戶有關聯的歌曲歌單等集合,w_ji表示歌曲/歌單j和i的相似度,r_ui表示用戶對i的打分。
?
推薦時也要綜合考慮其他業務數據,比如兩首歌曲越多的被加入兩個歌單,則認為兩首歌越相似。
?
3. 基于用戶的協同過濾
?
基于用戶的協同過濾是通過用戶對不同歌曲/單的行為,來評測用戶之間的相似性,基于用戶之間的相似性做出推薦。
?
這部分推薦本質上是給相似的用戶推薦其他用戶喜歡的歌曲,一句話概括就是:和你類似的人還喜歡下列歌曲。
?
計算用戶u對歌曲i的喜愛程度:
?
?
N(i)表示對歌曲/單i有過行為的用戶集合,w_uv是用戶u和用戶v之間的相似度,r_vi表示用戶v對歌曲/單i的打分。
?
4. 基于標簽的推薦
?
歌曲有標簽,用戶也會基于行為被打上標簽,系統通過標簽將二者關聯。
?
根據標簽進行推薦需要產品在初期就有標簽概念,網易云音樂不同的曲目類型是天然的素材標簽,通過對UGC內容的處理和對用戶行為的數據分析則可以得到用戶標簽。
?
總結
?
在廣場舞大媽都在談論AI的時代,基于機器學習的推薦算法實在算不上風口。但是沒有任何一種推薦方法或系統能適用全部的情形,在真正實現過程中一定要對算法有熟悉的掌握,另外和一些前輩的交流讓我認識到,一個優秀的pm必備的素養之一就是對每一條業務線深刻的理解。
?
在構建一個推薦方法時,我們一般會用到加權、降權、屏蔽。一個方法是否能支持靈活調節權重,后期是否能持續迭代,都是要通過不斷的測試驗證,最終讓數據說話。
?
根據一些用戶反饋和我自身的使用感受,提一些建議:
?
-
網易云音樂推薦算法把用戶最近的行為權重置高,因此系統容易大量推薦相似類型的歌曲,使用戶審美疲勞、興奮度降低。建議在算法中加入用戶使用場景的分析,并對同類型歌曲出現的次數、位置加以限制;
-
針對長尾冷門歌曲,由于數據量相對較少,更要重視效果反饋;深度挖掘數據,豐富推薦元素,比如根據某位用戶喜愛歌手的創作/成長背景,推薦影響該歌手的音樂、專輯、歌手;
?
網易云的情懷令人歡喜,在商業化的今天彌足珍貴。祝越來越好。
?
最后,萬望不吝賜教。
總結
以上是生活随笔為你收集整理的网易云音乐分析之推荐算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 幸福常常在别人眼里
- 下一篇: Matlab中的彩色图及colormap