張思明,游天童
(福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)學(xué)院,福建 福州350108)
隨著互聯(lián)網(wǎng)信息的不斷膨脹,信息過(guò)載也越來(lái)越嚴(yán)重,因而推薦系統(tǒng)越來(lái)越受到人們的重視。最簡(jiǎn)單的推薦算法是全局排名方法 GRM(Global Ranking Method),該算法不考慮用戶的個(gè)性化需求,因而其推薦結(jié)果的質(zhì)量并不好。于是,考慮用戶偏好的協(xié)同過(guò)濾CF(Collaborative Filtering)推薦算法被廣為應(yīng)用,并迅速成為最受歡迎的推薦算法之一。協(xié)同過(guò)濾算法考慮用戶興趣,在用戶群中尋找目標(biāo)用戶的相似用戶組,綜合這些相似用戶對(duì)某一項(xiàng)目的評(píng)價(jià),預(yù)測(cè)目標(biāo)用戶對(duì)此項(xiàng)目的興趣。
目前,協(xié)同過(guò)濾算法主要分為兩類[1]:基于內(nèi)存的方法和基于模型的方法。基于內(nèi)存的方法在整個(gè)數(shù)據(jù)庫(kù)上執(zhí)行,從訓(xùn)練數(shù)據(jù)庫(kù)中找出與目標(biāo)用戶最相關(guān)的K個(gè)用戶,然后把他們的評(píng)分信息結(jié)合在一起對(duì)目標(biāo)用戶的評(píng)分情況進(jìn)行預(yù)測(cè)。主要有基于Pearson相關(guān)性的方法、基于向量相似度的方法等。這些算法主要有兩個(gè)缺點(diǎn):易受稀疏的評(píng)分?jǐn)?shù)據(jù)的影響;算法的可伸縮性差。與之相對(duì),基于模型的方法并不直接使用單個(gè)用戶的評(píng)分信息,而是預(yù)先按照用戶評(píng)分的模式對(duì)用戶進(jìn)行聚類,然后計(jì)算目標(biāo)用戶與各個(gè)類別之間的相似度,找出最相似的類,用該類對(duì)某個(gè)項(xiàng)目的評(píng)分作為目標(biāo)用戶對(duì)該項(xiàng)目的評(píng)分。主要的方法有貝葉斯網(wǎng)絡(luò)方法、聚類的方法?;谀P偷姆椒ㄔ诮⒕垲惖倪^(guò)程中較為耗時(shí),而且對(duì)目標(biāo)用戶做出的評(píng)分預(yù)測(cè)也存在準(zhǔn)確性較低的問(wèn)題。
本文考慮將譜聚類的方法引入到協(xié)同過(guò)濾推薦算法中,對(duì)訓(xùn)練集中的用戶進(jìn)行譜聚類,結(jié)合基于內(nèi)存和基于模型這兩種方法的優(yōu)勢(shì),而對(duì)目標(biāo)用戶評(píng)分的預(yù)測(cè)任務(wù)則交由其最相關(guān)的用戶群組來(lái)完成。對(duì)于如何構(gòu)造譜聚類算法的輸入矩陣,本文將用戶——項(xiàng)目二分網(wǎng)絡(luò)投影到只包含用戶結(jié)點(diǎn)的單頂點(diǎn)網(wǎng)絡(luò),構(gòu)造n×n的用戶相似矩陣。考慮到評(píng)分?jǐn)?shù)據(jù)的稀疏性,本文利用類的信息對(duì)類中每個(gè)用戶未評(píng)分的項(xiàng)目進(jìn)行數(shù)據(jù)平滑處理,從得到的N個(gè)聚類中找出與目標(biāo)用戶最相似的一個(gè)或幾個(gè)類別作為最近鄰居候選集,再?gòu)暮蜻x集中找出最相似的K個(gè)用戶進(jìn)入最近鄰居集,最后預(yù)測(cè)目標(biāo)用戶對(duì)每個(gè)項(xiàng)目的評(píng)分。
二分網(wǎng)絡(luò)單頂點(diǎn)投影[2]是研究二分網(wǎng)絡(luò)的一個(gè)重要方法。二分網(wǎng)絡(luò)投影成單頂點(diǎn)網(wǎng)絡(luò)的方式主要分為兩類:無(wú)權(quán)投影和加權(quán)投影。如圖1所示,圖1(b)、圖1(c)分別為圖1(a)關(guān)于 X、Y的單頂點(diǎn)投影,單頂點(diǎn)網(wǎng)絡(luò)中的任意兩個(gè)點(diǎn)之間邊的權(quán)值大小為這兩點(diǎn)在二分網(wǎng)絡(luò)中的共同鄰居數(shù)。雖然單頂點(diǎn)網(wǎng)絡(luò)無(wú)法完全描述二分網(wǎng)絡(luò)的全部信息,但是這個(gè)只含一種結(jié)點(diǎn)的單結(jié)點(diǎn)網(wǎng)絡(luò)完美地保存了二分網(wǎng)絡(luò)中此類結(jié)點(diǎn)的拓?fù)潢P(guān)系,網(wǎng)絡(luò)中邊的權(quán)值構(gòu)成的關(guān)系矩陣可以用來(lái)表示同類結(jié)點(diǎn)之間的相似關(guān)系。

