一文帶你掌握推薦系統(tǒng)
編輯導(dǎo)語(yǔ):推薦系統(tǒng)現(xiàn)在被廣泛利用,最常見的例子就是淘寶的推薦算法,可以根據(jù)你的基本信息進(jìn)行推薦,比如性別、地區(qū)、瀏覽等等,推薦你可能感興趣的東西;本文作者分享了一些基本的推薦系統(tǒng)知識(shí)點(diǎn),我們一起來(lái)看一下。
如題,本文的主要內(nèi)容是推薦系統(tǒng)相關(guān)的東西,會(huì)涵蓋推薦系統(tǒng)相關(guān)的大部分知識(shí)點(diǎn),對(duì)于非技術(shù)人員應(yīng)該是能基本了解推薦系統(tǒng)了。
本文主要包括推薦系統(tǒng)的相關(guān)概念、推薦系統(tǒng)的架構(gòu)和流程、常見的推薦算法、挖掘、召回、排序、評(píng)估和總結(jié)這幾部分。
概念部分會(huì)簡(jiǎn)述推薦系統(tǒng)相關(guān)的理論知識(shí),架構(gòu)和流程主要是介紹推薦系統(tǒng)的通用架構(gòu)和常規(guī)的推薦流程。
算法部分主要是一些常見的推薦算法介紹,挖掘——召回——排序主要是基于推薦流程的詳細(xì)展開。
評(píng)估部分指的是如何評(píng)估一個(gè)推薦系統(tǒng)的好壞,總結(jié)部分主要是整體內(nèi)容的回顧,以及一個(gè)真實(shí)推薦系統(tǒng)的案例。
可以按照個(gè)人興趣直接跳至對(duì)應(yīng)的小節(jié)瀏覽,也可以按照順序進(jìn)行閱讀,遇到看不懂的部分建議先跳過(guò),遇到讀不下去的情況,建議先Mark。
以下,開始正文部分。
一、推薦系統(tǒng)的相關(guān)概念
在正式展開文章之前,我們先簡(jiǎn)單的了解下推薦系統(tǒng)相關(guān)的理論知識(shí)。
1. 什么是推薦系統(tǒng)
先來(lái)看下Wiki的定義:一種信息過(guò)濾系統(tǒng),用來(lái)預(yù)測(cè)用戶對(duì)物品的行為和偏好。
按照字面意思理解下來(lái),就是幫助過(guò)濾信息,預(yù)測(cè)用戶對(duì)物品的行為和偏好。
在今日頭條曹歡歡博士的一次分享中提到了這樣一個(gè)定義:
資訊推薦系統(tǒng)本質(zhì)上要解決用戶,資訊和環(huán)境的匹配,y=F(Xi,Xu,Xc)。
感覺把這個(gè)定義延伸到其他推薦系統(tǒng)上也是成立的,那就是推薦系統(tǒng)本質(zhì)上要解決用戶,物品和環(huán)境的匹配問(wèn)題,幫助建立用戶和物品之間的連接。
回到定義本身,理論上說(shuō)能實(shí)現(xiàn)這個(gè)功能的系統(tǒng)都可以稱之為推薦系統(tǒng)。
2. 為什么要有推薦系統(tǒng)
先來(lái)回顧一下互聯(lián)網(wǎng)誕生到目前為止,我們尋找信息方式的變化歷程。
最早期的時(shí)候,信息是比較稀缺的,那個(gè)時(shí)候信息比較分散,尋找的效率較低,主要是人找信息。
后來(lái)信息逐漸豐富起來(lái)了,有些人或者公司專門把各種信息聚集在一個(gè)地方,人們可以通過(guò)類目導(dǎo)航進(jìn)行查找,典型的公司是三大門戶。
再后來(lái)信息量越來(lái)越大,人工添加的類目已經(jīng)不能覆蓋所有信息了,于是誕生了另外一種信息獲取方式——搜索,典型的公司是Google、百度。
再再后來(lái),人與信息的關(guān)系從單向的人找信息演變成了現(xiàn)在的雙向關(guān)系,人在海量的信息中找著自己需要的東西,同時(shí)海量的信息也在找合適的人。
從這個(gè)演化過(guò)程中,我們可以看到推薦系統(tǒng)的出現(xiàn)有兩個(gè)重要的前提:一個(gè)是信息過(guò)載,一個(gè)是需求不明確。
數(shù)量有限的情況下根本不需要推薦,用戶自己就能瀏覽完所有的物品;再往后發(fā)展,數(shù)量級(jí)不大的情況下,人工干預(yù)就可以解決,當(dāng)人工干預(yù)也無(wú)法解決時(shí),這個(gè)時(shí)候就需要推薦系統(tǒng)了。
當(dāng)用戶需求比較明確的時(shí)候,用戶會(huì)傾向于使用搜索,需求不太明確時(shí),基于用戶歷史的一些行為和偏好給用戶推薦一些東西能讓用戶先留下來(lái),在逛的過(guò)程中可能就產(chǎn)生了一些新的訴求。
從以上的部分可以看到推薦系統(tǒng)是一個(gè)多方共贏的存在:
- 對(duì)用戶而言,能夠發(fā)現(xiàn)自己感興趣的東西,提升用戶體驗(yàn);
- 對(duì)物品而言,能夠發(fā)掘長(zhǎng)尾物品的利用效率,盤活整體資源;
- 對(duì)平臺(tái)而言,能夠獲取用戶價(jià)值和商業(yè)價(jià)值。
推薦系統(tǒng)典型的應(yīng)用場(chǎng)景比如電商類的買了又買、看了又看,社交產(chǎn)品中你可能感興趣的人,音樂(lè)電影中的猜你喜歡,以及一些信息流產(chǎn)品等。
3. 你需要推薦系統(tǒng)么
既然推薦系統(tǒng)那么好,要不在產(chǎn)品中加一個(gè)唄?
在決定如何加一個(gè)推薦系統(tǒng)之前,先確定要不要做,以及投入產(chǎn)出比是否合適。
首先對(duì)于不同業(yè)務(wù)模式,不同階段的業(yè)務(wù)需要關(guān)注的側(cè)重點(diǎn)是不同的,比如一個(gè)工具型產(chǎn)品需要推薦系統(tǒng)么,一個(gè)資訊App的早期需要推薦系統(tǒng)么。
其次推薦系統(tǒng)短期內(nèi)的價(jià)值容易被高估,而且搭建起來(lái)也是比較費(fèi)時(shí)費(fèi)力費(fèi)錢的。
雖然用一些簡(jiǎn)單的算法就可以有一定的效果,想進(jìn)一步提升效果,則需要很大的投入。
事情都是相對(duì)而言的,具體是否需要搭建推薦系統(tǒng),需結(jié)合業(yè)務(wù)模式、時(shí)間點(diǎn)、戰(zhàn)略需求、團(tuán)隊(duì)能力等多方面因素綜合考慮。
二、推薦系統(tǒng)的架構(gòu)和流程
這部分主要是關(guān)于推薦系統(tǒng)整體的架構(gòu)以及如何實(shí)現(xiàn)推薦流程的。
1. 通用推薦架構(gòu)
這部分內(nèi)容主要分為整體技術(shù)框架,推薦系統(tǒng)架構(gòu)、推薦引擎架構(gòu)這幾部分。
它們依次為包含關(guān)系,推薦系統(tǒng)是整體技術(shù)框架中的一環(huán),推薦引擎又是推薦系統(tǒng)的一環(huán)。
整體技術(shù)框架:
下圖為推薦系統(tǒng)的整體技術(shù)框架:
從下往上依次為數(shù)據(jù)的生產(chǎn)、存儲(chǔ)、候選集觸發(fā),融合過(guò)濾重排序。
重排序之后就是輸出的推薦結(jié)果,然后再供各業(yè)務(wù)調(diào)用,比如猜你喜歡,看了又看,買了又買。
推薦系統(tǒng)架構(gòu):
整個(gè)推薦系統(tǒng)可以看作是一個(gè)加工廠,輸入用戶和物品數(shù)據(jù),輸出用戶可能會(huì)感興趣的物品清單,然后從物品清單中取前若干個(gè)作為推薦結(jié)果給到用戶。
在這個(gè)過(guò)程中還需要做一些過(guò)濾、排序工作,輸出結(jié)果的時(shí)候最好能讓用戶知道為什么推薦這個(gè)東西,這樣用戶的接受度會(huì)高一些。
比如已經(jīng)產(chǎn)生了一個(gè)用戶可能感興趣物品的Top100,之后需要把用戶已經(jīng)買過(guò)的東西過(guò)濾掉。
然后再基于用戶的一些歷史行為進(jìn)行排序,比如經(jīng)??吹臇|西權(quán)重高一些,很久之前看的東西權(quán)重低一些,最終排一個(gè)名次,再按照排序名次取前10個(gè)展示給用戶。
要實(shí)現(xiàn)這個(gè)效果,就需要依賴于很多推薦引擎,簡(jiǎn)單理解就是會(huì)很多個(gè)推薦人,各自負(fù)責(zé)推薦一些候選結(jié)果。
推薦引擎架構(gòu):
單個(gè)推薦引擎和整體推薦架構(gòu)沒什么特別大的差異,無(wú)非是推薦引擎先自己走一遍推薦流程,把輸出的推薦結(jié)果作為新的輸入部分,再走一遍推薦流程。
推薦引擎整體可以分為四部分,分別是用戶特征、物品候選集、用戶-物品匹配、過(guò)濾、融合和排序。
用戶特征部分做的事情主要是將用戶的行為數(shù)據(jù)(點(diǎn)擊、瀏覽、購(gòu)買等)和屬性數(shù)據(jù)(人口屬性、用戶關(guān)系、興趣愛好等)轉(zhuǎn)化為對(duì)應(yīng)的特征,供用戶-物品匹配部分利用。
物品候選集就是需要給用戶匹配的物品,通常也需要轉(zhuǎn)化為對(duì)應(yīng)的物品特征。
有了物品特征和用戶特征之后,需要做的就是生成用戶-物品的初始化推薦列表。
再之后就是基于初始推薦列表的一些處理,過(guò)濾掉一些東西,按照用戶的行為反饋、物品屬性和一些產(chǎn)品策略再進(jìn)行列表順序的調(diào)整,生成最終的推薦結(jié)果。
2. 通用推薦流程
上面主要是一些架構(gòu)相關(guān)的東西,這部分主要是如何生成推薦結(jié)果。
理論上推薦流程可以分為挖掘——召回——排序這幾部分。
挖掘就是上面說(shuō)的用戶特征和物品特征的生成部分,這部分做好了,后面的推薦結(jié)果才會(huì)有好的效果。
召回就是從原始的數(shù)據(jù)集中基于種種策略先挑選一部分物品,這部分需要盡可能全的覆蓋用戶需求,通常會(huì)把十萬(wàn)甚至百萬(wàn)級(jí)的候選集過(guò)濾到數(shù)百量級(jí)。
排序就是針對(duì)召回的數(shù)百個(gè)物品進(jìn)行更深層次的加工,優(yōu)先選擇若干個(gè)結(jié)果推薦給用戶,通常數(shù)量在數(shù)十級(jí)。
以上是理論上的流程,然而實(shí)際上每個(gè)部分都比較復(fù)雜,而且也不僅僅只有一個(gè)模型,通常情況下都會(huì)有N多模型,不同的模型用到的可能是不同的算法和策略。
三、常見的推薦算法
這部分主要是一些常見算法的簡(jiǎn)單介紹,篇幅有限不詳細(xì)展開,之前寫過(guò)一篇算法相關(guān)的文章,感興趣的可以看一下:產(chǎn)品經(jīng)理必知的推薦算法二三事。
1. 基于流行度的推薦
其實(shí)就是我們通常說(shuō)的熱門,基于最高評(píng)分、最多購(gòu)買、最多下載、最多觀看等維度給用戶進(jìn)行推薦。
通常情況下可以作為冷啟動(dòng)策略或者兜底的策略,前者是用戶剛進(jìn)來(lái)沒有任何信息和行為偏好的時(shí)候,后者是在其他算法沒有推薦結(jié)果的時(shí)候作為替補(bǔ)策略。
通常情況下計(jì)算規(guī)則基本都符合下面這個(gè)公式:
熱度分=(基礎(chǔ)分+加權(quán)分+行為交互分)*時(shí)間衰減
這里面會(huì)有很多變形,比如可能需要按照不同類目、維度給予不同的初始權(quán)重,可能會(huì)人工干預(yù)做一些升降權(quán),不同行為的權(quán)重會(huì)不同等等。
2. 基于內(nèi)容的推薦
首先澄清一個(gè)誤解,基于內(nèi)容的推薦包含有標(biāo)簽的推薦,但并不等于標(biāo)簽的推薦,標(biāo)簽只是基于內(nèi)容推薦的一小部分。
標(biāo)簽、關(guān)鍵詞、實(shí)體、分類、主題、詞嵌入向量等,都是內(nèi)容推薦中的一些手段。
基于內(nèi)容推薦的核心是得到內(nèi)容畫像和用戶畫像,整體實(shí)現(xiàn)流程是先通過(guò)內(nèi)容挖掘得到內(nèi)容畫像;然后基于用戶的行為生成對(duì)應(yīng)的用戶畫像,再基于用戶畫像和內(nèi)容之間的相似度來(lái)給用戶推薦不同的內(nèi)容。
舉個(gè)“栗”子:
- 現(xiàn)在要推薦一個(gè)新的視頻,但視頻沒有畫像,無(wú)法推薦,只能隨機(jī)推一部分流量先看下效果;
- 通過(guò)對(duì)標(biāo)題文本進(jìn)行分析之后發(fā)現(xiàn)這是個(gè)娛樂(lè)類的視頻,這個(gè)時(shí)候就能定向推一部分用戶了,效果會(huì)比隨機(jī)推薦好;
- 經(jīng)過(guò)對(duì)文本進(jìn)一步分析后發(fā)現(xiàn)內(nèi)容屬于某影視劇的主題,那這個(gè)時(shí)候就可以基于該主題進(jìn)行分發(fā),會(huì)更精準(zhǔn)一些;
- 通過(guò)對(duì)視頻內(nèi)容識(shí)別之后,發(fā)現(xiàn)視頻中有XX明星,那這個(gè)時(shí)候推給Ta的粉絲,效果會(huì)更好。
以上,就是在內(nèi)容挖掘之后,基于內(nèi)容畫像進(jìn)行的推薦。
對(duì)于消費(fèi)了該視頻的用戶,就可以打上XX標(biāo)簽、主題,然后再不斷更新用戶畫像對(duì)應(yīng)的維度和權(quán)重。
此外在新內(nèi)容冷啟動(dòng)的時(shí)候,也可以先計(jì)算和現(xiàn)有物品的相似度,然后再基于相似度推薦給可能感興趣的人群。
3. 近鄰?fù)扑]
也就是大名鼎鼎的基于用戶的協(xié)同過(guò)濾和基于物品的協(xié)同過(guò)濾。核心思想是物以類聚,人以群分…
基于用戶的協(xié)同過(guò)濾:
整體思想是找到和用戶相似的群體,給用戶推薦這群用戶中比較流行但該用戶沒有聽說(shuō)過(guò)的東西。
比如A點(diǎn)擊喜歡了一篇文章,這個(gè)時(shí)候就可以給A推薦Ta所在群體中其他人喜歡,但是A沒有看過(guò)的文章。
這個(gè)策略的主要問(wèn)題在于如何計(jì)算用戶之間的相似度,通常的計(jì)算方法有兩種:
- 計(jì)算用戶之間的余弦相似度;
- 計(jì)算用戶之間有正反饋物品的相似度,比如A喜歡了的文章和B喜歡了的文章有多少是重合的。
基于物品的協(xié)同過(guò)濾:
用戶協(xié)同過(guò)濾的思想是計(jì)算用戶-用戶的相似度,物品協(xié)同過(guò)濾就是基于物品-物品相似度的推薦,先找到用戶喜歡過(guò)的物品最相似的物品列表,然后給用戶推薦這些物品。
只不過(guò)這個(gè)物品-物品的相似度并不是直接計(jì)算得到的,而是通過(guò)喜歡物品一的用戶和喜歡物品二的用戶的交集來(lái)計(jì)算的,兩個(gè)物品相似是因?yàn)樗鼈兂霈F(xiàn)在很多共同用戶的喜好列表中。
這里面需要注意的是熱門物品和其他物品之間的相似度,理論上來(lái)說(shuō)大多數(shù)用戶都可能會(huì)喜歡熱門物品,這樣就可能造成熱門物品-單個(gè)物品的相似度很高,所以需要適當(dāng)?shù)膶?duì)熱門物品進(jìn)行降權(quán)處理。
4. 矩陣分解
矩陣分解可以看作是隱語(yǔ)義模型的一種實(shí)現(xiàn)方式,核心是為了獲得物品和用戶的隱向量,然后基于隱向量進(jìn)行后續(xù)的計(jì)算和推薦。
近鄰?fù)扑]是基于用戶——用戶或者用戶——物品矩陣中已有的數(shù)據(jù)去計(jì)算未知的數(shù)據(jù),矩陣分解則是將這個(gè)矩陣分解為兩個(gè)小矩陣,后續(xù)的計(jì)算不再使用原始矩陣,而是采用這兩個(gè)小矩陣。
素材來(lái)源于互聯(lián)網(wǎng)
比如分解用戶-物品矩陣后得到用戶u的向量是 Pu,物品i的向量是Qi,那么要計(jì)算物品i推薦給用戶u的推薦分?jǐn)?shù),直接計(jì)算點(diǎn)積即可。
矩陣分解有時(shí)也被稱作SVD,但SVD 和矩陣分解不能劃等號(hào),因?yàn)槌薙VD還有一些別的矩陣分解方法。
比如加了用戶隱式反饋行為和屬性的SVD++,加了時(shí)間因素的Time-SVD,還有用來(lái)求解矩陣的交替最小二乘法ALS等。
5. 基于關(guān)聯(lián)規(guī)則的推薦
關(guān)聯(lián)規(guī)則更多是基于統(tǒng)計(jì)模型的推薦,表現(xiàn)形式為A和B有很大的關(guān)聯(lián)性,買了A我就給你推薦B。
通常在電商中運(yùn)用的比較多,比如買了個(gè)炒鍋為你推薦鍋鏟,買了個(gè)手機(jī)為你推薦耳機(jī)等。
6. 基于圖模型的推薦
圖模型指的是把用戶行為表示為二分圖模型,將個(gè)性化推薦算法放到二分圖模型上。
那給用戶u推薦物品的問(wèn)題就可以轉(zhuǎn)化為度量用戶頂點(diǎn)Vu和與它沒有邊相連的物品頂點(diǎn)在圖上的相關(guān)性,相關(guān)性越高,物品在推薦列表中的權(quán)重越高。
深度學(xué)習(xí):CNN、RNN等。
7. 混合推薦
通常情況下上面的這些算法大都是同時(shí)存在的,畢竟本身就會(huì)有N個(gè)推薦引擎。
通常情況下,常見的混合策略一般是加權(quán)、交叉、切換、分級(jí)、分層。
- 加權(quán)指的給不同的算法賦予不同的權(quán)重,將多個(gè)算法的推薦結(jié)果組合在一起,然后取TopN;
- 交叉指的是直接將不同算法的結(jié)果推薦給用戶,比如固定位置展示或者按照百分比出;
- 切換指的是在不同的場(chǎng)景下采用不同的算法,比如資訊類產(chǎn)品優(yōu)先基于內(nèi)容推薦,找不到合適的內(nèi)容再基于協(xié)同過(guò)濾,最后基于熱門;
- 分級(jí)指的是按照算法的效果好壞進(jìn)行使用,優(yōu)先使用效果好的算法,無(wú)推薦結(jié)果時(shí)再使用次好的算法;
- 分層指的是把前一層算法輸出的結(jié)果作為后一層的輸入結(jié)果,然后再不斷的進(jìn)行優(yōu)化。
以上,就是常用算法相關(guān)的內(nèi)容,后面是基于推薦流程展開的內(nèi)容,分別是挖掘、召回和排序。
四、挖掘
挖掘也就是通常說(shuō)的特征工程,有效的特征和特征組合直接決定著后續(xù)推薦結(jié)果的好壞。本部分會(huì)簡(jiǎn)單的說(shuō)下整體流程,以及常見的特征。
1. 整體流程
特征工程整體流程大致可以分為特征清洗、特征預(yù)處理、特征處理和特征監(jiān)控這幾部分。
特征清洗主要是將一些異常樣本進(jìn)行清洗,對(duì)一些樣本進(jìn)行采樣。
特征預(yù)處理主要是對(duì)單個(gè)特征類型的一些轉(zhuǎn)換,同時(shí)對(duì)異常值、缺失值進(jìn)行處理,此外還有對(duì)多個(gè)特征的降維、選擇。
特征處理主要是對(duì)特征進(jìn)行離散、平滑、組合、聚合等處理,以達(dá)到更好的效果。
特征監(jiān)控一方面是對(duì)特征的有效性進(jìn)行分析,看特征是否真的有效,另一方面是監(jiān)控特征的重要性是否有變化,避免影響模型效果。
2. 常見的特征
常見的特征可以分為用戶特征、物品特征、相關(guān)性特征、環(huán)境特征、上下文特征等。
用戶特征指的是自然屬性(姓名、性別、年齡等)、畫像特征(興趣愛好、行為等)、關(guān)系特征(人群屬性、親密度、關(guān)注關(guān)系等)。
物品特征可以分為靜態(tài)和動(dòng)態(tài)兩大類,靜態(tài)指的是物品的固有屬性,如分類、標(biāo)簽、關(guān)鍵詞、主題、類型、語(yǔ)義等,動(dòng)態(tài)指的是全局熱度、分類熱度、關(guān)鍵詞熱度等。
相關(guān)性特征指的是分類匹配、關(guān)鍵詞匹配、語(yǔ)義匹配、uid-mid匹配、點(diǎn)擊相似、興趣分類相似、主題相似、興趣詞相似、向量相似等。
環(huán)境特征指的是時(shí)間、地點(diǎn)、網(wǎng)絡(luò)環(huán)境、天氣等。
上下文指的是用戶最近N條瀏覽內(nèi)容、點(diǎn)擊內(nèi)容,或者是內(nèi)容的相關(guān)內(nèi)容,內(nèi)容發(fā)布者的其他內(nèi)容等。
下面為今日頭條的一些特征,可以簡(jiǎn)單的了解下。
五、召回
通常情況下候選集的數(shù)量可能有十萬(wàn),百萬(wàn)甚至千萬(wàn)的量級(jí),這種情況下如果直接計(jì)算用戶相似度或者物品相似度的話,復(fù)雜度會(huì)非常高,成本也會(huì)非常大。
召回這個(gè)環(huán)節(jié)的主要任務(wù)就是從大規(guī)模的候選集中初步篩選出來(lái)一部分內(nèi)容,供后續(xù)的排序環(huán)節(jié)使用,所以這個(gè)環(huán)節(jié)需要覆蓋很廣很全的范圍。
召回的觸發(fā)機(jī)制主要是基于用戶特征和環(huán)境特征,比如用戶畫像相關(guān)、興趣相關(guān)、行為相關(guān)、上下文相關(guān)等;此外還有一些運(yùn)營(yíng)規(guī)則和產(chǎn)品策略,比如熱門、特定類型提權(quán)、降權(quán)等。
常見的召回策略包括上文算法部分的那些算法,以及一些其他策略,比如基于熱門、內(nèi)容、協(xié)同過(guò)濾、關(guān)聯(lián)規(guī)則、圖模型、地理位置、時(shí)間、用戶關(guān)系等的召回策略。
有了初步的召回集之后,就可以考慮一些過(guò)濾規(guī)則了,比如過(guò)濾掉用戶曾經(jīng)購(gòu)買過(guò)、明確表示過(guò)不喜歡的物品或者已經(jīng)失去了時(shí)效性的物品等。
如果候選集較小,可以考慮在生成候選集之后就進(jìn)行過(guò)濾,如果候選集較大,可以考慮在初始推薦列表中再過(guò)濾掉不該在候選集中的物品。
六、排序
按照排序類型來(lái)劃分的話,排序可以分為粗排和精排,按照目標(biāo)來(lái)劃分的話,排序可以分為單目標(biāo)排序和多目標(biāo)排序。
單目標(biāo)和多目標(biāo)倒還好理解一些,畢竟不同的目標(biāo)需要的模型和策略可能是不同的,那為什么類型又區(qū)分成粗排和精排。
主要可以分為兩方面的原因,一方面大多數(shù)用戶其實(shí)消費(fèi)不了那么多內(nèi)容,我們精心為用戶準(zhǔn)備了Top100的內(nèi)容,大多數(shù)情況下用戶可能只消費(fèi)10條內(nèi)容,那90條內(nèi)容的工作量可能就浪費(fèi)了;另一方面排序的核心任務(wù)是對(duì)召回集給出的結(jié)果進(jìn)行精準(zhǔn)的排序,需要兼顧很多模型和特征,這就需要在效率、成本和性能之間做平衡了。
基于這兩點(diǎn)原因,將排序又分為了粗排和精排兩個(gè)階段。
- 粗排階段處理的物品數(shù)量在數(shù)百級(jí),主要負(fù)責(zé)對(duì)召回的物品進(jìn)行打分,也可以理解為用戶的感興趣程度。
- 精排階段處理的物品在數(shù)十級(jí),同時(shí)還會(huì)有一些產(chǎn)品規(guī)則方面的考慮,比如對(duì)于多樣性、新穎性、興趣探索方面的考慮,以及對(duì)于特定內(nèi)容的加權(quán)、過(guò)濾或者強(qiáng)制隔離等。
單目標(biāo)排序比較常見的是CTR(點(diǎn)擊率)預(yù)估,當(dāng)然這個(gè)C并不一定只能是Click,也可以是其他任何行為。
比如視頻是不是會(huì)看完,看完后是不是會(huì)收藏,是不是會(huì)分享到第三方平臺(tái),查看的商品是不是會(huì)購(gòu)買等,這些都可以看成那個(gè)可以被預(yù)估發(fā)生概率的CTR。
多目標(biāo)顧名思義就是在排序階段希望能夠滿足多個(gè)目標(biāo),比如視頻的點(diǎn)擊率+停留時(shí)長(zhǎng)+完播率,電商的點(diǎn)擊率+購(gòu)買率+客單價(jià)。
知乎的排序模型就是一個(gè)多目標(biāo)模型,有基于點(diǎn)擊率的模型,基于收藏率的模型,基于點(diǎn)贊率,基于評(píng)論率等一共8個(gè)目標(biāo)。
排序模型一般用目標(biāo)值和AUC來(lái)進(jìn)行衡量,目標(biāo)值就是排序模型最開始的目標(biāo),點(diǎn)擊率、停留時(shí)長(zhǎng)、購(gòu)買率等。
AUC全稱是Area Under Curve,意思是曲線下的面積,這里的曲線就是ROC曲線,這個(gè)值在數(shù)學(xué)上等價(jià)于模型把關(guān)心的那一類樣本排在其他樣本前面的概率。
AUC最大是1,完美結(jié)果,0.5就是隨機(jī)排列,0就是完美地全部排錯(cuò),當(dāng)然0也可以變成1,效果最差的其實(shí)是0.5左右的。
1. 評(píng)估
這部分主要來(lái)源于《推薦系統(tǒng)實(shí)踐》這本書,篇幅有限,不再展開,后面會(huì)單獨(dú)寫一篇文章來(lái)看如何評(píng)估一個(gè)推薦系統(tǒng)的好壞。
用戶滿意度:點(diǎn)擊率,用戶停留時(shí)長(zhǎng),轉(zhuǎn)化率等指標(biāo)。
預(yù)測(cè)準(zhǔn)確度:分為評(píng)分預(yù)測(cè)和TopN預(yù)測(cè)。
- 評(píng)分預(yù)測(cè)主要是通過(guò)RMSE來(lái)衡量,即預(yù)測(cè)評(píng)分和真實(shí)評(píng)分之間的均方根誤差。
- TopN預(yù)測(cè)主要是用召回率和準(zhǔn)確率來(lái)進(jìn)行衡量。
召回率=推薦數(shù)與有反饋數(shù)的交集/有反饋數(shù)
準(zhǔn)確率=推薦數(shù)與有反饋數(shù)的交集/推薦數(shù)
覆蓋率:推薦系統(tǒng)能夠推薦出來(lái)的物品,占總物品集合的比例。
多樣性:描述的是推薦列表中物品兩兩之間的不相似性,希望盡可能多的覆蓋用戶的興趣點(diǎn)。
新穎性:給用戶推薦那些他們以前沒有見過(guò)的東西。
驚喜度:給用戶的推薦結(jié)果是和用戶歷史上喜歡的物品不相似,但用戶卻又覺得滿意的推薦。
信任度:增加推薦系統(tǒng)的透明度,讓用戶知道推薦的理由;比如為什么給用戶推薦了這個(gè)東西,可能是歷史基于歷史的某次行為,也可能是基于某個(gè)好友信息。
實(shí)時(shí)性:能夠?qū)崟r(shí)更新推薦列表,來(lái)滿足用戶行為的變化,能夠?qū)⑿录尤胂到y(tǒng)的物品推薦給用戶。
健壯性:推薦系統(tǒng)抗擊作弊的能力。
商業(yè)目標(biāo):能否滿足商業(yè)需求,比如GMV、廣告收入等。
七、最后
以上就是本文的主要內(nèi)容,先簡(jiǎn)單的介紹了一些理論知識(shí),然后介紹了通用的推薦系統(tǒng)架構(gòu)和流程,之后按照推薦流程的挖掘——召回——排序環(huán)節(jié)進(jìn)行展開,最后簡(jiǎn)單的列舉了一些衡量推薦系統(tǒng)好壞的指標(biāo)。
整個(gè)推薦系統(tǒng)的核心是幫助用戶發(fā)現(xiàn)潛在的用戶-物品或者用戶-用戶連接,先盡可能全的進(jìn)行覆蓋,再盡可能精準(zhǔn)的進(jìn)行排序。
主要流程可以總結(jié)成下圖,分別是挖掘——召回——排序。
下圖為微博的推薦系統(tǒng)的整體架構(gòu),感興趣的可以研究一下。
素材來(lái)源于《AI時(shí)代精準(zhǔn)個(gè)性化推薦》
下圖是微博推薦算法的架構(gòu),包括基礎(chǔ)層(挖掘)、召回層、排序?qū)?,可以結(jié)合著上面章節(jié)的內(nèi)容再深入了解下。
素材來(lái)源于《AI時(shí)代精準(zhǔn)個(gè)性化推薦》
以上,就是本文的主要內(nèi)容,有哪些知識(shí)點(diǎn)寫錯(cuò)的歡迎指出來(lái);歡迎斧正、指點(diǎn)、拍磚,愿你有所收獲。
本文寫作過(guò)程中,參考了以下作品或資料,主要有:
書籍《推薦系統(tǒng)實(shí)踐》 By 項(xiàng)亮
書籍《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》By 美團(tuán)算法團(tuán)隊(duì)
演講《AI時(shí)代精準(zhǔn)個(gè)性化推薦》By 蘇傳捷
知乎Live 《推薦算法那點(diǎn)事》 By 姚凱飛
音頻課程 《推薦系統(tǒng)三十六式》 By 邢無(wú)刀
#專欄作家#
王家郴,公眾號(hào):產(chǎn)品經(jīng)理從0到1,人人都是產(chǎn)品經(jīng)理專欄作家,喜歡網(wǎng)球和騎行的產(chǎn)品汪,目前奔走在產(chǎn)品的道路上,漫漫產(chǎn)品路,與君共勉。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 unsplash,基于 CC0 協(xié)議
強(qiáng)烈支持,文章非常棒,超級(jí)適合了解推薦系統(tǒng)全貌
寫的太好啦!學(xué)習(xí)學(xué)習(xí)!