【推荐系统】深入理解推荐系统:排序
寫(xiě)在前面
【推薦系統(tǒng)】專(zhuān)欄歷史文章:
深入理解推薦系統(tǒng):召回?
深入理解YouTube推薦系統(tǒng)算法
作為【推薦系統(tǒng)】系列文章的第三篇,將以“排序”作為今天的主角,會(huì)從四個(gè)方面來(lái)介紹推薦系統(tǒng)中的排序模塊,即建模目標(biāo)、樣本與特征、常見(jiàn)模型和效果評(píng)估的方法。
最近正好在做KDD Cup:Debiasing賽道,不同于其它類(lèi)型的比賽,推薦系統(tǒng)中的排序建模需要大家自己構(gòu)建正負(fù)樣本。本文也將作為方法梳理,希望能幫助到大家。
一、背景介紹
推薦系統(tǒng)整體架構(gòu)
排序是推薦系統(tǒng)的第二階段,從召回階段獲得少量的商品交給排序階段,排序階段可以融入較多特征,使用復(fù)雜模型,來(lái)精準(zhǔn)地做個(gè)性化推薦。排序所強(qiáng)調(diào)的是快和準(zhǔn),快指的是高效的反饋結(jié)果,準(zhǔn)指的是推薦結(jié)果準(zhǔn)確性高。
具體地,在生成候選對(duì)象之后,另一個(gè)模型會(huì)對(duì)生成的候選對(duì)象進(jìn)行打分和排序,得到最后要推送的item列表。推薦系統(tǒng)可能具有使用不同來(lái)源的多個(gè)召回隊(duì)列,例如:
矩陣分解模型的相關(guān)item。
根據(jù)各類(lèi)標(biāo)簽下的用戶(hù)item。
“本地”與“非本地”項(xiàng)目;也就是說(shuō),要考慮地理信息。
熱門(mén)或流行item。
社交網(wǎng)絡(luò);也就是朋友喜歡或推薦的item。
系統(tǒng)將這些不同的來(lái)源組合成一個(gè)通用的候選庫(kù),然后由單個(gè)模型對(duì)其進(jìn)行打分并根據(jù)該分?jǐn)?shù)進(jìn)行排名。例如,系統(tǒng)可以根據(jù)以下特征訓(xùn)練模型以預(yù)測(cè)用戶(hù)觀看視頻的概率:
查詢(xún)特征(例如,用戶(hù)觀看記錄,語(yǔ)言,國(guó)家/地區(qū),時(shí)間)
視頻特征(例如標(biāo)題,標(biāo)簽,視頻Embedding)
然后,系統(tǒng)可以根據(jù)模型的預(yù)測(cè)對(duì)候選庫(kù)中的視頻進(jìn)行排序。
二、建模目標(biāo)
排序的目標(biāo)是根據(jù)業(yè)務(wù)目標(biāo)來(lái)不斷變化的,最早期,業(yè)務(wù)目標(biāo)簡(jiǎn)單,需要聚焦的時(shí)候,往往會(huì)選取?個(gè)指標(biāo)來(lái)重點(diǎn)優(yōu)化,當(dāng)做到中期的時(shí)候,就會(huì)發(fā)現(xiàn)單?指標(biāo)對(duì)整體的提升已經(jīng)非常有限了,或者說(shuō)會(huì)出現(xiàn)很多問(wèn)題,這個(gè)時(shí)候,往往就會(huì)引入多目標(biāo)排序來(lái)解決這些問(wèn)題。另一個(gè)方面,pointwise、pairwise和listwise本身它們都屬于排序目標(biāo)的一部分,但通常會(huì)認(rèn)為它們也屬于不同模型,我們放到后面再講。我們以小視頻自身的排序目標(biāo)發(fā)展來(lái)說(shuō)明排序目標(biāo)的意義和如何根據(jù)業(yè)務(wù)需求,改進(jìn)排序目標(biāo)。
2.1 pointwise、pairwise和listwise
常用的排序算法框架有pointwise、pairwise、listwise三類(lèi),上圖中x1,x2,... 代表的是訓(xùn)練樣本1,2,... 的特征,y1,y2,s1,... 等是訓(xùn)練集的label(目標(biāo)函數(shù)值)。pointwise學(xué)習(xí)單個(gè)樣本,如果最終預(yù)測(cè)目標(biāo)是一個(gè)實(shí)數(shù)值,就是回歸問(wèn)題,如果目標(biāo)是概率預(yù)測(cè),就是一個(gè)分類(lèi)問(wèn)題,例如CTR預(yù)估。pairwise和listwise分別學(xué)習(xí)一對(duì)有序?qū)鸵粋€(gè)有序序列的樣本特征,考慮得更加精細(xì)。在推薦系統(tǒng)中常用pointwise方法來(lái)做排序,它更直觀,易于理解,也更簡(jiǎn)單。
2.2 回歸方式預(yù)估完成率
這里以小視頻業(yè)務(wù)為例,小視頻的業(yè)務(wù)形態(tài)與短視頻有很大的不同,由于全屏滑動(dòng)這一形態(tài)的引入從而會(huì)面臨傳統(tǒng)點(diǎn)擊率預(yù)估之外的建模問(wèn)題,也就是完成率建模。不一樣的完成率代表著用戶(hù)不一樣的滿意程度,那自然而然的想法就是把完成率這個(gè)連續(xù)值作為目標(biāo)來(lái)預(yù)估,那么,我們的問(wèn)題就變成了?個(gè)回歸問(wèn)題了,看似完美解決了我們的問(wèn)題。而實(shí)際實(shí)驗(yàn)的效果卻和預(yù)期的大相徑庭,其原因還得做進(jìn)一步討論。
2.3 多目標(biāo)排序
我們上述說(shuō)的都是單目標(biāo)排序的各種建模方式,隨著業(yè)務(wù)的發(fā)展,我們會(huì)發(fā)現(xiàn)單目標(biāo)排序迭代對(duì)系統(tǒng)的提升越來(lái)越有限了。一般多目標(biāo)是學(xué)點(diǎn)擊,時(shí)長(zhǎng),消費(fèi),點(diǎn)贊,評(píng)論,分享等,模型能確實(shí)學(xué)到的輸出是有切實(shí)含義的,比如點(diǎn)擊的概率,觀看的時(shí)長(zhǎng),用戶(hù)到底會(huì)花多少錢(qián)等。比如我們以完成率建模,短視頻的完成率天生就要比長(zhǎng)視頻要高;作者會(huì)想辦法發(fā)各種騙完成率的視頻,類(lèi)似列表頁(yè)產(chǎn)品形態(tài)中的標(biāo)題黨,比如,猜謎類(lèi)視頻等。這些問(wèn)題反映了單指標(biāo)建模的脆弱性,所以,多目標(biāo)建模的魯棒性就由此凸顯出來(lái)了。而多目標(biāo)建模中難點(diǎn)在于如何平衡多個(gè)建模目標(biāo)之間的關(guān)系,目前的通用做法是將多個(gè)q加權(quán)或連乘,比如Prob(click) * watch_time,也就是人工的去制定規(guī)則,這種方式可以快速見(jiàn)效、簡(jiǎn)單、快捷,而且便于理解。但?個(gè)很致命的問(wèn)題是,人工規(guī)則沒(méi)辦法挑選出最優(yōu)的解。其次,當(dāng)其中的?個(gè)因?發(fā)生變化時(shí),比如值域發(fā)生變化,就會(huì)導(dǎo)致整體的公式失效。如何系統(tǒng)的去解決這兩個(gè)問(wèn)題,是多目標(biāo)建模中的重點(diǎn)和難點(diǎn)。
值得注意的是,Google在RecSys 2019上的最新論文《Recommending What Videoto Watch Next: A Multitask Ranking System》。該論文是youtube上實(shí)踐的一篇文章,并且內(nèi)容應(yīng)該比較實(shí)用。論文本身雖然沒(méi)有提出特別新穎的結(jié)構(gòu),但內(nèi)容很實(shí)在,也 work,算是推薦系統(tǒng)中排序模塊很通俗易懂的文章了,論文主要聚焦于大規(guī)模視頻推薦中的排序階段,介紹一些比較實(shí)在的經(jīng)驗(yàn)和教訓(xùn)。提出了一套大規(guī)模多目標(biāo)排序框架應(yīng)用于Youtube視頻推薦,引入MMoE解決多目標(biāo)學(xué)習(xí),以及解決用戶(hù)隱式反饋中的selection Bias問(wèn)題。
三、樣本與特征
我們先來(lái)說(shuō)說(shuō)樣本,樣本與模型有什么關(guān)系呢,形象化的理解樣本是模型的養(yǎng)料,一個(gè)模型能夠得到很好的結(jié)果,很大一部分成程度上是由樣本的質(zhì)量決定的。當(dāng)然,不同的業(yè)務(wù)數(shù)據(jù)量,樣本的質(zhì)量通常存在很大的差異,所以,在樣本上我們的問(wèn)題就變成了如何根據(jù)業(yè)務(wù)目標(biāo),構(gòu)造合適的樣本并加以使用。我們?cè)賮?lái)看看特征,特征是用來(lái)刻畫(huà)樣本的維度,沒(méi)有特征,樣本就只有一個(gè)label,只有看到了特征,我們才能理解樣本長(zhǎng)得什么樣。這也是為什么要辦樣本和特征放在一起討論的原因。
理論上,模型學(xué)習(xí)的空間是樣本空間,而我們理想建模的空間是真實(shí)空間。如果樣本是真實(shí)空間的無(wú)偏采樣,那么,在樣本足夠充足的情況且模型足夠強(qiáng)大的情況下,我們是能學(xué)習(xí)到真實(shí)分布的。但很遺憾,我們很難去評(píng)估樣本的采樣是否是無(wú)偏的,模型也并不是那么強(qiáng)大。所以,當(dāng)我們模型訓(xùn)練完之后,測(cè)試集的error實(shí)際就是樣本能力和模型學(xué)習(xí)能力的兩部分error的加和。模型的學(xué)習(xí)能力通常根據(jù)模型的差異,是相對(duì)固定的。比如,svm就是比lr誤差要小。所以,在模型選型的大方向上,大家都是差不多的。真正比拼的實(shí)際就是算法工程師做 樣本和做特征的能力。
那么,什么是合適的樣本呢?合適的樣本是符合業(yè)務(wù)產(chǎn)出邏輯,同優(yōu)化目標(biāo)?致的單元。舉個(gè)例子,我要訓(xùn)練一個(gè)點(diǎn)擊率模型,那么一條樣本就是一個(gè)展現(xiàn)或者點(diǎn)擊的記錄。如果我要訓(xùn)練一個(gè)留存模型,那么,樣本就是這個(gè)用戶(hù)前一天看了哪些記錄,他們合并作為一個(gè)樣本。也就是說(shuō),樣本的定義不是一成不變的,而是根據(jù)業(yè)務(wù)目標(biāo),人為構(gòu)造的,但是這個(gè)構(gòu)造方式是要在邏輯上和業(yè)務(wù)目標(biāo)融洽的。如果你要訓(xùn)練一個(gè)留存模型,把用戶(hù)前一天搜索的關(guān)鍵詞作為樣本,那么,可能就不是那么融洽了。樣本的構(gòu)造是一個(gè)看起來(lái)很容易,但是缺很難做的工作,它需要對(duì)業(yè)務(wù)很深刻的理解,才能發(fā)掘出有效的樣本構(gòu)造方式。
說(shuō)完樣本,我們?cè)賮?lái)看看特征。大部分做模型的同學(xué)實(shí)際都是做特征,特征的收益還是蠻高的。特征工作的基本思路是,人工預(yù)判有效特征->離線評(píng)估重要度和覆蓋率->訓(xùn)練模型離線評(píng)估->在線實(shí)驗(yàn)。總的來(lái)說(shuō)在比較低的層面,充斥著大量的數(shù)據(jù)清洗工作和ETL(Extraction-Transformation-Loading)工作,但從長(zhǎng)遠(yuǎn)看,特征工程的優(yōu)劣決定了模型的上限,早期的lr,模型并沒(méi)有多復(fù)雜,但是卻被業(yè)內(nèi)使?多年,就是因?yàn)槠渲袇R聚了特征工程的大量經(jīng)驗(yàn)和高效性。特征工程發(fā)展到現(xiàn)在,想要帶來(lái)比較大的提升的特征往往是根據(jù)業(yè)務(wù)場(chǎng)景的session行為精心設(shè)計(jì)的特征,比如常見(jiàn)的退場(chǎng)特征,搜索特征等。這些特征同樣需要?程師對(duì)業(yè)務(wù)的深刻理解以及對(duì)用戶(hù)行為的細(xì)致研究。深度學(xué)習(xí)帶來(lái)的?波紅利就是特征提取的自動(dòng)化,但是在推薦系統(tǒng)中,業(yè)務(wù)場(chǎng)景的復(fù)雜程度要遠(yuǎn)遠(yuǎn)高于cv等常見(jiàn)特征自動(dòng)提取場(chǎng)景。所以,特征工程的存在還是有其必要性的,特別是一些高級(jí)特征。
3.1 常見(jiàn)基礎(chǔ)特征
用戶(hù)側(cè)的特征,如用戶(hù)的性別、年齡、地域、購(gòu)買(mǎi)力、家庭結(jié)構(gòu)等。
商品側(cè)的特征,如商品描述信息、價(jià)格、標(biāo)簽等。
上下文及場(chǎng)景特征,如位置、頁(yè)面、是否是周末節(jié)假日等。
交叉特征,如用戶(hù)側(cè)特征與商品側(cè)特征的交叉等。
用戶(hù)的行為特征,如用戶(hù)點(diǎn)擊、收藏、購(gòu)買(mǎi)、觀看等。
四、常見(jiàn)模型
推薦系統(tǒng)排序早期都是lr,后續(xù)演變成gbdt + lr的方式,再到后來(lái)的dnn、fm、wide & deep等。排序目標(biāo)上,目前業(yè)內(nèi)主要還是pointwise。pairwise據(jù)我了解,在部分場(chǎng)景也有應(yīng)用。listwise 大部分都屬于調(diào)研性質(zhì)的了。另外,前段時(shí)間大火的強(qiáng)化學(xué)習(xí),看起來(lái)在實(shí)際的業(yè)務(wù) 場(chǎng)景中,并不能很好的落地,所以,目前還沒(méi)見(jiàn)到比較成功的應(yīng)用。阿里的DIN是不錯(cuò)的嘗試,可以找來(lái)讀讀。RNN系列的LSTM,seq2seq目前沒(méi)看到很成功的范例。總的來(lái)說(shuō),以我 所?,在模型結(jié)構(gòu)上想要作出出色的?作,是有?定難度的,所以,結(jié)合業(yè)務(wù)情況,可以在項(xiàng)目?jī)?yōu)先級(jí)上作出?定取舍。
4.1 LR
lr是比較簡(jiǎn)單的線性模型,通過(guò)學(xué)習(xí)用戶(hù)點(diǎn)擊行為來(lái)構(gòu)建CTR預(yù)估。利用logistic回歸構(gòu)建推薦算法模型,具體模型如下面公式。
其中,??是用戶(hù)喜歡某個(gè)標(biāo)的物的概率;??是權(quán)重,是需要學(xué)習(xí)的模型參數(shù);??是特征??的值。我們可以通過(guò)上述公式計(jì)算待推薦標(biāo)的物的??值。最終我們可以按照??值的大小降序排列來(lái)對(duì)召回的標(biāo)的物列表做排序。
在工業(yè)界,為了更好地將該模型應(yīng)用到真實(shí)業(yè)務(wù)場(chǎng)景中,很多公司對(duì)lr模型做了推廣。比如用到在線實(shí)時(shí)推薦場(chǎng)景中做排序,有Google在2013年推廣的FTRL,以及阿里推廣的分片線性模型。
4.2 GBDT+LR
GBDT(Gradient Boosting Decision Tree)是一種基于迭代思路構(gòu)造的決策樹(shù)算法,該算法在實(shí)際問(wèn)題中將生成多棵決策樹(shù),并將所有樹(shù)的結(jié)果進(jìn)行匯總來(lái)得到最終答案,該算法將決策樹(shù)與集成思想進(jìn)行了有效的結(jié)合,通過(guò)將弱學(xué)習(xí)器提升為強(qiáng)學(xué)習(xí)器的集成方法來(lái)提高預(yù)測(cè)精度。GBDT是一類(lèi)泛化能力較強(qiáng)的學(xué)習(xí)算法。
2014年Facebook發(fā)表了一篇介紹將GBDT+LR(Logistic Regression)模型用于其廣告CTR預(yù)估的論文,開(kāi)啟了利用GBDT模型應(yīng)用于搜索、推薦、廣告業(yè)務(wù)的先河。GBDT作為一種常用的樹(shù)模型,可天然地對(duì)原始特征進(jìn)行特征劃分、特征組合和特征選擇,并得到高階特征屬性和非線性映射。從而可將GBDT模型抽象為一個(gè)特征處理器,通過(guò)GBDT分析原始特征獲取到更利于LR分析的新特征,這也正是GBDT+LR模型的核心思想——利用GBDT構(gòu)造的新特征來(lái)訓(xùn)練LR模型。
4.3 Wide&deep
Wide&deep模型最早被Google提出來(lái),并用于Android手機(jī)應(yīng)用商店上APP的推薦排序。目前該算法在國(guó)內(nèi)很多互聯(lián)網(wǎng)企業(yè)得到大規(guī)模的采用,有比較好的效果。該模型將傳統(tǒng)模型和深度學(xué)習(xí)模型相結(jié)合。wide部分(傳統(tǒng)模型,如logistic回歸)起記憶(memorization)的作用,即從歷史數(shù)據(jù)中發(fā)現(xiàn)item或者特征之間的相關(guān)性,deep部分(深度學(xué)習(xí)模型)起泛化(generalization)的作用,即相關(guān)性的傳遞,發(fā)現(xiàn)在歷史數(shù)據(jù)中很少或者沒(méi)有出現(xiàn)的新的特征組合,尋找用戶(hù)的新偏好。通過(guò)將這兩個(gè)模型結(jié)合起來(lái)可以更好地在用戶(hù)的歷史興趣和探索新的興趣點(diǎn)之間做到平衡。
4.4 DeepFM
DeepFM 的結(jié)構(gòu)其實(shí)很簡(jiǎn)單:采取Wide & Deep的框架,差異在于將Wide部分的LR替換為了FM,從而自動(dòng)構(gòu)造二階特征叉乘,而非手工設(shè)計(jì)叉乘。其中,DeepFM的輸入可由連續(xù)型變量和類(lèi)別型變量共同組成,且類(lèi)別型變量需要進(jìn)行One-Hot編碼。而正由于One-Hot編碼,導(dǎo)致了輸入特征變得高維且稀疏。應(yīng)對(duì)的措施是:針對(duì)高維稀疏的輸入特征,采用word2vec的詞嵌入方式,把高維稀疏的向量映射到相對(duì)低維且向量元素都不為零的空間向量中。由上面網(wǎng)絡(luò)結(jié)構(gòu)圖可以看到,DeepFM 包括 FM和 DNN兩部分,所以模型最終的輸出也由這兩部分組成:
五、排序模型效果評(píng)估
排序結(jié)果的評(píng)估主要是兩個(gè)步驟:
第一步:離線評(píng)估
在離線準(zhǔn)備好的驗(yàn)證集上進(jìn)行數(shù)據(jù)驗(yàn)證,如果效果優(yōu)于先前的模型數(shù)據(jù),則進(jìn)行第二步,這里的效果包含多個(gè)指標(biāo),比如準(zhǔn)確率、覆蓋率、多樣性等,在不同階段側(cè)重的指標(biāo)也許是不一樣的,這個(gè)就是產(chǎn)品經(jīng)理要去把控確定的,當(dāng)前這一產(chǎn)品階段側(cè)重點(diǎn)在哪里或者是怎么去取舍,平衡。
第二步:線上實(shí)驗(yàn)
直接對(duì)于線上用戶(hù)進(jìn)行AB分桶實(shí)驗(yàn),先小流量實(shí)驗(yàn)一段時(shí)間,一般在10天到半個(gè)月左右,對(duì)比實(shí)驗(yàn)組和對(duì)照組數(shù)據(jù);如果實(shí)驗(yàn)數(shù)據(jù)為正向,則推到更多的用戶(hù);如數(shù)據(jù)持續(xù)穩(wěn)定,則推全到所有用戶(hù)。AB實(shí)驗(yàn)在實(shí)驗(yàn)設(shè)置還有不少細(xì)節(jié),這方面也會(huì)在后面單獨(dú)在拿出來(lái)給大家介紹。
內(nèi)容搶先看
在第四講的文章中,我將會(huì)對(duì)推薦系統(tǒng)中的常見(jiàn)經(jīng)典模型進(jìn)行介紹和實(shí)踐,主要內(nèi)容分為FM、wide&deep、deepfm、DIN等部分。
往期精彩回顧適合初學(xué)者入門(mén)人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)在線手冊(cè)AI基礎(chǔ)下載(pdf更新到25集)本站qq群1003271085,加入微信群請(qǐng)回復(fù)“加群”獲取一折本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開(kāi):https://t.zsxq.com/yFQV7am喜歡文章,點(diǎn)個(gè)在看 與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的【推荐系统】深入理解推荐系统:排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 抢人饭碗了!推荐一款全自动的机器学习建模
- 下一篇: 总结一下模型工程化部署的几种方式