2009年由Netflix發起的Netflix Prize百萬美金競賽,絕對是推薦系統領域最標緻性的事件,這次比賽不但吸引了眾多專業人士開始投身於推薦系統領域的研究工作,也讓這項技術從學術圈真正地進入到了商業界,引發了熱烈的討論並逐漸深入到了商業的核心腹地。
當然,最受益的肯定還是Netflix公司自己,不僅大有取代Amazon成為新一代推薦引擎之王的架勢,而且從商業回報本身上看也無疑取得了非常巨大的回報。
7年過去了,Netflix推薦系統的現狀如何呢?ResysChina將帶來最新的深度解讀。
早年舉辦Netflix Prize競賽的時候,Netflix推薦系統的主要目標是預測用戶對某部影片的評分(1-5分),因為當年Netflix的主營業務還是DVD租賃,打分是Netflix最主要的獲取用戶反饋的方式。
Netflix雖然仍然在使用着由Netflix Prize衍生出來的算法,但目前Netflix的核心業務模式已經轉變為在線流媒體,因此Netflix可以從更多維度去了解用戶的使用行為,比如,如何觀看(使用什麼設備、每天的什麼時間,每周的哪天,觀看的頻度),用戶是如何發現視頻的,甚至是哪些視頻已經推薦給了用戶但並未被播放,等等。
Netflix的最新用戶數據:註冊會員6500萬人,每天觀看視頻的總時長1億個小時。
Netflix新一代推薦系統的承載形式是「會員首頁」,這也是每個會員登錄之後的第一頁,平均每3小時的視頻播放中就有2個小時是從這裡發起的。大家都知道,首頁幾乎是所有產品最最重要的頁面,Netflix敢於把首頁基於推薦系統來驅動,一來說明他們對推薦系統的重視程度,二來也是表明他們對自己推薦技術的高度自信。
下圖一圖二是Netflix首頁推薦的示例。首頁下面那一行行的豆腐塊電影海報就是Netflix給出的推薦結果,總共會有40行,每一行都是基於一種推薦算法給出的結果,通常一行推薦結果的數量不超過75個,會綜合考慮用戶使用的設備等用戶體驗因素。每一行都會有對應的「標籤」用來表明推薦理由,Netflix通過這種方式讓推薦結果更直白,用戶也更好理解。
Netflix講解了使用到的幾種最核心的推薦算法。
1、Personalized Video Ranker: PVR
這是Netflix推薦系統最核心的部分。基於「基因」的電影推薦主要就是由PVR來完成的,比如上圖一中左圖的第一行是「懸疑電影」,「懸疑」就是一種基因。PVR是千人千面的,即使同一個基因推薦序列,每個用戶看到的影片及排序都是不同的。Netflix推薦系統中PVR的應用極其廣泛,它是針對每個用戶給出個性化推薦結果的基礎,比如和「流行度」算法結合,可以讓熱門推薦也變得個性化起來。
2、Top-N Video Ranker
上圖一中右圖第一行的「Top Picks」就是Top-N算法最典型的應用。一定程度上可以認為,Top-N是PVR算法的一個特例。PVR關注的是每個推薦序列的排序,而Top-N的核心目標是從所有序列中找出來最最相關的。可以簡單理解為,Top-N的計算範圍僅限於每個推薦序列頭部的數據,優化目標也是從所有推薦序列中優中選優。
3、Trending Now
Netflix發現近期趨勢(從幾分鐘到幾天)是預測用戶觀看行為的有效因子,而且如果能夠與合適的個性化方法結合起來的話效果還會更好。Netflix使用trending ranker算法來生成Trending Now的推薦結果。
這個算法在兩類場景裡尤其適用:1)每隔幾個月(比如每年一次)會重複,且每次發生都會有一波明顯的短期效應的,比如每年情人節期間的浪漫愛情片;2)突發的、短期的事件,比如媒體大規模報道了一場在人口密集區域登陸的颶風,就會引發一波對於颶風及其他自然災害相關的紀錄片和影片的關注。上圖二左圖的第二行為Trending Now的示例。
4、Continue Watching
Netflix使用continue watching raker來對是否繼續觀看某部影片或者某個系列來進行建模。Continue Watching不是未觀看完視頻的簡單陳列,它會綜合考慮距離上次觀看的時間,是停在了影片的中段、開頭還是結尾,使用的什麼設備,期間是否又觀看了別的影片等眾多因素。上圖二右圖的第一行為此種推薦的示例。
5、Video-Video Smilarity
Because You Watched (BYW) 推薦——基於觀看歷史的推薦——是一種普遍被使用的非常重要的推薦形態,Netflix自然也不例外,上圖一左圖第二行就是示例。這類推薦方法的核心是計算兩個影片的「相似度」,可以計算基於內容的基因相似度,可以從行為角度計算Item-based協同過濾的餘弦相似度,當然也可以綜合使用多種方法。這種相似度本身是非個性化的,Netflix會在把BYW推送到個人頁面的時候加入個性化相關的度量。
6、Page Generation: Row Selection and Ranking
基於上面介紹的這些算法,Netflix通常會對每個用戶都生成一個上萬行的推薦結果集合。因此,如何把這些結果收縮到40行內放到用戶首頁內,且同時要保障相關性和多樣性,這就非常講究功力了,要綜合考慮包括時間、場合、不同的家庭成員貢獻賬號等在在內的多種因素。
2015年以前,Netflix主要使用的是基於規則的方法來生成推薦結果頁面。今天,Netflix已經演進出了一種充分個性化且針對相關性與多樣性進行了優化的頁面生成算法。
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等於影片數;其它情況ECS介於這之間。如下圖,Netflix基於無個性化的數據(熱門影片)與個性化推薦PVR的數據做了一個對比分析,在最顯著的地方,個性化推薦使得ECS提升了4倍之多,即在同樣播放次數的情況下,個性化推薦驅動的播放覆蓋到的影片要多得多。
另外一個很重要的點,個性化技術可以顯著提高推薦影片的被接受度(Take-Rate),即推薦給用戶的影片真正被播放的比率。Netflix同樣做了一個對比分析,見下圖,黑色線是基於熱門度的曲線,紅色線是基於個性化PVR指標的曲線,個性化推薦使得接受度有了巨大的提升。
而且除此之外,比接受度提高更有意義的是,優秀的推薦技術使得用戶的參與度(觀看時長)與退訂率都受益匪淺。Netflix的月退訂率很低(很小的個位數百分比),大部分是因為支付的問題,真正主動選擇退訂的非常少。通過在個性化推薦領域的多年耕耘,月退訂率得以降低了可觀的百分比。月退訂率的降低,一來有效延長了會員的付費存續期,二來也降低了為彌補流失用戶所要付出的成本。
除了覆蓋度、接受度這兩個具體指標之外,全面評價推薦系統的好壞面臨的挑戰極大。Netflix給了一個例子,對應「紙牌屋」給出的兩組推薦結果見下圖。
直覺上大家通常會覺得下面這組推薦結果更好,因為把老版本的紙牌屋給推薦出來了。然而並沒有。Netflix實際業務數據表明,圖中上面第一組的推薦結果更好。當一個推薦系統面對海量的用戶以及大量的待推薦條目的時候,如何評價推薦結果就是一件極其核心的事情了,你總得搞清楚自己到底在忙活什麼對吧。
Netflix採用的是付費會員的商業模式,因此付費會員數就是非常有效的評價指標,這個數字受三個部分的影響:1)新會員轉化率;2)老會員退訂率;3)已退訂會員的召回率。
好的推薦系統無疑可以讓用戶存留率增大,存留率又和用戶的觀看時長非常有關係。
Netflix在大量使用AB測試的方法來不斷的優化相關的指標,一個典型的從離線實驗到在線AB測試的流程如下圖所示,這個整套流程基本上也是成熟推薦系統的標配套路了。需要重點考慮的問題,1)如何準確地定義目標;2)如何合理地切分數據和流量;3)如何真實評價實驗結果。
當然,Netflix的推薦系統也還是有各種提升空間的,Netflix列舉了幾點。
更有效的實驗框架:能夠支持離線實驗算法更快速的迭代,並且可以更有效預測線上AB測試結果;在參與度指標體系中如何能夠更好地平衡電影、連續劇、專題節目等各種形式的內容等。
適應全球化的算法:Netflix計劃在2016年底進入全球市場,不同版權要求的內容會有相應的限制,比如某些影片只限於某些國家播放,如何統一有效地利用Netflix全球數據來最大化某個區域的推薦效果。
控制正反饋帶來的偏置效應:推薦系統是典型的強正反饋系統,用戶參與度越高的影片會進一步推薦給更大的用戶群體,然後這些影片就又會更活躍。如何能夠找到更有效的方法引入隨機性,從而學習到更健壯的模型。
更好的推薦頁面構建方法:推薦頁面構建還是一個相對新穎、研究比較少的領域。
會員冷啟動問題:這個是推薦領域老大難的問題了,Netflix也不例外,PVR算法在老用戶上的效果要明顯好於新用戶。如何能夠在新用戶首月體驗期內更好的拿下他,價值巨大。
共享賬戶的問題:儘管Netflix已經提供了一個付費會員支持多個獨立賬號的功能,但多個家庭成員共享一個賬號的情況仍然很常見,需要能夠更加智能地自動化解決這個問題。
提供更好的推薦理由:如何為給到每一個用戶的每一個推薦結果都搭配上更個性化的推薦理由。
據Netflix估算,個性化推薦系統每年為它的業務節省的費用可達10億美金。打造一套優秀的推薦系統面臨著很多挑戰,但無疑又價值巨大。
Netflix每年靠它節省10億美元,這套個性化推薦系統是怎麼回事?