2009年由Netflix發(fā)起的Netflix Prize百萬美金競賽,絕對是推薦系統(tǒng)領(lǐng)域最標(biāo)致性的事件,這次比賽不但吸引了眾多專業(yè)人士開始投身于推薦系統(tǒng)領(lǐng)域的研究工作,也讓這項(xiàng)技術(shù)從學(xué)術(shù)圈真正地進(jìn)入到了商業(yè)界,引發(fā)了熱烈的討論并逐漸深入到了商業(yè)的核心腹地,功德無量。當(dāng)然,最受益的肯定還是Netflix公司自己,不僅大有取代Amazon成為新一代推薦引擎之王的架勢,而且從商業(yè)回報(bào)本身上看也無疑取得了非常巨大的回報(bào)。7年過去了,Netflix推薦系統(tǒng)的現(xiàn)狀如何呢?ResysChina將帶來最新的深度解讀。
早年舉辦Netflix Prize競賽的時(shí)候,Netflix推薦系統(tǒng)的主要目標(biāo)是預(yù)測用戶對某部影片的評分(1-5分),因?yàn)楫?dāng)年Netflix的主營業(yè)務(wù)還是DVD租賃,打分是Netflix最主要的獲取用戶反饋的方式。Netflix目前仍然在使用著由Netflix Prize衍生出來的算法。目前Netflix的核心業(yè)務(wù)模式已經(jīng)轉(zhuǎn)變?yōu)樵诰€流媒體,因此Netflix可以從更多維度去了解用戶的使用行為,比如,如何觀看(使用什么設(shè)備、每天的什么時(shí)間,每周的哪天,觀看的頻度),用戶是如何發(fā)現(xiàn)視頻的,甚至是哪些視頻已經(jīng)推薦給了用戶但并未被播放,等等。Netflix的最新用戶數(shù)據(jù):注冊會員6500萬人,每天觀看視頻的總時(shí)長1億個(gè)小時(shí)。
Netflix新一代推薦系統(tǒng)的承載形式是「會員首頁」,這也是每個(gè)會員登錄之后的第一頁,平均每3小時(shí)的視頻播放中就有2個(gè)小時(shí)是從這里發(fā)起的。大家都知道,首頁幾乎是所有產(chǎn)品最最重要的頁面,Netflix敢于把首頁基于推薦系統(tǒng)來驅(qū)動(dòng),一來說明他們對推薦系統(tǒng)的重視程度,二來也是表明他們對自己推薦技術(shù)的高度自信。
下圖一圖二是Netflix首頁推薦的示例。首頁下面那一行行的豆腐塊電影海報(bào)就是Netflix給出的推薦結(jié)果,總共會有40行,每一行都是基于一種推薦算法給出的結(jié)果,通常一行推薦結(jié)果的數(shù)量不超過75個(gè),會綜合考慮用戶使用的設(shè)備等用戶體驗(yàn)因素。每一行都會有對應(yīng)的「標(biāo)簽」用來表明推薦理由,Netflix通過這種方式讓推薦結(jié)果更直白,用戶也更好理解。

Netflix講解了使用到的幾種最核心的推薦算法。

