Categories
程式開發

如何評價推薦系統的結果質量?


推薦系​​統是互聯網發展至今最常見也重要的技術之一。如今各類APP、網站、小程序等所有提供內容的地方,背後都有推薦系統在發揮作用。

如何評價推薦系統的結果質量? 1

開發好一套真正優秀的推薦系統非常有價值,但也非常艱鉅。業界有一句俗話:“沒有評價就沒有進步”,其意思是如果沒有一套科學的評價推薦系統效果的方法,那就找不到優化改進的方向,打造優秀的推薦系統就無從談起。

筆者在幾年前寫過《怎樣量化評價搜索引擎的結果質量》一文並首發於InfoQ。和搜索引擎相比,移動互聯網時代的推薦系統應用面更廣闊,評價指標也更複雜。

評價指標像一把尺子,指引著我們產品優化的方向。到底怎樣才能科學合理的評價推薦系統的結果質量?從各類文獻資料和網上文章裡能看到數十種評估公式,讓人眼花繚亂。這些指標各自有什麼優缺點,應該怎樣取捨?本文從我們的實踐經驗出發,對此進行一些深入的分析,期望對大家有所裨益。

1.針對不同的推薦場景,一定要因地制宜的選擇合適的評估方法

推薦場景是製定評價指標時最為關鍵的,脫離了推薦場景來談評測指標就像無水之魚。所謂“推薦場景”,與所推薦的內容類型、展現方式、推薦所滿足的用戶需求,都有莫大的關係,而且這種關係體現的有時還很微妙。

例如同樣都是推薦視頻,但在推薦電影(典型的長視頻)、和推薦短視頻(一般只有幾秒鐘長度),其背後所面對的用戶需求完全不同。前者展示的是電影海報、名稱、評分、主演和故事梗概,用戶查看這些內容的目的是盡快挑選出一部適合觀賞的電影,因此推薦系統強調的是如何更快更準的給出優質結果。而後者的短視頻推薦(例如常見的抖音快手等)用戶在瀏覽過程中目的性不強,而且因為時長短,決策成本低,用戶瀏覽目的是為消磨時間,推薦系統的目的是讓用戶在這個app上停留的時間足夠長,粘性足夠大。

對前面這個場景來說,用戶在推薦頁(注意不是在播放頁)停留的時間越長,滿意度一定是越低的,誰都不願意傻傻的在一堆電影名稱+海報的挑選頁面花費太多的時間,如果挑了十幾分鐘還沒能找出一部接下來值得觀看的電影,用戶一定會對推薦系統的印像大打折扣。但對後者來說,推薦的過程本身就在不斷觀賞短視頻,為了滿足用戶kill time的需求,多樣性、新穎性等更重要。

如何評價推薦系統的結果質量? 2

如果從評估方法的角度來看,推薦電影等長視頻時更多要看在足夠短的時間裡推出了滿足用戶持續觀看的電影,而且用戶看後認為是“高分好片”、1個多小時的觀影時間花的值得,是最理想的指標。而對後者來說,黏住用戶,增加瀏覽時長,同時照顧到平台上短視頻製作方的曝光和健康生態,則對推薦系統來說是關鍵考核因素。

用這個簡單例子我們達觀想為各位讀者們解釋的是,一定要從產品的場景來深刻理解推薦的作用,才能更好的選擇評估方法,才能讓那些茫茫多的推薦評估公式找到合適的用武之地。

2.影響推薦系統評估方式的幾類因素

場景的細微差異,決定著評估方法應該有所不同。俗話說“什麼樣的場合穿什麼樣的衣服”,西裝也好運動服也好,都有適配的場合。根據我們對場合細微差異的理解,有以下幾個因素在發揮作用:

因素一:推薦展示槽位是固定數量,還是不斷延展的信息Feed流

固定槽位數量的推薦,更接近搜索引擎或者定向廣告的結果。因為展示數量有限,且可能還有先後次序(類似搜索結果從上到下排列),對推薦結果的準確率要求高,這類場景稱為Top-N推薦。此時推薦結果前N條結果的點擊率CTR(Click-Through-Rate)是常見指標(點擊/曝光)。

如果推薦結果有明顯的先後順序(如app上從上到下展示結果),那麼往往還可以把位置衰減因素予以考慮,例如NDCG(Normalized Discounted Cumulatie Gain), MRR(Mean Reciprocal Rank),或MAP( mean average precision)都融入了位置因素)

如何評價推薦系統的結果質量? 3

右側紅框為常見的Top-N推薦結果

如何評價推薦系統的結果質量? 4

常見的展示推薦/廣告

