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