搜索推荐中的召回匹配模型综述(一):传统方法
Part0 搜索推薦中的匹配模型綜述
本文主要啟發(fā)來源SIGIR2018的這篇綜述性slides《Deep Learning for Matching in Search and Recommendation》,重點(diǎn)闡述搜索和推薦中的深度匹配問題,非常solid的綜述,針對(duì)里面的一些方法,尤其是feature- based的深度學(xué)習(xí)方法增加了近期一些相關(guān)paper。推薦系統(tǒng)和搜索應(yīng)該是機(jī)器學(xué)習(xí)乃至深度學(xué)習(xí)在工業(yè)界落地應(yīng)用最多也最容易變現(xiàn)的場景。而無論是搜索還是推薦,本質(zhì)其實(shí)都是匹配,搜索的本質(zhì)是給定query,匹配doc;推薦的本質(zhì)是給定user,推薦item。本文主要講推薦系統(tǒng)里的匹配問題,包括傳統(tǒng)匹配模型和深度學(xué)習(xí)模型。
深度學(xué)習(xí)之風(fēng)雖然愈演愈烈,但背后體現(xiàn)的矩陣分解思想、協(xié)同過濾思想等其實(shí)一直都是貫穿其中,如svd++體現(xiàn)的userCF和itemCF的思想,FM模型本質(zhì)上可以退化成以上大多數(shù)模型等。多對(duì)這些方法做總結(jié),有助于更深刻理解不同模型之間的關(guān)聯(lián)。
圖1 推薦和搜索的本質(zhì),都是match的過程
Part1 基于Collaborative Filtering的方法
CF模型
說到推薦系統(tǒng)里最經(jīng)典的模型,莫過于大名鼎鼎的協(xié)同過濾了。協(xié)同過濾基于一個(gè)最基本的假設(shè):一個(gè)用戶的行為,可以由和他行為相似的用戶進(jìn)行預(yù)測(cè)。
協(xié)同過濾的基本思想是基于<user, item>的所有交互行為,利用集體智慧進(jìn)行推薦。CF按照類型可以分為3種,user-based CF、item- based CF和model-based CF。
(1)User-base CF:通過對(duì)用戶喜歡的item 進(jìn)行分析,如果用戶a和用戶b喜歡過的item差不多,那么用戶a和b是相似的。類似朋友推薦一樣,可以將b喜歡過但是a沒有看過的item推薦給a
(2)Item-base CF: item A和item B如果被差不多的人喜歡,認(rèn)為item A和item B是相似的。用戶如果喜歡item A, 那么給用戶推薦item B大概率也是喜歡的。比如用戶瀏覽過這篇介紹推薦系統(tǒng)的文章,也很有可能會(huì)喜歡和推薦系統(tǒng)類似的其他機(jī)器學(xué)習(xí)相關(guān)文章。
(3)model-base CF: 也叫基于學(xué)習(xí)的方法,通過定義一個(gè)參數(shù)模型來描述用戶和物品、用戶和用戶、物品和物品之間的關(guān)系,然后通過已有的用戶- 物品評(píng)分矩陣來優(yōu)化求解得到參數(shù)。例如矩陣分解、隱語義模型LFM等。
CF協(xié)同過濾的思路要解決的問題用數(shù)據(jù)形式表達(dá)就是:矩陣的未知部分如何填充問題(Matrix Completion)。如圖2.1所示,已知的值是用戶已經(jīng)交互過的item,如何基于這些已知值填充矩陣剩下的未知值,也就是去預(yù)測(cè)用戶沒有交互過的item是矩陣填充要解決的問題。
圖2.1 用戶對(duì)左圖評(píng)分過的電影,可以用右圖矩陣填充表達(dá)
矩陣填充可以用經(jīng)典的SVD(Singular Value Decomposition )解決,如圖2.1所示
圖2.2 SVD矩陣分解
其中左側(cè)M=m*n表示用戶評(píng)分矩陣,m矩陣的行表示用戶數(shù),n矩陣的列表示item數(shù),在大多數(shù)推薦系統(tǒng)中m和n規(guī)模都比較大,因此希望通過將M分解成右側(cè)低秩的形式。一般來說SVD求解可以分為三步:
(1) 對(duì)M矩陣的missing data填充為0
(2) 求解SVD問題,得到U矩陣和V矩陣
(3) 利用U和V矩陣的低秩k維矩陣來估計(jì)
對(duì)于第二步種的SVD求解問題,等價(jià)于以下的最優(yōu)化問題:
其中yij為用戶i對(duì)物品j的真實(shí)評(píng)分,也就是label, U和V為模型預(yù)估值,求解矩陣U和V的過程就是最小化用戶真實(shí)評(píng)分矩陣和預(yù)測(cè)矩陣誤差的過程。
這種SVD求解方法存在以下問題:
(1) missing data(在數(shù)據(jù)集占比超過99%)和observe data權(quán)重一樣
(2) 最小化過程沒有正則化(只有最小方差),容易產(chǎn)生過擬合
因此,一般來說針對(duì)原始的SVD方法會(huì)有很多改進(jìn)方法。
MF模型(矩陣分解)
為解決上述過擬合情況,矩陣分解模型(matrix factorization)提出的模型如下
MF模型的核心思想可以分成兩步
(1)將用戶u對(duì)物品i的打分分解成用戶的隱向量vu,以及物品的隱向量vi
(2)用戶u和物品i的向量點(diǎn)積(inner product)得到的value,可以用來代表用戶u對(duì)物品i的喜好程度,分?jǐn)?shù)越高代表該item推薦給用戶的概率就越大
同時(shí),MF模型引入了l2正則來解決過擬合問題
當(dāng)然,這里除了用l2 正則,其他正則手段例如l1正則,cross-entropy正則也都是可以的。
FISM模型
上述提到的兩種模型CF方法和MF方法都只是簡單利用了user- item的交互信息,對(duì)于用戶本身的表達(dá)是userid也就是用戶本身。2014年KDD上提出了一種更加能夠表達(dá)用戶信息的方法,Factored Item Similarity Model,簡稱FISM,顧名思義,就是將用戶喜歡過的item作為用戶的表達(dá)來刻畫用戶,用數(shù)據(jù)公式表示如下:
注意到用戶表達(dá)不再是獨(dú)立的隱向量,而是用用戶喜歡過的所有item的累加求和得到作為user的表達(dá);而item本身的隱向量vi是另一套表示,兩者最終同樣用向量內(nèi)積表示。
SVD++模型
MF模型可以看成是user-based的CF模型,直接將用戶id映射成隱向量,而FISM模型可以看成是item- based的CF模型,將用戶交戶過的item的集合映射成隱向量。一個(gè)是userid本身的信息,一個(gè)是user過去交互過的item的信息,如何結(jié)合user- base和item-base這兩者本身的優(yōu)勢(shì)呢?
SVD++方法正是這兩者的結(jié)合,數(shù)學(xué)表達(dá)如下
其中,每個(gè)用戶表達(dá)分成兩個(gè)部分,左邊vu表示用戶id映射的隱向量(user-based CF思想),右邊是用戶交互過的item集合的求和(item- based CF思想)。User和item的相似度還是用向量點(diǎn)擊來表達(dá)。
這種融合方法可以看成早期的模型融合方法,在連續(xù)3年的Netflix百萬美金推薦比賽中可是表現(xiàn)最好的模型。
Part2 Generic feature-based的方法
上述的方法中,無論是CF, MF, SVD, SVD++,還是FISM,都只是利用了user和item的交互信息(rating data),而對(duì)于大量的side information信息沒有利用到。例如user本身的信息,如年齡,性別、職業(yè);item本身的side information,如分類,描述,圖文信息;以及context上下文信息,如位置,時(shí)間,天氣等。因此,傳統(tǒng)模型要講的第二部分,是如何利用這些特征,去構(gòu)造feature- based的model.
圖2.3 特征體系三模塊:用戶信息、物品信息、交互信息
FM模型
首先要介紹的是大名鼎鼎的FM模型。FM模型可以看成由兩部分組成,如圖2.4所示,藍(lán)色的LR線性模型,以及紅色部分的二階特征組合。對(duì)于每個(gè)輸入特征,模型都需要學(xué)習(xí)一個(gè)低維的隱向量表達(dá)v,也就是在各種NN網(wǎng)絡(luò)里所謂的embedding 表示。
圖2.4 FM模型的稀疏one-hot特征輸入
FM模型的數(shù)學(xué)表達(dá)如圖2.5所示
圖2.5 FM模型的數(shù)學(xué)表達(dá)分解
注意紅色部分表示的是二階特征的兩兩組合(特征自己和自己不做交叉),向量之間的交叉還是用向量內(nèi)積表示。FM模型是feature- based模型的一個(gè)范式表達(dá),接下來介紹的幾個(gè)模型都可以看成是FM模型的特殊范例。
FM模型和MF關(guān)系
假如只使用userid和itemid,我們可以發(fā)現(xiàn)其實(shí)FM退化成加了bias的MF模型,如圖2.6所示
圖2.6 FM模型可以退化成帶bias的MF模型
數(shù)學(xué)表達(dá)式如下:
FM模型和FISM關(guān)系
如果輸入包含兩個(gè)變量,1)用戶交互過的item集合;2)itemid本身,那么,此時(shí)的FM又將退化成帶bias的FISM模型,如圖2.7所示,藍(lán)色方框表示的是用戶歷史交互過的item(rated movies),右邊橙色方框表示的是itemid本身的one-hot特征
圖2.7 FM模型可以退化成帶bias的FISM模型
此時(shí)的FM模型數(shù)學(xué)表達(dá)如下:
同樣道理,如果再加上userid的隱向量表達(dá),那么FM模型將退化成SVD++模型。可見,MF, FISM, SVD++其實(shí)都是FM的特例。
Part3 總結(jié)
微觀視角
上面介紹的模型都是通過打分預(yù)測(cè)來解決推薦系統(tǒng)的排序問題,這在很多時(shí)候一般都不是最優(yōu)的,原因有如下幾個(gè)方面:
(1)預(yù)測(cè)打分用的RMSE指標(biāo)和實(shí)際的推薦系統(tǒng)排序指標(biāo)的gap
預(yù)測(cè)打分用的RMSE擬合的是最小方差(帶正則),而實(shí)際面臨的是個(gè)排序問題
(2) 觀察數(shù)據(jù)天然存在bias
用戶一般傾向于給自己喜歡的item打分,而用戶沒有打分過的item未必就真的是不喜歡。針對(duì)推薦系統(tǒng)的排序問題,一般可以用pairwise 的ranking來替代RMSE
如上述公式所示,不直接擬合用戶對(duì)item的單個(gè)打分,而是以pair的形式進(jìn)行擬合;一般來說,用戶打分高的item>用戶打分低的item;用戶用過交互的item>用戶未交互過的item(不一定真的不喜歡)
宏觀視角
推薦和搜索的本質(zhì)其實(shí)都是匹配,前者匹配用戶和物品;后者匹配query和doc。具體到匹配方法,分為傳統(tǒng)模型和深度模型兩大類,第二章講的是傳統(tǒng)模型,第三章和第四章講的是深度模型。
對(duì)于傳統(tǒng)模型,主要分為基于協(xié)同過濾的模型和基于特征的模型,兩者最大的不同在于是否使用了side information。基于協(xié)同過濾的模型,如CF, MF, FISM, SVD++,只用到了用戶-物品的交互信息,如userid, itemid, 以及用戶交互過的item集合本身來表達(dá)。而基于特征的模型以FM為例,主要特點(diǎn)是除了用戶-物品的交互之外,還引入了更多的side information。FM模型是很多其他模型的特例,如MF, SVD++,FISM等。
整理本篇綜述主要基于原始slides,對(duì)其中的paper部分粗讀部分精讀,收獲頗多,在全文用如何做好推薦match的思路,將各種方法盡可能串到一起,主要體現(xiàn)背后一致的思想指導(dǎo)。多有錯(cuò)漏,歡迎批評(píng)指出。
Part4 參考文獻(xiàn)
(1) ?https://www. ?comp.nus.edu.sg/~xiangn ?an/sigir18-deep.pdf
(2) Xiangnan He, Hanwang Zhang, Min-Yen Kan, and Tat-Seng Chua. Fast matrix factorization for online recommendation with implicit feedback. In SIGIR 2016.
(3) Yehuda Koren, and Robert Bell. Advances in collaborative filtering. Recommender systems handbook. Springer, Boston, MA, 2015. 77-118.
(4) Santosh Kabbur, Xia Ning, and George Karypis. Fism: factored item similarity models for top-n recommender systems. In KDD 2013.
(5) Yehuda Koren. Factorization meets the neighborhood: a multifaceted collaborative filtering model. In KDD 2018.
(6) Steffen Rendle. Factorization machines. In ICDM 2010.
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的搜索推荐中的召回匹配模型综述(一):传统方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka优秀设计
- 下一篇: 胆囊炎能不能吃金针菇