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