深入理解:推薦系統(tǒng)中的召回與排序(一)
編輯導(dǎo)語(yǔ):推薦系統(tǒng)通過(guò)對(duì)用戶行為喜好的預(yù)測(cè)進(jìn)行信息過(guò)濾,進(jìn)而為用戶瀏覽進(jìn)行推薦行為。一方面,推薦系統(tǒng)可以提升用戶的信息閱讀體驗(yàn),另一方面,產(chǎn)品和平臺(tái)也有助于借此留存用戶、提高用戶轉(zhuǎn)化率。本篇文章里,作者對(duì)推薦系統(tǒng)中的召回和排序做了詳細(xì)介紹,讓我們來(lái)看一下。
2021年,距互聯(lián)網(wǎng)曾經(jīng)的百團(tuán)大戰(zhàn)已有近十年之久,隨著時(shí)間的不斷推進(jìn),技術(shù)發(fā)展也是日新月異。
從電商角度看,傳統(tǒng)的“人找貨”變成了“貨找人”;從內(nèi)容角度看,由信息的主動(dòng)獲取,到從海量信息中被動(dòng)接收和挖掘有效信息。而這些都依賴于推薦系統(tǒng)。
對(duì)于用戶而言,它作為一種“信息過(guò)濾的手段”,能夠在當(dāng)前信息過(guò)載的場(chǎng)景下,最大限度地提升用戶的使用效率,建立用戶對(duì)產(chǎn)品的信任和深度鏈接。
對(duì)于產(chǎn)品和公司而言,能夠極大地提升用戶活躍度與留存,提高用戶轉(zhuǎn)化率,這將為產(chǎn)品帶來(lái)巨大的商業(yè)價(jià)值。
記得最早將推薦系統(tǒng)應(yīng)用到工業(yè)界的是Amazon(亞馬遜),僅僅是03年,它將傳統(tǒng)的協(xié)同過(guò)濾算法應(yīng)用在“人貨匹配”的領(lǐng)域,開拓了電商的一條全新道路。如今的推薦系統(tǒng)經(jīng)過(guò)技術(shù)的不斷更迭,變得更加AI化、智能化。機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的發(fā)展不斷為其賦能,使“推薦”成為當(dāng)今產(chǎn)品的標(biāo)配。
我們進(jìn)入AI的時(shí)代,產(chǎn)品和技術(shù)的邊界,未來(lái)將變得越來(lái)越模糊,某個(gè)層面講,有效策略的提出也往往依賴于對(duì)于技術(shù)的理解。本篇著重對(duì)于推薦模型中的召回和排序兩個(gè)模塊進(jìn)行闡述。
一、整體框架
首先,如果要保證整個(gè)推薦系統(tǒng)的推薦精準(zhǔn)度,需要依賴大量的基礎(chǔ)樣本數(shù)據(jù),在離線條件下,將大量的樣本數(shù)據(jù)“喂”給推薦模型,推薦模型將會(huì)擬合出一套普適性的算法公式,從而當(dāng)每一位用戶來(lái)到產(chǎn)品時(shí),都能夠基于用戶數(shù)據(jù)帶入到算法公式中,在模型的輸出層得到一個(gè)結(jié)果。
這個(gè)結(jié)果是具有置信度的,將其推薦給用戶,隨著用戶不斷對(duì)推薦系統(tǒng)給出的結(jié)果進(jìn)行反饋,用戶的特征也會(huì)變得越來(lái)越豐富,從而推薦精準(zhǔn)度也會(huì)越來(lái)越高,促成一個(gè)良性循環(huán)。
推薦系統(tǒng)的大致結(jié)構(gòu)如上圖所示,整體流程如下。
用戶來(lái)到推薦頁(yè)時(shí),根據(jù)不同用戶的用戶數(shù)據(jù)、物品數(shù)據(jù)、所處的上下文信息等,從海量的候選物品集合中,分別經(jīng)歷召回層、排序?qū)?/strong>、重排序?qū)?/strong>,拉回K個(gè)用戶最有可能喜歡的物品,形成最終的推薦列表(這里的物品為泛指,可以指商品、內(nèi)容等)。
二、模塊構(gòu)成
1. 用戶數(shù)據(jù)
第一類是用戶的自有屬性,包括年齡、性別、住址、職業(yè)、婚戀狀態(tài)、受教育程度、消費(fèi)水平等。
第二類是用戶的行為數(shù)據(jù),分為隱式反饋(如瀏覽、點(diǎn)擊、收藏、購(gòu)買)和顯示反饋(如對(duì)物品的評(píng)分、評(píng)價(jià))兩類,但其中隱式反饋要比顯示反饋更有價(jià)值,可用性更強(qiáng)。因?yàn)榍罢咭欢ǔ潭壬夏軌虼碛脩粽鎸?shí)的心理訴求,且數(shù)據(jù)量龐大,而后者數(shù)據(jù)較為稀疏。
第三類是用戶的關(guān)系數(shù)據(jù),分為強(qiáng)關(guān)系(如互相關(guān)注)與弱關(guān)系(互相點(diǎn)贊、評(píng)論),關(guān)系數(shù)據(jù)一般也可用于召回策略。
2. 物品數(shù)據(jù)
一般代表物品的自有屬性,比如商品在入庫(kù)時(shí),一定會(huì)有商品的分類、型號(hào)、標(biāo)簽等;內(nèi)容也會(huì)有分類、標(biāo)簽、文章長(zhǎng)度、關(guān)鍵詞等。除此之外還有一些統(tǒng)計(jì)類數(shù)據(jù),例如商品/內(nèi)容點(diǎn)擊率,歷史點(diǎn)贊數(shù)等等。
3. 上下文信息
描述推薦行為產(chǎn)生時(shí)的場(chǎng)景的信息,我們最常用的一般是時(shí)間(早中晚、節(jié)假日)和地點(diǎn)(基于LBS),此外還有天氣等等。
4. 候選物品集合
一個(gè)龐大的、集海量物品為一體的“大倉(cāng)庫(kù)”。以電商為例,商品集可能是幾十萬(wàn)量級(jí)甚至是百萬(wàn)量級(jí)。此外,推薦系統(tǒng)的上限,一定程度上受制于候選集的數(shù)量。換句話說(shuō),候選集的數(shù)量決定了推薦系統(tǒng)的天花板。
5. 召回層
理想情況下,除去計(jì)算承受能力和計(jì)算速度的約束,那么我們可以直接略過(guò)召回層,直接對(duì)百萬(wàn)量級(jí)的商品進(jìn)行排序,然后反饋給用戶。
但這是不現(xiàn)實(shí)的,因此召回層的意義在于縮小對(duì)商品的計(jì)算范圍,將用戶感興趣的商品從百萬(wàn)量級(jí)的商品中進(jìn)行粗選,通過(guò)簡(jiǎn)單的模型和算法將百萬(wàn)量級(jí)縮小至幾百甚至幾十量級(jí)。這樣用戶才能有機(jī)會(huì)在毫秒的延遲下,得到迅速的商品反饋。
召回層的特點(diǎn)是:數(shù)據(jù)量大、速度響應(yīng)快、模型簡(jiǎn)單、特征較少。
6. 排序?qū)?/h3>
排序?qū)拥哪康氖堑玫骄_的排序結(jié)果,也是推薦系統(tǒng)產(chǎn)生效果的重點(diǎn),更是深度學(xué)習(xí)等應(yīng)用的核心。從召回層召回的幾百個(gè)物品,進(jìn)行精準(zhǔn)排序,根據(jù)規(guī)則對(duì)每個(gè)商品賦予不同的得分,由高至低來(lái)排序。由于精確度的要求,排序?qū)拥哪P鸵话惚容^復(fù)雜,所需要的特征會(huì)更多。
排序?qū)拥奶攸c(diǎn)是:數(shù)據(jù)量少、排序精準(zhǔn)、模型復(fù)雜、特征較多。
7. 重排序?qū)?/h3>
重排序?qū)右部梢苑Q之為業(yè)務(wù)排序?qū)樱?/strong>這一環(huán)連接著排序?qū)雍图磳⒔o用戶展示的推薦列表。
物品在排序?qū)优藕眯蛑?,不一定完全符合業(yè)務(wù)要求和用戶體驗(yàn),有時(shí)我們還需要兼顧結(jié)果的多樣性、流行度、新鮮度等指標(biāo),以及結(jié)果是否符合當(dāng)前產(chǎn)品發(fā)展階段某些流量的傾斜策略等,實(shí)施特定的業(yè)務(wù)策略,來(lái)對(duì)當(dāng)前已經(jīng)排好序的物品進(jìn)行再次排序。比如物品的提權(quán)、打散、隔離、強(qiáng)插等。
舉個(gè)實(shí)際的例子,一個(gè)內(nèi)容平臺(tái),假設(shè)有A、B、C三類內(nèi)容,我們不想讓A類型的內(nèi)容連續(xù)出現(xiàn)3次以上,就需要加一些干擾規(guī)則,將A類內(nèi)容進(jìn)行打散處理,使得用戶最終看到的推薦列表是符合業(yè)務(wù)上的預(yù)期的。
重排序的特點(diǎn)是:重業(yè)務(wù)需求、重用戶體驗(yàn)。
三、經(jīng)典的模型算法
這個(gè)部分簡(jiǎn)單談?wù)剮讉€(gè)我認(rèn)為應(yīng)用面非常廣泛且非常核心的模型算法(后續(xù)可能會(huì)繼續(xù)補(bǔ)充),在這里只做簡(jiǎn)要介紹,不做太多公式上的說(shuō)明。
1. 基于用戶的協(xié)同過(guò)濾(UserCF)
首先,UserCF基于這樣一個(gè)前提假設(shè):喜歡相似物品的用戶之間,存在著相似的興趣偏好。
以電商為例,假設(shè)電商庫(kù)存中有a、b、c、d四件商品,平臺(tái)上一共有A、B、C、D、E五位用戶,根據(jù)用戶在平臺(tái)上的行為和動(dòng)作,我們基本能夠獲取到每位用戶對(duì)于a、b、c、d四件商品大致的偏好程度。
如何衡量偏好程度呢?可以采用打分的方式,根據(jù)用戶對(duì)于物品的顯示反饋或隱式反饋,來(lái)綜合得出對(duì)于物品的打分,比如對(duì)商品點(diǎn)贊加1分,踩一下減1分,瀏覽商品加1分,收藏加2分,購(gòu)買加3分(這里的打分方式只是用于說(shuō)明問(wèn)題,實(shí)際可能會(huì)略復(fù)雜一些),這樣就可以得出每個(gè)用戶對(duì)于每個(gè)物品的綜合打分。
但這里一定會(huì)存在用戶與某個(gè)物品尚未產(chǎn)生交互行為的情況,那么對(duì)應(yīng)的分值就為“空”,也可以取0分或者是取縱向的平均分來(lái)代替空值。
最后得到如下圖的矩陣形式,這樣的矩陣也稱之為“共現(xiàn)矩陣”。
說(shuō)回到UserCF,如果我們想預(yù)測(cè)用戶E對(duì)于物品c的偏好,那么基于UserCF的思想,就需要找到與用戶E最相似的用戶,因?yàn)榍懊嬉呀?jīng)做出了假設(shè),與用戶E最相似的用戶對(duì)于物品c的評(píng)分最有可能是用戶E對(duì)于物品c的真實(shí)打分,其置信度是最高的。
那么可以通過(guò)用戶向量間余弦相似度的方式來(lái)尋找最相似的k個(gè)用戶,夾角越小,兩個(gè)用戶就越相似。
sim(i,j)=cos(i,j)
得到相似度之后,相似度就可以作為置信權(quán)重來(lái)綜合對(duì)k個(gè)相似用戶的打分,得到最終預(yù)測(cè)打分。
UserCF的應(yīng)用場(chǎng)景和優(yōu)缺點(diǎn):
- 因?yàn)閁serCF是基于用戶相似度的推薦,所以它具備了非常強(qiáng)的社交屬性,容易通過(guò)社交關(guān)系來(lái)傳播符合用戶口味的東西,因此它更適用于新聞推薦這樣的場(chǎng)景,一方面新聞內(nèi)容具有實(shí)時(shí)性、熱點(diǎn)性,而UserCF更擅長(zhǎng)于捕捉這一類的內(nèi)容。另一方面,新聞內(nèi)容的數(shù)量要遠(yuǎn)遠(yuǎn)多余用戶數(shù)量,因此計(jì)算向量相似度時(shí),要比ItemCF的時(shí)間復(fù)雜度更低。
- 新用戶往往歷史行為數(shù)據(jù)非常稀疏,可能會(huì)得到【0,0,0,0,0,…..,1】這樣的向量,導(dǎo)致根據(jù)用戶相似度推薦的物品準(zhǔn)確度和置信度會(huì)非常低。也就是說(shuō)如果遇到低頻應(yīng)用以及用戶冷啟動(dòng)會(huì)比較麻煩,不太適用。
- 還有一種情況是,用戶數(shù)遠(yuǎn)遠(yuǎn)多于商品數(shù),用戶數(shù)的不斷增長(zhǎng)會(huì)導(dǎo)致用戶相似度矩陣難以維護(hù),它用到的存儲(chǔ)空間的增長(zhǎng)速度是呈指數(shù)級(jí)的。
2. 基于物品的協(xié)同過(guò)濾(ItemCF)
首先,ItemCF基于這樣一個(gè)前提假設(shè):用戶對(duì)于不同物品間的偏好相似,那么物品間也是相似的。
它的原理與UserCF類似,還是上面那張圖,可以看作是UserCF的另一面。ItemCF采用縱向的向量,作為物品的表示向量,可以通過(guò)物品向量間余弦相似度的方式來(lái)尋找最相似的k個(gè)物品,夾角越小,兩個(gè)物品就越相似。
得到相似度之后,相似度就可以作為置信權(quán)重來(lái)綜合k個(gè)相似物品的打分,得到最終預(yù)測(cè)打分。
ItemCF的應(yīng)用場(chǎng)景和優(yōu)缺點(diǎn):
- 因?yàn)閁serCF有一些明顯的缺點(diǎn),所以Amazon和Netflix最早應(yīng)用的都是ItemCF,它相比用戶向量,物品的向量變化要更為穩(wěn)定,因此廣泛用于電商和視頻推薦的領(lǐng)域,當(dāng)用戶對(duì)某一類商品或某一類電影產(chǎn)生興趣時(shí),此時(shí)給Ta推薦同類型的商品或電影是一個(gè)可靠的選擇。
- ItemCF不具備很強(qiáng)的泛化能力。當(dāng)一個(gè)熱門商品出現(xiàn)后,它容易和大量的商品都具有相似性,導(dǎo)致推薦商品時(shí),熱門商品的出現(xiàn)概率會(huì)非常高,形成了“頭部效應(yīng)”,同樣也致使處于長(zhǎng)尾的商品較難被挖掘,因?yàn)殚L(zhǎng)尾商品的特征向量會(huì)非常稀疏。所以要想解決這個(gè)問(wèn)題,需要后期添加一些干預(yù)策略在里面。
3. 矩陣分解(隱向量的表達(dá))
矩陣分解算法是基于協(xié)同過(guò)濾進(jìn)化而成的,它可以認(rèn)為是一種以數(shù)學(xué)的方式來(lái)優(yōu)化了協(xié)同過(guò)濾算法。
前面提到,協(xié)同過(guò)濾的計(jì)算核心是生成了“共現(xiàn)矩陣”,那么我們可以將這個(gè)共現(xiàn)矩陣?yán)^續(xù)拆分,形成一個(gè)用戶矩陣和一個(gè)物品矩陣,也就是得到了用戶的隱向量和物品的隱向量,這樣就能夠用隱向量的距離來(lái)選取用戶感興趣的物品了。它的思想和embedding(下文會(huì)提到)非常相似,泛化能力極強(qiáng)。
共現(xiàn)矩陣中的每一個(gè)小單元中對(duì)應(yīng)的評(píng)分,約等于,對(duì)應(yīng)用戶矩陣中行向量與物品矩陣中列向量每個(gè)位置對(duì)應(yīng)元素的乘積之和。
如上圖所示,共現(xiàn)矩陣是n×n維的,用戶矩陣是n×k維的(圖中k=2),物品矩陣是k×n維的。其中k值根據(jù)具體工程而定。其中k值越小,模型泛化能力越強(qiáng)。k值越大,模型泛化能力越差,但表達(dá)能力越強(qiáng)。
至于如何得到這樣的用戶矩陣和物品矩陣,采用的是機(jī)器學(xué)習(xí)中的梯度下降法,并且最小化損失函數(shù),得到的最優(yōu)近似解。具體不展開論述了。
4. 邏輯回歸(LR)
說(shuō)到邏輯回歸算法,它實(shí)在是太經(jīng)典了,而且應(yīng)用非常非常廣泛,甚至可以說(shuō)是深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。在深度學(xué)習(xí)模型中,一般常作為神經(jīng)網(wǎng)絡(luò)的輸出層。先看一下邏輯回歸的圖像:
可以看出,邏輯回歸可以將所有的輸入全部映射到0到1之間,因?yàn)?和1的存在,邏輯回歸可以廣泛應(yīng)有于二分類問(wèn)題。
在工業(yè)界,我們應(yīng)用邏輯回歸模型,通常是將【0~1】這個(gè)值域轉(zhuǎn)化為對(duì)概率的預(yù)測(cè),因?yàn)楦怕示褪菑?到1的。一個(gè)二分類問(wèn)題就可以等價(jià)于,對(duì)于一個(gè)樣本是否是正樣本的概率(可以是點(diǎn)擊率CTR)進(jìn)行預(yù)測(cè),最后根據(jù)預(yù)測(cè)的概率值,從上至下來(lái)對(duì)推薦列表排序(有時(shí)在極限情況下,我們甚至可以認(rèn)為,當(dāng)輸入只要大于0時(shí),輸出就為1;當(dāng)輸入只要小于0時(shí),輸出就為0,從而簡(jiǎn)化模型)。
1)邏輯回歸的優(yōu)勢(shì)
與傳統(tǒng)的協(xié)同過(guò)濾不同,協(xié)同過(guò)濾僅利用了用戶對(duì)物品的偏好特征,忽略了用戶特征、物品特征,以及場(chǎng)景特征。協(xié)同過(guò)濾會(huì)丟失掉大量的尚未利用的有效信息,導(dǎo)致給出的結(jié)果并不是最權(quán)威的。
邏輯回歸能夠很好避免這一點(diǎn),它能夠?qū)⒂脩?、物品、上下文、歷史行為特征全部融入進(jìn)模型中,并分別為每一組特征擬合出每一組權(quán)重,最后得到的結(jié)果更具有可信度。
2)邏輯回歸的推薦流程
- 獲取大量的樣本數(shù)據(jù)。將用戶屬性、物品屬性、時(shí)間、地點(diǎn)等特征全部轉(zhuǎn)換為數(shù)值型特征向量。
- 以點(diǎn)擊率CTR為優(yōu)化目標(biāo),將所有的特征向量輸入進(jìn)模型中,經(jīng)過(guò)一段時(shí)間的訓(xùn)練,為每一組特征擬合出一個(gè)權(quán)重參數(shù)。
- 模型上線時(shí),每個(gè)用戶實(shí)時(shí)的數(shù)據(jù)特征,經(jīng)過(guò)模型處理后,為物品得到用戶可能點(diǎn)擊的概率,根據(jù)概率由上至下排序,將反饋出一個(gè)推薦列表。
有些同學(xué)看到這可能會(huì)有疑問(wèn)了,像用戶年齡、商品價(jià)格、文章點(diǎn)贊數(shù)這些,都可以很方便地轉(zhuǎn)換為數(shù)值型特征向量,可是像用戶ID、用戶性別、時(shí)間、地點(diǎn)呢?本身不是數(shù)值類型的屬性,是如何轉(zhuǎn)換的呢?
這其實(shí)涉及到one-hot編碼,以及multi-hot編碼。舉個(gè)例子,對(duì)于結(jié)構(gòu)化的數(shù)據(jù)(比如性別、星期幾)都可以用向量的方式來(lái)表示,比如[1,0,0]可以代表一個(gè)男性,[0,1,0]可以代表一個(gè)女性,[0,0,1]可以代表性別未知;星期幾也是同理,一周有七天,就有七個(gè)維度,[1,0,0,0,0,0,0]就可以代表星期一,依此類推。
四、召回策略
1. 多路召回策略
在召回層這個(gè)階段,我們一方面希望能夠召回盡量多的物品,提升召回物品的豐富度。也就是說(shuō),我們希望召回的這些物品的覆蓋面盡可能全,這里有一個(gè)計(jì)算指標(biāo),叫做召回率。
另一方面,如果召回了特別多的物品,雖然滿足我們對(duì)召回覆蓋面的預(yù)期,但隨著物品數(shù)量增多,又會(huì)極大地影響計(jì)算機(jī)的計(jì)算速度。
在兩方面的權(quán)衡之下,我們通常采用一種方法叫做多路召回策略。但召回策略是強(qiáng)依賴于業(yè)務(wù)的,每個(gè)不同的產(chǎn)品處在不同的時(shí)期,所用到的召回策略也不盡相同。
多路召回策略簡(jiǎn)單地說(shuō),就是采用了多種類型的小型策略,每一種小型策略分別從候選集中召回一定數(shù)量的物品,這樣我們就會(huì)得到召回物品的一個(gè)大的組合,進(jìn)而將這個(gè)組合再交付到排序?qū)舆M(jìn)行排序。
多路召回的好處在于:
- 它依賴于小型策略的簡(jiǎn)單模型的計(jì)算,能夠大幅降低響應(yīng)時(shí)間;
- 多路的特點(diǎn)能夠同時(shí)應(yīng)用多種小型策略,一定程度避免的單一策略召回所導(dǎo)致的精確度的缺陷。
2. 基于Embedding的召回
這種召回方法偏向于技術(shù)層面,我認(rèn)為策略PM可以做一個(gè)大致了解,先簡(jiǎn)單談?wù)勈裁唇凶鯡mbedding。
Embedding可以等價(jià)類比為“向量化”或“向量映射”,是一種向量的映射方式。Embedding的作用就是將一個(gè)高維稀疏的特征向量映射(或者叫轉(zhuǎn)化)為一個(gè)低維稠密的特征向量,同時(shí)保留原有高維向量的顯著特征。Embedding是整個(gè)深度學(xué)習(xí)框架中不可或缺的第一個(gè)層級(jí)(其實(shí)就是用于特征轉(zhuǎn)換)。例如前面提到的“矩陣分解”,就可以看作是Embedding的一個(gè)變種。
那么什么是基于Embedding的召回呢?
這里有一個(gè)前提,就是說(shuō)如果用戶特征與物品特征這兩者被抽象出的Embedding向量是相似的(向量離得最近),那么該用戶就越可能喜歡該物品,從而將該物品從候選集中召回。好了,那么問(wèn)題就可以等價(jià)更該為:如何為用戶Embedding去尋找最相似的物品Embedding?
最傳統(tǒng)的計(jì)算方式是對(duì)用戶和物品的Embedding進(jìn)行向量?jī)?nèi)積運(yùn)算,這代表著需要對(duì)每一位用戶的Embedding,都要把候選集中的海量物品對(duì)應(yīng)的Embedding向量都做一遍匹配計(jì)算,這意味著非常龐大的時(shí)間復(fù)雜度。
因此引申出了另一種方式去計(jì)算Embedding相似度,既然兩者同屬于一個(gè)向量空間,那么找到與用戶Embedding向量最相似的物品Embedding向量就可以理解為是:基于用戶向量去搜索與用戶向量最鄰近向量的過(guò)程,這種方式稱之為“局部敏感哈希(Locality Sensitive Hashing, LSH)”。
局部敏感哈希的原理我就不在這里贅述了,原理略微偏數(shù)學(xué)一些,可能與產(chǎn)品扯得越來(lái)越遠(yuǎn)了,有興趣的同學(xué)可以查查百度。不過(guò)基于Embedding的召回方式是非常有實(shí)踐意義的,Youtube推薦系統(tǒng)在召回層就是利用了這個(gè)召回策略。
總的來(lái)說(shuō),它有幾個(gè)好處。
- 多路召回的小型策略(比如熱門排行、最近流行等)等信息都可以作為Embedding召回方法中的附加信息,帶入到向量中,所以也相當(dāng)于具備了多路召回的能力。
- 基于Embedding的召回可以使得物品分值更具有連續(xù)性,因?yàn)槎嗦氛倩夭呗灾校鱾€(gè)小型策略近似可以認(rèn)為是相互獨(dú)立的,所以不同召回策略下的候選集是不具備可比性的,無(wú)法決定每個(gè)小型策略放回候選集的大小。而Embedding召回可以把相似度作為唯一指標(biāo),能夠隨意限定召回的候選集大小。
五、排序策略
排序一直是推薦系統(tǒng)的核心部分,排序模塊目前一般使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的技術(shù)來(lái)提供“千人千面”的排序結(jié)果,屬于典型的技術(shù)驅(qū)動(dòng)的模塊。如前文所提,排序模塊分為兩大塊,一塊叫做排序?qū)樱C(jī)器學(xué)習(xí)),另一塊叫做重排序?qū)樱I(yè)務(wù)排序?qū)樱?/p>
對(duì)于涉及機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的排序?qū)樱忠蕾囉谒惴P徒o出的排序結(jié)果。一般情況下通過(guò)優(yōu)化模型和調(diào)參,或是輸入大量有價(jià)值的樣本數(shù)據(jù),通過(guò)一段時(shí)間后的訓(xùn)練基本可以達(dá)到一個(gè)較為穩(wěn)定的水平。機(jī)器的表現(xiàn)固然很好,但最終的推薦列表是給用戶展示的,也會(huì)不可避免的出現(xiàn)各種各樣的問(wèn)題。
舉個(gè)例子,一個(gè)視頻內(nèi)容平臺(tái),某一個(gè)秀身材的美女視頻我點(diǎn)進(jìn)去看了一眼,或者我不小心誤觸進(jìn)去了,那么同樣類型題材的視頻就會(huì)連續(xù)不斷地推給我。這不僅是算法越推越窄的問(wèn)題,實(shí)際上是缺乏對(duì)新穎性和多樣性的考慮,缺乏對(duì)排序的干預(yù)處理。所以在推薦系統(tǒng)的開發(fā)之前就需要考慮它的適應(yīng)性和可調(diào)整性。
排序主要是為了解決重要性的問(wèn)題。排序越靠前的內(nèi)容,對(duì)于用戶而言重要程度越高。對(duì)于業(yè)務(wù)和產(chǎn)品而言,不同時(shí)期、不同階段對(duì)于不同用戶給出的排序規(guī)則一定是不同的,下面介紹一些常用的排序策略。
1. 熱度策略
熱度算法一般是用來(lái)推薦比較熱門的內(nèi)容,近期入庫(kù)且曝光點(diǎn)擊率高的,需要用多個(gè)維度分別賦予不同的權(quán)重來(lái)召回內(nèi)容。公式大致如下,受制于一些因素,不宜公開特別詳細(xì),可以簡(jiǎn)單體會(huì)一下里面大概的思路即可。
內(nèi)容熱度=[a*內(nèi)容瀏覽量+b*(收藏量+分享數(shù))-c*(舉報(bào)量+被踩量)]*點(diǎn)擊率倍數(shù)
2. 流行度降權(quán)
暢銷榜單上的熱門物品,其實(shí)更容易被推薦,尤其是使用ItemCF時(shí),頭部效應(yīng)會(huì)變得更加明顯,為了解決長(zhǎng)尾曝光的能力,可以將熱門物品適當(dāng)降權(quán),讓長(zhǎng)尾物品更有競(jìng)爭(zhēng)力。如此,推薦系統(tǒng)給出的原始打分將會(huì)被再次修正。
流行度降權(quán)的一種計(jì)算方式如下所示,r(ui)是推薦系統(tǒng)給出的原始分值,M(i)是物品的銷量,a是一個(gè)可調(diào)節(jié)的參數(shù),它的意義在于保護(hù)銷量小于a的物品不被降權(quán)。
當(dāng)然除此之外還有更多其他函數(shù)可以使用,比如分段函數(shù),我們可以根據(jù)銷量在不同的范圍,分別給定不同的降權(quán)系數(shù)。
3. 時(shí)間衰減
時(shí)間衰減的概念最早來(lái)源于牛頓冷卻定律,物體所損失熱的速率與周圍環(huán)境溫度差是成正比的。在內(nèi)容實(shí)時(shí)性方面,針對(duì)缺乏實(shí)時(shí)性的內(nèi)容,我們可以利用一個(gè)類似的時(shí)間衰減算法來(lái)給這類內(nèi)容做降權(quán)處理。
如下所示,r(ui)是推薦系統(tǒng)給出的原始分值,t0-t代表當(dāng)前時(shí)間與過(guò)去某一時(shí)刻的時(shí)間相差多久,b是控制衰減速度的參數(shù),b越大衰減速度越慢,b越小衰減速度越快。
4. 內(nèi)容打散
如何解決相同類型內(nèi)容連續(xù)不斷的推薦給用戶的問(wèn)題呢?其實(shí)最簡(jiǎn)單的做法就是直接加入業(yè)務(wù)規(guī)則來(lái)限制。
比如曝光點(diǎn)擊率高的優(yōu)先排序,此外同一類型的內(nèi)容連續(xù)不得超過(guò)3個(gè),若超過(guò)3個(gè),就將這些內(nèi)容之后第一個(gè)不屬于此分類的內(nèi)容,強(qiáng)制插入到前面的結(jié)果中去。
這種做法一般比較麻煩且效果有限。一個(gè)比較好用的內(nèi)容打散算法如下所示,它能夠拉大同類內(nèi)容的區(qū)分度,從而使得不同的內(nèi)容實(shí)現(xiàn)混插。其中V(k,j)代表推薦結(jié)果中,分類k中排序?yàn)閖的商品的推薦分?jǐn)?shù)。V(k,j)”代表最終修正后的推薦分?jǐn)?shù)。u代表離散率,越接近于0,則離散性越強(qiáng)。
六、總結(jié)
首先很感謝你能耐心地看到這里,不過(guò)受制于篇幅所限,很多內(nèi)容無(wú)法完整展開。
其實(shí)對(duì)于推薦系統(tǒng)而言,說(shuō)復(fù)雜也復(fù)雜,說(shuō)簡(jiǎn)單其實(shí)把它看透了也是很容易理解的。
當(dāng)然推薦系統(tǒng)的知識(shí)遠(yuǎn)不止于此,作為一個(gè)產(chǎn)品上線時(shí),如何進(jìn)行評(píng)估推薦系統(tǒng)的好與壞?如何進(jìn)行正確的AB測(cè)試來(lái)驗(yàn)證策略手段是否正確?后續(xù)應(yīng)該還會(huì)持續(xù)添加相關(guān)的內(nèi)容,并且下一個(gè)主題想和大家聊一聊搜索相關(guān)的玩法。嚴(yán)格來(lái)講,搜索和推薦其實(shí)是不分家的,推薦可以個(gè)性化,那么搜索更是可以,因?yàn)樗峭扑]的另一面。
本文由 @尋跡 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
請(qǐng)問(wèn)還有再更新嘛,或者其他平臺(tái)有在更嘛~
作者是產(chǎn)品還是算法呀,寫得很不錯(cuò),條理清晰、深入淺出,??
期待下一篇
如何檢驗(yàn)效果好不好,期待下一篇分享
我想問(wèn)下上述幾種排序策略是重排序?qū)拥膯??用戶偏好之類的是在排序?qū)舆€是重排序?qū)幽?/p>
剛接觸,收獲很多