1、Personalized Video Ranker: PVR
這是Netflix推薦系統(tǒng)最核心的部分?;凇富颉沟碾娪巴扑]主要就是由PVR來完成的,比如上圖一中左圖的第一行是「懸疑電影」,「懸疑」就是一種基因。PVR是千人千面的,即使同一個(gè)基因推薦序列,每個(gè)用戶看到的影片及排序都是不同的。Netflix推薦系統(tǒng)中PVR的應(yīng)用極其廣泛,它是針對每個(gè)用戶給出個(gè)性化推薦結(jié)果的基礎(chǔ),比如和「流行度」算法結(jié)合,可以讓熱門推薦也變得個(gè)性化起來。希望詳細(xì)了解PVR算法的,可以看這篇文章[1]。
2、Top-N Video Ranker
上圖一中右圖第一行的「Top Picks」就是Top-N算法最典型的應(yīng)用。一定程度上可以認(rèn)為,Top-N是PVR算法的一個(gè)特例。PVR關(guān)注的是每個(gè)推薦序列的排序,而Top-N的核心目標(biāo)是從所有序列中找出來最最相關(guān)的??梢院唵卫斫鉃?,Top-N的計(jì)算范圍僅限于每個(gè)推薦序列頭部的數(shù)據(jù),優(yōu)化目標(biāo)也是從所有推薦序列中優(yōu)中選優(yōu)。
3、Trending Now
Netflix發(fā)現(xiàn)近期趨勢(從幾分鐘到幾天)是預(yù)測用戶觀看行為的有效因子,而且如果能夠與合適的個(gè)性化方法結(jié)合起來的話效果還會更好。Netflix使用trending ranker[2]算法來生成Trending Now的推薦結(jié)果。這個(gè)算法在兩類場景里尤其適用:1)每隔幾個(gè)月(比如每年一次)會重復(fù),且每次發(fā)生都會有一波明顯的短期效應(yīng)的,比如每年情人節(jié)期間的浪漫愛情片;2)突發(fā)的、短期的事件,比如媒體大規(guī)模報(bào)道了一場在人口密集區(qū)域登陸的颶風(fēng),就會引發(fā)一波對于颶風(fēng)及其他自然災(zāi)害相關(guān)的紀(jì)錄片和影片的關(guān)注。上圖二左圖的第二行為Trending Now的示例。
4、Continue Watching
Netflix使用continue watching raker來對是否繼續(xù)觀看某部影片或者某個(gè)系列來進(jìn)行建模。Continue Watching不是未觀看完視頻的簡單陳列,它會綜合考慮距離上次觀看的時(shí)間,是停在了影片的中段、開頭還是結(jié)尾,使用的什么設(shè)備,期間是否又觀看了別的影片等眾多因素。上圖二右圖的第一行為此種推薦的示例。
5、Video-Video Smilarity
Because You Watched (BYW) 推薦——基于觀看歷史的推薦——是一種普遍被使用的非常重要的推薦形態(tài),Netflix自然也不例外,上圖一左圖第二行就是示例。這類推薦方法的核心是計(jì)算兩個(gè)影片的「相似度」,可以計(jì)算基于內(nèi)容的基因相似度,可以從行為角度計(jì)算Item-based協(xié)同過濾的余弦相似度,當(dāng)然也可以綜合使用多種方法。這種相似度本身是非個(gè)性化的,Netflix會在把BYW推送到個(gè)人頁面的時(shí)候加入個(gè)性化相關(guān)的度量。
6、Page Generation: Row Selection and Ranking
基于上面介紹的這些算法,Netflix通常會對每個(gè)用戶都生成一個(gè)上萬行的推薦結(jié)果集合。因此,如何把這些結(jié)果收縮到40行內(nèi)放到用戶首頁內(nèi),且同時(shí)要保障相關(guān)性和多樣性,這就非常講究功力了,要綜合考慮包括時(shí)間、場合、不同的家庭成員貢獻(xiàn)賬號等在在內(nèi)的多種因素。2015年以前,Netflix主要使用的是基于規(guī)則的方法來生成推薦結(jié)果頁面。今天,Netflix已經(jīng)演進(jìn)出了一種充分個(gè)性化且針對相關(guān)性與多樣性進(jìn)行了優(yōu)化的頁面生成算法[3]。
7、Evidence
這些算法一起組成了完整的Netflix推薦系統(tǒng)。但還有其他的一起算法,比如推薦理由選擇算法,它和推薦算法一起構(gòu)成了Netflix推薦的完整用戶體驗(yàn),用戶依據(jù)推薦理由來判斷推薦的影片是否適合他。Netflix把完整的推薦理由放在了示例圖中頁面左上角的部分,包括,1)對于影片的預(yù)測評分;2)內(nèi)容介紹;3)演員陣容、所獲獎(jiǎng)項(xiàng)之類的元數(shù)據(jù);4)推薦圖片的選擇能其他UI相關(guān)的部分,等等。推薦理由選擇算法會評估推薦影片相關(guān)的可供顯示的所有條目,然后選擇出最有利于幫助用戶做出判斷的條目顯示在頁面的推薦理由區(qū)域。舉個(gè)栗子,推薦理由選擇算法會決定是應(yīng)該標(biāo)明一部影片獲得過奧斯卡,還是提示用戶這部影片和他最近剛看完的某部影片非常相似;它還會從多個(gè)版本的圖庫中選擇出一張最貼合給定推薦理由的圖片。
8、Search
Netflix的推薦在整個(gè)產(chǎn)品里面可以說是無處不在,從流播放時(shí)長來看,80%的用戶選擇都或多或少受到了推薦的影響。其余的20%來自于搜索,搜索也有自己的算法。用戶通常都是搜索影片、演員或者是我們目錄提供的基因;我們綜合使用了信息檢索及相關(guān)技術(shù)為用戶提供最相關(guān)的搜索結(jié)果。但是,因?yàn)橛脩舻乃阉髟~也會經(jīng)常觸碰到不在我們庫里的影片、演員或者是基因,再或者是一些寬泛概念,以至于搜索也變成了某種推薦問題。比如以下圖三為例,1)左圖是用戶搜索「usual」的結(jié)果,推測用戶很可能是要搜索影片「The Usual Suspects」,但這部影片Netflix庫里沒有,圖中顯示的搜索結(jié)果是基于這個(gè)推測做出的推薦結(jié)果;2)右圖是用戶搜索「fren」的結(jié)果,首先是顯示名字里面包含fren的影片,左下角顯示相關(guān)的演員,然后下面是推測用戶是要找「French Movies」給出的推薦結(jié)果。在這些例子里面,當(dāng)「搜索」沒有結(jié)果的時(shí)候,推薦會接管用戶請求給出來推薦結(jié)果。
對于推薦系統(tǒng)的商業(yè)價(jià)值,Netflix提到了一個(gè)很有意思點(diǎn),「推薦系統(tǒng)幫助Netflix贏得關(guān)鍵時(shí)刻」:當(dāng)一個(gè)會員訪問Netflix,Netflix希望能夠幫助他在幾秒鐘之內(nèi)就找到他感興趣的影片,以免他去尋找別的樂子。個(gè)性化技術(shù)能夠幫助人們接觸到那些足夠小眾的內(nèi)容,而這些內(nèi)容在其他大眾傳播方式下,通常會因?yàn)橹T如廣告價(jià)值太低等原因,無法有效露出。從Netflix的數(shù)據(jù)可以很清楚的看到,由于推薦系統(tǒng)的作用,他們整個(gè)平臺被點(diǎn)播到的影片數(shù)量大大的提升了。Netflix使用一個(gè)專門的指標(biāo)來衡量這一點(diǎn),ECS - Effective Catalog Size。當(dāng)所有的播放都來自于一部影片的時(shí)候,ECS=1;如果播放次數(shù)與影片數(shù)相等,即每次播放的都是不同的影片時(shí),ECS=0;其它情況ECS介于0到1之間。如下圖,Netflix基于無個(gè)性化的數(shù)據(jù)(熱門影片)與個(gè)性化推薦PVR的數(shù)據(jù)做了一個(gè)對比分析,在最顯著的地方,個(gè)性化推薦使得ECS提升了4倍之多,即在同樣播放次數(shù)的情況下,個(gè)性化推薦驅(qū)動(dòng)的播放覆蓋到的影片要多得多。希望詳細(xì)了解ECS的可以查看這篇論文[4]。

