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