推薦策略中的“召回”
當你打開一個資訊APP刷新聞時,有沒有想過,系統是如何迅速推送給你你想看的內容?資訊APP背后有一個巨大的內容池,系統是如何判斷要不要將某條資訊推送給你的呢?這就是筆者今天想跟大家探討的問題——推薦策略中的召回。
召回是什么
推薦系統如何根據已有的用戶畫像和內容畫像去推薦,涉及到兩個關鍵問題:召回和排序。
“召回(match)”指從全量信息集合中觸發盡可能多的正確結果,并將結果返回給“排序”。
召回的方式有多種:協同過濾、主題模型、內容召回和熱點召回等,而“排序(rank)“則是對所有召回的內容進行打分排序,選出得分最高的幾個結果推薦給用戶。
圖1 推薦系統的算法流程
在搜索系統中,用戶會輸入明確的搜索詞,根據搜索詞進行內容的召回和呈現即可,但在推薦系統中,用戶沒有一個明確的檢索詞(Query)輸入,推薦系統需要做的,就是根據用戶畫像、內容畫像等各種信息為用戶推薦他可能感興趣的內容。
另外,由于沒有明確的檢索詞,推薦系統就需要從整個信息集合中挑選出盡可能多的相關結果,同時又需要剔除相關性較弱的結果,降低排序階段的工作量。
怎樣的召回策略是好的
召回策略的評估主要根據兩個評價指標:召回率和準確率。
召回率(Recall)=系統檢索到的相關內容 / 系統所有相關的內容總數準確率(Precision)=系統檢索到的相關內容 / 系統所有檢索到的內容總數。
以搜索為例,當用戶搜索“北京大學”時,想看到北大相關的網站、新聞等,系統返回了以下三個網頁:
a. 北京大學保安考上研究生;
b. 北京互聯網工作招聘;
c. 大學生活是什么樣的;
可以看到,只有a是用戶真正想看到的,其他兩個和用戶搜索詞無關,而事實上數據庫里還有這種網頁:
d. 北大開學季;
e. 未名湖的景色;
d、e這兩個網頁沒被搜索到,但它們和“北京大學”的相關度其實是超過b、c的,也就是應該被搜索(被召回)到但實際并沒有顯示在結果里的,所以,這個系統的:
- 召回率 = a / (a + d + e)=0.33;
- 準確率 = a /(a + b + c)=0.33。
這是搜索情境下的召回率和準確率,而“推薦”其實就是沒有檢索詞輸入時的搜索,例如,用戶并沒有輸入“北京大學”這樣的關鍵詞,但其實他是北京大學的學生,對自己學校相關的新聞很感興趣,推薦系統的召回就是要根據用戶畫像、內容畫像等各種信息,為用戶提供他感興趣的相關內容,所以也存在召回率和準確率的問題。
召回率和準確率有時存在相互制衡的情況,好的召回策略應該在保證高準確率的情況下也保證高召回率。
當然,召回率和準確率也是存在一定關系的,而我們在做實際項目的優化目標通常是希望用戶所檢索的內容能夠在召回率和準確率兩方面都表現都好。
舉個例子(或許不夠準確,僅供參考)如表1,機器在給用戶推薦內容的時候,會出現A(準確并召回)、B(準確不召回)、C(不準確召回)、D(不準確不召回)四種情況。那么,最理想的就是A、C兩種情況。
表1 內容召回的4種情況
推薦系統如何召回
召回策略主要包含兩大類,即基于內容匹配的召回和基于系統過濾的召回。
1. 基于內容匹配的召回
內容匹配即將用戶畫像與內容畫像進行匹配,又分為基于內容標簽的匹配和基于知識的匹配。
例如,A用戶的用戶畫像中有一條標簽是“楊冪的粉絲”,那么在他看了《繡春刀2》這部楊冪主演的電影后,可以為他推薦楊冪主演的其他電影或電視劇,這就是“基于內容標簽的匹配”。
“基于知識的匹配”則更進一步,需要系統存儲一條“知識”——《繡春刀2》是《繡春刀1》的續集,這樣就可以為看過《繡春刀2》的用戶推薦《繡春刀1》?;趦热萜ヅ涞恼倩剌^為簡單、刻板,召回率較高,但準確率較低(因為標簽匹配并不一定代表真的感興趣),比較適用于冷啟動的語義環境。
2. 基于協同過濾的召回
如果僅使用上述較簡單的召回策略,推薦內容會較為單一,目前業界最常用的基于協同過濾的召回,它又分為基于用戶、基于項目和基于模型的協同過濾。
其中,基于用戶(User-based)的協同推薦是最基礎的,它的基礎假設是“相似的人會有相同的喜好”,推薦方法是,發現與用戶相似的其他用戶,用用戶的瀏覽記錄做相互推薦。
例如,通過瀏覽記錄發現用戶一與用戶二的偏好類似,就將用戶一點擊的內容推送給用戶二。
圖2 基于用戶的推薦
基于項目(Item-based)的協同過濾中的“項目”可以視場景定為信息流產品中的“內容”或者電商平臺中的“商品”,其基礎假設是“喜歡一個物品的用戶會喜歡相似的物品”計算項目之間的相似性,再根據用戶的歷史偏好信息將類似的物品推薦給該用戶。
圖3 基于項目的推薦
基于模型的協同過濾推薦(Model-based)就是基于樣本的用戶喜好信息,訓練一個推薦模型,然后根據實時的用戶喜好的信息進行預測推薦。
總體來說,基于協同過濾的召回即建立用戶和內容間的行為矩陣,依據“相似性”進行分發。這種方式準確率較高,但存在一定程度的冷啟動問題。
在實際運用中,采用單一召回策略的推薦結果實際會非常粗糙,通用的解決方法是將規則打散,將上述幾種召回方式中提煉到的各種細小特征賦予權重,分別打分,并計算總分值,預測CTR。
例如,根據內容匹配召回策略,用戶A和內容甲的標簽匹配度為0.6,同時,根據協同過濾召回策略,應該將內容甲推薦給用戶A的可能性為0.7,那么就為0.6和0.7這兩個數值分別賦予權重(這個權重可能會根據算法的具體情況來確定),得出總分,用它來預測用戶可能點擊的概率,從而決定是否返回該結果。
今日頭條的召回策略
今日頭條作為業界推薦系統方面的頂級選手,不免有人會好奇,它的召回策略是怎樣的?
今日頭條的算法架構師曾在接受采訪時表示,今日頭條有一個世界范圍內比較大的在線訓練推薦模型,包括幾百億特征和幾十億的向量特征。但因為頭條目前的內容量非常大,加上小視頻內容有千萬級別,推薦系統不可能所有內容全部由模型預估。所以需要設計一些召回策略,從龐大內容中篩選一個模型組成內容庫。
召回策略種類有很多,今日頭條主要用的是倒排的思路。離線維護一個倒排,這個倒排的key可以是分類,topic,實體,來源等,排序考慮熱度、新鮮度、動作等。線上召回可以迅速從倒排中根據用戶興趣標簽對內容做截斷,高效地從很大的內容庫中篩選比較靠譜的一小部分內容?;谡倩夭呗裕岩粋€海量、無法把握的內容庫,變成一個相對小、可以把握的內容庫,再進入推薦模型。這樣有效平衡了計算成本和效果。
參考文獻
【1】閆澤華,《內容算法》,中信出版集團
【2】CSDN博客:信息流推薦算法實踐 &深入 https://blog.csdn.net/dengxing1234/article/details/79756265
【3】IBM官網資料探索推薦引擎內部的秘密,第 1 部分: 推薦引擎初探
【4】今日頭條推薦算法原理首公開,頭條首席算法架構師帶來詳細解讀 https://www.leiphone.com/news/201801/XlIxFZ5W3j8MvaEL.html
本文由 @Alex 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
深度好文
以前學算法的時候,為了易于理解,召回率被稱為查全率,準確率被稱為查準率。以我個人理解C之所以是理想情況,是因為查得準有可能查不到(查全率低)。
對于資訊類app而言,用戶的停留時長可能更重要。查不到可能會導致內容少,用戶沒辦法繼續往下滑,找到「可能是準確」或「可能感興趣」的話題,所以相對而言C會比D好一些。
您好,我想要成為推薦策略的產品經理,但我現在對于這些算法不是特別懂,應該怎么開始學習呢?
很厲害
請問為什么不準確召回(C)是理想情況呢?不應該是AD是理想情況嗎?
個人認為 確實是AD
我也覺得是AD是最理想情況
您好,請問為什么最理想的情況不是AD呢?
我也覺得是AD
為什么要用“召回”這么熟澀的詞?
來源于技術書籍,哈哈哈。