圖1 二分網(wǎng)絡(luò)及其X投影和Y投影圖
近年來(lái),譜聚類已經(jīng)成為一種廣受歡迎的現(xiàn)代聚類算法[3]。與傳統(tǒng)的聚類算法如K-means算法相比,這種算法效率更高,聚類結(jié)果更優(yōu)。譜聚類易于實(shí)現(xiàn),可以用標(biāo)準(zhǔn)的線性代數(shù)的方法來(lái)高效解決。
給定數(shù)據(jù)點(diǎn)集 x1,x2,…,xn,以及所有點(diǎn)對(duì) xi和 xj之間的相似度sij≥0所構(gòu)成的n×n的相似度矩陣S。聚類的目標(biāo)是把這些點(diǎn)劃分進(jìn)不同的類中,使得類內(nèi)點(diǎn)的相似度大,而類間點(diǎn)的相似度小。本文用一個(gè)相似圖G=(V,E)來(lái)表示上述信息,每個(gè)頂點(diǎn)vi表示數(shù)據(jù)點(diǎn) xi。如果sij≥0,那么頂點(diǎn) vi和 vj之間存在邊,且其邊的權(quán)值即為wij。將二分網(wǎng)絡(luò)抽象成二分圖之后,可以這樣來(lái)闡述聚類問(wèn)題:找到一個(gè)圖的劃分,使得不同組之間的邊的權(quán)值和小,而組內(nèi)邊的權(quán)值和大。
譜聚類的衍化算法有很多種,此處介紹的是非正規(guī)化譜聚類算法,這也是本文在后面推薦算法中用到的。非正規(guī)化的譜聚類算法描述如下:
輸入:相似度矩陣 S∈Rn×n,聚類數(shù) k;
輸出:k 個(gè)聚類 A1,A2,…Ak,Ai={j|yj∈Ci};


其中算法的輸入矩陣S,可以用二分圖的鄰接矩陣W來(lái)近似表示。1.3協(xié)同過(guò)濾
作為構(gòu)建推薦系統(tǒng)的最成功方法之一,協(xié)同過(guò)濾使用已知用戶群組的偏好來(lái)預(yù)測(cè)與該群組相似的其他用戶的未知偏好。協(xié)同過(guò)濾基于以下兩個(gè)假設(shè):(1)人與人之間存在偏好興趣上的某種程度的相似或者重疊;(2)人對(duì)事物的偏好是具有穩(wěn)定性的。因此,尋找目標(biāo)用戶的最相似的用戶群組對(duì)協(xié)同過(guò)濾推薦來(lái)說(shuō)是至關(guān)重要的。一般來(lái)說(shuō),協(xié)同過(guò)濾的步驟為:(1)構(gòu)建用戶檔案,即收集用戶的評(píng)分、評(píng)價(jià)行為等,并進(jìn)行數(shù)據(jù)清理、轉(zhuǎn)換,最終形成用戶——項(xiàng)目的評(píng)價(jià)矩陣;(2)最近鄰居搜索,即計(jì)算目標(biāo)用戶與數(shù)據(jù)庫(kù)內(nèi)各個(gè)用戶的相似度,找出相似度最高的N個(gè)用戶作為最近鄰居集;(3)推薦產(chǎn)生,即根據(jù)最近鄰居集的評(píng)價(jià)值產(chǎn)生推薦。
用戶相似度的主要度量方式有Pearson相關(guān)系數(shù)法、余弦相關(guān)性法和修正的余弦相關(guān)性法[4]。
Pearson相關(guān)系數(shù):設(shè)經(jīng)用戶i和用戶j共同評(píng)分的項(xiàng)目集合用Iij表示,則用戶i和用戶j之間的相似性sim(i,j)通過(guò)Pearson相關(guān)系數(shù)度量為:

