深入淺出推薦系統(tǒng):一文帶你解讀推薦系統(tǒng)的核心設(shè)計(jì)思路
下面這篇文章是筆者整理分享的關(guān)于推薦系統(tǒng)的核心設(shè)計(jì)思路的相關(guān)內(nèi)容,想要了解或者對(duì)推薦系統(tǒng)感興趣的同學(xué)可以進(jìn)來(lái)看看哦!相信你會(huì)收獲到你想要的知識(shí)。
本文約5000字,閱讀需15-20分鐘。但筆者非常有信心,如果你之前對(duì)推薦系統(tǒng)的了解不多或知識(shí)零散,認(rèn)真讀完這篇文章,一定會(huì)讓你收獲頗多。
打開(kāi)手機(jī),推薦無(wú)處不在。甚至,你之所以看到這篇文章也可能來(lái)自推薦。
寫(xiě)推薦的文章很多,但對(duì)于非技術(shù)背景的人,閱讀門(mén)檻往往較高,因?yàn)槲恼吕锟赡苡写罅康墓?、?gòu)架等,讓人望文卻步。
但一個(gè)好的推薦系統(tǒng),除了技術(shù)本身,還需要非技術(shù)人員賦予它可靠的數(shù)據(jù)以及深入的業(yè)務(wù)理解,因此非技術(shù)人員也得懂推薦系統(tǒng)。懂到什么程度呢?懂到你和項(xiàng)目干系人不會(huì)因?yàn)樵谕扑]系統(tǒng)上的認(rèn)知差異而無(wú)效溝通即可。
筆者認(rèn)為要想了解推薦系統(tǒng),可以從以下兩個(gè)部分入手:
a、推薦系統(tǒng)是為了解決什么問(wèn)題而存在?即推薦系統(tǒng)的核心設(shè)計(jì)思路,也是本文的重點(diǎn),不會(huì)涉及任何的公式;
b、解決對(duì)應(yīng)問(wèn)題的方案,包括常見(jiàn)的系統(tǒng)構(gòu)架、算法、評(píng)估方式,筆者會(huì)在闡述1的過(guò)程中進(jìn)行提及,但不會(huì)展開(kāi)介紹,有需要或感興趣的讀者可自行擴(kuò)展閱讀。文章末尾也會(huì)為大家推薦相關(guān)書(shū)籍和博主。
一、推薦系統(tǒng)核心設(shè)計(jì)思路
推薦系統(tǒng)最早應(yīng)用在20世紀(jì)90年代,至今已30年,但推薦系統(tǒng)真正在國(guó)內(nèi)被廣泛關(guān)注是在今日頭條上線的2012年之后。
一方面,移動(dòng)互聯(lián)網(wǎng)的信息嚴(yán)重過(guò)載,在用戶弱目標(biāo)的情況下,如何為用戶匹配感興趣或有用的物品成為了主流訴求,而這正是推薦系統(tǒng)的價(jià)值所在;另一方面,移動(dòng)互聯(lián)網(wǎng)數(shù)據(jù)的豐富性、可記錄性為推薦系統(tǒng)的發(fā)展提供了基礎(chǔ)。
筆者認(rèn)為,推薦系統(tǒng)的核心思路其實(shí)非常簡(jiǎn)單,即如何通過(guò)已有數(shù)據(jù)資源,為目標(biāo)用戶u找到更好/足夠好的物品i且將物品i更有效得呈現(xiàn)。基于此,我們需要進(jìn)一步思考4個(gè)問(wèn)題:
a、我的平臺(tái)有哪些數(shù)據(jù)資源?
b、更好/足夠好的物品標(biāo)準(zhǔn)是什么?
c、如何找到更好/足夠好的物品?
d、找到更好/足夠好的物品后,如何將它們高效得呈現(xiàn)在用戶面前?
(Tips:可以短暫停頓思考下…)
下面我們對(duì)這4個(gè)問(wèn)題逐一展開(kāi):
1.?我的平臺(tái)有哪些數(shù)據(jù)資源?
由于目標(biāo)是為用戶找物品,可以分別從物品、用戶兩個(gè)維度來(lái)盤(pán)點(diǎn)平臺(tái)數(shù)據(jù)資源。
(1)用戶維度
a、用戶本身自有的畫(huà)像數(shù)據(jù),比如用戶性別、年齡、常居城市、職業(yè)類型等。平臺(tái)獲取這類數(shù)據(jù)的途徑一般是通過(guò)讓用戶授權(quán)來(lái)收集或者基于用戶在平臺(tái)的行為進(jìn)行推測(cè);
b、用戶在其他平臺(tái)產(chǎn)生的數(shù)據(jù),比如社交關(guān)系等。一般是通過(guò)和其他平臺(tái)合作且讓用戶授權(quán)后進(jìn)行收集;
c、用戶因?yàn)槭褂昧似脚_(tái)而產(chǎn)生的平臺(tái)獨(dú)有數(shù)據(jù),比如用戶ID、用戶訪問(wèn)次數(shù)、訪問(wèn)時(shí)間等。這類數(shù)據(jù)由平臺(tái)實(shí)時(shí)記錄;
(2)物品維度
a、物品屬性數(shù)據(jù),比如在視頻內(nèi)容平臺(tái),視頻的時(shí)長(zhǎng)、標(biāo)題、分類、來(lái)源等。這類數(shù)據(jù)一般在物品創(chuàng)建完成時(shí)產(chǎn)生,或者從外部導(dǎo)入的物品,在同步過(guò)來(lái)后對(duì)相關(guān)屬性數(shù)據(jù)進(jìn)行二次加工;
b、物品在其他平臺(tái)下被用戶消費(fèi)所產(chǎn)生的數(shù)據(jù),比如視頻播放量等,在同步過(guò)來(lái)后也是對(duì)相關(guān)數(shù)據(jù)進(jìn)行適配加工;
c、物品在平臺(tái)下被用戶消費(fèi)所產(chǎn)生的數(shù)據(jù),比如在電商平臺(tái),商品的瀏覽量、訂單量、成交額等。和上面用戶維度C一樣,這類數(shù)據(jù)也由平臺(tái)實(shí)時(shí)記錄。
2.?“更好/足夠好”的物品標(biāo)準(zhǔn)是什么?
首先我們需要搞清楚誰(shuí)來(lái)當(dāng)這個(gè)裁判員?是平臺(tái)還是用戶?
從推薦系統(tǒng)的思路來(lái)看,這里的裁判員只能是用戶,而平臺(tái)更像是為了讓裁判員給高分,不斷挑選、訓(xùn)練運(yùn)動(dòng)員的教練。
因此推薦系統(tǒng)推的物品是好還是壞,最終均是由用戶行為指標(biāo)來(lái)評(píng)價(jià)的,比如在電商平臺(tái)可能是點(diǎn)擊率、GMV轉(zhuǎn)化;在內(nèi)容平臺(tái),可能是點(diǎn)擊率、停留時(shí)長(zhǎng)。
另外需要說(shuō)明的是,在評(píng)價(jià)指標(biāo)里,大家往往會(huì)看到部分看似與用戶行為不掛鉤的指標(biāo),比如物品新穎性、多樣性,一來(lái)這類指標(biāo)并不會(huì)作為最核心的評(píng)價(jià)指標(biāo),一般僅作為輔助;二來(lái)這類指標(biāo)屬于平臺(tái)的生態(tài)指標(biāo),更側(cè)重于長(zhǎng)期價(jià)值,其設(shè)計(jì)初衷也是為了維持更長(zhǎng)久的用戶行為。
3.?如何找“更好/足夠好”的物品
在盤(pán)點(diǎn)完數(shù)據(jù)資源、確定評(píng)價(jià)指標(biāo)后,我們來(lái)仔細(xì)盤(pán)一盤(pán)平臺(tái)如何給用戶匹配物品的問(wèn)題。
我們先做個(gè)簡(jiǎn)單任務(wù)?,F(xiàn)在有一個(gè)房間,房間里有若干物品,待會(huì)兒會(huì)進(jìn)來(lái)一個(gè)人,你的任務(wù)就是給這個(gè)人找到他喜歡的一個(gè)物品。為了完成這個(gè)任務(wù),你會(huì)做些什么?
你可能會(huì):a、去逐個(gè)了解這個(gè)房間里的物品;b、等這個(gè)人進(jìn)來(lái)和他溝通,去了解他的喜好;c、把你認(rèn)為他可能喜歡的那個(gè)物品給到他。
現(xiàn)在任務(wù)難度升級(jí)?,F(xiàn)在有一個(gè)屋子,屋子里有上百萬(wàn)、千萬(wàn)、甚至上億的物品,屋子有多個(gè)門(mén),以及若干個(gè)房間,隨時(shí)有大量的人涌進(jìn)來(lái),然后逛不同的房間。你的任務(wù)是在每一個(gè)人進(jìn)來(lái)房間后給他找到他喜歡的物品。為了完成這個(gè)任務(wù),你會(huì)做些什么?
這個(gè)任務(wù)的難點(diǎn)在于,物品和人太多,如果還像簡(jiǎn)單任務(wù)那樣,逐個(gè)去了解匹配,那等你完成任務(wù),房間里的人都成仙了。因此我們需要提前設(shè)計(jì)好讓物品和人匹配的自動(dòng)化程序,等人一來(lái),程序一轉(zhuǎn),誒~物品就出來(lái)了。
由于是等人來(lái)了,程序再轉(zhuǎn)出物品,因此在匹配路徑上是用戶在前,物品在后。目前主流的推薦系統(tǒng),共4條匹配路徑:用戶——>物品、用戶—>“物品”—>物品、用戶—>“用戶”—>物品、用戶—>概念—>物品。下面逐個(gè)展開(kāi)介紹。
(1)用戶——>物品
非個(gè)性化匹配路徑,某個(gè)用戶群體里的所有用戶看到的推薦物品列表一致。平臺(tái)主要是將物品按照熱門(mén)、最新、高質(zhì)量等規(guī)則進(jìn)行排序得出。這種方案所需數(shù)據(jù)資源少,系統(tǒng)程序簡(jiǎn)單,比較適合冷啟動(dòng)階段。
(2)用戶—>“物品”—>物品
該路徑中間加入了“物品”,該“物品”與用戶有某種關(guān)聯(lián)的關(guān)系,最常見(jiàn)的就是用戶消費(fèi)過(guò)該“物品”?;谶@個(gè)關(guān)系,又可以延伸出兩種常見(jiàn)的匹配方式:
a、讓物品等于“物品”,即給用戶推薦他曾經(jīng)消費(fèi)過(guò)的物品。這種方案雖然簡(jiǎn)單,但使用場(chǎng)景有限,僅在生鮮電商、音樂(lè)這類需重復(fù)消費(fèi)同一物品的平臺(tái)使用較多;
b、讓物品相似于“物品”,即給用戶推薦他曾經(jīng)消費(fèi)過(guò)的相似物品,這里涉及相似度的計(jì)算(余弦相似度、jaccard定理),感興趣可進(jìn)一步了解基于物品的協(xié)同過(guò)濾(Item-CF)。這種方案系統(tǒng)程序不算復(fù)雜,偏統(tǒng)計(jì)計(jì)算。另外這種方案下,由于會(huì)不斷得給用戶推薦他感興趣的相似且不重復(fù)的物品,因此適合物品豐富且用戶個(gè)性化需求強(qiáng)烈的平臺(tái),比如電商和內(nèi)容平臺(tái);
(3)用戶—>“用戶”—>物品
該路徑中間加入了“用戶”,該“用戶”與用戶有某種關(guān)聯(lián)的關(guān)系,常見(jiàn)有:
a、用戶和“用戶”是好友關(guān)系,即給用戶推薦他的好友消費(fèi)過(guò)/生產(chǎn)的物品,比如微信視頻號(hào)在冷啟動(dòng)階段就是側(cè)重使用了這一方案;
b、用戶和“用戶”是關(guān)注關(guān)系,即給用戶推薦他的關(guān)注的賬號(hào)消費(fèi)過(guò)/生產(chǎn)的物品,這種方案在內(nèi)容、社區(qū)平臺(tái)使用廣泛;
c、用戶和“用戶”是相似關(guān)系,即給用戶推薦與他相似的用戶消費(fèi)過(guò)的物品,這里也涉及相似度的計(jì)算,感興趣可進(jìn)一步了解基于用戶的協(xié)同過(guò)濾(User-CF)。這種方案下,由于是提前計(jì)算好用戶之間的相似性,只要新物品一旦被某個(gè)用戶消費(fèi),該物品就會(huì)立即被推薦給其他相似用戶,對(duì)新物品非常友好,因此適合物品更新速度快且用戶個(gè)性化需求不那么強(qiáng)烈的平臺(tái),比如新聞?lì)惼脚_(tái)。
(4)用戶—>概念—>物品
該路徑中間加入了概念,這里的概念是從用戶或物品中提取出的抽象的東西,常見(jiàn)有:
a、標(biāo)簽,是一種業(yè)務(wù)上可解釋的概念,比如某個(gè)長(zhǎng)視頻帶有綜藝、沈騰、喜劇等標(biāo)簽。前期一般由人工對(duì)物品進(jìn)行提取,當(dāng)積累一定數(shù)據(jù)量后也可由機(jī)器學(xué)習(xí)自動(dòng)提取。然后如果某個(gè)用戶經(jīng)常消費(fèi)某個(gè)標(biāo)簽的物品,那該用戶也會(huì)通過(guò)數(shù)據(jù)統(tǒng)計(jì)的方式,被打上該標(biāo)簽偏好,于是會(huì)給用戶推薦他所偏好的標(biāo)簽物品。這種方案和前面的物品相似于“物品”其實(shí)是同一種思想;
b、向量,是一種業(yè)務(wù)上不可解釋的概念。前面提到的“物品”、“用戶”、標(biāo)簽,都是為了讓用戶和物品之間建立關(guān)系。從技術(shù)的角度,也可以基于歷史的用戶行為數(shù)據(jù),為用戶和物品之間構(gòu)建關(guān)系,只是中間的這個(gè)連接點(diǎn)由隱向量K來(lái)完成(Embedding、隱向量模型/隱語(yǔ)義模型(LFM)/矩陣分解模型、雙塔模型)。相比前面提到的方案,這種方案能在一定程度上解決用戶-物品矩陣數(shù)據(jù)稀疏的問(wèn)題,但核心思想一致;
c、特征,是一種業(yè)務(wù)上可解釋的概念。特征和標(biāo)簽的主要區(qū)別在于,標(biāo)簽更多是刻畫(huà)物品和用戶的靜態(tài)屬性,而特征是萬(wàn)物皆可刻畫(huà),你可以這樣理解,只要是平臺(tái)的數(shù)據(jù)資源,均可轉(zhuǎn)化成特征,比如單特征(靜態(tài)屬性、請(qǐng)求屬性、畫(huà)像)、衍生特征(占比、轉(zhuǎn)化率)、交叉特征(交叉特征有時(shí)是為了拓寬特征量,不一定具有業(yè)務(wù)意義)、實(shí)時(shí)特征(接口入?yún)ⅲ?/p>
那特征可以用來(lái)干什么呢?編碼后的特征值可以做為入?yún)?lái)生成預(yù)測(cè)模型(邏輯回歸、決策樹(shù)算法、深度學(xué)習(xí)),預(yù)測(cè)前面提到的所有用戶核心指標(biāo),比如點(diǎn)擊率、轉(zhuǎn)化率、停留時(shí)長(zhǎng)等。這種方案在系統(tǒng)程序上最復(fù)雜,數(shù)據(jù)資源要求也非常高,但效果也是最佳的。
另外,匹配路徑的效果評(píng)估,除了上線后看用戶的行為指標(biāo)外(裁判員給分),也需要在上線前評(píng)估這些路徑的效果(教練員給分)。以上所提到的協(xié)同過(guò)濾、隱語(yǔ)義模型、邏輯回歸等均屬于分類任務(wù),針對(duì)分類任務(wù),常見(jiàn)的離線效果指標(biāo)有混淆矩陣(召回率、精準(zhǔn)率、準(zhǔn)確率)、AUC等。
4.?找到“更好/足夠好”的物品后,如何更有效得呈現(xiàn)在用戶面前
為用戶找到物品,任務(wù)還遠(yuǎn)沒(méi)有結(jié)束。我們前面完成的任務(wù)是:在每一個(gè)人進(jìn)來(lái)房間后給他找到他喜歡的物品。但是,找多久呢?物品呈現(xiàn)足夠清晰嗎?用戶拿取方便嗎?等。畢竟評(píng)價(jià)推薦系統(tǒng)的核心指標(biāo)是用戶行為,我們所有的設(shè)計(jì)需要為相關(guān)指標(biāo)的達(dá)成所服務(wù)。
這里展開(kāi)談?wù)務(wù)叶嗑玫膯?wèn)題。移動(dòng)互聯(lián)網(wǎng)用戶體驗(yàn)的及格線大致0.5秒,也就是等人一來(lái),程序最多只能轉(zhuǎn)0.5秒,就得把物品給出來(lái)。
在前面提到的匹配路徑,我們說(shuō)到特征那里效果是最好的,但是由于其模型復(fù)雜,如果只采用這個(gè)方案,等程序轉(zhuǎn)出來(lái),用戶早就對(duì)你say byebye了。因此,為了保證效果,又保證程序轉(zhuǎn)得快,構(gòu)架采用了召回層——>粗排層——>精排層的方式來(lái)進(jìn)行。
其中可以提前離線算好或者系統(tǒng)性能耗時(shí)少的,比如規(guī)則類、協(xié)同過(guò)濾類、向量模型類,就放到召回層,它們作為多路召回(主路、旁路),負(fù)責(zé)相關(guān)性的計(jì)算,且各路有個(gè)召回的數(shù)量目標(biāo),讓總物品量從萬(wàn)量級(jí)篩選到千量級(jí)甚至更少;
然后再用相對(duì)簡(jiǎn)單一點(diǎn)的模型,或者直接對(duì)前面多路召回的物品結(jié)果歸一化后截?cái)噙M(jìn)行粗排,從千級(jí)篩選至百級(jí)甚至更少;
最后再用復(fù)雜但準(zhǔn)確的模型,對(duì)這百級(jí)物品進(jìn)行排序。由于模型復(fù)雜,光是減少計(jì)算的物品還不夠,在前面提到的模型是通過(guò)編碼后的特征入?yún)?lái)生成的,因此特征選擇非常重要,特征越多,計(jì)算耗時(shí)越高,所以需要選擇有效特征讓模型有增益。另外前面也提到特征的分類,可以將非實(shí)時(shí)的特征在離線入?yún)ⅲ?jì)算出超參數(shù),在某用戶進(jìn)入對(duì)應(yīng)推薦場(chǎng)景時(shí),超參數(shù)由于離線已經(jīng)算好,只需要將該用戶的實(shí)時(shí)特征進(jìn)行入?yún)⒂?jì)算。
所以總結(jié)下來(lái),為了保證耗時(shí):
a、用耗時(shí)少的路徑先篩選,減少計(jì)算的物品量級(jí);
b、有效的特征選擇;
c、離線計(jì)算好超參數(shù);
另外在構(gòu)架里,還往往能看到重排層、過(guò)濾層,以及在召回、粗排、精排層里出現(xiàn)的保送。其中重排層是為了全局最優(yōu)、過(guò)濾層和保送都是業(yè)務(wù)干預(yù)。感興趣的讀者也可自行拓展了解。
二、擴(kuò)展閱讀推薦
1.? 書(shū)籍推薦
關(guān)于推薦系統(tǒng)相關(guān)的書(shū)籍,我目前只推薦兩本。
《推薦系統(tǒng)實(shí)踐》,作者項(xiàng)亮,豆瓣評(píng)分8.1。算是我入門(mén)推薦系統(tǒng)的一本書(shū),當(dāng)時(shí)讀完腦袋里只有一些雛形,但是對(duì)于的整體的框架還是無(wú)法清晰建立。個(gè)人建議是有一定基礎(chǔ)后再去閱讀;
《策略產(chǎn)品經(jīng)理——模型與方法論》,作者青十五,豆瓣評(píng)分8.3。這本書(shū)我是今年讀的,作者是算法出身,書(shū)里作者一直非常強(qiáng)調(diào)將問(wèn)題模型化,個(gè)人認(rèn)為前面部分收獲蠻多,后面部分有些湊字?jǐn)?shù),但整體還是值得一讀。是目前帶有“策略產(chǎn)品經(jīng)理”字樣里最好的一本了。
2. 博主推薦
KingJames
賬號(hào)在知乎和人人都是產(chǎn)品經(jīng)理平臺(tái),也是算法出身,相比前面的書(shū)籍,更加通俗易懂,而且結(jié)合了業(yè)務(wù)場(chǎng)景。除了推薦搜索專題,還有專門(mén)的AI、機(jī)器學(xué)習(xí)專題。他的自我介紹里有這樣一句——“最擅長(zhǎng)給小白深入淺出介紹AI &機(jī)器學(xué)習(xí)知識(shí)的博主”。他也有一本策略產(chǎn)品經(jīng)理的書(shū)籍正在出版中,還是比較期待的。
以上便是筆者對(duì)推薦系統(tǒng)的核心思路的解讀,由于經(jīng)驗(yàn)有限,不嚴(yán)謹(jǐn)?shù)牡胤綒g迎指正和探討。本篇側(cè)重于推薦系統(tǒng)的理論科普,下一篇筆者會(huì)以UGC社區(qū)為例進(jìn)行推薦系統(tǒng)的實(shí)戰(zhàn)介紹,歡迎關(guān)注~
本文由@wen 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)源于Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
老師寫(xiě)的真好,很通俗易懂
想入門(mén)有什么推薦的書(shū)籍呀,作者大大!
建議你可以看看B站UP主ShusenWang的視頻
期待下一篇~~