作為簡書小白稽亏,推薦系統(tǒng)小白壶冒,機(jī)器學(xué)習(xí)小白,本白近期非脫產(chǎn)學(xué)習(xí)狀態(tài)下利用不到兩個(gè)月進(jìn)行了推薦系統(tǒng)入門學(xué)習(xí)截歉。寫下第一篇簡書胖腾,用以歸納近期所學(xué),以下為目前階段淺薄理解,希望可以與各位交流咸作,向大家學(xué)習(xí)锨阿。文中引用借鑒之源均列于文末,非常感激前輩們的分享记罚。如文中有理解偏差墅诡,望請?zhí)岢觯?/p>
本文結(jié)構(gòu)如下:
Part 1 Introduction 簡要介紹推薦系統(tǒng)
Part 2 Algorithms Deep Dive 對矩陣分解系列算法和深度學(xué)習(xí)系列算法進(jìn)行整理
Part 3 Main Focus 對主要關(guān)注和實(shí)現(xiàn)的兩個(gè)算法(DIN,xDeepFM)進(jìn)行總結(jié)
Part 1 Introduction
Annotation:以下僅考慮個(gè)性化推薦系統(tǒng)桐智,“物品”代表待推薦集合(商品末早,新聞,廣告等)说庭,也可以理解為待與用戶交互的信息
1.概述
個(gè)性化推薦系統(tǒng)的意義在于緩解信息過載問題然磷,發(fā)掘長尾物品,實(shí)現(xiàn)用戶與企業(yè)的共贏刊驴。物品所代表的即是信息姿搜,推薦通過一種算法能力,按照一定規(guī)則將用戶與信息聯(lián)系起來缺脉。具體而言痪欲,個(gè)性化推薦系統(tǒng)即進(jìn)行TopN推薦悦穿,即向用戶展示其最有可能進(jìn)行交互的N個(gè)物品攻礼。評(píng)分預(yù)測問題/CTR(Click-Through Rate)預(yù)估問題是個(gè)性化推薦系統(tǒng)的核心問題
2.分類
(1)基于內(nèi)容(Content-based)
根據(jù)用戶過去交互(喜歡)的物品推薦相似的物品。主要特點(diǎn)為可以找到用戶獨(dú)特的小眾喜好栗柒,可解釋性好
基本過程:
1.Item Representation:為每個(gè)物品抽取一些特征來表示該物品
2.Profile Learning:利用用戶物品交互信息表示該用戶
3.Recommendation Generation:通過比較用戶的表示和物品的表示為用戶推薦一組相關(guān)性最大的物品
(2)基于協(xié)同過濾(Collaborative Filtering)
1.基于內(nèi)存:需要建立并維護(hù)User-Item矩陣
基于用戶的協(xié)同過濾(User-based CF):首先構(gòu)建UI矩陣礁扮,根據(jù)UI矩陣來計(jì)算用戶維度的相似度,選擇特定用戶最相似的k個(gè)用戶瞬沦,推薦給特定用戶列表中還沒有發(fā)生過行為而在相似度列表中產(chǎn)生過行為的高頻物品
基于物品的協(xié)同過濾(Item-based CF):首先構(gòu)建UI矩陣太伊,根據(jù)UI矩陣來計(jì)算物品維度的相似度,選擇特定物品最相似的k個(gè)物品構(gòu)成推薦列表逛钻,推薦給特定用戶列表中還沒有發(fā)生過行為的物品
2.基于模型
基本問題:利用已有的部分稀疏數(shù)據(jù)來預(yù)測空白的物品和用戶之間的評(píng)分關(guān)系僚焦,找到最高評(píng)分的物品推薦給用戶。
關(guān)聯(lián)算法/聚類算法/分類算法/回歸算法/矩陣分解/隱語義模型/神經(jīng)網(wǎng)絡(luò)/圖模型
(3)混合推薦(Hybrid)
類似于機(jī)器學(xué)習(xí)中的集成學(xué)習(xí)曙痘,通過多個(gè)推薦算法的結(jié)合芳悲,得到一個(gè)更好的推薦算法。例如:建立多個(gè)推薦算法模型边坤,最后用投票法決定最終的推薦結(jié)果名扛。理論上混合推薦結(jié)果不會(huì)比任何一種單一推薦算法差,但是算法(時(shí)間)復(fù)雜度會(huì)顯著提高茧痒,在特定的的評(píng)價(jià)指標(biāo)下混合推薦結(jié)果并不一定由于單一推薦算法
(4)基于人口統(tǒng)計(jì)學(xué)(Demographic-based)
根據(jù)系統(tǒng)用戶的基本信息發(fā)現(xiàn)用戶的相關(guān)程度后進(jìn)行推薦
(5)基于規(guī)則(Rule-based)
基于最多用戶點(diǎn)擊肮韧,基于最多用戶瀏覽等,屬于大眾型的推薦算法
3.評(píng)價(jià)指標(biāo)
(1)Rating Metrics
(2)Ranking Metrics
4.工業(yè)級(jí)應(yīng)用
工業(yè)級(jí)應(yīng)用中需要分級(jí)達(dá)成TopN推薦:首先將物品進(jìn)行多路召回(初步篩選)產(chǎn)生候選集,再進(jìn)行評(píng)分預(yù)測/CTR預(yù)估并排序生成TopN推薦弄企。
Part 2 Algorithms Deep Dive
1.矩陣分解系列算法
(1)傳統(tǒng)SVD
為評(píng)分矩陣超燃,為用戶隱因子矩陣,為物品隱因子矩陣拘领,為奇異值矩陣(對角矩陣淋纲,每個(gè)元素非負(fù),逐漸減性壕俊)洽瞬,因此我們可以用前k個(gè)元素表示它。傳統(tǒng)SVD分解要求矩陣是稠密的业汰,因此通常先用均值或其他統(tǒng)計(jì)學(xué)方法將其填充后再進(jìn)行傳統(tǒng)SVD分解降維伙窃,稠密矩陣的存儲(chǔ)需要非常大的空間,同時(shí)計(jì)算復(fù)雜度也很高
(2)Funk-SVD (Latent Factor Model)
將分解為兩個(gè)低秩的用戶項(xiàng)目矩陣样漆,借鑒線性回歸的思想为障,通過最小化數(shù)據(jù)的平方來尋求最優(yōu)的用戶和物品的隱含向量表示,為了避免過擬合加入L2正則化放祟,用SGD等方法尋求最優(yōu)解即可
用戶對物品的預(yù)測值:
?
損失函數(shù):
后續(xù)提出的三種改進(jìn)方法均僅對進(jìn)行優(yōu)化
(3)BiasSVD
對于一個(gè)評(píng)分系統(tǒng)鳍怨,有些固有屬性與用戶物品無關(guān),用戶有些屬性與物品無關(guān)跪妥,物品有些屬性與用戶無關(guān),因此需要加入偏置項(xiàng)(訓(xùn)練集中所有記錄的評(píng)分的全局平均數(shù))以及用戶偏置項(xiàng)和物品偏置項(xiàng)
(4)SVD++
用戶除了對于項(xiàng)目的顯式歷史評(píng)分記錄外鞋喇,瀏覽記錄或者收藏列表等隱反饋信息同樣可以從側(cè)面一定程度上反應(yīng)用戶的偏好
為用戶所產(chǎn)生隱反饋的物品集合,為隱藏的對于項(xiàng)目的個(gè)人喜好偏置眉撵,是一個(gè)需要學(xué)習(xí)的參數(shù)侦香,是一個(gè)經(jīng)驗(yàn)公式
(5)TimeSVD++
用戶的興趣或者偏好并不是一成不變的,而是隨著時(shí)間而動(dòng)態(tài)變化纽疟,在假設(shè)物品的隱含表示不隨時(shí)間變化的情況下罐韩,假設(shè)用戶的偏置,物品的偏置污朽,以及用戶的隱含因子表示隨時(shí)間而動(dòng)態(tài)變化
2.深度學(xué)習(xí)系列算法
(1)神經(jīng)網(wǎng)絡(luò)觀點(diǎn)看FM
為了進(jìn)一步去除重復(fù)項(xiàng)和特征平方項(xiàng)散吵,得到如下公式
為因子分解后的二階組合特征的權(quán)重矩陣,是將離散系數(shù)特征通過矩陣乘法降維成一個(gè)低維稠密向量蟆肆。即FM首先是對離散特征進(jìn)行嵌入矾睦,之后通過對嵌入后的稠密向量進(jìn)行內(nèi)急來進(jìn)行二階特征組合,最后再與線性模型的結(jié)果求和進(jìn)而得到CTR(Click-Through Rate)
(2)FM考慮領(lǐng)域(Field)信息?
FM的一個(gè)核心步驟就是嵌入颓芭,但是這個(gè)嵌入過程沒有考慮領(lǐng)域信息顷锰,這使得同領(lǐng)域內(nèi)的特征也被當(dāng)做不同領(lǐng)域特征進(jìn)行兩兩組合。由此考慮可以將特征具有領(lǐng)域關(guān)系的特點(diǎn)作為先驗(yàn)知識(shí)加入到神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)中去亡问,同領(lǐng)域的特征嵌入后直接求和作為一個(gè)整體嵌入向量官紫,進(jìn)而與其他領(lǐng)域的整體嵌入特征進(jìn)行兩兩組合肛宋,之后再進(jìn)行二階特征的向量內(nèi)積。本質(zhì)上考慮鄰域信息等同于考慮了鄰域內(nèi)信息的相似性束世,即給FM加入正則酝陈。同時(shí),這些嵌入后的同領(lǐng)域特征可以拼接起來作為更深的神經(jīng)網(wǎng)絡(luò)輸入毁涉,達(dá)到降維的目的
(3)Embedding+Multi-Layer Perceptron
Embedding+MLP是對于分領(lǐng)域離散特征進(jìn)行深度學(xué)習(xí)CTR預(yù)估的通用框架沉帮,深度學(xué)習(xí)在特征組合挖掘即特征學(xué)習(xí)方面具有很大的優(yōu)勢。究其過程贫堰,首先要將不同領(lǐng)域的one-hot特征進(jìn)行embedding穆壕,使其降維成低維稠密特征,然后將這些特征向量拼接成一個(gè)隱含層其屏,之后再不斷堆疊全連接層(MLP)喇勋,最后得出CTR
其問題在于只學(xué)習(xí)高階特征組合,對于低階特征組合不夠兼容偎行,而且參數(shù)較多川背,學(xué)習(xí)較困難
(4)Wide&Deep
把單輸入層的Wide部分和經(jīng)過多層感知機(jī)的Deep部分連接起來一起輸入最終的輸出層。其中Wide部分主要是讓模型具有記憶性(Memorization)蛤袒,單層的Wide部分善于處理大量稀疏的id類特征熄云,便于讓模型直接‘記住’用戶的大量歷史信息;Deep部分的主要作用是讓模型具有‘泛化性’(Generalization)妙真,利用MLP表達(dá)能力強(qiáng)的特點(diǎn)缴允,挖掘藏在特征背后的數(shù)據(jù)模式。最終利用LR輸出層將二者結(jié)合成統(tǒng)一的End-to-end模型
盡管Wide&Deep模型中Wide部分仍然需要手工特征組合隐孽,但是其對于之后模型有重大影響:大量深度學(xué)習(xí)模型采用了兩部分甚至更多部分組合的形式癌椿,利用不同網(wǎng)絡(luò)結(jié)構(gòu)挖掘不同的信息后進(jìn)行組合健蕊,充分結(jié)合了不同網(wǎng)絡(luò)結(jié)構(gòu)的特點(diǎn)菱阵。例如:已經(jīng)得到廣泛應(yīng)用的DeepFM模型即是將Wide&Deep模型的Wide部分進(jìn)行改進(jìn),如下圖可以清晰看出廣義Wide&Deep模型的基礎(chǔ)性作用
(5)地基之上的百花齊放
*1*基于深度學(xué)習(xí)的CTR預(yù)測模型按模型內(nèi)部組件的功能可以劃分為以下四個(gè)模塊:輸入模塊缩功,嵌入模塊晴及,特征提取模塊,預(yù)測輸出模塊
*2*一些經(jīng)典模型的極簡概括:
FM其實(shí)是對嵌入特征進(jìn)行兩兩內(nèi)積實(shí)現(xiàn)特征的二階(低階組合)嫡锌;FNN在FM的基礎(chǔ)上引入了MLP虑稼,但仍需要預(yù)訓(xùn)練;DeepFM通過聯(lián)合訓(xùn)練势木、嵌入特征共享來兼顧FM部分(Wide部分)與MLP部分(Deep部分)不同的特征組合機(jī)制蛛倦;NFM,PNN則是通過改造向量積的方式來延遲FM的實(shí)現(xiàn)過程啦桌,在其中添加非線性成分來提升模型表現(xiàn)力溯壶;AFM則更進(jìn)一步及皂,直接通過子網(wǎng)絡(luò)來對嵌入向量的兩兩逐元素乘積進(jìn)行加權(quán)求和,以實(shí)現(xiàn)不同組合的差異化且改,本質(zhì)上仍然是延遲FM實(shí)現(xiàn)的一種方式验烧;DCN則是將FM進(jìn)行高階特征組合的方向上進(jìn)行推廣,并結(jié)合MLP的全連接式的高階特征組合機(jī)制又跛;Wide&Deep是兼容手工特征組合與MLP的特征組合方式碍拆,是許多模型的基礎(chǔ)框架;Deep Cross是引入殘差網(wǎng)絡(luò)機(jī)制的前饋神經(jīng)網(wǎng)絡(luò)慨蓝,給高維的MLP特征組合增加了低維的特征組合形式
*3*切中肯綮的一張圖
Part 3 Main Focus
由于各位前輩已經(jīng)深入解讀過這兩篇論文感混,本白理解肯定是沒有各位前輩深刻的,一些內(nèi)容由于實(shí)際跑代碼的設(shè)備不行也沒有真正體會(huì)到工程問題的精髓礼烈,在這里就不強(qiáng)行解讀了浩习,通過閱讀百家之言,我貼出來我認(rèn)為質(zhì)量比較高的論文解讀地址济丘,本部分僅對模型進(jìn)行概述谱秽,并使用DeepCTR進(jìn)行樣例實(shí)現(xiàn)
DeepCTR是一個(gè)使用keras實(shí)現(xiàn)了多個(gè)基于深度學(xué)習(xí)的CTR預(yù)估模型的包,結(jié)構(gòu)明細(xì)摹迷,非常適合從統(tǒng)一的觀點(diǎn)來觀察多種基于深度學(xué)習(xí)的CTR預(yù)估模型疟赊,并進(jìn)行簡單的實(shí)驗(yàn)和比較
1. Deep Interest Network(DIN)
論文地址:[1706.06978] Deep Interest Network for Click-Through Rate Prediction
解讀地址:CTR預(yù)估專欄 | 一文搞懂阿里Deep Interest Network - 掘金
(1)概述
深度興趣網(wǎng)絡(luò)(DIN)針對電子商務(wù)領(lǐng)域的CTR預(yù)估問題,重點(diǎn)在于充分挖掘用戶歷史行為數(shù)據(jù)中的信息峡碉。在互聯(lián)網(wǎng)電商領(lǐng)域中近哟,用戶的興趣具有兩個(gè)重要特點(diǎn):Diversity(用戶興趣非常廣泛)和Local Activation(針對于一則信息,用戶點(diǎn)擊與否取決于歷史行為數(shù)據(jù)中的一小部分而非全部)鲫寄。同時(shí)吉执,由于實(shí)際應(yīng)用場景中數(shù)據(jù)量龐大,因此對模型訓(xùn)練造成了一定困難地来。針對以上問題戳玫,這篇論文給出了解決方法:1.使用用戶興趣分布來表示用戶多種多樣的興趣愛好;2.引入Attention機(jī)制來實(shí)現(xiàn)Local Activation未斑;3.針對于模型訓(xùn)練咕宿,提出了DICE激活函數(shù)和自適應(yīng)正則,顯著提升了模型性能與收斂速度
(2)使用DeepCTR的樣例實(shí)現(xiàn)
其中使用的是人工生成的簡單樣例數(shù)據(jù)蜡秽,如果感興趣的話可以換成亞馬遜數(shù)據(jù)集試一下府阀,最好使用Musical Instruments Subset,其數(shù)據(jù)量單機(jī)跑比較合適
歷史行為數(shù)據(jù)芽突,物品屬性數(shù)據(jù)试浙,DIN_preprocessing_by_lilv(數(shù)據(jù)預(yù)處理)
2. xDeepFM
論文地址:[1803.05170] xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems
解讀地址:https://blog.csdn.net/roguesir/article/details/80106672
(1)概述
xDeepFM主要是針對DCN的改進(jìn)。例如FNN寞蚌、PNN和DeepFM田巴,其缺點(diǎn)是模型學(xué)習(xí)出的是隱式的交互特征力细,其形式是未知的、不可控的固额;同時(shí)它們的特征交互是發(fā)生在元素級(jí)(bit-wise)而不是特征向量之間(vector-wise)眠蚂,這一點(diǎn)違背了因子分解機(jī)的初衷。DCN模型斗躏,旨在顯式(explicitly)地學(xué)習(xí)高階特征交互逝慧,其優(yōu)點(diǎn)是模型非常輕巧高效,但缺點(diǎn)是最終模型的表現(xiàn)形式受限制于一種特殊的向量擴(kuò)張啄糙,同時(shí)特征交互依舊是發(fā)生在元素級(jí)上笛臣。為了實(shí)現(xiàn)自動(dòng)學(xué)習(xí)顯式的高階特征交互,同時(shí)使得交互發(fā)生在向量級(jí)上隧饼,xDeepFm提出了壓縮交互網(wǎng)絡(luò)Compressed Interaction Network(CIN)沈堡。CIN是一種類似于RNN+CNN的結(jié)構(gòu),也是本篇論文的主要貢獻(xiàn)
(2)使用DeepCTR的樣例實(shí)現(xiàn)
References
項(xiàng)亮-《推薦系統(tǒng)實(shí)踐》
https://blog.csdn.net/nicajonh/article/details/79657317
協(xié)同過濾推薦算法總結(jié) - 劉建平Pinard - 博客園
recommenders/evaluation.ipynb at master · microsoft/recommenders · GitHub
業(yè)界 | 從FM推演各深度CTR預(yù)估模型(附代碼) - 知乎