還有一類是展示型的推薦,和經典的效果廣告非常類似,區別只在於收費方式,如上圖。這種情況下推薦系統可以藉用廣告系統的常見評價方式,例如AUC,ROC等指標。

而如果是在移動APP上常見的Feed流推薦,因為推薦展示槽位數量很多(甚至可視為無限多),用戶滑屏又可輕易實現,此時位置先後因素並沒有特別重要,常用曝光點擊率(點擊量/曝光次數)來衡量推薦質量,此外PV點擊率(點擊量/總PV)、UV點擊率(點擊量/總UV)也是Feed流中常用方法。此時首屏首條結果並不像Top-N推薦那麼重要,因此評估指標也不同。

因素二:推薦背後的商業模式是以電商交易型、還是廣告收益型的

很多推薦系統用於電商平台上,目的是更好的促成買賣雙方交易,例如各大電商網站、外賣生活類APP等。推薦最核心目的是促成交易(例如用戶完成商品購買,或者用戶點播觀看某部電影,或用戶開始閱讀某本小說);此時推薦帶來的交易筆數佔總交易的比例、或者交易總金額與GMV的比例,就是最直接的評價指標。

因為從推薦激發購物者興趣,到用戶完成訂單,有漫長的操作鏈條,所以還可以分解動作以更好的衡量每個環節的效果。例如加購物車率(通過推薦引導的加購物車數量/推薦曝光總數),商品詳情頁閱讀率(通過推薦引導進入商品詳情頁數量/推薦曝光總數)等

而有一些平台是以廣告點擊、曝光等作為主要收入來源的,例如常見的各類新聞資訊類APP,或者短視頻類、免費閱讀(漫畫、小說)類APP,廣告作為主要收入來源,那麼期望推薦系​​統能更好的擴大用戶在APP上停留的時間,提高用戶點擊數等,這些意味著平台能獲得更多的廣告收入,因為無論是CPM或CPC計費的廣告形式,用戶越活躍,翻閱次數越多,平均收益就越高。

這種情況下,推薦系統爭取滿足的用戶需求是消磨時間、或“閒逛”的場景,此時用戶平均停留時長、推薦引導下的成功閱讀次數等,則更符合需求。

因素三:推薦評估是離線進行,還是在線實時完成

離線評估和在線評估因為數據準備的條件不同,適合採取的手段也不同。離線數據採集通常很難做到完全細緻全面的情況下(例如大量用戶的隱式反饋數據很難完整記錄,因為性能代價太大),離線評估方法會有所不同。

典型的離線評估例如有著名的Netflix Prize競賽、以及KDD Cup、Kaggle上的一些大數據算法競賽,這些比賽數據集固定,採用靜態的評估方法,MSE(Mean Absolute Error)平均絕對誤差、RMSE(Root Mean Squared Error)均方根誤差,或者R-Squared(R方)來計算:

如何評價推薦系統的結果質量? 5

如何評價推薦系統的結果質量? 6

如何評價推薦系統的結果質量? 7

例如在電影、電視劇的推薦中,用戶-物品評分矩陣(User-Item-Rating)就是常用於離線評估,在學術界尤其常見。因為高校、學術界很難接觸真實線上環境,用離線評估是比較方便來評估算法好壞的,也算是學術界的無奈吧。

但我們都知道用戶真正給產品評分的顯式數據(Explicit Feedbacks)是非常稀缺的,有時我們不得不拍出一些評分映射關係,例如分享映射為幾分、點贊映射為幾分等,來近似的生成評估矩陣併計算上述這些靜態指標。

如何評價推薦系統的結果質量? 8

在線實時計算各類推薦效果指標

而在線評估的好處時可以隨時進行AB test分流測試,效果好壞一目了然,工程師們很喜歡。其難點有兩個,第一是線上環境極為複雜,會受到很多其他因素的干擾,未必真正能反映推薦算法效果的好壞。例如一些指標很容易受攻擊和作弊。另外一些運營活動也會干擾效果。尤其當抽取比對的流量佔比過小時,數據抖動很大,AB test的結果未必真能體現實際效果

第二個難點是評估數據往往體現的是最終結果,而不是中間某個模塊的直接好壞。如果想用AB 測試傳導到內部更深層次的算法模塊,往往需要在工程架構上做大量開發,把內部參數傳遞出來才行。例如通過在線評估雖然可以很容易的計算推薦排序策略(Ranking Strategy)孰優孰劣,但如想分析之前的召回策略(Recall Strategy)哪個更有效,通過在線評估就困難的多。向前的參數傳導需要在大數據工程架構上下功夫,這也是我們達觀一直致力於的。

