Netflix推薦系統的最新解讀:演算法、商業價值與創新
下圖一圖二是Netflix首頁推薦的示例。首頁下面那一行行的豆腐塊電影海報就是Netflix給出的推薦結果,總共會有40行,每一行都是基於一種推薦演算法給出的結果,通常一行推薦結果的數量不超過75個,會綜合考慮用戶使用的設備等用戶體驗因素。每一行都會有對應的「標籤」用來表明推薦理由,Netflix通過這種方式讓推薦結果更直白,用戶也更好理解。
Netflix講解了使用到的幾種最核心的推薦演算法。1、Personalized Video Ranker: PVR
這是Netflix推薦系統最核心的部分。基於「基因」的電影推薦主要就是由PVR來完成的,比如上圖一中左圖的第一行是「懸疑電影」,「懸疑」就是一種基因。PVR是千人千面的,即使同一個基因推薦序列,每個用戶看到的影片及排序都是不同的。Netflix推薦系統中PVR的應用極其廣泛,它是針對每個用戶給出個性化推薦結果的基礎,比如和「流行度」演算法結合,可以讓熱門推薦也變得個性化起來。希望詳細了解PVR演算法的,可以看這篇文章[1]。2、Top-N Video Ranker上圖一中右圖第一行的「Top Picks」就是Top-N演算法最典型的應用。一定程度上可以認為,Top-N是PVR演算法的一個特例。PVR關注的是每個推薦序列的排序,而Top-N的核心目標是從所有序列中找出來最最相關的。可以簡單理解為,Top-N的計算範圍僅限於每個推薦序列頭部的數據,優化目標也是從所有推薦序列中優中選優。3、Trending NowNetflix發現近期趨勢(從幾分鐘到幾天)是預測用戶觀看行為的有效因子,而且如果能夠與合適的個性化方法結合起來的話效果還會更好。Netflix使用trending ranker[2]演算法來生成Trending Now的推薦結果。這個演算法在兩類場景里尤其適用:1)每隔幾個月(比如每年一次)會重複,且每次發生都會有一波明顯的短期效應的,比如每年情人節期間的浪漫愛情片;2)突發的、短期的事件,比如媒體大規模報道了一場在人口密集區域登陸的颶風,就會引發一波對於颶風及其他自然災害相關的紀錄片和影片的關注。上圖二左圖的第二行為Trending Now的示例。
4、Continue WatchingNetflix使用continue watching raker來對是否繼續觀看某部影片或者某個系列來進行建模。Continue Watching不是未觀看完視頻的簡單陳列,它會綜合考慮距離上次觀看的時間,是停在了影片的中段、開頭還是結尾,使用的什麼設備,期間是否又觀看了別的影片等眾多因素。上圖二右圖的第一行為此種推薦的示例。5、Video-Video SmilarityBecause You Watched (BYW) 推薦——基於觀看歷史的推薦——是一種普遍被使用的非常重要的推薦形態,Netflix自然也不例外,上圖一左圖第二行就是示例。這類推薦方法的核心是計算兩個影片的「相似度」,可以計算基於內容的基因相似度,可以從行為角度計算Item-based協同過濾的餘弦相似度,當然也可以綜合使用多種方法。這種相似度本身是非個性化的,Netflix會在把BYW推送到個人頁面的時候加入個性化相關的度量。6、Page Generation: Row Selection and Ranking
基於上面介紹的這些演算法,Netflix通常會對每個用戶都生成一個上萬行的推薦結果集合。因此,如何把這些結果收縮到40行內放到用戶首頁內,且同時要保障相關性和多樣性,這就非常講究功力了,要綜合考慮包括時間、場合、不同的家庭成員貢獻賬號等在在內的多種因素。2015年以前,Netflix主要使用的是基於規則的方法來生成推薦結果頁面。今天,Netflix已經演進出了一種充分個性化且針對相關性與多樣性進行了優化的頁面生成演算法[3]。7、Evidence這些演算法一起組成了完整的Netflix推薦系統。但還有其他的一起演算法,比如推薦理由選擇演算法,它和推薦演算法一起構成了Netflix推薦的完整用戶體驗,用戶依據推薦理由來判斷推薦的影片是否適合他。Netflix把完整的推薦理由放在了示例圖中頁面左上角的部分,包括,1)對於影片的預測評分;2)內容介紹;3)演員陣容、所獲獎項之類的元數據;4)推薦圖片的選擇能其他UI相關的部分,等等。推薦理由選擇演算法會評估推薦影片相關的可供顯示的所有條目,然後選擇出最有利於幫助用戶做出判斷的條目顯示在頁面的推薦理由區域。舉個栗子,推薦理由選擇演算法會決定是應該標明一部影片獲得過奧斯卡,還是提示用戶這部影片和他最近剛看完的某部影片非常相似;它還會從多個版本的圖庫中選擇出一張最貼合給定推薦理由的圖片。8、Search
Netflix的推薦在整個產品裡面可以說是無處不在,從流播放時長來看,80%的用戶選擇都或多或少受到了推薦的影響。其餘的20%來自於搜索,搜索也有自己的演算法。用戶通常都是搜索影片、演員或者是我們目錄提供的基因;我們綜合使用了信息檢索及相關技術為用戶提供最相關的搜索結果。但是,因為用戶的搜索詞也會經常觸碰到不在我們庫里的影片、演員或者是基因,再或者是一些寬泛概念,以至於搜索也變成了某種推薦問題。比如以下圖三為例,1)左圖是用戶搜索「usual」的結果,推測用戶很可能是要搜索影片「The Usual Suspects」,但這部影片Netflix庫里沒有,圖中顯示的搜索結果是基於這個推測做出的推薦結果;2)右圖是用戶搜索「fren」的結果,首先是顯示名字裡面包含fren的影片,左下角顯示相關的演員,然後下面是推測用戶是要找「French Movies」給出的推薦結果。在這些例子裡面,當「搜索」沒有結果的時候,推薦會接管用戶請求給出來推薦結果。對於推薦系統的商業價值,Netflix提到了一個很有意思點,「推薦系統幫助Netflix贏得關鍵時刻」:當一個會員訪問Netflix,Netflix希望能夠幫助他在幾秒鐘之內就找到他感興趣的影片,以免他去尋找別的樂子。個性化技術能夠幫助人們接觸到那些足夠小眾的內容,而這些內容在其他大眾傳播方式下,通常會因為諸如廣告價值太低等原因,無法有效露出。從Netflix的數據可以很清楚的看到,由於推薦系統的作用,他們整個平台被點播到的影片數量大大的提升了。Netflix使用一個專門的指標來衡量這一點,ECS - Effective Catalog Size。當所有的播放都來自於一部影片的時候,ECS=1;如果播放次數與影片數相等,即每次播放的都是不同的影片時,ECS=0;其它情況ECS介於0到1之間。如下圖,Netflix基於無個性化的數據(熱門影片)與個性化推薦PVR的數據做了一個對比分析,在最顯著的地方,個性化推薦使得ECS提升了4倍之多,即在同樣播放次數的情況下,個性化推薦驅動的播放覆蓋到的影片要多得多。希望詳細了解ECS的可以查看這篇論文[4]。另外一個很重要的點,個性化技術可以顯著提高推薦影片的被接受度(Take-Rate),即推薦給用戶的影片真正被播放的比率。Netflix同樣做了一個對比分析,見下圖,黑色線是基於熱門度的曲線,紅色線是基於個性化PVR指標的曲線,個性化推薦使得接受度有了巨大的提升。而且除此之外,比接受度提高更有意義的是,優秀的推薦技術使得用戶的參與度(觀看時長)與退訂率都受益匪淺。Netflix的月退訂率很低(很小的個位數百分比),大部分是因為支付的問題,真正主動選擇退訂的非常少。通過在個性化推薦領域的多年耕耘,月退訂率得以降低了可觀的百分比。月退訂率的降低,一來有效延長了會員的付費存續期,二來也降低了我們為彌補流失用戶所要付出的成本,Netflix估算,個性化推薦能力每年為它的業務節省的費用可達10億美金。除了覆蓋度、接受度這兩個具體指標之外,全面評價推薦系統的好壞面臨的挑戰極大。Netflix給了一個例子,對應「紙牌屋」給出的兩組推薦結果見下圖。直覺上大家通常會覺得下面這組推薦結果更好,因為把老版本的紙牌屋給推薦出來了。然而並沒有。Netflix實際業務數據表明,圖中上面第一組的推薦結果更好。當一個推薦系統面對海量的用戶以及大量的待推薦條目的時候,如何評價推薦結果就是一件極其核心的事情了,你總得搞清楚自己到底在忙活什麼對吧。Netflix採用的是付費會員的商業模式,因此付費會員數就是非常有效的評價指標,這個數字受三個部分的影響:1)新會員轉化率;2)老會員退訂率;3)已退訂會員的召回率。好的推薦系統無疑可以讓用戶存留率增大,存留率又和用戶的觀看時長非常有關係。Netflix在大量使用AB測試的方法來不斷的優化相關的指標[4],一個典型的從離線實驗到在線AB測試的流程如下圖所示,這個整套流程基本上也是成熟推薦系統的標配套路了。需要重點考慮的問題,1)如何準確地定義目標;2)如何合理地切分數據和流量;3)如何真實評價實驗結果。當然,Netflix的推薦系統也還是有各種提升空間的,Netflix列舉了幾點。- 更有效的實驗框架:能夠支持離線實驗演算法更快速的迭代,並且可以更有效預測線上AB測試結果;在參與度指標體系中如何能夠更好地平衡電影、連續劇、專題節目等各種形式的內容。
- 適應全球化的演算法:Netflix計劃在2016年底進入全球市場,不同版權要求的內容會有相應的限制,比如某些影片只限於某些國家播放,如何統一有效地利用Netflix全球數據來最大化某個區域的推薦效果。
- 控制正反饋帶來的偏置效應:推薦系統是典型的強正反饋系統,用戶參與度越高的影片會進一步推薦給更大的用戶群體,然後這些影片就又會更活躍。如何能夠找到更有效的方法引入隨機性,從而學習到更健壯的模型。
- 更好的推薦頁面構建方法:推薦頁面構建還是一個相對新穎、研究比較少的領域。
- 會員冷啟動問題:這個是推薦領域老大難的問題了,Netflix也不例外,PVR演算法在老用戶上的效果要明顯好於新用戶。如何能夠在新用戶首月體驗期內更好的拿下他,價值巨大。
- 共享賬戶的問題:儘管Netflix已經提供了一個付費會員支持多個獨立賬號的功能,但多個家庭成員共享一個賬號的情況仍然很常見,如何能夠更加智能地自動化解決這個問題。
- 提供更好的推薦理由:如何為給到每一個用戶的每一個推薦結果都搭配上更個性化的推薦理由。
[1] http://techblog.netflix.com/2012/06/netflix-recommendations-beyond-5-stars.html
[2] http://techblog.netflix.com/2015/02/whats-trending-on-netflix.html[3] http://techblog.netflix.com/2015/04/learning-personalized-homepage.html[4] http://dl.acm.org/citation.cfm?id=2843948推薦關注微信公眾號【ResysChina】,中國最專業的個性化推薦技術社區。更多內容會首發在微信公眾號。
推薦閱讀:
※Netflix上正在流行啥?
※《怪奇物語》之怪物篇:怎樣把一個略顯老套的故事講出花來
※《黑鏡》S4E3「鱷魚」:沒有灰色地帶的黑白世界
※MUBI是如何成為獨立電影界的Netflix的?
※Netflix 的上線工具 Spinnaker