其中,Ri,c表示用戶 i對(duì)項(xiàng)目 c的評(píng)分,和分別表示用戶i和用戶j對(duì)項(xiàng)目的平均評(píng)分。
余弦相似性(cosine):把用戶評(píng)分看做是n維項(xiàng)目空間上的向量,用戶間的相似性通過(guò)向量間的余弦?jiàn)A角來(lái)度量。設(shè)用戶i和用戶j在n維項(xiàng)目空間上的評(píng)分分別為向量和,則用戶i和用戶j之間的相似性sim(i,j)為:

其中,分子為兩個(gè)用戶評(píng)分向量的內(nèi)積,分母為兩個(gè)用戶向量模的乘積。
修正的余弦相似性(adjusted cosine):修正的余弦相似性度量方法考慮不同用戶的評(píng)分尺度問(wèn)題。設(shè)經(jīng)用戶i和用戶 j共同評(píng)分的項(xiàng)目集合用 Iij表示,Ii和 Ij分別表示經(jīng)用戶i和用戶j評(píng)分的項(xiàng)目集合,則用戶i和用戶j之間的相似性 sim(i,j)為:

其中,Ri,c表示用戶 i對(duì)項(xiàng)目 c 的評(píng)分,Ri和Rj分別表示用戶i和用戶j對(duì)項(xiàng)目的平均評(píng)分。
本文將基于譜聚類的協(xié)同過(guò)濾算法記為SCBCF算法,以方便說(shuō)明。
給定一個(gè)二分圖 G=〈T∪U,E〉, 其中 T={ti|1≤i≤m},U={ui|1≤i≤n}。 這里用 T表示項(xiàng)目集,U表示用戶集。同類結(jié)點(diǎn)之間不允許存在邊。二分圖G可以用m×n的矩陣 W 來(lái)表示,W(i,j)表示邊〈i,j〉的權(quán)值。 現(xiàn)在的任務(wù)是,給定一個(gè)目標(biāo)用戶ua,預(yù)測(cè)其在T上已經(jīng)評(píng)價(jià)過(guò)的項(xiàng)目的評(píng)分,并與ua對(duì)該項(xiàng)目的實(shí)際評(píng)分相比較,以此來(lái)驗(yàn)證算法的準(zhǔn)確性。
預(yù)處理階段:用1.2節(jié)中給出的算法對(duì)用戶集進(jìn)行聚類,形成 k 個(gè)類別:C1,…,Ck。
推薦階段:給定一個(gè)目標(biāo)用戶 ua,項(xiàng)目 t,最近鄰居數(shù)K。
(1)從譜聚類的結(jié)果中,選擇幾個(gè)與ua最相似的類,作為最近鄰居的候選集。
(2)對(duì)候選集中的每個(gè)用戶,計(jì)算其與ua的相似度sim(ua,u),其中 u 的評(píng)分結(jié)合了 Ru(t)和 RCu(t),前 者 表 示u對(duì)t的評(píng)分,后者表示u所在類對(duì)t的類評(píng)分。
(3)選擇K個(gè)最相似的用戶作為最近鄰居。
(4)基于最近鄰居的評(píng)價(jià)行為,預(yù)測(cè)ua對(duì)項(xiàng)目 t的評(píng)分。
本文采用1.2節(jié)中的非正規(guī)化的譜聚類算法對(duì)訓(xùn)練集中的用戶進(jìn)行聚類。聚類之前,根據(jù)圖1中的形式,先將二分圖投影成只含用戶的單頂點(diǎn)網(wǎng)絡(luò),頂點(diǎn)之間的權(quán)值即為這兩個(gè)用戶收集的共同項(xiàng)目數(shù),所有頂點(diǎn)之間的權(quán)值構(gòu)成權(quán)值矩陣W,作為聚類算法中的輸入矩陣。
正如前面所提到的,數(shù)據(jù)的稀疏性是協(xié)同過(guò)濾面臨的一個(gè)基本問(wèn)題。本文應(yīng)用基于聚類的數(shù)據(jù)平滑策略[5]。以下定義一個(gè)特別的評(píng)分值:

其中,Tu表示 u收集的項(xiàng)目集,R?u(t)表示 u對(duì)未收集的項(xiàng)目t的平滑評(píng)分值。R?u(t)定義如下:


2.2.3 最近鄰居選擇
首先根據(jù)式(7),選擇與ua最相似的聚類作為最近鄰居的候選集,然后,根據(jù)Pearson相關(guān)系數(shù),由式(1)計(jì)算ua與候選集中每個(gè)用戶的相似度,找出最相似的K個(gè)用戶構(gòu)成最近鄰居集。

2.2.4 產(chǎn)生推薦
協(xié)同過(guò)濾是基于最近鄰居集的用戶評(píng)價(jià)行為,根據(jù)以下公式,為目標(biāo)用戶ua預(yù)測(cè)其對(duì)項(xiàng)目t的評(píng)分。

