摘要
本文主要圍繞推薦系統(tǒng)中經(jīng)典的矩陣分解技術(shù)展開(kāi)討論,先闡述推薦系統(tǒng)的必要性以及主流分類,隨后介紹推薦系統(tǒng)的兩大場(chǎng)景以及矩陣分解原理,最后開(kāi)始介紹矩陣分解大家族,從最經(jīng)典的FunkSVD開(kāi)始講起,隨后介紹一些對(duì)于它的經(jīng)典擴(kuò)展(模型方面和數(shù)據(jù)層面),或者從另一個(gè)概率角度來(lái)解釋矩陣分解,或者提出一些其他的經(jīng)典假設(shè),以期給讀者一個(gè)更加清晰的認(rèn)識(shí),即矩陣分解作為推薦系統(tǒng)的經(jīng)典,可以在此基礎(chǔ)上延伸出許多經(jīng)典模型,只要讀者能夠?qū)ζ渥銐蛄私猓嘈庞谐蝗?,你也可以?chuàng)造出屬于自己滴經(jīng)典!
隨著大數(shù)據(jù)時(shí)代的飛速發(fā)展,信息逐漸呈現(xiàn)出過(guò)載狀態(tài),推薦系統(tǒng)(Recommender System)作為近年來(lái)實(shí)現(xiàn)信息生產(chǎn)者與消費(fèi)者之間利益均衡化的有效手段之一,越來(lái)越發(fā)揮著舉足輕重的作用。再者這是一個(gè)張揚(yáng)個(gè)性的時(shí)代,人們對(duì)于個(gè)性化的追求、千人千面的向往愈來(lái)愈突出,誰(shuí)能捕捉住用戶的個(gè)性化需求,誰(shuí)就能在這個(gè)時(shí)代站住腳跟?,F(xiàn)在人們不再單單依靠隨大流式的熱門推薦,而是基于每個(gè)用戶的行為記錄來(lái)細(xì)粒度的個(gè)性化的生成推薦內(nèi)容。像今日頭條、抖音這樣的APP之所以如此之火,讓人們欲罷不能,無(wú)非是抓住了用戶想看什么的心理,那么如何才能抓住用戶的心理,那就需要推薦系統(tǒng)的幫助了。
眾所周知,推薦系統(tǒng)中最為主流與經(jīng)典的技術(shù)之一是協(xié)同過(guò)濾技術(shù)(Collaborative Filtering),它是基于這樣的假設(shè):用戶如果在過(guò)去對(duì)某些項(xiàng)目產(chǎn)生過(guò)興趣,那么將來(lái)他很可能依然對(duì)其保持熱忱。其中協(xié)同過(guò)濾技術(shù)又可根據(jù)是否采用了機(jī)器學(xué)習(xí)思想建模的不同劃分為基于內(nèi)存的協(xié)同過(guò)濾(Memory-based CF)與基于模型的協(xié)同過(guò)濾技術(shù)(Model-based CF)。其中基于模型的協(xié)同過(guò)濾技術(shù)中尤為矩陣分解(Matrix Factorization)技術(shù)最為普遍和流行,因?yàn)樗目蓴U(kuò)展性極好并且易于實(shí)現(xiàn),因此接下來(lái)我們將梳理下推薦系統(tǒng)中出現(xiàn)過(guò)的經(jīng)典的矩陣分解方法。
在介紹矩陣分解大家族之前,先讓我們明確下推薦系統(tǒng)的場(chǎng)景以及矩陣分解的原理。對(duì)于推薦系統(tǒng)來(lái)說(shuō)存在兩大場(chǎng)景即評(píng)分預(yù)測(cè)(rating prediction)與Top-N推薦(item recommendation,item ranking)。評(píng)分預(yù)測(cè)場(chǎng)景主要用于評(píng)價(jià)網(wǎng)站,比如用戶給自己看過(guò)的電影評(píng)多少分(MovieLens),或者用戶給自己看過(guò)的書籍評(píng)價(jià)多少分(Douban)。其中矩陣分解技術(shù)主要應(yīng)用于該場(chǎng)景。Top-N推薦場(chǎng)景主要用于購(gòu)物網(wǎng)站或者一般拿不到顯式評(píng)分信息的網(wǎng)站,即通過(guò)用戶的隱式反饋信息來(lái)給用戶推薦一個(gè)可能感興趣的列表以供其參考。其中該場(chǎng)景為排序任務(wù),因此需要排序模型來(lái)對(duì)其建模。因此,我們接下來(lái)更關(guān)心評(píng)分預(yù)測(cè)任務(wù)。
對(duì)于評(píng)分預(yù)測(cè)任務(wù)來(lái)說(shuō),我們通常將用戶和項(xiàng)目(以電影為例)表示為二維矩陣的形式,其中矩陣中的某個(gè)元素表示對(duì)應(yīng)用戶對(duì)于相應(yīng)項(xiàng)目的評(píng)分,1-5分表示喜歡的程度逐漸增加,?表示沒(méi)有過(guò)評(píng)分記錄。推薦系統(tǒng)評(píng)分預(yù)測(cè)任務(wù)可看做是一個(gè)矩陣補(bǔ)全(Matrix Completion)的任務(wù),即基于矩陣中已有的數(shù)據(jù)(observed data)來(lái)填補(bǔ)矩陣中沒(méi)有產(chǎn)生過(guò)記錄的元素(unobserved data)。值得注意的是,這個(gè)矩陣是非常稀疏的(Sparse),稀疏度一般能達(dá)到90%以上,因此如何根據(jù)極少的觀測(cè)數(shù)據(jù)來(lái)較準(zhǔn)確的預(yù)測(cè)未觀測(cè)數(shù)據(jù)一直以來(lái)都是推薦系統(tǒng)領(lǐng)域的關(guān)鍵問(wèn)題。
其中,推薦系統(tǒng)的評(píng)分預(yù)測(cè)場(chǎng)景可看做是一個(gè)矩陣補(bǔ)全的游戲,矩陣補(bǔ)全是推薦系統(tǒng)的任務(wù),矩陣分解是其達(dá)到目的的手段。因此,矩陣分解是為了更好的完成矩陣補(bǔ)全任務(wù)(欲其補(bǔ)全,先其分解之)。之所以可以利用矩陣分解來(lái)完成矩陣補(bǔ)全的操作,那是因?yàn)榛谶@樣的假設(shè):假設(shè)UI矩陣是低秩的,即在大千世界中,總會(huì)存在相似的人或物,即物以類聚,人以群分,然后我們可以利用兩個(gè)小矩陣相乘來(lái)還原它。
當(dāng)然提到矩陣分解,人們首先想到的是數(shù)學(xué)中經(jīng)典的SVD(奇異值)分解,在這我命名為PureSVD(傳統(tǒng)并經(jīng)典著),直接上公式:
當(dāng)然SVD分解的形式為3個(gè)矩陣相乘,左右兩個(gè)矩陣分別表示用戶/項(xiàng)目隱含因子矩陣,中間矩陣為奇異值矩陣并且是對(duì)角矩陣,每個(gè)元素滿足非負(fù)性,并且逐漸減小。因此我們可以只需要前
如果想運(yùn)用SVD分解的話,有一個(gè)前提是要求矩陣是稠密的,即矩陣?yán)锏脑匾强?,否則就不能運(yùn)用SVD分解。很顯然我們的任務(wù)還不能用SVD,所以一般的做法是先用均值或者其他統(tǒng)計(jì)學(xué)方法來(lái)填充矩陣,然后再運(yùn)用SVD分解降維。
sifter.org/~simon/journ
剛才提到的PureSVD首先需要填充矩陣,然后再進(jìn)行分解降維,同時(shí)由于需要求逆操作(復(fù)雜度O(n^3)),存在計(jì)算復(fù)雜度高的問(wèn)題,所以后來(lái)Simon Funk提出了FunkSVD的方法,它不在將矩陣分解為3個(gè)矩陣,而是分解為2個(gè)低秩的用戶項(xiàng)目矩陣,同時(shí)降低了計(jì)算復(fù)雜度:
它借鑒線性回歸的思想,通過(guò)最小化觀察數(shù)據(jù)的平方來(lái)尋求最優(yōu)的用戶和項(xiàng)目的隱含向量表示。同時(shí)為了避免過(guò)度擬合(Overfitting)觀測(cè)數(shù)據(jù),又提出了帶有L2正則項(xiàng)的FunkSVD:
以上兩種最優(yōu)化函數(shù)都可以通過(guò)梯度下降或者隨機(jī)梯度下降法來(lái)尋求最優(yōu)解。
Salakhutdinov et al. Probabilistic matrix factorization. NIPS(2008): 1257-1264.
PMF是對(duì)于FunkSVD的概率解釋版本,它假設(shè)評(píng)分矩陣中的元素
則觀測(cè)到的評(píng)分矩陣條件概率為:
同時(shí),假設(shè)用戶偏好向量與物品偏好向量服從于均值都為0,方差分別為
根據(jù)貝葉斯公式,可以得出潛變量U,V的后驗(yàn)概率為:
接著,等式兩邊取對(duì)數(shù)
最后,經(jīng)過(guò)推導(dǎo),我們可以發(fā)現(xiàn)PMF確實(shí)是FunkSVD的概率解釋版本,它兩個(gè)的形式一樣一樣的。
注:為了方便讀者理解,在此舉例推導(dǎo)中間項(xiàng)
Koren et al. Matrix factorization techniques for recommender systems.Computer 42.8 (2009).
在FunkSVD提出來(lái)之后,陸續(xù)又提出了許多變形版本,其中相對(duì)流行的方法是BiasSVD,它是基于這樣的假設(shè):某些用戶會(huì)自帶一些特質(zhì),比如天生愿意給別人好評(píng),心慈手軟,比較好說(shuō)話,有的人就比較苛刻,總是評(píng)分不超過(guò)3分(5分滿分);同時(shí)也有一些這樣的項(xiàng)目,一被生產(chǎn)便決定了它的地位,有的比較受人們歡迎,有的則被人嫌棄,這也正是提出用戶和項(xiàng)目偏置項(xiàng)的原因;項(xiàng)亮給出的解釋是:對(duì)于一個(gè)評(píng)分系統(tǒng)有些固有屬性和用戶物品無(wú)關(guān),而用戶也有些屬性和物品無(wú)關(guān),物品也有些屬性與用戶無(wú)關(guān),具體的預(yù)測(cè)公式如下:
其中,
Koren Y. Factor in the neighbors: Scalable and accurate collaborative filtering[J]. ACM Transactions on Knowledge Discovery from Data (TKDD), 2010, 4(1): 1.
在用戶除了顯式評(píng)分外,隱式反饋信息同樣有助于用戶的偏好建模,因此隨后提出了SVD++。它是基于這樣的假設(shè):用戶除了對(duì)于項(xiàng)目的顯式歷史評(píng)分記錄外,瀏覽記錄或者收藏列表等隱反饋信息同樣可以從側(cè)面一定程度上反映用戶的偏好,比如用戶對(duì)某個(gè)項(xiàng)目進(jìn)行了收藏,可以從側(cè)面反映他對(duì)于這個(gè)項(xiàng)目感興趣,具體反映到預(yù)測(cè)公式為:
其中
Koren et al. Collaborative filtering with temporal dynamics. Communications of the ACM 53.4 (2010): 89-97.
它是基于這樣的假設(shè):用戶的興趣或者偏好不是一成不變的,而是隨著時(shí)間而動(dòng)態(tài)演化。于是提出了timeSVD,其中用戶的和物品的偏置隨著時(shí)間而變化,同時(shí)用戶的隱含因子也隨著時(shí)間而動(dòng)態(tài)改變,在此物品的隱含表示并未隨時(shí)間而變化(假設(shè)物品的屬性不會(huì)隨著時(shí)間而改變)。
其中,
Lee et al. Learning the parts of objects by non-negative matrix factorization. Nature 401.6755 (1999): 788.
這是一篇發(fā)表在Nature上的經(jīng)典論文,谷歌學(xué)術(shù)顯示引用將近9k,它提出了一個(gè)假設(shè):分解出來(lái)的小矩陣應(yīng)該滿足非負(fù)約束。
因?yàn)樵诖蟛糠址椒ㄖ?,原始矩?nbsp;
其中,
Pan et al. One-class collaborative filtering. ICDM, 2008.
Hu et al. Collaborative filtering for implicit feedback datasets. ICDM, 2008.
對(duì)于矩陣分解來(lái)說(shuō),我們一般是處理的推薦系統(tǒng)中的評(píng)分預(yù)測(cè)任務(wù),但同樣矩陣分解也可以用來(lái)進(jìn)行Top-N的推薦,即根據(jù)隱式信息來(lái)預(yù)測(cè)用戶是否點(diǎn)擊某項(xiàng)目。你可以把他看做是二分類問(wèn)題,即點(diǎn)或者不點(diǎn)。但這不是普通的二分類問(wèn)題,因?yàn)樵谀P陀?xùn)練的過(guò)程中負(fù)樣本并非都為真正的負(fù)樣本,可能是用戶根本沒(méi)見(jiàn)過(guò)該項(xiàng)目,何來(lái)喜不喜歡,沒(méi)準(zhǔn)他看到后喜歡呢,即正樣本告訴我們作者喜歡的信息,但負(fù)樣本并不能告訴我們?cè)撚脩舨幌矚g。由于只存在正樣本,所以我們把只有正反饋的問(wèn)題定義為one-class問(wèn)題,即單類問(wèn)題。對(duì)于單類問(wèn)題,該作者提出了兩種解決策略,一種是加權(quán)的矩陣分解,另一種是負(fù)采樣技術(shù)。雖然只是加了一下權(quán)重,看起來(lái)比較naive,但在于當(dāng)時(shí)的研究背景下,這一小步其實(shí)是推薦系統(tǒng)中的一大步。
對(duì)于單類問(wèn)題的研究一直沒(méi)有停止過(guò),雖然負(fù)采樣技術(shù)是啟發(fā)式的,即不用通過(guò)數(shù)據(jù)建模的方式來(lái)進(jìn)行預(yù)測(cè),但效果還是很好用的。最近幾年人們提出了基于模型的方法來(lái)處理這種單類問(wèn)題,即從缺失數(shù)據(jù)中來(lái)進(jìn)行建模,具體可參見(jiàn)這兩篇論文【Hernández-Lobato et al 2014,Liang et al 2016】。
Lee et al. Local low-rank matrix approximation.ICML. 2013.
經(jīng)典的矩陣分解模型是假設(shè)整個(gè)用戶-項(xiàng)目矩陣(即UI矩陣)滿足低秩假設(shè)(即全局低秩假設(shè)),即在整個(gè)系統(tǒng)當(dāng)中,用戶和項(xiàng)目總是滿足存在相似的某種模式,即物以類聚,人以群分。
這種假設(shè)固然有道理,但在當(dāng)今大數(shù)據(jù)時(shí)代下,全局意義上的低秩假設(shè)似乎太強(qiáng)了,尤其是在數(shù)據(jù)量巨大的情況下(即用戶數(shù)與項(xiàng)目數(shù)都很多的系統(tǒng)當(dāng)中),因此該論文推翻了全局意義上經(jīng)典的全局低秩假設(shè),它認(rèn)為大千世界,林林總總,我們應(yīng)該去尋找局部的低秩假設(shè)(即局部低秩假設(shè))。首先根據(jù)某種相似測(cè)度來(lái)將整個(gè)大矩陣分為若干個(gè)小矩陣,每個(gè)小矩陣當(dāng)中滿足某種相似度閾值,然后再在局部的小矩陣當(dāng)中做低秩假設(shè)。這樣,全局的大矩陣可以由多個(gè)局部的小矩陣來(lái)加權(quán)組合構(gòu)成,具體可參見(jiàn)該論文。
Ma Hao. An experimental study on implicit social recommendation. SIGIR, 2013.
雖然經(jīng)典的矩陣分解方法已經(jīng)可以到達(dá)比較好的預(yù)測(cè)性能了,但它固有的弊病仍然是躲不開(kāi)的,即數(shù)據(jù)稀疏與冷啟動(dòng)問(wèn)題。為了緩解數(shù)據(jù)稀疏我們可以引入豐富的社交信息。即如果兩個(gè)用戶是朋友關(guān)系,那么我們假設(shè)他們有相同的偏好,同時(shí)他們學(xué)得的用戶隱表示在向量空間應(yīng)該有相近的距離。用戶維度如此,同理,項(xiàng)目維度亦可以利用此思路來(lái)約束項(xiàng)目隱表示。即如果兩個(gè)項(xiàng)目之間的關(guān)系較近,那么在低維向量空間中的距離同樣也應(yīng)該較小。這里的項(xiàng)目關(guān)系是從UI矩陣中抽取出來(lái)的,論文中成為項(xiàng)目隱社交關(guān)系(其實(shí)項(xiàng)目維度跟社交沒(méi)啥關(guān)系)。具體公式如下:
其中,
Kim et al. Convolutional matrix factorization for document context-aware recommendation. RecSys 2016.
當(dāng)然矩陣分解的優(yōu)點(diǎn)之一是可擴(kuò)展性好,這當(dāng)然不是吹的,比如16年的這篇文章就是將矩陣分解(MF)與圖像處理領(lǐng)域很火的卷積神經(jīng)網(wǎng)絡(luò)(CNN)做了完美結(jié)合。
矩陣分解作為協(xié)同過(guò)濾模型中經(jīng)典的方法,性能當(dāng)然沒(méi)的說(shuō)。但它存在的數(shù)據(jù)稀疏與冷啟動(dòng)問(wèn)題一直以來(lái)都是它的痛點(diǎn),因此結(jié)合外部豐富的信息成為了緩解上述問(wèn)題的有效途徑。其中文本數(shù)據(jù)作為web中主流的數(shù)據(jù)形式成為了首選,并且對(duì)于文本的處理,大部分還是基于one-hot的表示,因此無(wú)法捕捉文檔中上下文的關(guān)鍵信息,于是作者將兩者做了結(jié)合,具體細(xì)節(jié)請(qǐng)參見(jiàn)論文,該公式如下:
其中,在使得用戶隱向量與項(xiàng)目隱向量做內(nèi)積盡可能逼近真實(shí)評(píng)分的同時(shí),對(duì)項(xiàng)目隱向量做了額外約束,即讓項(xiàng)目隱向量跟CNN學(xué)得的文檔特性盡可能的接近。
Hu et al. Your neighbors affect your ratings: on geographical neighborhood influence to rating prediction. SIGIR 2014.
剛才說(shuō)到,MF的可擴(kuò)展性好,一方面是可以和主流模型做無(wú)縫集成,另一方面是可以和多種信息源做特征融合,比如14年的這篇文章,它是融合了文本評(píng)論信息,地理鄰居信息,項(xiàng)目類別信息以及流行度等信息,具體預(yù)測(cè)公式如下:
其中,
看,我說(shuō)的沒(méi)錯(cuò)吧,矩陣分解大法是真滴好啊,可以伸縮自如并且可以集成多種經(jīng)典模型,以及融合各種附加信息,就醬(?ω?),祝君安好。
聯(lián)系客服