文 凱,朱傳亮,何少元
1(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065) 2(重慶郵電大學(xué) 通信新技術(shù)應(yīng)用研究中心,重慶 400065) 3(重慶信科設(shè)計(jì)有限公司,重慶 401121)E-mail:cquptzcl@yeah.net
隨著Web2.0的發(fā)展,用戶間的社交網(wǎng)絡(luò)扮演著越來越重要的地位,用戶之間可以建立不同程度的信任關(guān)系,用戶的購買行為也不僅僅是依靠用戶自身的興趣愛好了,更多地會考慮到用戶所信任的其他用戶的意見,社交網(wǎng)絡(luò)分析表明,用戶和所信任的朋友在很大程度上有著相似的偏好,因此一些基于社交網(wǎng)絡(luò)的算法被提出[1,2],用來改善推薦精度,其中傳統(tǒng)的基于社交網(wǎng)絡(luò)的推薦算法采取一種信任評估的模型,考慮用戶間的直接信任關(guān)系.文獻(xiàn)[3]介紹了一種SocialMF算法,該算法是在社交推薦中比較常用的算法,將信任傳播機(jī)制融合進(jìn)概率矩陣分解框架中;文獻(xiàn)[4]提出將用戶信任和張量分解技術(shù)結(jié)合起來.文獻(xiàn)[5]提出了一種基于用戶信任的矩陣分解技術(shù)Trust SVD,在SVD++算法的基礎(chǔ)上進(jìn)一步結(jié)合顯示及隱式用戶信任對推薦的影響.
隨著社交網(wǎng)絡(luò)的不斷發(fā)展,社交網(wǎng)絡(luò)越來越龐大,社交數(shù)據(jù)越來越稀疏,導(dǎo)致了推薦結(jié)果準(zhǔn)確度的下降.同時(shí),隨著數(shù)據(jù)量的越來越大,傳統(tǒng)的推薦算法在可擴(kuò)展性上已經(jīng)不足以支撐現(xiàn)有的數(shù)據(jù)量,因此一些基于社區(qū)的算法被提出用來改善推薦的可擴(kuò)展性[6,7].有的挖掘用戶社區(qū),有的挖掘項(xiàng)目社區(qū),比如文獻(xiàn)[8]首先利用基于密度的聚類算法將物品進(jìn)行聚類,然后在物品聚類簇中利用加權(quán)Slope one算法進(jìn)行評分預(yù)測;文獻(xiàn)[9]提出一種基于用戶屬性的聚類算法,定義了用戶之間的偏好距離,根據(jù)偏好距離進(jìn)行聚類;文獻(xiàn)[10]提出一種結(jié)合SVD的推薦方法,推薦時(shí)在目標(biāo)用戶的社區(qū)內(nèi)利用隨機(jī)游走算法為用戶做出推薦;文獻(xiàn)[11]提出一種融合拓?fù)鋭莸膶哟位垲愃惴?綜合考慮網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和社交網(wǎng)絡(luò)屬性信息,利用協(xié)同過濾預(yù)測評分.
同時(shí)也有一些學(xué)者提出同時(shí)將用戶和物品進(jìn)行聚類,這樣的聚類方式稱為聯(lián)合聚類(co-clustering),文獻(xiàn)[12]通過聯(lián)合聚類將用戶和項(xiàng)目同時(shí)劃分到社區(qū)中,用戶或項(xiàng)目只屬于一個(gè)社區(qū);文獻(xiàn)[13]提出了一種混合推薦算法,將用戶和物品同時(shí)進(jìn)行聚類并學(xué)習(xí)用戶和物品的屬性,去解決冷啟動問題;文獻(xiàn)[14]提出一種多類聯(lián)合聚類,通過迭代方式獲取用戶和產(chǎn)品的聯(lián)合聚類結(jié)果,然后通過統(tǒng)一的框架利用傳統(tǒng)的協(xié)同過濾算法進(jìn)行推薦.
然而以上提出的這些聚類方法雖然提高了推薦的效率,但都只考慮了單一社區(qū)結(jié)構(gòu),所以推薦精度不高.針對上述問題,本文綜合考慮用戶社區(qū)結(jié)構(gòu)和聯(lián)合社區(qū)結(jié)構(gòu),首先基于社交信息和評分信息提出了一種新的用戶間相似度度量方法,利用該度量方法對用戶進(jìn)行聚類從而發(fā)現(xiàn)用戶社區(qū);之后從用戶和物品兩個(gè)維度進(jìn)行聯(lián)合聚類,得到一個(gè)用戶-物品的聯(lián)合社區(qū).最后結(jié)合這兩個(gè)社區(qū)結(jié)構(gòu),將用戶社區(qū)結(jié)構(gòu)融入到面向聯(lián)合社區(qū)的矩陣分解模型中從而進(jìn)行推薦.
設(shè)U={u1,u2,…um}和V={v1,v2,…vn}分別表示用戶和物品的集合,其中m和n分別表示用戶和物品的數(shù)量,設(shè)R∈Rm×n表示用戶-項(xiàng)目評分矩陣,設(shè)T∈Rm×m表示用戶之間的社交關(guān)系矩陣,在矩陣T中,當(dāng)T(a,b)=1時(shí)表示用戶ua信任用戶ub.
圖1是本文聯(lián)合推薦模型的一個(gè)整體的框架圖,從圖中可以看到,整個(gè)框架的輸入為用戶-項(xiàng)目評分?jǐn)?shù)據(jù)和用戶社交網(wǎng)絡(luò)數(shù)據(jù),整個(gè)過程可以分為以下4步:
圖1 矩陣分解推薦模型圖Fig.1 Matrix decomposition recommendation model
Step 1.分別利用用戶的評分?jǐn)?shù)據(jù)和社交網(wǎng)絡(luò)數(shù)據(jù)挖掘出用戶間的評分相似性和用戶間的信任關(guān)系;
Step 2.融合用戶間的評分相似性和信任關(guān)系,得到一種新的用戶間相似度,基于這種新的用戶間關(guān)系度量方法進(jìn)行聚類得到用戶社區(qū)結(jié)構(gòu).
Step 3.利用用戶的評分模式從用戶和物品兩個(gè)方面對評分矩陣進(jìn)行聯(lián)合聚類,將原來稀疏的評分矩陣劃分為一個(gè)個(gè)子矩陣.
Step 4.將用戶社區(qū)結(jié)構(gòu)融入到面向聯(lián)合社區(qū)的矩陣分解模型中進(jìn)行推薦.
由于傳統(tǒng)的用戶聚類算法只是利用用戶間的評分相似性進(jìn)行聚類,而評分矩陣是十分稀疏的,得到的聚類效果往往不好.因此本文通過融合用戶社交信息和評分信息定義一種新的相似性度量方法,然后基于這種新的混合度量方法對用戶進(jìn)行聚類.
2.2.1 獲取用戶間的信任關(guān)系
在社交網(wǎng)絡(luò)中,人與人之間存在著一種相互信任的關(guān)系,通常系統(tǒng)無法直接給出十分精確的數(shù)值用來反映兩個(gè)用戶之間的信任程度,系統(tǒng)給出的往往是二元的,同時(shí)由于信任網(wǎng)絡(luò)是十分稀疏的,所以需要對信任網(wǎng)絡(luò)進(jìn)行擴(kuò)展.本文定義用戶間的信任關(guān)系值度量公式如下:
(1)
式中,t(u,v)∈(0,1],d(u,v)是用戶u和用戶v之間的最短距離,可以寬度優(yōu)先搜索算法進(jìn)行搜索,兩個(gè)用戶之間的距離越短則說明兩個(gè)用戶之間的信任值越大.根據(jù)小世界理論,每個(gè)用戶和陌生人之間間隔不能超過六個(gè)人,因此我們限制兩個(gè)用戶之間的最遠(yuǎn)距離為6,即d(u,v)≤6.
2.2.2 獲取用戶的評分相似性
傳統(tǒng)的相似度計(jì)算方法是根據(jù)不同用戶對項(xiàng)目評分的差別來進(jìn)行計(jì)算的,但是在實(shí)際的評分中有些用戶對項(xiàng)目的評分普遍都很高,而有的評分普遍都很低,這種單一的評分偏好會影響傳統(tǒng)相似度計(jì)算方法的準(zhǔn)確性,為了減輕這種影響,文獻(xiàn)[15]提出一種基于用戶評分偏好的相似度計(jì)算方法,其計(jì)算公式如下:
(2)
2.2.3 融合信任關(guān)系和相似性
把用戶間的信任關(guān)系和評分相似性融合在一起,揚(yáng)長避短,得到一種新的計(jì)算用戶間相似度的方法.下面用線性關(guān)系來融合這兩種關(guān)系,如式(3)所示:
(3)
式中,Trust(u,v)表示通過公式(1)計(jì)算的用戶之間的信任關(guān)系,SimRat(u,v)表示通過公式(2)計(jì)算的用戶間的相似關(guān)系.
2.2.4 利用K-means進(jìn)行用戶社區(qū)挖掘
社區(qū)挖掘就是將相似的用戶或項(xiàng)目劃分到相同的社區(qū)結(jié)構(gòu)中.在進(jìn)行用戶社區(qū)挖掘時(shí)選擇經(jīng)典的K-means聚類算法,但考慮到經(jīng)典的K-means聚類算法對初始點(diǎn)的選擇比較敏感,如果初始的聚類中心選擇不恰當(dāng)對最后的聚類結(jié)果將產(chǎn)生很大影響.因此考慮對初始點(diǎn)的選擇進(jìn)行改進(jìn),社會心理學(xué)的研究表明,人們在選擇推薦的產(chǎn)品的時(shí)候往往更加重視專家的意見,由于專家用戶對推薦的影響,因此本文考慮將專家用戶作為K-means算法的初始聚類中心,結(jié)合用戶的社交關(guān)系和評分信息從可信度,權(quán)威性以及評分多樣性三個(gè)指標(biāo)出發(fā),對用戶成為專家的可能性進(jìn)行評估.
定義1.可信度.可信度反映的是用戶被其他用戶信任的程度,可以通過在信任網(wǎng)絡(luò)中用戶的入度來衡量.
(4)
式(4)中,du表示在信任網(wǎng)絡(luò)中信任用戶u的用戶數(shù),dmax表示信任網(wǎng)絡(luò)中入度的最大值.
定義2.權(quán)威性.權(quán)威性表示用戶在整個(gè)系統(tǒng)中的活躍度,可以利用用戶的評分?jǐn)?shù)量Nu來衡量,用戶的評分?jǐn)?shù)量越多,說明用戶越活躍.
(5)
定義3.評分多樣性.評分多樣性表示用戶對物品進(jìn)行評分時(shí)所表現(xiàn)出來的評分差異性,如果一個(gè)用戶對所有物品的評分都相同,這樣就不能反映出用戶對物品的喜好程度,因此專家對不同物品的評分一定要呈現(xiàn)出一定的差異,因此使用評分的方差vu來衡量用戶評分多樣性.
(6)
由于k-means算法需要初始的聚類中心,因此根據(jù)用戶的專家值進(jìn)行排序,取專家值最大的k個(gè)用戶作為初始的聚類中心,記作U={expert(u1),expert(u1),…,expert(uk)},那么整個(gè)用戶聚類的算法步驟描述如下:
輸入:用戶項(xiàng)目-評分矩陣R,信任矩陣T,聚類簇個(gè)數(shù)K
輸出:K個(gè)用戶聚類簇
步驟1.將集合U中的K個(gè)用戶作為初始聚類中心,聚類中心集合記為Center={ce1,ce2,…,cek} 并初始化k個(gè)聚類簇,記作C={C1,C2,…,Ck};
步驟2.對用戶集合中的每個(gè)用戶,利用公式(3)計(jì)算其與所有聚類中心的混合相似度,找到其中相似度最大的用戶Max(Sim(u,cei)),將用戶u加入聚類中心cei所在的聚類簇Ci;
步驟3.更新所有的聚類中心,計(jì)算每個(gè)聚類簇中用戶混合相似度均值最大的用戶作為新的聚類中心;
步驟5.直到L的值收斂即聚類中心不發(fā)生變化時(shí)整個(gè)迭代就停止,否則返回步驟2繼續(xù)執(zhí)行.
經(jīng)過以上的迭代過程,可以得到K個(gè)用戶聚類簇,其
中,K值是未知的,過大或過小都將對后面的推薦產(chǎn)生很大的影響,因此本文在后面的實(shí)驗(yàn)中來獲取其最優(yōu)值.
由于在大規(guī)模的稀疏評分矩陣中,聯(lián)合聚類(co-clustering)不僅能有效地降低矩陣的稀疏度,同時(shí)可以降低計(jì)算的復(fù)雜度[14].因此在本小節(jié)中,我們利用用戶的歷史評分信息同時(shí)對用戶和項(xiàng)目進(jìn)行聚類,采用這樣的方式進(jìn)行聚類有利于發(fā)現(xiàn)矩陣中隱藏的聚類結(jié)構(gòu).經(jīng)過聯(lián)合聚類后,一個(gè)較大規(guī)模的評分矩陣可以轉(zhuǎn)化為W個(gè)規(guī)模較小且內(nèi)部相對稠密的子矩陣,每個(gè)子矩陣的內(nèi)部評分都有較高的相似度,從而可以進(jìn)行有效的降維,在后面的計(jì)算中可以有更小的計(jì)算復(fù)雜度.
基于評分模式的聚類方法[16]是一種軟聯(lián)合聚類算法,用戶和項(xiàng)目可以歸屬多個(gè)不同的類.它首先掃描已有的用戶-項(xiàng)目評分矩陣,將用戶、項(xiàng)目和評分按照概率分別劃分類別,整合這三個(gè)概率得到用戶-項(xiàng)目評分屬于每個(gè)類別的概率.迭代的時(shí)候要重新計(jì)算用戶、項(xiàng)目、評分屬于某個(gè)子矩陣的概率直到收斂.每個(gè)聚類簇內(nèi)部的用戶、項(xiàng)目以及評分會重新組成矩陣.計(jì)算評分屬于某個(gè)類別的計(jì)算公式如下所示:
p(k|ui,vj,r=
(7)
式(7)中,對每個(gè)概率加上α,β,γ是為了防止分母為0,在實(shí)驗(yàn)中均設(shè)置為0.00000001,p(k|ui),p(k|vj),p(r|k)分別表示用戶和項(xiàng)目屬于該類別的概率以及評分出現(xiàn)在該類別中的概率,其計(jì)算公式分別如下:
(8)
(9)
(10)
式中,V(ui)表示用戶ui評價(jià)過的物品集合,U(vj)表示對商品vj有過評價(jià)的用戶集合,r′表示評分矩陣中的不同評分(從1~5,間隔為0.5的數(shù)).運(yùn)行時(shí)首先隨機(jī)初始化每個(gè)評分屬于某個(gè)類別的概率,再不斷進(jìn)行迭代直至收斂,得到最后的結(jié)果.整個(gè)算法的詳細(xì)描述如下:
輸入:用戶-項(xiàng)目評分矩陣R,類別個(gè)數(shù)W,概率閾值δ
輸出:每個(gè)類別所含的用戶、項(xiàng)目的集合
步驟1.開始時(shí)隨機(jī)初始化每個(gè)評分屬于某個(gè)類別的概率p(k|ui,vj,r),滿足∑k′∈Kp(k′|ui,vj,r)=1.
步驟2.對評分矩陣中的每一個(gè)用戶和項(xiàng)目,分別根據(jù)公式(8)和公式(9)分別計(jì)算該用戶屬于各個(gè)類別的概率以及該項(xiàng)目屬于某個(gè)類別的概率.
步驟3.根據(jù)公式(10)計(jì)算某個(gè)類別中存在某個(gè)評分的概率.
步驟4.根據(jù)公式(7)重新計(jì)算p(k|ui,vj,r),并選取所屬概率大于δ的類別作為該評分的類別.
步驟5.跳轉(zhuǎn)到步驟2,直到概率值收斂,否則結(jié)束程序.
在實(shí)驗(yàn)中為了簡化起見,本文規(guī)定用戶所屬類別的概率閾值δ=0.5,整個(gè)過程迭代完成后,原本稀疏的矩陣轉(zhuǎn)變成W個(gè)內(nèi)部相對稠密的子矩陣,其中W值的大小將對整體的推薦產(chǎn)生影響,其最優(yōu)值可以通過實(shí)驗(yàn)獲取.聯(lián)合聚類示意圖如圖2所示.
2.4.1 基本的矩陣分解模型
矩陣分解是在推薦系統(tǒng)中運(yùn)用最為廣泛的方法之一,本文以矩陣分解作為基本的模型.在2.3節(jié)中得到了聚類后的子矩陣,子矩陣相比原始矩陣而言,矩陣規(guī)模小,稀疏性低,因此本文在含有目標(biāo)用戶的子矩陣中進(jìn)行推薦.設(shè)Rw∈RMw×Nw表示評分子矩陣,w∈{1,2,…w},Mw和Nw分別表示評分子矩陣內(nèi)的用戶個(gè)數(shù)和項(xiàng)目個(gè)數(shù),設(shè)Uw和Vw分別表示評分子矩陣的用戶隱特征向量和項(xiàng)目隱特征向量,在子矩陣內(nèi)采用矩陣分解技術(shù),和傳統(tǒng)矩陣分解技術(shù)類似,其誤差計(jì)算公式如下:
(11)
圖2 評分矩陣聯(lián)合聚類Fig.2 Score matrix co-clustering
2.4.2 融合社區(qū)結(jié)構(gòu)和評分聯(lián)合社區(qū)的矩陣分解
在現(xiàn)實(shí)生活中,我們做的很多決定往往會受到好友的影響,在2.2節(jié)中獲取了用戶社區(qū)結(jié)構(gòu),將相互影響的用戶聚集在一起,用戶與同一社區(qū)中用戶的偏好相似性要高于不在同一個(gè)社區(qū)中的用戶,根據(jù)目標(biāo)用戶所在的子矩陣和用戶社區(qū),就可以構(gòu)造如下的正則項(xiàng)公式,其表達(dá)式如下:
(12)
因此,融合矩陣分解的框架可以得到一種結(jié)合用戶社區(qū)和評分矩陣聯(lián)合社區(qū)的矩陣分解模型,其目標(biāo)函數(shù)如下所示:
(13)
(14)
(15)
2.4.3 評分預(yù)測
當(dāng)模型訓(xùn)練完成后,每個(gè)子矩陣的隱特征向量Uw和Vw可以求得,對于一個(gè)給定的用戶-項(xiàng)目對(ui,vj),用戶對未評分物品的評分預(yù)測如公式(16)所示:
(16)
在本小節(jié)中,我們將在Epinions數(shù)據(jù)集上進(jìn)行算法驗(yàn)證和對比,為了簡單起見,在后文中用UCCC(user community and co-clustering)來表示本文所提的算法.
Epinions是一個(gè)消費(fèi)者評價(jià)網(wǎng)站,用戶可以通過評分對項(xiàng)目進(jìn)行評價(jià),數(shù)據(jù)集中包含用戶的評分信息以及用戶間的社交信息,其中含有40163個(gè)用戶對139738個(gè)商品的664823條評分記錄,除了評分信息以外,還含有487182條用戶間的信任關(guān)系.
從以上數(shù)據(jù)集中隨機(jī)選擇80%的用戶-商品評分?jǐn)?shù)據(jù)作為訓(xùn)練集,剩下的20%作為測試集,本文采用五折交叉驗(yàn)證的方法,即重復(fù)五次這一過程,取五次實(shí)驗(yàn)結(jié)果的平均值作為本實(shí)驗(yàn)的結(jié)果,本文采用平均絕對誤差(mean absolute error,MAE)和均方根誤差(root mean square error,RMSE)作為本次實(shí)驗(yàn)的評估標(biāo)準(zhǔn).
(17)
(18)
為了檢驗(yàn)本文的算法與其他推薦算法的區(qū)別,我們選擇了5種其他算法作為對比.
1)BaseMF:文獻(xiàn)[17]提出的結(jié)合矩陣分解的基本推薦模型,沒有融合其他信息.
2)SoReg:文獻(xiàn)[2]在矩陣分解的模型中加入了社交關(guān)作為正則化項(xiàng),使得用戶的偏好與其好友偏好的均值相似,但是沒有考慮任何社區(qū)信息.
3)MFCC:文獻(xiàn)[16]提出的基于聯(lián)合聚類的矩陣分解算法,在PMF算法的基礎(chǔ)上,將評分矩陣劃分為子矩陣并行的進(jìn)行評分預(yù)測.
4)UCCC-U:利用本文中的社區(qū)挖掘算法,只利用了用戶的社區(qū)結(jié)構(gòu),然后執(zhí)行矩陣分解算法,沒有考慮聯(lián)合社區(qū)結(jié)構(gòu).
5)UCCC-UI:利用本文中的聯(lián)合社區(qū)挖掘算法,利用子矩陣進(jìn)行矩陣分解的推薦.
3.3.1 實(shí)驗(yàn)參數(shù)分析
1)用戶社區(qū)數(shù)目K的確定
首先,針對用戶社區(qū)的挖掘過程中,要確定用戶的聚類數(shù)目K,本實(shí)驗(yàn)在取不同K值的情況下,觀察MAE值的變化情況,得到最合適的用戶社區(qū)數(shù)目.同時(shí),為了驗(yàn)證本文提出的利用專家用戶作為初始聚類中心的K-means算法的有效性,同時(shí)選擇了原始的K-means算法作為對比.對于原始K-means算法而言,由于其初始中心不一樣,因此對原始的K-means算法取5次結(jié)果的平均值.本次實(shí)驗(yàn)的其他參數(shù)設(shè)置如下:聯(lián)合社區(qū)個(gè)數(shù)W=20,社區(qū)正則化參數(shù)α=0.01,矩陣分解正則化參數(shù)λ=0.01,矩陣分解的特征向量維度設(shè)置為10,實(shí)驗(yàn)中K的取值從2開始,間隔為2,實(shí)驗(yàn)結(jié)果如圖3所示.
從圖3可以看出,開始時(shí)隨著聚類簇?cái)?shù)目的增加,MAE值呈減小的趨勢,在聚類數(shù)等于12的時(shí)候平均絕對誤差達(dá)到最小,之后又快速增加.分析其原因可能是:如果用戶社區(qū)的數(shù)量過少,導(dǎo)致用戶過度集中,可能有不同偏好的用戶也會在一個(gè)社區(qū)中,導(dǎo)致社區(qū)內(nèi)的平均偏好不準(zhǔn)確,影響推薦效果;如果用戶社區(qū)過多,則會使用戶十分分散,不能充分利用相似用戶之間的關(guān)系,也會導(dǎo)致社區(qū)內(nèi)平均偏好不準(zhǔn)確.所以在下面的實(shí)驗(yàn)中選擇用戶社區(qū)結(jié)構(gòu)數(shù)目為12.同時(shí)可以看到采用改進(jìn)初始聚類中心的K-means算法相比原始的K-means算法效果有明顯的改善,也驗(yàn)證了本文所用聚類算法的有效性.
圖3 不同K值下的MAE變化情況Fig.3 Changes of MAE under different K value
圖4 不同聯(lián)合聚類簇下的RMSE和MAE值變化Fig.4 Changes of RMSE and MAE under different K value
圖5 不同α值情況下RMSE和MAE值變化Fig.5 Change of RMSE and MAE under different α value
2)聯(lián)合聚類簇?cái)?shù)目W的確定
為了找到最優(yōu)的聯(lián)合社區(qū)情況,本文分別在不同聯(lián)合社區(qū)數(shù)目W的情況下(W=10,20,30,40,50,60)計(jì)算其RMSE和MAE值,其中用戶社區(qū)數(shù)取12,其他實(shí)驗(yàn)參數(shù)同 1)中一樣,實(shí)驗(yàn)結(jié)果如圖4所示.
從圖4中可以看出RMSE與MAE的值剛開始時(shí)隨著聯(lián)合聚類簇的數(shù)目增加而減小,達(dá)到最小值后又開始增加.分析其可能原因是:如果聯(lián)合社區(qū)的數(shù)量過少,對于每一個(gè)子矩陣而言,其稀疏性仍然很大,因此在推薦時(shí)也依然受數(shù)據(jù)稀疏性的影響很大;如果聯(lián)合社區(qū)數(shù)量過多,那么整個(gè)評分矩陣顯得十分分散,在進(jìn)行矩陣分解推薦時(shí)可以利用的評分?jǐn)?shù)據(jù)就十分少,這樣同樣影響著推薦的精度.因此評分矩陣的聯(lián)合聚類簇的數(shù)目為40的時(shí)候可以得到最好的效果.
3)正則化參數(shù)α的確定
正則化參數(shù)α表示的是用戶的社區(qū)結(jié)構(gòu)在矩陣分解模型中參與的比重,當(dāng)α=0時(shí)模型相當(dāng)于基本的矩陣分解模型,本文將α取值分別為{0.0001,0.001,0.01,0.1,1,10}進(jìn)行實(shí)驗(yàn),其他實(shí)驗(yàn)參數(shù)設(shè)置如下:用戶社區(qū)數(shù)目K=12,評分聯(lián)合社區(qū)數(shù)W=40,λ=0.01,記錄MAE值和RMSE隨著不同的α值得變化情況,實(shí)驗(yàn)結(jié)果如圖5所示.
從圖5中可以看到,RMSE和MAE的值先減小后增大,當(dāng)α=0.01時(shí)RMSE和MAE的值達(dá)到最小值,分析其可能原因是當(dāng)α的取值過小時(shí),算法引入的信息對結(jié)果影響不大,最后效果不明顯;當(dāng)α取值過大時(shí),引入的信息權(quán)重過大造成過擬合的現(xiàn)象,因此效果也不明顯.
3.3.2 不同推薦算法整體用戶上的效果對比
通過之前實(shí)驗(yàn)的分析,可知當(dāng)用戶社區(qū)數(shù)目K=12,聯(lián)合社區(qū)數(shù)目W=40,正則化參數(shù)α=0.01時(shí),本文提出的UCCC模型能獲得最佳的推薦結(jié)果.為了更加進(jìn)一步驗(yàn)證本文所提算法的有效性,將本文的算法與3.2節(jié)中提到的算法進(jìn)行了對比實(shí)驗(yàn),用戶和項(xiàng)目的特征向量維度均設(shè)為10,在SoReg中將社交正則化系數(shù)α設(shè)置為0.01,MFCC中正則化參數(shù)λ設(shè)置為10,實(shí)驗(yàn)結(jié)果如表1所示.
從表1中可以看出,本文提出的結(jié)合用戶社區(qū)和評分聯(lián)合社區(qū)的協(xié)同過濾算法和其他算法相比,推薦精度更高,分析其可能的原因是,BaseMF算法沒有考慮評分信息以外的信息,所以其推薦效果最差;SoReg考慮到了用戶間的社交關(guān)系信息,推薦精度有一定的提升,但社交關(guān)系是十分稀疏的;UCCC-U考慮了用戶的社區(qū)結(jié)構(gòu)作為正則項(xiàng),相對于SoReg來說對用戶進(jìn)行了聚類操作,更加有效利用了用戶的社交關(guān)系信息,因此效果有所提升;MFCC算法和UCCC-UI算法利用了評分矩陣的聯(lián)合社區(qū)結(jié)構(gòu),效果相比傳統(tǒng)的BaseMF算法有所提升.本文提出的UCCC算法一方面使用用戶的社區(qū)結(jié)構(gòu),一定程度上緩解用戶間的社交稀疏問題;另一方面,針對評分矩陣進(jìn)行了聯(lián)合聚類操作,緩解了評分矩陣稀疏的問題,因此整體推薦效果可以得到提升.
表1 不同推薦方法在整體情況下的對比Table 1 Comparison of different methods on all users
3.3.3 不同推薦算法在時(shí)間性能上的對比
本章所提的基于用戶社區(qū)和評分聯(lián)合社區(qū)的推薦算法可以被應(yīng)用到大規(guī)模的數(shù)據(jù)集中,圖6描述的是BaseMF算法、MFCC算法、UCCC算法以及其變體算法在進(jìn)行評分預(yù)測時(shí)的運(yùn)行時(shí)間對比.
圖6 不同算法的運(yùn)行時(shí)間對比圖Fig.6 Comparison of runtime with different algorithms
從圖6中可以看出,UCCC-U算法的運(yùn)行時(shí)間最長,這是因?yàn)閱为?dú)地以正則化地方式引入用戶的社區(qū)結(jié)構(gòu)并不能降低數(shù)據(jù)的規(guī)模,雖然在推薦誤差上有所下降,但耗時(shí)較長;MFCC、UCCC-UI算法因?yàn)檫M(jìn)行了聯(lián)合聚類,所以模型的訓(xùn)練時(shí)間顯著降低,這也證明了聯(lián)合聚類確實(shí)可以提高運(yùn)行的效率;同時(shí)可以看到UCCC算法相對MFCC和UCCC-U的計(jì)算時(shí)間是有所增加的,這是由于其在進(jìn)行矩陣分解時(shí)需要搜尋鄰居用戶的偏好,但從表1可以知道其推薦誤差較小,因此其綜合性能較優(yōu).總體來說本文提出的算法可以在保證一定推薦精度的同時(shí),提高推薦的效率.
本文在傳統(tǒng)的基于社區(qū)結(jié)構(gòu)的推薦算法的基礎(chǔ)上,融合用戶的社區(qū)結(jié)構(gòu)和評分矩陣聯(lián)合社區(qū)結(jié)構(gòu),通過利用聚類算法來挖掘用戶社區(qū),通過概率的方法來挖掘評分矩陣聯(lián)合社區(qū),然后在面向聯(lián)合社區(qū)的矩陣中結(jié)合用戶社區(qū)進(jìn)行矩陣分解.在當(dāng)前研究中,我們考慮的都是靜態(tài)興趣偏好與社交關(guān)系,但是隨著時(shí)間的推移,用戶的興趣和社交關(guān)系都是不斷在變化的,因此考慮在動態(tài)場景下的協(xié)同過濾推薦算法是未來研究的重要工作之一.