其中sim(ua,u)表示目標(biāo)用戶與最近鄰居集中的用戶u之間的相似度。
本實(shí)驗(yàn)的數(shù)據(jù)來(lái)自于MovieLens,這個(gè)數(shù)據(jù)庫(kù)包含了1 682部電影和943個(gè)用戶。本文從中抽取出評(píng)價(jià)電影數(shù)大于50的用戶,把滿足條件的563個(gè)用戶分為訓(xùn)練集和測(cè)試集,其中后163個(gè)用戶為測(cè)試集。本文進(jìn)行3次訓(xùn)練,訓(xùn)練集分別表示為ML_200、ML_300和ML_400,大小分別為200、300和400。每次訓(xùn)練前,對(duì)訓(xùn)練集進(jìn)行二分網(wǎng)絡(luò)的單頂點(diǎn)投影得到用戶之間的相似矩陣,為后面的聚類做準(zhǔn)備。在此過(guò)程中本文不考慮評(píng)分值小于3的邊,排除了兩個(gè)用戶評(píng)分行為不一致的情況。訓(xùn)練集用戶的譜聚類過(guò)程通過(guò)Matlab實(shí)現(xiàn)。
本文使用絕對(duì)評(píng)價(jià)誤差MAE(Mean Absolute Error)評(píng)價(jià)推薦質(zhì)量:

其中,Ru(tj)表示訓(xùn)練集中的用戶 u對(duì)項(xiàng)目 tj實(shí)際的評(píng)分,(tj)表示用戶u對(duì)項(xiàng)目tj的預(yù)測(cè)評(píng)分。T是測(cè)試集,|T|表示測(cè)試集的大小。MAE值越小,說(shuō)明預(yù)測(cè)的質(zhì)量越高。
本文將聚類數(shù)設(shè)為20,分別取最近鄰居數(shù)為 5、10、20。在實(shí)驗(yàn)中,本文將傳統(tǒng)的基于Pearson相關(guān)系數(shù)的協(xié)同過(guò)濾算法作為基線方法進(jìn)行了比較,并把該方法記為TCF。對(duì)比結(jié)果如表1所示。

表1 實(shí)驗(yàn)結(jié)果數(shù)據(jù)及其對(duì)比
從表1可以看出,協(xié)同過(guò)濾易受數(shù)據(jù)稀疏性的影響。本文的方法對(duì)訓(xùn)練集的數(shù)據(jù)進(jìn)行了平滑處理,從而減輕了這一因素的影響。同時(shí),隨著最近鄰居數(shù)的增加,實(shí)驗(yàn)結(jié)果也隨之改善。這是因?yàn)榭紤]更多相似用戶的評(píng)分行為,使目標(biāo)用戶的預(yù)測(cè)評(píng)分趨于穩(wěn)定,從而使得預(yù)測(cè)值與實(shí)際值之間的偏差減小。本文提出的算法在很大程度上縮小了最近鄰居候選集的大小,與傳統(tǒng)的協(xié)同過(guò)濾算法相比,算法的伸縮性得到了提高,時(shí)間復(fù)雜度也進(jìn)一步降低。
本文考慮將更加高效的譜聚類算法引入到協(xié)同過(guò)濾推薦中來(lái),實(shí)驗(yàn)結(jié)果證明本文提出的SCBCF算法比傳統(tǒng)的協(xié)同過(guò)濾推薦算法能更好地提高推薦系統(tǒng)的推薦質(zhì)量。在對(duì)用戶進(jìn)行譜聚類時(shí),本文發(fā)現(xiàn)聚類結(jié)果的各個(gè)類之間的用戶數(shù)并不均衡,這限制了預(yù)測(cè)能力的進(jìn)一步提升,因此如何將用戶更準(zhǔn)確地歸類將是未來(lái)的研究工作之一。
[1]SU X,KHOSHGOFTAAR T M.A survey of collaborative filtering techniques[J].Adv.Artif.Intell,2009(1):421-425.
[2]ZHOU T,REN J,MEDO M,et al.Bipartite network projection and personal recommendation[J].Phys.Rev.E,2007,76(4):046115-046121.
[3]LUXBURG U.A tutorial on spectral clustering[J].Statistics and Computing,2007,17(4):395-416.
[4]SARWAR B,KARYPIS G,KONSTAN J,et al.Item-based collaborative ltering recommendation algorithms[C].In www10,Hong Kong,2001.
[5]XUE G R,LIN C,YANG Q,et al.Scalable collaborative filtering using cluster-based smoothing[C].In Proceedings of the ACM SIGIR Conference,Salvador,Brazil,2005:114-121.