另外一個(gè)很重要的點(diǎn),個(gè)性化技術(shù)可以顯著提高推薦影片的被接受度(Take-Rate),即推薦給用戶的影片真正被播放的比率。Netflix同樣做了一個(gè)對比分析,見下圖,黑色線是基于熱門度的曲線,紅色線是基于個(gè)性化PVR指標(biāo)的曲線,個(gè)性化推薦使得接受度有了巨大的提升。而且除此之外,比接受度提高更有意義的是,優(yōu)秀的推薦技術(shù)使得用戶的參與度(觀看時(shí)長)與退訂率都受益匪淺。Netflix的月退訂率很低(很小的個(gè)位數(shù)百分比),大部分是因?yàn)橹Ц兜膯栴},真正主動(dòng)選擇退訂的非常少。通過在個(gè)性化推薦領(lǐng)域的多年耕耘,月退訂率得以降低了可觀的百分比。月退訂率的降低,一來有效延長了會員的付費(fèi)存續(xù)期,二來也降低了我們?yōu)閺浹a(bǔ)流失用戶所要付出的成本,Netflix估算,個(gè)性化推薦能力每年為它的業(yè)務(wù)節(jié)省的費(fèi)用可達(dá)10億美金。
除了覆蓋度、接受度這兩個(gè)具體指標(biāo)之外,全面評價(jià)推薦系統(tǒng)的好壞面臨的挑戰(zhàn)極大。Netflix給了一個(gè)例子,對應(yīng)「紙牌屋」給出的兩組推薦結(jié)果見下圖。
直覺上大家通常會覺得下面這組推薦結(jié)果更好,因?yàn)榘牙习姹镜募埮莆萁o推薦出來了。然而并沒有。Netflix實(shí)際業(yè)務(wù)數(shù)據(jù)表明,圖中上面第一組的推薦結(jié)果更好。當(dāng)一個(gè)推薦系統(tǒng)面對海量的用戶以及大量的待推薦條目的時(shí)候,如何評價(jià)推薦結(jié)果就是一件極其核心的事情了,你總得搞清楚自己到底在忙活什么對吧。Netflix采用的是付費(fèi)會員的商業(yè)模式,因此付費(fèi)會員數(shù)就是非常有效的評價(jià)指標(biāo),這個(gè)數(shù)字受三個(gè)部分的影響:1)新會員轉(zhuǎn)化率;2)老會員退訂率;3)已退訂會員的召回率。好的推薦系統(tǒng)無疑可以讓用戶存留率增大,存留率又和用戶的觀看時(shí)長非常有關(guān)系。Netflix在大量使用AB測試的方法來不斷的優(yōu)化相關(guān)的指標(biāo)[4],一個(gè)典型的從離線實(shí)驗(yàn)到在線AB測試的流程如下圖所示,這個(gè)整套流程基本上也是成熟推薦系統(tǒng)的標(biāo)配套路了。需要重點(diǎn)考慮的問題,1)如何準(zhǔn)確地定義目標(biāo);2)如何合理地切分?jǐn)?shù)據(jù)和流量;3)如何真實(shí)評價(jià)實(shí)驗(yàn)結(jié)果。