還有個恐怕是一線算法工程師常常會遇到的難題,就是離線評估的結果和在線測試的結果南轅北轍。離線測下來效果頂呱呱的算法,上線後可能石沉大海一點浪花也看不到。這也恰好證明了正確選擇評估方法是多麼重要。

因素四:推薦系統當前的目標是最大化運營指標,還是考慮生態平衡和來源多樣性

推薦的內容如果都來源於平台自身,那麼往往只需重點考慮平台關鍵運營指標最大最優,例如達成更多的交易提升GMV,或者讀者的留存率更高,或者提升整個平台用戶的活躍度等就行。

但還有一類複雜的情況,一些平台的待推薦內容來自各個UGC或PGC,這些內容提供者依賴平台的推薦來進行內容曝光並獲利。在這種情況下,平台要從自身生態平衡、系統長期健康的角度來出發,需要考慮出讓一些推薦曝光機會給到長尾UGC或PGC,以避免出現被少量頂部內容渠道綁架導致的“客大欺店”的問題,同時扶植更多的中小內容創作者能讓生態更健康繁榮。畢竟大樹之下寸草不死一定不是平台樂意看到的現象。此時推薦系統作為最重要的指揮棒,其評價指標中一定需要將內容來源覆蓋率(Source Coverage)、多樣性(Novelty)等指標。

經濟學中的基尼係數(Gini coefficient),也可以作為輔助的指標用來評價生態的健康程度。推薦系​​統的初衷就是消除馬太效應,使各種物品都能被展示給某類人群。但研究表明主流的推薦算法(比如協同過濾)都是具有馬太效應的。基尼係數就是用來評測推薦系統馬太效應強弱的。如果Gini1 是從初始用戶行為中計算出的物品流行度的基尼係數,Gini2 是從推薦列表中計算出的物品流行度的基尼係數,如果 Gini2 > Gini1則說明推薦算法具有馬太效應

因素五:推薦結果要迎合人性,還是引導人性

推薦系​​統本質上是讓計算機系統通過大規模數據挖掘來“揣摩”人性。但略微深刻一些來說,人性是最為複雜、矛盾的東西。既有理性的一面,又有感性的一面。

推薦系​​統一味地迎合人性,會顯得“媚俗”,最終也會被用戶唾棄。例如人性都有獵奇、貪婪的一面,而且人性通常是沒有耐心的——這也證明了為什麼幾秒鐘的短視頻越來越受歡迎,連續劇為什麼要有“倍速”功能,以及標題驚悚的短文章總是比內容深刻篇幅漫長的文章在推薦的時候指標更好看。

人是從眾的動物,內心總是關心同類們在看些什麼。大量基於協同過濾思想的算法,滿足了相關需求。如果充分迎合,會發現大量人群喜歡看的往往是偏低俗、快餐式的內容。如果不加干預,黃賭毒、標題黨、危言聳聽、獵奇刺激的內容、或者廉價低劣的商品往往會充斥在推薦結果中。

但想要引導人性,倡導更有質量的內容,是推薦系統要肩負的責任,這個時候的評價指標一定不能只單純看重點擊率、轉化率等量化指標,因為如果只用這些指標來優化算法,最終結果一定是低劣內容會充斥著版面,降低整個平台的格調。

在推薦系統評估時大家往往語焉不詳的“驚喜度”(Serendipity)、“新穎性”(Novelty)等,往往就是在人性揣測的方面進行探索。這些指標計算時最大的難點是評價指標偏主觀,很難直接使用在線行為計算。一般只能用事後問卷或者用戶對內容的評價評分、轉發等行為來間接佐證。或者以7日或者N日留存率等來判斷用戶對推薦結果整體的滿意度。 (達觀數據 陳運文)

3.實戰中推薦評估指標設置的常用方法

方法一:為不同的細分人群來設置不同的評價指標

基於用戶的整體式評估,會讓推薦算法導向滿足“大多數人口味”的推薦結果,但這背離了千人千面的個性化的初衷。我們期望社群裡不同的人都能通過推薦來形成滿意的體驗。小眾的人群偏好往往會淹沒在整體數據中,我們一線的算法工程師經常有體會,就是某個新的推薦算法上線後,看整體指標明顯好很多了,但是你的領導/客戶可能來投訴,說感覺推給他的東西感覺沒以前好了。個體和群體經常存在類似的矛盾。某個推薦算法可能對整體有利,但對其中另一類人未必如此。

