網易云音樂:3種推薦維度和2種推薦算法漫談
網易云音樂在我看來在各方面都是較為出色的音樂APP,網上也有各種體驗報告、產品分析,但都比較偏向交互和前端。所以,我決定對其靠后端大功能“推薦音樂和算法”稍作一些探討。也是因為個人喜好問題,包括我做PD的時候,也喜歡接一些靠后端的項目,所以本文也不太涉及到界面交互方面的東西。
網易云音樂希望面向的受眾為85后到90后的年輕聽眾,且分布于經濟發達地區。這類人對新生事物的學習和消費需求較為高漲,也是網易云音樂為何直接將“發現音樂”置于Tool Bar第一位,且大力投入的原因。
在我看來,網易云音樂使用了3個維度向人們推薦音樂:朋友推薦、人工推薦、智能推薦。
朋友推薦
在這三種推薦維度中,先來簡單說說朋友推薦。這個功能雖然目前還沒有特別火,但并不能否定“朋友推薦”是網易云音樂在音樂APP領域里最大的前沿性嘗試,如果真的做起來了,威力不可小覷。我想,這也許是微信要封殺網易云音樂的正真原因。眾所周知,讓自己的朋友知道自己的品味,甚至得到認可,給予人的成就感激勵是巨大的,這也是騰訊沒有想到的,所以QQ音樂也立刻在社交方面奮起直追,不過目前仍讓人覺得屬于倉促之作,期待之后的發力。
人工推薦
而“人工推薦”則是網易音樂編輯人員人工推薦的歌單和電臺。人工推薦在網易云音樂中,仍然占著較為主導的作用。原因很簡單,私人藝術偏好屬于非常感性的問題,有些事情沒有專業編輯做推薦確實會略顯單調。也許大數據時代是來了,但在人類較感性的問題上,計算機也許還沒有什么太好的辦法。但“人工推薦”仍有瓶頸,因為編輯這個職業的工作導向,必然導致推薦的歌單非常的大眾化,滿足的是大部分人,而偏小眾品味的用戶,則就需要智能推薦來支撐了。
智能推薦
純算法的“智能推薦”,我們并不能說它是一個偽需求,“豆瓣FM”的出現,證明了依托大數據的智能推薦方式并非沒有市場。這也是為什么從那以后,類“猜你喜歡”功能也逐漸在各種音樂APP中出現。
而推薦的算法方面,目前主流的有兩種方式,一種是以“豆瓣FM”為代表的“以人為本”方式,一種是以“蝦米歌曲漫游”為代表的“以歌為本”方式。兩種算法擁有互補性,網易云音樂自然也都用在了APP里:“以人為本”算法在“個性化推薦”的“私人FM”和“每日歌曲推薦”中展現,“以歌為本”算法在“個性化推薦”的其余歌單中展現。
這兩種算法也各有優缺點,而網易云音樂則聰明地避開了幾乎所有缺點。我們先來梳理一下這兩種算法及他們的優缺點:
“以人為本”算法
“以人為本”最早的應用場景來自于亞馬遜的購物推薦,也就是俗稱的“喜歡這個商品的人,也喜歡XX”。后來,這個算法被“豆瓣FM”拿來,用在了音樂推薦上。
那么,這個算法到底是怎樣的呢?舉個非常簡單的例子:
A喜歡x,y,z三首歌。
B喜歡x,y。那么我可以推斷,B一定也喜歡z這首歌。
當然,這也是最為簡單的情況了。
還有非常多的case,比如“喜歡”如何定義?用戶“不喜歡”怎么辦?
也許“喜歡”下的用戶行為包括:點擊“喜歡”、評論、下載、收藏到歌單、點擊“相似推薦”、分享、查看MV、聽這首歌的頻率、是否播放整曲等。
而“不喜歡”的用戶行為有可能包括:5秒內切換、扔進垃圾桶、移出歌單、刪除等。
在維度特別多的情況下,我們就需要對用戶的每個行為引入權重機制。
“以人為本”的好處是非常明顯的,這種算法不需要特別大的人力成本,只需要寫好一個基礎算法,并不停優化就可以了。而缺點顯而易見:
第一個缺點是用戶在使用初期會碰到的情況,在用戶剛來的時候,對于算法來說用戶是一張白紙,那么算法首先會給他一些大部分人喜歡的歌曲,因為這些歌曲喜歡的幾率大于其他,但恰巧此用戶的品味較為奇葩,左試右試沒有匹配到,那么這個用戶也許會陷入煩躁,甚至流失。
第二個缺點是用戶在使用較久之后會碰到的情況,聽到的歌曲風格越來越極度的同質化,就拿我本人來舉一個極端的例子,我的品味比較奇怪,又喜歡民謠,又喜歡金屬核。那么在算法知道了我喜歡民謠了以后,給我推薦了海量的民謠,我也一一點擊了“喜歡”,然后我會在風格方面越來越專一。致使我永遠無法聽到我喜歡的金屬核。這種情況在“豆瓣FM”中尤為明顯。
第三個缺點是對一個人的品味轉移響應速度較慢。再舉個極端的例子,比如我初中的時候還喜歡蔡依林,高一的時候忽然愛上了工業金屬。而積累了海量“類蔡依林歌曲”曲庫的我,在登錄后一定會不知所措,也同樣會造成我煩躁地一遍一遍的切換著歌曲。
依托于網易云音樂現有的歌曲搜索和收藏功能,“以人為本”的前2個缺點被網易云音樂輕松克服。
至于第三個缺點如何克服呢?我們從生成機制上可以看出,“個性化推薦”下的“私人FM”和“每日歌曲推薦”的這兩個歌單的做法略顯不同,“私人FM”和“豆瓣FM”的工作原理幾乎一致,是在用戶切換歌曲的一瞬間,通過用戶的聽歌歷史來決定播放的歌曲,所以在“私人FM”下,無法切換回上一首。
而“每日歌曲推薦”里有一句文案暴露了實現方法,“根據你的音樂口味生成,每天6:00更新”。這說明這個歌單的工作方法,一定是每天在后臺數據庫通過用戶最新的歌曲喜好和相應公式,來生成歌單。并在每天早上的6點放到線上數據庫中,呈現給用戶看。這種實現方法,也就避免了“以人為本”的第三點缺點-個人品味轉移響應速度較慢這個缺點。
“以歌為本”算法
我們再來看以“蝦米歌曲漫游”為代表的“以歌為本”的推薦方式。這種算法是將每首歌曲打上Tag:
歌曲A擁有Tag:X,Y
歌曲B擁有Tag:Y,Z
你喜歡歌曲A,因為他有TagY,所以也許你也會喜歡歌曲B。
“以歌為本”這種算法的優點是避免了“以人為本”幾乎所有的缺點。但是缺點也同樣凸顯:
第一個缺點是歌曲推薦同質化較為嚴重,這也是我經常在蝦米使用“歌曲漫游”時碰到的情況,我喜歡同一風格的兩首歌,那么,在分別漫游這兩首歌的時候,生成的歌單幾乎是一模一樣的。
第二個缺點是工作量非常巨大,這個世界上所有的歌曲有3500萬首,雖然大多數人聽的歌都集中在一起,但既然使用了這種算法,你不得不得考慮到小眾品味用戶的需求。
而網易云音樂對“以歌為本”的算法缺點克服,則做的更為聰明,也非常具有前沿性。
對第一個缺點,也就是歌曲推薦重復情況,網易云音樂的做法是:不像蝦米一樣在“歌曲”這個維度上進行推薦,轉而全部使用“歌單”這個歌曲集合進行推薦,大大增加了容錯率。這種聰明做法也立刻被其他音樂APP競相模仿。
對于第二個缺點,也就是打Tag的工作量巨大問題。網易云音樂也有自己的解決方法:在用戶建立歌單時,網易云音樂會讓用戶自己給自己的歌單打Tag,不得超過3個,且禁止自建Tag,這兩個限制也可能暴露了這套機制的實現方法。我認為歌單上的3個Tag會被分配到歌單下的每首歌上,而一首歌經常會被不同的用戶分配到不同的歌單中,那么剩下的事情就變得簡單了,只要取在這首歌上被分配得最多的幾個Tag來參與算法即可。所以我們可以看到“個性化推薦”下,網易云音樂可以通過歌單和歌曲兩個緯度來給我們推薦歌曲。這么做不但減輕了工作量,也使歌曲Tag更科學,更具時效性。
其他優化建議
這么看來,網易云音樂確實在算法上下足了功夫。是否還有地方值得優化?
我拋磚引玉一下,先說第一點,也是我經常碰到的煩惱問題,我想大家也一定碰到過。當使用任何一款音樂APP一段時間后,“我喜歡的音樂”里一定塞了上百首上千首風格各異的歌曲,有一天我走在街上,使用隨機播放功能播放“我喜歡的音樂”歌單,此時心情是安靜的,非常想聽一些安靜的曲子,但是事與愿違。我不停的切歌,卻總是找不到自己想聽的歌曲,于是將手機從口袋中掏出,找了半天終于找到了那首我最想聽的歌曲,播放完全曲后,沒想到隨機跳到的下一首歌又是我不想聽的暴躁歌曲,不停切換后仍然如此。那么也許此時我的心情便沒有剛開始時安靜了。我推薦的做法是,在大型歌單中,隨機播放模式下,使用“以歌為本”算法,當用戶顯露出明顯的對某些Tag的歌曲表現出不喜歡時,短時間內不再播放這些Tag的歌曲。而對于聽完全曲的歌曲,可以把這首歌的類似歌曲,大大提高隨機播放到的幾率。不過這實現起來可能會比較困難,因為需要把算法和Tag從服務端下載到本地才能實現,但也許還有別的實現方法我沒想到。
第二個需要優化的地方相信大家也會碰到,在較大歌單中,我們經常保有一些已經老掉牙早已聽膩的歌曲,只是忘記刪除,但總是會被隨機播放出來,對于這種歌一般都會被立即切換。我們是否能在這一點上進行優化?比如,當網易云音樂發現一首歌已經到達相當的重復播放次數(具體次數可從大數據中分析),并在最后幾次播放中被快速切換,就減少隨機到該歌曲的幾率。也許就可以解決這個問題。
歸根結底,對用戶體驗的追求是永無止盡的,我相信網易云音樂仍然會在用戶體驗上繼續下足功夫,讓我們拭目以待吧。
作者:狗燒
原文鏈接:http://www.jianshu.com/p/fc20c0637954
本文由 @狗燒 授權發布于人人都是產品經理,未經作者許可,禁止轉載。
所以是要歌單里面也要智能排序了嗎?
不錯,角度很好!贊
網易最讓我喜歡的一點就是以人為本,而不是以市場歌曲為本。看一眼QQ音樂,仿佛有一種被推入熱門市場中的感覺。
贊一個
QQ音樂的隨機播放基本上順序都一樣,也真是有時候受不了。 ?