當(dāng)然,Netflix的推薦系統(tǒng)也還是有各種提升空間的,Netflix列舉了幾點(diǎn)。
更有效的實(shí)驗(yàn)框架:能夠支持離線實(shí)驗(yàn)算法更快速的迭代,并且可以更有效預(yù)測線上AB測試結(jié)果;在參與度指標(biāo)體系中如何能夠更好地平衡電影、連續(xù)劇、專題節(jié)目等各種形式的內(nèi)容。
適應(yīng)全球化的算法:Netflix計(jì)劃在2016年底進(jìn)入全球市場,不同版權(quán)要求的內(nèi)容會有相應(yīng)的限制,比如某些影片只限于某些國家播放,如何統(tǒng)一有效地利用Netflix全球數(shù)據(jù)來最大化某個(gè)區(qū)域的推薦效果。
控制正反饋帶來的偏置效應(yīng):推薦系統(tǒng)是典型的強(qiáng)正反饋系統(tǒng),用戶參與度越高的影片會進(jìn)一步推薦給更大的用戶群體,然后這些影片就又會更活躍。如何能夠找到更有效的方法引入隨機(jī)性,從而學(xué)習(xí)到更健壯的模型。
更好的推薦頁面構(gòu)建方法:推薦頁面構(gòu)建還是一個(gè)相對新穎、研究比較少的領(lǐng)域。
會員冷啟動(dòng)問題:這個(gè)是推薦領(lǐng)域老大難的問題了,Netflix也不例外,PVR算法在老用戶上的效果要明顯好于新用戶。如何能夠在新用戶首月體驗(yàn)期內(nèi)更好的拿下他,價(jià)值巨大。
共享賬戶的問題:盡管Netflix已經(jīng)提供了一個(gè)付費(fèi)會員支持多個(gè)獨(dú)立賬號的功能,但多個(gè)家庭成員共享一個(gè)賬號的情況仍然很常見,如何能夠更加智能地自動(dòng)化解決這個(gè)問題。
提供更好的推薦理由:如何為給到每一個(gè)用戶的每一個(gè)推薦結(jié)果都搭配上更個(gè)性化的推薦理由。