一、綜述
本文主要做推薦系統(tǒng)淺析,主要介紹推薦系統(tǒng)的定義,推薦系統(tǒng)的基礎(chǔ)框架,簡(jiǎn)單介紹設(shè)計(jì)推薦的相關(guān)方法以及架構(gòu)。適用于部分對(duì)推薦系統(tǒng)感興趣的同學(xué)以及有相關(guān)基礎(chǔ)的同學(xué),本人水平有限,歡迎大家指正。
二、商品推薦系統(tǒng)
2.1 推薦系統(tǒng)的定義
推薦系統(tǒng)本質(zhì)上還是解決信息過(guò)載的問(wèn)題,幫助用戶找到他們感興趣的物品,深度挖掘用戶潛在的興趣。
2.2 推薦架構(gòu)
其實(shí)推薦系統(tǒng)的核心流程只有召回、排序、重排。
請(qǐng)求流程
當(dāng)一個(gè)用戶打開一個(gè)頁(yè)面,這個(gè)時(shí)候前端會(huì)攜帶用戶信息(pin或者uuid等)去請(qǐng)求后臺(tái)接口(通過(guò)color間接調(diào)用),當(dāng)后臺(tái)收到請(qǐng)求后一般會(huì)先根據(jù)用戶標(biāo)識(shí)進(jìn)行分流獲取相關(guān)策略配置(ab策略),這些策略去決定接下來(lái)會(huì)調(diào)用召回模塊、排序模塊以及重排模塊的哪個(gè)接口。一般召回模塊分多路召回,每路召回負(fù)責(zé)召回多個(gè)商品,排序和重排負(fù)責(zé)調(diào)整這些商品的順序。最后挑選出合適的商品并進(jìn)行價(jià)格、圖片等相關(guān)信息補(bǔ)充展現(xiàn)給用戶。用戶會(huì)根據(jù)自己是否感興趣選擇點(diǎn)擊或者不點(diǎn)擊,這些涉及用戶的行為會(huì)通過(guò)日志上報(bào)到數(shù)據(jù)平臺(tái),為之后效果分析和利用用戶行為推薦商品奠定基礎(chǔ)。
其實(shí)有些問(wèn)題想說(shuō)一說(shuō):
為什么要采取召回、排序、重排這種漏斗分層架構(gòu)?
(1)從性能方面
終極:從百萬(wàn)級(jí)的商品庫(kù)篩選出用戶感興趣的個(gè)位數(shù)級(jí)別的商品。
復(fù)雜的排序模型線上推斷耗時(shí)嚴(yán)重,需要嚴(yán)格控制進(jìn)入排序模型的商品數(shù)量。需要進(jìn)行拆解
(2)從目標(biāo)方面
召回模塊:召回模塊的任務(wù)是快速?gòu)拇罅康奈锲分泻Y選出一部分候選物品,目的是不要漏掉用戶可能會(huì)喜歡的物品。召回模塊通常采用多路召回,使用一些簡(jiǎn)化的特征或模型。
排序模塊:排序模塊的任務(wù)是精準(zhǔn)排序,根據(jù)用戶的歷史行為、興趣、偏好等信息,對(duì)召回模塊篩選出的候選物品進(jìn)行排序。排序模塊通常使用一些復(fù)雜的模型。
重排模塊:重排模塊的任務(wù)是對(duì)排序模塊的結(jié)果進(jìn)行二次排序或調(diào)整,以進(jìn)一步提高推薦的準(zhǔn)確性和個(gè)性化程度。重排模塊通常使用一些簡(jiǎn)單而有效的算法。
什么是ab實(shí)驗(yàn)?
參考論文:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation(google2010)
只有在線實(shí)驗(yàn)才能真正評(píng)估模型優(yōu)劣,ab實(shí)驗(yàn)可以快速驗(yàn)證實(shí)驗(yàn)的效果,快速迭代模型。減少上線新功能的風(fēng)險(xiǎn)。
ab算法:Hash(uuid+實(shí)驗(yàn)id+創(chuàng)建時(shí)間戳)%100
特性:分流+正交
2.3召回
召回層的存在僅僅是為用戶從廣闊的商品池子中初篩出一批還不錯(cuò)的商品。為了平衡計(jì)算速度與召回率(正樣本占全部正樣本的比例)指標(biāo)之間的矛盾,采用多路召回策略,每路召回策略只考慮其中的單一特征或策略。
2.3.1多路召回的優(yōu)劣
多路召回:采用不同的策略、特征或者簡(jiǎn)單模型分別召回一部分候選集,然后把候選集混合在一起供排序使用。召回率高,速度快,多路召回相互補(bǔ)充。
多路召回中每路召回的截?cái)鄠€(gè)數(shù)K是個(gè)超參數(shù),需要人工調(diào)參,成本高;召回通路存在重合問(wèn)題,冗余。
是否存在一種召回可以替代多路召回,向量召回應(yīng)用而生,就目前而言,仍然是以向量召回為主,其他召回為輔的架構(gòu)。
2.3.2召回分類
主要分為非個(gè)性化召回,個(gè)性化召回兩大類。非個(gè)性化召回主要是進(jìn)行熱點(diǎn)推送,推薦領(lǐng)域馬太效應(yīng)嚴(yán)重,20%的商品貢獻(xiàn)80%的點(diǎn)擊。個(gè)性化召回主要是發(fā)掘用戶感興趣的商品,著重處理每個(gè)用戶的差異點(diǎn),提高商品的多樣性,保持用戶的粘性。
非個(gè)性化召回
(1) 熱門召回
近7天高點(diǎn)擊、高點(diǎn)贊、高銷量商品召回
(2)新品召回
最新上架的商品召回
個(gè)性化召回
(1)標(biāo)簽召回、地域召回
標(biāo)簽召回:用戶感興趣的品類、品牌、店鋪召回等
地域召回:根據(jù)用戶的地域召回地域內(nèi)的優(yōu)質(zhì)商品。
(2)cf召回
協(xié)同過(guò)濾算法是基于用戶行為數(shù)據(jù)挖掘用戶的行為偏好,從而根據(jù)用戶的行為偏好為其推薦物品,其根據(jù)的是用戶和物品的行為矩陣(共現(xiàn)矩陣)。用戶行為一般包括瀏覽、點(diǎn)贊、加購(gòu)、點(diǎn)擊、關(guān)注、分享等等。
協(xié)同過(guò)濾分為三大類:基于用戶的協(xié)同過(guò)濾(UCF)和基于物品的協(xié)同過(guò)濾(ICF)和基于模型的協(xié)同過(guò)濾(隱語(yǔ)義模型)。是否為用戶推薦某個(gè)物品,首先要把用戶和物品進(jìn)行關(guān)聯(lián),而進(jìn)行關(guān)聯(lián)的點(diǎn)是另一個(gè)物品還是另一個(gè)用戶,決定了這屬于哪個(gè)類型的協(xié)同過(guò)濾。而基于隱語(yǔ)義模型是根據(jù)用戶行為數(shù)據(jù)進(jìn)行自動(dòng)聚類挖掘用戶的潛在興趣特征。從而通過(guò)潛在興趣特征對(duì)用戶和物品進(jìn)行關(guān)聯(lián)。
基于物品的協(xié)同過(guò)濾(ICF):判斷是否為用戶推薦某個(gè)物品,首先根據(jù)用戶歷史行為記錄的物品和這個(gè)物品的相似關(guān)系來(lái)推斷用戶對(duì)這個(gè)物品的興趣度,從而判斷我們是否推薦這個(gè)物品。整個(gè)協(xié)同過(guò)濾過(guò)程主要分為以下幾步:計(jì)算物品之間的相似度,計(jì)算用戶對(duì)物品的興趣度,排序截取結(jié)果。
商品相似度計(jì)算:
衡量相似度主要有以下幾種方式:夾角余弦距離,杰卡德公式。由于用戶或物品的表示方式的多樣性,使得這些相似度的計(jì)算非常靈活。我們可以利用用戶和物品的行為矩陣來(lái)去計(jì)算相似度,也可以根據(jù)用戶行為、物品屬性和上下文關(guān)系構(gòu)造用戶和物品的向量表示去計(jì)算相似性。
夾角余弦距離公式: cos?θ=(x1*x2+y1*y2)/(√(x12+y12 )*√(x22+y22 ))
杰卡德公式J(A,B)=(|A?B|)/(|A?B|)
商品a | 商品b | 商品c | 商品d | |
---|---|---|---|---|
用戶A | 1 | 0 | 0 | 1 |
用戶B | 0 | 1 | 1 | 0 |
用戶C | 1 | 0 | 1 | 1 |
用戶D | 1 | 1 | 0 | 0 |
夾角余弦距離公式計(jì)算商品a和b的相似度:
Wab=(1*0+0*1+1*0+1*1)/(√(12+02+12+12 )*√(02+12+02+12 ))=1/√6
spark實(shí)現(xiàn)ICF:https://zhuanlan.zhihu.com/p/413159725
問(wèn)題:冷啟動(dòng)問(wèn)題,長(zhǎng)尾效應(yīng)。
(3)向量召回
向量化召回:通過(guò)學(xué)習(xí)用戶與物品低維向量化表征,將召回建模成向量空間內(nèi)的近鄰搜索問(wèn)題,有效提升了召回的泛化能力與多樣性,是推薦引擎的核心召回通道。
向量:萬(wàn)物皆可向量化,Embedding就是用一個(gè)低維稠密的向量表示一個(gè)對(duì)象(詞語(yǔ)或者商品),主要作用是將稀疏向量轉(zhuǎn)換成稠密向量(降維的效果),這里的表示蘊(yùn)含著一定的深意,使其能夠表達(dá)出對(duì)象的一部分特征,同時(shí)向量之間的距離反映對(duì)象之間的相似性。
向量召回步驟:離線訓(xùn)練生成向量,在線向量檢索。
1.離線訓(xùn)練生成向量
word2vec:詞向量的鼻祖,由三層神經(jīng)網(wǎng)絡(luò):輸入層,隱藏層,輸出層,隱藏層沒(méi)有激活函數(shù),輸出層用了softmax計(jì)算概率。
目標(biāo)函數(shù)
網(wǎng)絡(luò)結(jié)構(gòu):
總的來(lái)說(shuō):輸入是詞語(yǔ)的序列,經(jīng)過(guò)模型訓(xùn)練可以得到每個(gè)詞語(yǔ)對(duì)應(yīng)的向量。應(yīng)用在推薦領(lǐng)域就是輸入是用戶的點(diǎn)擊序列,經(jīng)過(guò)模型訓(xùn)練得到每個(gè)商品的向量。
優(yōu)劣:簡(jiǎn)單高效,但是只考慮了行為序列,沒(méi)有考慮其他特征。
雙塔模型:
網(wǎng)絡(luò)結(jié)構(gòu):分別稱為User塔和物品塔;其中User塔接收用戶側(cè)特征作為輸入比如用戶id、性別、年齡、感興趣的三級(jí)品類、用戶點(diǎn)擊序列、用戶地址等;Item塔接受商品側(cè)特征,比如商品id、類目id、價(jià)格、近三天訂單量等。數(shù)據(jù)訓(xùn)練:(正樣本數(shù)據(jù),1)(負(fù)樣本,0)正樣本:點(diǎn)擊的商品,負(fù)樣本:全局隨機(jī)商品樣本(或者同批次其他用戶點(diǎn)擊樣本)
優(yōu)劣:高效,完美契合召回特性,在線請(qǐng)求得到用戶向量,檢索召回item向量,泛化性高;用戶塔和item塔割裂,只在最后做了交互。
2.在線向量檢索
向量檢索:是一種基于向量空間模型(Vector Space Model)的信息檢索方法,用于在大規(guī)模文本集合中快速查找與查詢向量最相似的文檔向量。在信息檢索、推薦系統(tǒng)、文本分類中得到廣泛應(yīng)用。
向量檢索的過(guò)程是計(jì)算向量之間的相似度,最后返回相似度較高的TopK向量返回,而向量相似度計(jì)算有多種方式。計(jì)算向量相似性得方式有歐式距離、內(nèi)積、余弦距離。歸一化后,內(nèi)積與余弦相似度計(jì)算公式等價(jià)。
向量檢索的本質(zhì)是近似近鄰搜索(ANNS),盡可能減小查詢向量的搜索范圍,從而提高查詢速度。
目前在工業(yè)界被大規(guī)模用到的向量檢索算法基本可以分為以下3類:
- 局部敏感性哈希(LSH)
- 基于圖(HNSW)
- 基于乘積量化
簡(jiǎn)單介紹LSH
LSH算法的核心思想是:將原始數(shù)據(jù)空間中的兩個(gè)相鄰數(shù)據(jù)點(diǎn)通過(guò)相同的映射或投影變換后,這兩個(gè)數(shù)據(jù)點(diǎn)在新的數(shù)據(jù)空間中仍然相鄰的概率很大,而不相鄰的數(shù)據(jù)點(diǎn)被映射到同一個(gè)桶的概率很小。
相比于暴力搜索遍歷數(shù)據(jù)集中的所有點(diǎn),而使用哈希,我們首先找到查詢樣本落入在哪個(gè)桶中,如果空間的劃分是在我們想要的相似性度量下進(jìn)行分割的,則查詢樣本的最近鄰將極有可能落在查詢樣本的桶中,如此我們只需要在當(dāng)前的桶中遍歷比較,而不用在所有的數(shù)據(jù)集中進(jìn)行遍歷。當(dāng)哈希函數(shù)數(shù)目H取得太大,查詢樣本與其對(duì)應(yīng)的最近鄰落入同一個(gè)桶中的可能性會(huì)變得很微弱,針對(duì)這個(gè)問(wèn)題,我們可以重復(fù)這個(gè)過(guò)程L次(每一次都是不同得哈希函數(shù)),從而增加最近鄰的召回率。
案例:基于word2vec實(shí)現(xiàn)向量召回
2.4排序
推薦系統(tǒng)的掌上明珠
排序階段分為粗排和精排,粗排一般出現(xiàn)在在召回結(jié)果的數(shù)據(jù)量級(jí)比較大的時(shí)候。
進(jìn)化歷程
簡(jiǎn)單介紹Wide&Deep
背景:手動(dòng)特征組合實(shí)現(xiàn)記憶性效果不錯(cuò)但是特征工程太耗費(fèi)人力,并且未曾出現(xiàn)的特征組合無(wú)法記憶,不能進(jìn)行泛化。
目的:使模型同時(shí)兼顧泛化和記憶能力(有效的利用歷史信息并具有強(qiáng)大的表達(dá)能力)?
(1)記憶能力 模型直接學(xué)習(xí)并利用歷史數(shù)據(jù)中物品或者特征共現(xiàn)頻率的能力,記憶歷史數(shù)據(jù)的分布特點(diǎn),簡(jiǎn)單模型容易發(fā)現(xiàn)數(shù)據(jù)中對(duì)結(jié)果影響較大的特征或者組合特征,調(diào)整其權(quán)重實(shí)現(xiàn)對(duì)強(qiáng)特征的記憶
(2)泛化能力 模型傳遞特征的相關(guān)性,以及發(fā)掘稀疏或者從未出現(xiàn)過(guò)的稀有特征和最終標(biāo)簽相關(guān)性的能力,即使是非常稀疏的特征向量輸入也能得到穩(wěn)定平滑的推薦概率。提高泛化性的例子:矩陣分解,神經(jīng)網(wǎng)絡(luò)
兼顧記憶和泛化能力 (結(jié)果的準(zhǔn)確性和擴(kuò)展性) wide部分專注模型記憶,快速處理大量歷史行為特征,deep部分專注模型泛化,探索新世界,模型傳遞特征的相關(guān)性,發(fā)掘稀疏甚至從外出現(xiàn)過(guò)的稀有特征與最終標(biāo)簽的相關(guān)性的能力,具有強(qiáng)大的表達(dá)能力。最終將wide部分和deep部分結(jié)合起來(lái),形成統(tǒng)一的模型。
wide部分就是基礎(chǔ)的線性模型,表示為y=W^T X+b X特征部分包括基礎(chǔ)特征和交叉特征。交叉特征在wide部分很重要,可以捕捉到特征間的交互,起到添加非線性的作用。
deep部分為embeding層+三層神經(jīng)網(wǎng)絡(luò)(relu),前饋公式
聯(lián)合訓(xùn)練
優(yōu)劣:為推薦/廣告/搜索排序算法之后的發(fā)展奠定了重要基礎(chǔ),從傳統(tǒng)算法跨越到深度學(xué)習(xí)算法,里程碑意義。兼顧記憶和泛化能力但是Wide側(cè)仍需要手工組合特征。
參考論文:Wide & Deep Learning for Recommender Systems
2.5 重排
定義:對(duì)精排后的結(jié)果順序進(jìn)行微調(diào),一方面實(shí)現(xiàn)全局最優(yōu)、一方面滿足業(yè)務(wù)訴求提升用戶體驗(yàn)。比如打散策略,強(qiáng)插策略,提高曝光,敏感過(guò)濾
MMR算法
實(shí)現(xiàn)商品多樣性問(wèn)題?
目的:在推薦結(jié)果準(zhǔn)確性的同時(shí)保證推薦結(jié)果的多樣性,為了平衡推薦結(jié)果的多樣性和相關(guān)性?
算法原理,如公式?
D:商品集合,Q:用戶,S:已被選中的商品集合, R\S:R中未被選中的商品集合?
def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20):
#s 排序后列表 r 候選項(xiàng)
s, r = [], list(itemScoreDict.keys())
while len(r) > 0:
score = 0
selectOne = None
# 遍歷所有剩余項(xiàng)
for i in r:
firstPart = itemScoreDict[i]
# 計(jì)算候選項(xiàng)與"已選項(xiàng)目"集合的最大相似度
secondPart = 0
for j in s:
sim2 = similarityMatrix[i][j]
if sim2 > second_part:
secondPart = sim2
equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)
if equationScore > score:
score = equationScore
selectOne = i
if selectOne == None:
selectOne = i
# 添加新的候選項(xiàng)到結(jié)果集r,同時(shí)從s中刪除
r.remove(selectOne)
s.append(selectOne)
return (s, s[:topN])[topN > len(s)]
意義是選擇一個(gè)與用戶最相關(guān)的同時(shí)跟已選擇物品最不相關(guān)的物品。時(shí)間復(fù)雜度O(n2) 可以通過(guò)限制選擇的個(gè)數(shù)進(jìn)行降低時(shí)間復(fù)雜度?
工程實(shí)現(xiàn):需要用戶和物品的相關(guān)性和物品之間的相似性作為輸入,用戶和物品的相關(guān)性可以用排序模型的結(jié)果作為代替,物品之間的相似性可以通過(guò)協(xié)同過(guò)濾等算法得到商品向量,計(jì)算余弦距離。也可以簡(jiǎn)單得是否同一三級(jí)類目、同一店鋪等表征?
三、總結(jié)
就簡(jiǎn)單嘮叨這么多啦,主要想讓大家了解一下推薦系統(tǒng),向大家介紹一下整個(gè)推薦架構(gòu),以及整個(gè)推薦都有哪些模塊。由于本人水平有限,每個(gè)模塊也沒(méi)有講的特別細(xì),希望之后能在工作中繼續(xù)學(xué)習(xí)這個(gè)領(lǐng)域,深挖細(xì)節(jié),產(chǎn)出更好的東西呈現(xiàn)給大家。感謝?。?!
作者:京東零售 閆先東文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-644323.html
來(lái)源:京東云開發(fā)者社區(qū)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-644323.html
到了這里,關(guān)于商品推薦系統(tǒng)淺析 | 京東云技術(shù)團(tuán)隊(duì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!