詹 彬 吳曉鸰 凌 捷
(廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 廣東 廣州 510000)
推薦系統(tǒng)是繼信息分類、搜索引擎之后解決信息過載的一項(xiàng)重要技術(shù)。推薦系統(tǒng)根據(jù)用戶的歷史數(shù)據(jù)來(lái)幫助用戶從海量信息中篩選信息,減少所要處理的數(shù)據(jù)。用戶的歷史數(shù)據(jù)一般情況下有兩種:一種是顯式反饋的信息,比如用戶的評(píng)分?jǐn)?shù)據(jù)、評(píng)價(jià)等級(jí)等;另一種是隱式反饋,如用戶的一些行為數(shù)據(jù)。目前推薦系統(tǒng)模型有很多,例如經(jīng)典的協(xié)同過濾推薦模型[1]、基于知識(shí)或內(nèi)容的推薦模型[2]、基于統(tǒng)計(jì)學(xué)的推薦模型、混合推薦模型、社會(huì)化推薦模型[3]和組推薦模型[4]等。
一些推薦算法[5-6]結(jié)合了用戶的評(píng)分信息和用戶之間的社交化信息來(lái)更為有效地為用戶解決推薦和緩解用戶信息過于稀疏的問題。現(xiàn)實(shí)中大多數(shù)情況下都是只擁有用戶的購(gòu)買或評(píng)分信息,而實(shí)驗(yàn)環(huán)境下才擁有用戶的社交網(wǎng)絡(luò)數(shù)據(jù)。通常大量的用戶社交網(wǎng)絡(luò)數(shù)據(jù)無(wú)法獲取到。在沒有用戶社交數(shù)據(jù)的情況下如何提高推薦系統(tǒng)的有效性以及準(zhǔn)確率是推薦系統(tǒng)中的一個(gè)重要問題。
在推薦系統(tǒng)中已經(jīng)有很多人提出解決此類問題的方法,比如圖論、降維等。在評(píng)分預(yù)測(cè)中,最為成功的還是奇異值分解,也就是矩陣分解技術(shù)。但是沒有結(jié)合用戶社交網(wǎng)絡(luò)信息的矩陣分解技術(shù)不能有效解決數(shù)據(jù)稀疏的問題。由于數(shù)據(jù)稀疏,預(yù)測(cè)結(jié)果的誤差到了一定程度就無(wú)法進(jìn)一步縮小。本文提出融合標(biāo)簽和組推薦的概率矩陣分解方法(CTPMF),在概率矩陣分解的基礎(chǔ)之上增加用戶對(duì)物品打的標(biāo)簽數(shù)據(jù)再結(jié)合組推薦算法來(lái)進(jìn)一步降低預(yù)測(cè)結(jié)果的誤差,從而提高算法的有效性。
矩陣分解作為推薦系統(tǒng)中特別常用的一種技術(shù),在現(xiàn)代推薦系統(tǒng)領(lǐng)域比較有影響力,常用于評(píng)分預(yù)測(cè)(rating prediction)和Top-N推薦中,常見的場(chǎng)景如用戶的電影評(píng)分預(yù)測(cè)。
在矩陣分解的基礎(chǔ)上,研究者提出各種改進(jìn)方法,有BiasSVD、SVD++、timeSVD、NMF[6]等。還有人提出在原來(lái)的基礎(chǔ)上增加用戶的社交關(guān)系數(shù)據(jù)來(lái)提高預(yù)測(cè)準(zhǔn)確率和可解釋性,比如SoRec。本文提出的融合標(biāo)簽和組推薦的概率矩陣分解方法(CTPMF)是在概率矩陣分解算法的基礎(chǔ)上[7]來(lái)改進(jìn)的。PMF(Probabilistic Matrix Factorization)模型是假設(shè)用戶隱特征矩陣、項(xiàng)目隱特征矩陣、評(píng)分矩陣均服從正態(tài)分布,如式(1)-式(3)所示。將待求解的子矩陣作為參數(shù)(如式(4)所示),并用最大似然估計(jì)求出子矩陣,即最小化式(5)。概率矩陣分解模型如圖1所示。
(1)
(2)
(3)
(4)
(5)
在推薦系統(tǒng)領(lǐng)域,有越來(lái)越多的推薦服務(wù)涉及群體而不是個(gè)人。與個(gè)性化推薦系統(tǒng)不同,組推薦系統(tǒng)關(guān)注的是對(duì)某個(gè)群體的推薦。例如,電視節(jié)目的推薦FIT、TV4M,以及PolyLens和MusicFX音樂推薦等。組推薦技術(shù)關(guān)注整個(gè)用戶群體的綜合效果,本文方法(CTPMF)采用組推薦技術(shù)提取組成員的偏好來(lái)構(gòu)造組偏好矩陣。計(jì)算用戶群體偏好常見的方法有如下幾種。
(1) 評(píng)分求和(Additive Utilitarian Strategy)。這個(gè)方法是將每一個(gè)用戶對(duì)當(dāng)前項(xiàng)目的評(píng)分都累加,求出最后的和(如式(6)所示),從而產(chǎn)生一組對(duì)所有項(xiàng)目的評(píng)分列表。
(6)
式中:Hc表示c產(chǎn)品的綜合評(píng)分;Ruc表示成員u對(duì)c的評(píng)分。
(2) 評(píng)分相乘(Multiplicative Utilitarian Strategy):
(7)
目前的推薦系統(tǒng)主要是通過三種方式去聯(lián)系用戶的興趣和相對(duì)應(yīng)的物品[8](如圖2所示),一種是給用戶推薦與用戶喜歡過的物品相似的物品,也就是基于物品的協(xié)同過濾算法;第二種是基于用戶的特征來(lái)對(duì)用戶推薦符合用戶特征的項(xiàng)目。最后一種是找到與用戶興趣最相似的用戶,并將其喜歡的物品推薦給當(dāng)前用戶,也就是基于用戶的協(xié)同過濾算法。
圖2 推薦系統(tǒng)中聯(lián)系項(xiàng)目與用戶的幾種途徑
很多推薦系統(tǒng)算法也使用到了標(biāo)簽[9],如基于social tag、social bookmarking等。這些都可以反映物品或者用戶之間的關(guān)系,還可以用于解決推薦系統(tǒng)當(dāng)中的冷啟動(dòng)問題[10]。根據(jù)給項(xiàng)目打標(biāo)簽的人群,可大致將標(biāo)簽分為兩種:一種是讓作者或者專家打標(biāo)簽;另一種是讓用戶來(lái)打標(biāo)簽,即UCG(User Generated Content)。很多網(wǎng)站都有UCG標(biāo)簽系統(tǒng),代表性的有Delicious、CiteULike、豆瓣等。
在推薦系統(tǒng)中,標(biāo)簽的作用很大。30%的用戶認(rèn)為標(biāo)簽系統(tǒng)表達(dá)了用戶對(duì)物品的看法,23%的用戶認(rèn)為可以幫助推薦系統(tǒng)找到用戶偏好,27%的用戶認(rèn)為可以增加對(duì)當(dāng)前項(xiàng)目的了解,14%的用戶認(rèn)為可以輔助用戶更快地找到自己喜歡的項(xiàng)目。
本文方法(CTPMF)在基于傳統(tǒng)PMF的基礎(chǔ)之上,增加物品的標(biāo)簽數(shù)據(jù)和通過組推薦技術(shù)得到的偏好信息來(lái)對(duì)原有的PMF模型進(jìn)行約束。“用戶-標(biāo)簽”矩陣-F為每個(gè)項(xiàng)目被打上各種標(biāo)簽的次數(shù)。“用戶-標(biāo)簽”矩陣一定程度上可反映用戶對(duì)物品的劃分。而“用戶-類別”矩陣則可以反映出用戶之間的關(guān)聯(lián)關(guān)系。
“用戶-類別”矩陣通過相似度計(jì)算獲得。首先通過用戶偏好計(jì)算用戶之間的相似度,然后使用用戶相似度對(duì)所有用戶進(jìn)行聚類并計(jì)算出每個(gè)類簇的用戶的綜合評(píng)分,再計(jì)算用戶與每個(gè)類別的相似度得出“用戶-類別”相似度矩陣。
本文方法的計(jì)算過程如下:
(1) 根據(jù)用戶的評(píng)分來(lái)計(jì)算不同用戶之間的相似度,從而得到相似度矩陣。
(2) 根據(jù)用戶的相似度對(duì)用戶進(jìn)行聚類(一個(gè)類別的用戶之間的相似度盡可能高,不同類別的用戶的相似度盡可能低)。
(3) 計(jì)算每個(gè)類別的用戶的偏好,得到“類別-項(xiàng)目”偏好矩陣。
(4) 計(jì)算出用戶與每個(gè)類別的相似度,得到“用戶-類別”相似度矩陣。
(5) 將“用戶-類別”相似度矩陣與“項(xiàng)目-標(biāo)簽”矩陣添加到概率矩陣分解當(dāng)中。
(6) 使用梯度下降尋找最優(yōu)的預(yù)測(cè)參數(shù)。
變量說明如表1所示。
表1 變量說明
(1) 用戶相似度矩陣。在用戶的聚類過程中需要用到用戶之間的距離,可以使用用戶的相似度來(lái)度量。由于每一個(gè)用戶的評(píng)分習(xí)慣會(huì)不同,有的用戶習(xí)慣給高分,有的用戶則習(xí)慣給低分,比如用戶A習(xí)慣給的評(píng)分范圍是[3,5],而用戶B的習(xí)慣評(píng)分范圍是[1,3]。對(duì)于B用戶來(lái)說,3分已經(jīng)算比較好的評(píng)價(jià)了,而從用戶A的角度來(lái)看,打3分基本算是很差的評(píng)價(jià)了。為了緩解這個(gè)問題帶來(lái)的影響,本文方法(CTPMF)使用余弦相似度來(lái)計(jì)算用戶之間的相似度(如式(8)所示)。
(8)
(2) 用戶聚類。計(jì)算出用戶之間的相似度之后,使用譜聚類算法對(duì)用戶進(jìn)行聚類。譜聚類算法可以基于用戶的相似度來(lái)對(duì)所有的用戶進(jìn)行聚類,使得相似度較高的用戶都被分到同一個(gè)類簇里面,相似度較低的用戶分配到不同的類簇。譜聚類算法在處理一些大小不一和形狀不一的數(shù)據(jù)時(shí)有較好的效果[11-13]。
定義G(V,E)表示用戶之間構(gòu)成的無(wú)向圖(如圖3所示)。V表示點(diǎn)的集合,圖中的點(diǎn)表示每一個(gè)用戶。E表示邊的集合,邊則表示用戶之間有關(guān)聯(lián),用戶之間的相似度作為邊的權(quán)值Wij,即WijSij。譜聚類是要將用戶之間組成的無(wú)向圖劃分為若干個(gè)無(wú)交集的子圖。同一個(gè)子圖里面的用戶相似度盡可能高,而不同子圖之間的用戶相似度盡可能低。一般情況下譜聚類劃分子圖時(shí)使用到的損失函數(shù)為被子圖截?cái)嗟倪?如連接U1、U5的邊和連接U3、U4的邊)的權(quán)重和(如式(9)所示),將這些邊的權(quán)重和最小化即可。
圖3 譜聚類
(9)
p=[p1,p2,…,pn]
(10)
(11)
式中:p用來(lái)表示劃分方案;根據(jù)pi的值來(lái)表示用戶i被劃分到哪一個(gè)類別。則損失函數(shù)可以寫成如式(12)所示。圖的劃分問題就轉(zhuǎn)化成pTLp的最小值問題。
(12)
計(jì)算過程如圖4所示。其中需要使用到無(wú)向圖的度矩陣D(度矩陣為對(duì)角矩陣,每個(gè)對(duì)角元素都表示所代表每個(gè)點(diǎn)(用戶)在無(wú)向圖中的度)、權(quán)值矩陣W(也就是用戶相似度矩陣)、拉普拉斯矩陣L。
圖4 譜聚類流程
(3) 計(jì)算每個(gè)類別的用戶偏好。本文方法(CTPMF)用到用戶的群體偏好來(lái)對(duì)概率矩陣分解模型增加約束,所以首先需要獲取每個(gè)類別的用戶群體的偏好,用到的方法是評(píng)分求和法(Additive Utilitarian Strategy),即:
(13)
通過每個(gè)類別的用戶評(píng)分?jǐn)?shù)據(jù)計(jì)算出類別的項(xiàng)目評(píng)分列表(如式(13)所示),由于得出的組偏好是當(dāng)前類所有用戶的評(píng)分之和,所以在此之前需要將矩陣中用戶未評(píng)分的項(xiàng)目進(jìn)行填充(如式(14)所示,Sil為上面所求的用戶相似度)。
(14)
(15)
組偏好的計(jì)算過程如圖5所示,其中U1、U2、U3為一個(gè)組的成員,首先根據(jù)用戶與類別中其他用戶的相似度填充每個(gè)用戶的評(píng)分,然后通過評(píng)分求和計(jì)算組偏好,得出最終的組偏好矩陣。
圖5 群偏好計(jì)算過程示例
(4) 生成用戶-類別矩陣。本文方法(CTPMF)將用戶-類別矩陣作為概率矩陣分解模型的一個(gè)約束添加到模型中。讓評(píng)分較少的用戶的評(píng)分偏向于用戶所在類簇的用戶偏好。這里需要通過用戶的偏好和每個(gè)類別的用戶的群體偏好來(lái)計(jì)算出用戶與每個(gè)用戶群體之間的相似度(計(jì)算相似度依然是使用式(8))。矩陣每一個(gè)值是對(duì)應(yīng)類別和用戶的相似度。
PMF模型假設(shè)用戶、項(xiàng)目、用戶評(píng)分矩陣服從正態(tài)分布且相互獨(dú)立(如圖1和式(1)所示)。本文方法(CTPMF)在PMF基礎(chǔ)上加入項(xiàng)目標(biāo)簽矩陣與“用戶-類別”相似度矩陣之后的模型如圖6所示。通過已有的評(píng)分矩陣R、C、F估算出所需要的U、V。最后只需最大化后驗(yàn)概率來(lái)求得最優(yōu)解,也就是最小化式(18)。使用梯度下降來(lái)最小化能量公式,需要先對(duì)各個(gè)方向求偏導(dǎo),如式(19)-式(22)所示,再將對(duì)應(yīng)值按負(fù)梯度改變。(這里使用了Logistic函數(shù)將數(shù)據(jù)映射到(0,1)的區(qū)間來(lái)計(jì)算梯度,如式(23)、式(24)所示)。
圖6 基于用戶聚類與物品標(biāo)簽的概率矩陣分解模型
(16)
(17)
(18)
(19)
(20)
Fij)Vj+λTTk
(21)
Cli)Ui+λGGl
(22)
(23)
(24)
仿真實(shí)驗(yàn)采用的數(shù)據(jù)是由明尼蘇達(dá)大學(xué)GroupLens實(shí)驗(yàn)小組提供的MoiveLens數(shù)據(jù)集[14]。數(shù)據(jù)集由兩部分組成,分別包含100 835條用戶評(píng)分?jǐn)?shù)據(jù)和3 662條用戶對(duì)電影打標(biāo)簽的數(shù)據(jù)。其中用戶評(píng)分?jǐn)?shù)據(jù)由評(píng)分用戶id、被評(píng)分電影id、評(píng)分、時(shí)間戳組成,打標(biāo)簽數(shù)據(jù)由打標(biāo)簽用戶id、電影id、標(biāo)簽、時(shí)間戳組成。數(shù)據(jù)集中包含610個(gè)用戶、9 724部電影和1 589種標(biāo)簽。數(shù)據(jù)集中的用戶評(píng)分為1分至5分,分?jǐn)?shù)越高表示用戶的對(duì)電影的評(píng)級(jí)越高。
本文選取了平均絕對(duì)誤差MAE(Mean Absolute Error)與均方根誤差RMSE(Root Mean Square Error)作為預(yù)測(cè)結(jié)果的評(píng)價(jià)指標(biāo)。RMSE可以用來(lái)衡量觀測(cè)值同真值之間的偏差。MAE能更好地反映預(yù)測(cè)值誤差的實(shí)際情況。下面給出MAE與RMSE的公式定義:
(25)
(26)
(1) 參數(shù)分析。這里將λu、λv、λg、λf、λc、λt設(shè)置為相同的值,測(cè)試參數(shù)對(duì)于預(yù)測(cè)誤差的影響。該實(shí)驗(yàn)將參數(shù)分別設(shè)置為λ∈{0.1,0.3,0.8,2.0},比較使用這些參數(shù)分別在訓(xùn)練集比例ratio∈{20%,50%,80%}的情況下的效果。具體如圖7-圖9所示。
圖7 訓(xùn)練集比例為20%下的參數(shù)比較結(jié)果
圖8 訓(xùn)練集比例為50%下的參數(shù)比較結(jié)果
圖9 訓(xùn)練集比例為80%下的參數(shù)比較結(jié)果
圖7-圖9展示了在不同比例的訓(xùn)練集下,本文方法(CTPMF)對(duì)于不同λ值的結(jié)果對(duì)比。可以看出,在λ值為0.3時(shí)在20%、50%、80%的數(shù)據(jù)作為訓(xùn)練集的情況下λ=0.3的結(jié)果優(yōu)于λ=0.8與λ=0.1的結(jié)果,λ=0.8的結(jié)果優(yōu)于λ=2.0的結(jié)果。
在基于矩陣分解的推薦算法中,潛在特征維度的大小對(duì)結(jié)果有一定的影響。潛在特征維度太小會(huì)導(dǎo)致潛在特征無(wú)法充分表示,而潛在特征維度過大則計(jì)算復(fù)雜度增大。本文分別在20%、50%、80%的數(shù)據(jù)作為訓(xùn)練集時(shí)比較潛在特征維度分別取Dimension=5,10,15,20的情況下的結(jié)果,如圖10-圖12所示。
圖10 訓(xùn)練集比例為20%下的特征維度比較結(jié)果
圖11 訓(xùn)練集比例為50%下的特征維度比較結(jié)果
圖12 訓(xùn)練集比例為80%下的特征維度比較結(jié)果
可以看出,在數(shù)據(jù)集的20%作為訓(xùn)練集的時(shí)候潛在特征維度為15和20的情況下結(jié)果較好。在數(shù)據(jù)集的50%作為訓(xùn)練集的時(shí)候潛在特征維度為5的情況下效果最好,其次是20,最后是10和15。在數(shù)據(jù)集的80%作為訓(xùn)練集的時(shí)候,潛在特征維度為5的情況下效果最佳,然后依次是10、15、20。可以看出在這三種比例的訓(xùn)練集中在潛在特征維度為5的情況下的效果較好。
本實(shí)驗(yàn)共選取了4種方法與本文方法(CTPMF)進(jìn)行對(duì)比,包括PMF、CPMF、NMF(Non-negative matrix factorization)、SVD[15]。實(shí)驗(yàn)分別在潛在特征維度為5和10及訓(xùn)練數(shù)據(jù)集比例為50%和80%的情況下對(duì)比CTPMF與其他算法的RMSE和MAE。
如表2和表3所示,CTPMF在原來(lái)的概率矩陣分解的基礎(chǔ)上增加了用戶聚類以及用戶的標(biāo)簽數(shù)據(jù)。實(shí)驗(yàn)結(jié)果表明,在50%和80%的數(shù)據(jù)作為訓(xùn)練集的情況下CTPMF預(yù)測(cè)結(jié)果的RMSE、MAE優(yōu)于其他推薦算法,而RMSE和MAE均隨訓(xùn)練集比例的增加而減小,潛在特征維度為5時(shí)的實(shí)驗(yàn)結(jié)果總體上優(yōu)于潛在特征維度為10的實(shí)驗(yàn)結(jié)果。
表2 特征維度為5的結(jié)果
表3 特征維度為10的結(jié)果
本文提出的融合標(biāo)簽與組推薦技術(shù)的概率矩陣分解方法(CTPMF)通過用戶之間的評(píng)分相似度來(lái)對(duì)用戶進(jìn)行聚類進(jìn)而計(jì)算出用戶與每個(gè)組的相似度并增加物品的標(biāo)簽數(shù)據(jù)進(jìn)行概率矩陣分解,通過梯度下降逐漸降低誤差對(duì)個(gè)人評(píng)分進(jìn)行預(yù)測(cè)。CTPMF改善了因數(shù)據(jù)稀疏導(dǎo)致的預(yù)測(cè)結(jié)果誤差無(wú)法進(jìn)一步減小的問題,在不同比例的訓(xùn)練數(shù)據(jù)集下的多個(gè)指標(biāo)均優(yōu)于實(shí)驗(yàn)部分所提出的其他方法,進(jìn)一步驗(yàn)證了CTPMF的有效性。而在未來(lái)的研究工作當(dāng)中仍需進(jìn)行更深層次的探索,研究更優(yōu)的推薦模型。