理想的做法是將其中的人群進行細分,例如電商網站中既有價格敏感型的大眾用戶,也有追求品質的高端用戶。在計算指標時如果劃分不同人群來計算,更能體現推薦效果作用後的具體差異。例如我們期望新用戶能迅速完成交易並沉澱下來,那麼針對這群人的推薦指標,下單率和次日或7日留存就非常重要。而針對高端人群的則有所不同。個體的差異性和小眾品味要得到更大程度的重視。

方法二:按不同的推薦位置來製定不同的指標

在同一個推薦APP或產品裡,不同位置的推薦需要針對性的設置推薦評價指標。前文中提到的不同位置、不同場景,推薦指標制定規則可以有所不同。例如首頁首屏的banner推薦(Top-N推薦),信息流Feed推薦,內容詳情頁下面的相關推薦(常用precision-recall或者F1-score)來計算。還有在搜索無結果頁、購物車頁面,退出確認頁等等,不同的位置一定需要因地制宜的選擇適合的評價指標。

方法三:綜合幾種不同的評估指標來獲得整體數據指標

每個指標都有局限性,推薦系統需要平衡很多因素 ( 商業、用戶體驗、技術實現、資金、人力等 ) ,怎麼做好平衡是一種哲學。通常可以把幾個因素加權求和來作為整體指標

指標的選擇和產品主打定位有關係。例如一個特別強調內容快速新鮮的APP,那麼結果的時效性就應該佔更大的權重。而一個強調格調品味的APP,單篇閱讀時長就顯得更可貴。而強調社群活躍度的平台,用戶對內容的分享率,互動率等,在整體指標中要更突出。 (達觀數據 陳運文)

在產品運營的不同階段,傾向性不同指標的選擇也應該有所不同。產品上線前期可能要照顧用戶體驗,大力拓展新用戶。當用戶量足夠多後,可能會側重商業變現 ( 推薦的付費視頻,在列表中插入較多廣告等 ) ,想辦法通過推薦讓產品盡快盈利。如果是電商類推薦,要細緻的考慮用戶購買前和購買後的差異,以及標品和非標品的差異。購買前往往可以多推薦同類產品以更好的讓用戶進行比選。當購買動作完成後,尤其是耐用消費品,再繼續推薦就適得其反了。

如何評價推薦系統的結果質量? 9

各類推薦算法和指標的靈活選擇

4.推薦指標小結

推薦系​​統本質上就是讓每個消費者滿意,這些指標只是從不同的角度來衡量“滿意”這件事情的程度高低。在此小結下常見的指標種類,包括如下幾種類型:

場景轉化類指標:曝光點擊率,PV點擊率,UV點擊率,UV轉化率,加購物車率,分享率,收藏率,購買率,人均點擊個數,CTR,AUC等

推薦內容質量指標:結果多樣性(Diversity),結果新穎性(Novelty),結果時效性(timeliness),結果信任度(Confidence& Trust)等

內容消費滿意度指標:留存率,停留時長,播放完成率,平均閱讀時長,交易量,沉浸度(Engagement),驚喜度(Serendipity)等

在同一個推薦場景下,指標不宜過多,因為太多了不利於最終優化決策,把握準每個場景核心發揮的作用的幾個推薦指標就行。但也不能只有一個指標,因為過於單一的指標會把推薦算法的優化引入歧途。迷信單一的指標表現好不能說明產品好,而且物極必反,過度優化後的指標雖然上去了,但用戶的體驗往往會降低。

如何評價推薦系統的結果質量? 10

很多推薦評價指標本身也是脆弱和易受攻擊的,一些推薦算法如果嚴重依賴各類反饋指標來自動優化結果,往往會被惡意利用,所以既要靈活運用推薦評價指標,又不要完全迷信技術指標。因為指標背後體現的是用戶的人性。在商業利益和人性之間拿捏到最佳平衡點,是推薦系統開發、以及推薦效果評估的至高境界。

作者介紹

陳運文:達觀數據創始人&CEO,復旦大學計算機博士,國家“萬人計劃”專家,第九屆上海青年科技英才,任復旦大學、上海財經大學校外研究生導師。在人工智能領域擁有豐富研究成果,在IEEE Transactions、SIGKDD等國際頂級學術期刊和會議上發表數十篇高水平科研成果論文,譯有人工智能經典著作《智能Web 算法》(第2 版),曾多次摘取ACM KDD CUP、CIKM、EMI Hackathon等世界最頂尖數據挖掘競賽的冠亞軍榮譽。曾擔任盛大文學首席數據官、騰訊文學高級總監、百度核心技術研發工程師。在機器學習、自然語言處理、搜索推薦等領域有豐富的研究和工程經驗。