賈俊杰,張玉超
(西北師范大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,蘭州 730070)
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,全球信息數(shù)據(jù)量呈現(xiàn)爆炸式增長(zhǎng),使得互聯(lián)網(wǎng)上的用戶難以在海量信息數(shù)據(jù)中選擇有用和重要的信息。推薦系統(tǒng)通過(guò)收集分析用戶的歷史偏好數(shù)據(jù)向用戶提供更多的個(gè)性化信息,其中協(xié)同過(guò)濾推薦是一種應(yīng)用比較廣泛的個(gè)性化推薦算法[1],該算法的目標(biāo)是尋找與目標(biāo)用戶具有相似興趣愛(ài)好的其他用戶,并通過(guò)這些用戶的項(xiàng)目體驗(yàn)感受來(lái)對(duì)目標(biāo)用戶所未體驗(yàn)過(guò)的項(xiàng)目進(jìn)行預(yù)測(cè)。針對(duì)協(xié)同過(guò)濾推薦算法存在的數(shù)據(jù)稀疏[2]和冷啟動(dòng)問(wèn)題[3],研究人員提出了很多解決方案來(lái)提高推薦精度[4]。一方面,采用基于信息數(shù)據(jù)的聚類算法解決評(píng)分?jǐn)?shù)據(jù)不足的問(wèn)題,其中基于用戶間信任的推薦系統(tǒng)旨在利用用戶間的信任數(shù)據(jù)對(duì)用戶缺失的評(píng)分?jǐn)?shù)據(jù)進(jìn)行補(bǔ)充,提高推薦性能[5-7]。另一方面,通過(guò)基于聚類的推薦算法緩解評(píng)分?jǐn)?shù)據(jù)稀疏問(wèn)題,其主要思想是將偏好差異較小的用戶分為同一類別,偏好差異較大的用戶分為不同類別,在推薦時(shí)選擇與目標(biāo)用戶同屬一個(gè)類別中的其他用戶為推薦用戶,可在不同程度上緩解數(shù)據(jù)稀疏問(wèn)題,因此選擇合適的聚類算法對(duì)推薦系統(tǒng)的推薦性能非常關(guān)鍵。本文主要研究用戶間信任關(guān)系對(duì)推薦效果的影響,通過(guò)對(duì)信任數(shù)據(jù)、評(píng)分?jǐn)?shù)據(jù)進(jìn)行建模得到用戶顯式信任、隱式信任和全局信任,并將信任機(jī)制融入模糊C 均值(Fuzzy C-Means,F(xiàn)CM)聚類算法中以提升推薦質(zhì)量。
由于信任是用戶產(chǎn)生決策的重要影響因素,因此基于用戶信任關(guān)系的推薦系統(tǒng)得到廣泛應(yīng)用,目標(biāo)用戶將信任用戶所推薦的內(nèi)容作為決策影響因素之一[8]。融合社交網(wǎng)絡(luò)的推薦系統(tǒng)通常將基于用戶的協(xié)同過(guò)濾算法與信任模型相結(jié)合,不僅能夠有效緩解傳統(tǒng)協(xié)同過(guò)濾推薦算法中的數(shù)據(jù)稀疏和冷啟動(dòng)問(wèn)題,而且能提高推薦結(jié)果的準(zhǔn)確率和覆蓋率[9]。融合用戶之間的信任關(guān)系有利于提升推薦系統(tǒng)的性能,可有效防止惡意影響推薦精度的行為。
在基于社交網(wǎng)絡(luò)的推薦算法中主要包括顯式和隱式兩種類型的信任關(guān)系,它們分別通過(guò)用戶之間建立的社交網(wǎng)站收集得到[10]以及用戶-項(xiàng)目評(píng)分?jǐn)?shù)據(jù)推斷得到。文獻(xiàn)[11]利用用戶間的信任數(shù)據(jù)取代傳統(tǒng)協(xié)同過(guò)濾中的興趣相似度進(jìn)行推薦,其為典型的顯式信任推薦模型,但由于未設(shè)置相應(yīng)的信任傳播閾值,因此使得大量不可信的信任路徑得到保留。文獻(xiàn)[12]將用戶間的評(píng)分興趣相似度作為隱式信任關(guān)系代替興趣相似度進(jìn)行協(xié)同過(guò)濾推薦,其為典型的隱式信任推薦模型,但忽略了隨著時(shí)間的推移用戶間信任關(guān)系的變化。近年來(lái),研究人員在推薦系統(tǒng)中提出了一些顯式信任與隱式信任混合模型。文獻(xiàn)[7]提出利用二分圖和隱式信任來(lái)預(yù)測(cè)用戶偏好,通過(guò)用戶間的信任關(guān)系取代用戶興趣相似度進(jìn)行協(xié)同過(guò)濾推薦。文獻(xiàn)[13]提出基于信任的矩陣分解算法TrustSVD,該算法不僅考慮了用戶間信任數(shù)據(jù)和評(píng)分?jǐn)?shù)據(jù)的顯性影響,同時(shí)考慮了用戶間的隱性影響。文獻(xiàn)[5]提出一種融合Pareto 和置信度的信任推薦系統(tǒng),當(dāng)用戶間顯式數(shù)據(jù)過(guò)于稀疏時(shí),利用用戶間的項(xiàng)目評(píng)分?jǐn)?shù)據(jù)進(jìn)行補(bǔ)充,從而提高推薦系統(tǒng)的準(zhǔn)確性。文獻(xiàn)[14]所提出的算法考慮了信任的動(dòng)態(tài)變化,將融合時(shí)間衰減函數(shù)的皮爾森評(píng)分相似度作為用戶間隱式信任值,主要對(duì)信任傳遞進(jìn)行了研究,但未充分挖掘評(píng)分?jǐn)?shù)據(jù)中隱含的用戶間信任關(guān)系。
協(xié)同過(guò)濾推薦算法適合運(yùn)行在小型數(shù)據(jù)集中,并且運(yùn)行效果較好,但現(xiàn)實(shí)生活中用戶-項(xiàng)目數(shù)據(jù)量太大,很難利用其對(duì)用戶進(jìn)行準(zhǔn)確推薦。為了解決這一問(wèn)題,可在推薦系統(tǒng)中使用聚類算法將用戶-項(xiàng)目分成若干聚類,從而縮小推薦系統(tǒng)搜索相似用戶的范圍。若用戶被劃分到同一類別,則表示其興趣相似度較大,否則表示興趣相似度較小。在眾多聚類算法中,K-Means 是較為經(jīng)典的聚類算法,每次對(duì)用戶進(jìn)行聚類時(shí),都只能分配到一個(gè)類別中。但實(shí)際上,在聚類完成時(shí),每個(gè)類別中都有和目標(biāo)用戶相似的用戶[15],從而使得推薦結(jié)果精度降低。為了解決此類聚類問(wèn)題,將模糊C-Means 聚類算法應(yīng)用到推薦系統(tǒng)中[15],根據(jù)用戶所屬類別的隸屬程度來(lái)確定用戶屬于一個(gè)或多個(gè)類別,從而獲得更大的搜索空間尋找興趣最為相似的用戶。文獻(xiàn)[16]為進(jìn)一步提高文獻(xiàn)[15]所提算法的推薦質(zhì)量,利用模糊C 均值聚類算法將用戶分成若干類別,采用傳統(tǒng)歐式距離加權(quán)化來(lái)獲得最佳聚類進(jìn)行推薦。文獻(xiàn)[17]利用用戶評(píng)分過(guò)程中的潛在信任關(guān)系,提出一種基于信任機(jī)制的概率矩陣分解協(xié)同過(guò)濾推薦算法,通過(guò)構(gòu)建用戶-信任評(píng)分矩陣提高推薦準(zhǔn)確性。文獻(xiàn)[18]應(yīng)用粒子群優(yōu)化算法優(yōu)化模糊C 均值聚類算法對(duì)用戶進(jìn)行聚類,有效提高了推薦準(zhǔn)確率。文獻(xiàn)[19]通過(guò)K-Means 聚類算法對(duì)用戶進(jìn)行聚類,然后利用Slope One 算法對(duì)評(píng)分矩陣進(jìn)行填充,有效緩解了數(shù)據(jù)稀疏問(wèn)題。上述推薦算法都是利用用戶評(píng)分?jǐn)?shù)據(jù)進(jìn)行處理,而真實(shí)用戶評(píng)分?jǐn)?shù)據(jù)集通常極度稀疏,導(dǎo)致推薦質(zhì)量依然較低。
通過(guò)以上研究可知,推薦系統(tǒng)中引入信任機(jī)制可有效提升推薦效率,但上述推薦算法均未充分挖掘用戶間信任傳遞的關(guān)聯(lián)性,且未綜合考慮用戶全局信任對(duì)每個(gè)用戶信任關(guān)系的影響。由于用戶的信任關(guān)系僅針對(duì)一小部分用戶數(shù)據(jù),因此無(wú)須浪費(fèi)大量時(shí)間掃描全部用戶數(shù)據(jù)。本文提出基于模糊C 均值聚類的綜合信任推薦算法,旨在緩解數(shù)據(jù)稀疏與冷啟動(dòng)問(wèn)題的前提下縮減搜索目標(biāo)用戶的最近鄰,并提高推薦質(zhì)量。首先通過(guò)對(duì)用戶評(píng)分?jǐn)?shù)據(jù)進(jìn)行聚類,根據(jù)用戶隸屬情況得到用戶所屬類別,基于信任數(shù)據(jù)、評(píng)分?jǐn)?shù)據(jù)計(jì)算所屬類別中用戶的顯式信任值、隱式信任值并得到綜合直接信任值;然后通過(guò)信任的可傳遞特性,獲取用戶間Jaccard 全局信任值;最后動(dòng)態(tài)結(jié)合用戶間綜合直接信任與Jaccard 全局信任得到綜合信任值,將綜合信任值取代傳統(tǒng)推薦算法中的興趣相似度實(shí)現(xiàn)協(xié)同過(guò)濾推薦。
本文主要通過(guò)用戶-評(píng)分矩陣獲得用戶的聚類類別,根據(jù)聚類類別計(jì)算用戶間的全局信任度,以此對(duì)用戶進(jìn)行協(xié)同過(guò)濾推薦,其中主要包括用戶-項(xiàng)目構(gòu)建、模糊C 均值聚類、近鄰形成和評(píng)分預(yù)測(cè)4 個(gè)部分。
在推薦系統(tǒng)中,用戶-項(xiàng)目評(píng)分?jǐn)?shù)據(jù)是由n個(gè)用戶和m個(gè)項(xiàng)目(音樂(lè)、書籍、商品等)所組成的n×m維的矩陣,其中,用戶集合U=(u1,u2,…,un),項(xiàng)目集合I=(i1,i2,…,im),un表示用戶集合中第n個(gè)用戶,im表示項(xiàng)目集合中第m個(gè)項(xiàng)目。用戶對(duì)項(xiàng)目的評(píng)分為R=(ru1,i1,ru2,i2,…,run,im),其中rij?[1,5]中的離散值,表示用戶ui對(duì)項(xiàng)目Ij的評(píng)分。本文中用戶評(píng)分缺失采用評(píng)分0 來(lái)代替。如果用戶對(duì)項(xiàng)目的評(píng)分為1,則表示用戶對(duì)該項(xiàng)目非常不感興趣,如果用戶對(duì)項(xiàng)目的評(píng)分為5,則表示用戶對(duì)該項(xiàng)目非常感興趣。評(píng)分項(xiàng)目矩陣如表1 所示。
表1 用戶-項(xiàng)目評(píng)分矩陣Table 1 User-project rating matrix
基于用戶屬性向量對(duì)用戶進(jìn)行聚類,即用戶-項(xiàng)目評(píng)分?jǐn)?shù)據(jù)映射到n維向量上u=(r1,r2,…,rn),對(duì)用戶屬性向量進(jìn)行模糊C 均值聚類。模糊C 均值聚類算法[20]原理為根據(jù)隸屬度來(lái)表示樣本點(diǎn)屬于某個(gè)聚類的隸屬程度。將樣本集X={x1,x2,…,xn}中的每一個(gè)樣本點(diǎn)模糊劃分到K個(gè)聚類中,更新每個(gè)聚類中心ci(i=1,2,…,k),并使得劃分代價(jià)損失函數(shù)達(dá)到最小值。劃分代價(jià)損失函數(shù)的計(jì)算公式為:
為使式(1)取得最小值,對(duì)聚類中心ci與隸屬度ui(xj)求偏導(dǎo),得到損失函數(shù)取得最小值的必要條件如式(3)、式(4)所示。將必要條件通過(guò)迭代求解,得到聚類中心與樣本點(diǎn)的隸屬度矩陣。
算法1模糊C 均值聚類推薦算法
輸入 用戶-項(xiàng)目評(píng)分矩陣,聚類個(gè)數(shù)K,最近鄰個(gè)數(shù)N,目標(biāo)用戶u
輸出 缺失項(xiàng)目預(yù)測(cè)評(píng)分
步驟1輸入用戶評(píng)分矩陣,根據(jù)用戶評(píng)分?jǐn)?shù)據(jù)對(duì)用戶進(jìn)行模糊C 均值聚類。
步驟2計(jì)算每個(gè)用戶對(duì)每個(gè)類別的隸屬度,根據(jù)用戶隸屬度對(duì)用戶進(jìn)行聚類。
步驟3找到目標(biāo)用戶所在聚類,同一類中用戶偏好相似度較高,不同類別中用戶相似度較低,計(jì)算目標(biāo)用戶與類別中其他用戶的偏好相似度。找到與目標(biāo)用戶相似度最高的K個(gè)用戶為目標(biāo)用戶的最近鄰。
步驟4對(duì)所得目標(biāo)用戶與最近鄰進(jìn)行缺失項(xiàng)目的評(píng)分預(yù)測(cè)或top-N 推薦。
協(xié)同過(guò)濾推薦算法的基本原理是通過(guò)分析挖掘目標(biāo)的歷史評(píng)分?jǐn)?shù)據(jù),找到與其興趣偏好相似的用戶,并為目標(biāo)用戶推薦未體驗(yàn)過(guò)的商品和項(xiàng)目。換言之,通過(guò)目標(biāo)用戶的歷史評(píng)分?jǐn)?shù)據(jù)找到相似用戶,利用相似用戶為目標(biāo)用戶進(jìn)行推薦。度量用戶間相似性是推薦過(guò)程中的重要流程,與推薦精確度密切相關(guān),其主要度量指標(biāo)為皮爾森相關(guān)系數(shù)、余弦相似度和Jaccard 相似度等,其中皮爾森相關(guān)系數(shù)是一種較常用的相似性度量系數(shù)[21],計(jì)算公式為:
其中,Iu,v表示用戶u和用戶v共同評(píng)分的項(xiàng)目,ru,i和rv,i分別表示用戶u和用戶v對(duì)項(xiàng)目i的評(píng)分。
通過(guò)度量用戶間的興趣相似度可得到K個(gè)與用戶興趣最為相似的近鄰進(jìn)行評(píng)分預(yù)測(cè),評(píng)分預(yù)測(cè)公式為:
其中,ru,i表示目標(biāo)用戶對(duì)缺失項(xiàng)目i的預(yù)測(cè)評(píng)分,表示目標(biāo)用戶對(duì)所有評(píng)分項(xiàng)目的平均評(píng)分值,NNK(u,i)表示具有預(yù)測(cè)項(xiàng)目i的目標(biāo)用戶的最近鄰集合,sim(u,v)表示用戶間的皮爾森相似度。
模糊C 均值聚類推薦算法[15]運(yùn)用聚類方法將興趣相似用戶劃分到相同類別中,并選擇與目標(biāo)用戶同屬一個(gè)類別的其他用戶作為推薦用戶,以此來(lái)解決推薦系統(tǒng)中的數(shù)據(jù)稀疏與冷啟動(dòng)問(wèn)題,但在推薦系統(tǒng)中遇到絕對(duì)數(shù)據(jù)稀疏與冷啟動(dòng)用戶時(shí)推薦效率依舊較低。因此,本文將用戶間信任機(jī)制融入該算法,進(jìn)一步提高推薦效率。將協(xié)同過(guò)濾推薦算法中用戶之間的聯(lián)系拓展為用戶間綜合信任,其中:綜合信任關(guān)系包含用戶間顯式信任、隱式信任、綜合直接信任與Jaccard 全局信任,顯式信任關(guān)系由用戶間信任數(shù)據(jù)計(jì)算所得,隱式信任關(guān)系由用戶間評(píng)分?jǐn)?shù)據(jù)所得,綜合信任關(guān)系是由顯式信任關(guān)系與隱式信任關(guān)系融合計(jì)算所得;Jaccard 全局信任是指用戶在整個(gè)推薦系統(tǒng)中的活躍強(qiáng)度,若用戶在推薦系統(tǒng)中越活躍,則獲得的Jaccard 全局信任度就越高。本文算法主要包含3 個(gè)階段:1)通過(guò)模糊C 均值聚類算法對(duì)用戶進(jìn)行聚類;2)利用用戶信任數(shù)據(jù)和項(xiàng)目評(píng)分?jǐn)?shù)據(jù)得到用戶間顯式信任值、隱式信任值及綜合直接信任值;3)由用戶間綜合直接信任值得到Jaccard 全局信任值,并加權(quán)結(jié)合Jaccard 全局信任關(guān)系組成綜合信任值進(jìn)行協(xié)同過(guò)濾推薦。本文算法流程如圖1所示。
圖1 本文算法流程Fig.1 Procedure of the proposed algorithm
信任在宏觀上是指相信對(duì)方是誠(chéng)實(shí)可信賴的,在推薦系統(tǒng)上的信任是指用戶對(duì)對(duì)方所體驗(yàn)過(guò)的項(xiàng)目感興趣。若用戶之間存在顯式直接信任關(guān)系,則T(ui,uj)=1,表示用戶ui信任用戶uj,否則T(ui,uj)=0,表示用戶i沒(méi)有直接信任關(guān)系。用戶-用戶信任矩陣如表2 所示。
表2 用戶-用戶信任矩陣Table 2 User-user trust matrix
用戶間信任數(shù)據(jù)矩陣可使用有向圖G=(V,E)來(lái)表示,其中,V為信任網(wǎng)絡(luò)中的每個(gè)用戶節(jié)點(diǎn),E為信任網(wǎng)絡(luò)中用戶節(jié)點(diǎn)之間的有向邊,表示用戶之間存在信任關(guān)系。
用戶信任網(wǎng)絡(luò)如圖2 所示,用戶u1與用戶u3之間有兩條有向邊,表示用戶之間相互信任。用戶u1與用戶u4之間有一條有向邊,表示用戶u1信任用戶u4,但用戶u4不信任u1。用戶信任網(wǎng)絡(luò)上的邊[22]可形象表示為。利用MASSA 等人[11]提出的信任計(jì)算方法計(jì)算用戶間的顯式信任值:
圖2 用戶信任網(wǎng)絡(luò)Fig.2 User trust network
其中,dui,uj表示用戶ui與用戶uj的最短信任傳播距離。例如,用戶u1與用戶u5沒(méi)有直接信任關(guān)系,但他們可以通過(guò)信任傳遞的方式獲取對(duì)彼此的信任,此時(shí)u1與u5的信任傳播距離為dmin(u1u2u6u5,u1u2u3u6u5,u1u2u3u5,u1u3u6u5,u1u3u5,u1u4u5)=3,dmax表示用戶間最大傳播距離[23],計(jì)算公式為:
其中,n表示用戶信任網(wǎng)絡(luò)中用戶節(jié)點(diǎn)的總數(shù),k表示用戶節(jié)點(diǎn)出入度的平均值。
本文算法利用用戶-項(xiàng)目評(píng)分?jǐn)?shù)據(jù)、時(shí)間衰減函數(shù)綜合推斷出用戶間的隱式信任關(guān)系。本文采用LATHIA 等人[24]提出的信任計(jì)算模型來(lái)計(jì)算用戶間的隱式信任值,若用戶間有相同評(píng)分項(xiàng)目,則表示用戶互動(dòng)一次,評(píng)分差異越小,用戶間越信任,而互動(dòng)次數(shù)越多表示用戶信任程度越高,計(jì)算公式為:
其中,ru,i和rv,i表示用戶u與用戶v對(duì)項(xiàng)目i的評(píng)分,表示用戶間的可信度,|Iu|和|Iv|表示用戶u和用戶v對(duì)項(xiàng)目評(píng)分不為0 的數(shù)量,分子部分表示用戶間共同擁有評(píng)分不為0 的項(xiàng)目。用戶可信度越大,用戶的隱式信任程度越高。如圖3、圖4 所示,用戶u與用戶v共同擁有評(píng)分不為0 的項(xiàng)目5 項(xiàng),但用戶u與用戶v之間的隱式信任程度不同,且隨著時(shí)間的推移,用戶間的隱式信任的衰減速度會(huì)由快到慢,最后無(wú)限趨于0。時(shí)間衰減函數(shù)[14,25]H的計(jì)算公式為:
圖3 互動(dòng)程度相同的示例Fig.3 Example with the same degrees of interaction
圖4 互動(dòng)程度不同的示例Fig.4 Example with the different degrees of interaction
其中,k為影響時(shí)間的衰減因子,T為當(dāng)前時(shí)刻,t為用戶間的最后交互時(shí)刻,即用戶最后一次共同擁有不為0 評(píng)分項(xiàng)目的時(shí)刻。
將用戶間顯式信任與隱式信任進(jìn)行結(jié)合,得到用戶間綜合直接信任值,計(jì)算公式[26]為:
1.3.2 B組31例患兒給予多次胰島素皮下注射,患兒三餐前皮下注射短效胰島素,根據(jù)患兒血糖檢測(cè)情況適當(dāng)調(diào)整胰島素注射用量,患兒睡前給予中效諾和靈注射。
綜合信任值由用戶間綜合直接信任值與Jaccard全局信任值組成,計(jì)算公式[27]為:
其中,α+β=1。
在聚類完成后,相同聚類中用戶間最為信任。通過(guò)結(jié)合用戶間綜合直接信任關(guān)系、全局信任關(guān)系得到用戶綜合信任值,并找到目標(biāo)用戶所屬聚類中最為信任的K個(gè)用戶進(jìn)行下一步處理。用戶間Jaccard 全局信任值計(jì)算如式(13)所示:
式(13)表示用戶u與用戶v所擁有的共同信任用戶越多(綜合直接信任值大于0.5),則用戶u和v間的全局信任值越高。
通過(guò)在用戶所屬類別中找到與目標(biāo)用戶綜合信任值最高的K個(gè)推薦用戶,利用用戶間綜合信任值取代傳統(tǒng)用戶間評(píng)分興趣相似度進(jìn)行推薦。應(yīng)用式(14)對(duì)目標(biāo)用戶缺失項(xiàng)目評(píng)分進(jìn)行預(yù)測(cè)[28]:
算法2基于模糊C 均值聚類的綜合信任推薦算法
輸入用戶-用戶信任矩陣,用戶-項(xiàng)目評(píng)分矩陣,目標(biāo)用戶
步驟1根據(jù)用戶屬性向量,計(jì)算每個(gè)用戶對(duì)每個(gè)類別的隸屬度,根據(jù)用戶隸屬度進(jìn)行聚類。
步驟2計(jì)算用戶間顯式信任值:
步驟3找到目標(biāo)用戶所在聚類,計(jì)算目標(biāo)用戶與類中其他用戶的隱式信任值。利用用戶間顯式信任值、隱式信任值得到綜合直接信任值,并采用綜合直接信值計(jì)算出用戶間Jaccard 全局信任值:
根據(jù)式(11)、式(13)計(jì)算用戶間綜合直接信任與全局信任值
步驟4將用戶間綜合直接信任值與Jaccard 全局信任值加權(quán)結(jié)合得到綜合信任。利用式(12)計(jì)算用戶間的綜合信任值Wu,v
步驟5將目標(biāo)用戶與其他用戶的綜合信任值降序排序,選取前K個(gè)用戶為目標(biāo)用戶的最近鄰集合Un,利用用戶間綜合信任值取代傳統(tǒng)協(xié)同過(guò)濾中的相似度進(jìn)行缺失項(xiàng)目的評(píng)分預(yù)測(cè)及top-N 推薦。
利用式(14)對(duì)目標(biāo)用戶未評(píng)分項(xiàng)目進(jìn)行預(yù)測(cè)評(píng)分及top-N 推薦
本節(jié)使用真實(shí)數(shù)據(jù)集并利用Python 語(yǔ)言實(shí)現(xiàn)本文算法,并在配置為Windows 7、2.50 GHz CPU 和8 GB 內(nèi)存的計(jì)算機(jī)上進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)使用FilmTrust 數(shù)據(jù)集(http://www.trust.mindswap.org/FilmTrust/),該數(shù)據(jù)集抓取自FilmTrust網(wǎng)站,包括1 508 名用戶為2 071 部電影項(xiàng)目的評(píng)分情況,由評(píng)分?jǐn)?shù)據(jù)ratings.txt和用戶信任數(shù)據(jù)trust.txt兩部分組成,其中:ratings.txt包含35 497條數(shù)據(jù),評(píng)分范圍為0.5~4.0,步長(zhǎng)為0.5,密集度為1.044%;trust.txt 包含1 853 條數(shù)據(jù),密集度為0.069%。
為檢驗(yàn)本文算法的有效性,采用平均絕對(duì)誤差(MAE)、覆蓋率(COV)和綜合評(píng)價(jià)指標(biāo)(F1)來(lái)評(píng)價(jià)推薦系統(tǒng)性能。平均絕對(duì)誤差是指推薦系統(tǒng)為用戶所推薦的商品評(píng)分與測(cè)試集中真實(shí)用戶商品評(píng)分之差的平均值,其值越小表示預(yù)測(cè)評(píng)分越準(zhǔn)確,計(jì)算公式如式(15)所示。覆蓋率是指推薦系統(tǒng)能為用戶預(yù)測(cè)評(píng)分商品數(shù)量占測(cè)試集總商品數(shù)量的比值,其值越高,表示算法挖掘長(zhǎng)尾商品的能力越強(qiáng),計(jì)算公式如式(16)所示。F1值是指推薦系統(tǒng)綜合評(píng)價(jià)指標(biāo)[28],其值越高表示性能越好,計(jì)算公式如式(17)所示。
其中,ri為測(cè)試集中項(xiàng)目i的真實(shí)評(píng)分,rp為推薦系統(tǒng)為目標(biāo)用戶的商品預(yù)測(cè)評(píng)分,|Lu|表示推薦系統(tǒng)為目標(biāo)用戶預(yù)測(cè)評(píng)分商品的數(shù)量,n表示測(cè)試集中的總商品數(shù)量,rmax和rmin分別表示推薦系統(tǒng)中的最高評(píng)分與最低評(píng)分。
實(shí)驗(yàn)選取FilmTrust數(shù)據(jù)集的80%作為訓(xùn)練集,20%作為測(cè)試集,使用推薦系統(tǒng)為用戶所推薦的商品評(píng)分與已知的測(cè)試集中的商品評(píng)分做對(duì)比,利用所給出的評(píng)價(jià)指標(biāo)來(lái)度量推薦算法性能。將本文算法與傳統(tǒng)基于用戶的推薦算法BUCF、基于模糊C 均值聚類的協(xié)同過(guò)濾算法FCMCF和基于隱式信任的推薦算法BTCF進(jìn)行對(duì)比,在設(shè)置相同參數(shù)的情況下,通過(guò)評(píng)分和top?N預(yù)測(cè)來(lái)評(píng)估推薦算法的性能。
本文算法涉及參數(shù)α與β,其中,α為用戶間綜合信任值在綜合直接信任值中所占比重,β為用戶間全局信任值在綜合信任值中所占比重。如圖5 所示,不同α值對(duì)預(yù)測(cè)評(píng)分的平均絕對(duì)誤差的影響較大,在α=0.1 和β=0.9 時(shí),平均絕對(duì)誤差值最小,覆蓋率與F1 值最大,分別為0.45、0.593 和0.715,說(shuō)明當(dāng)數(shù)據(jù)稀疏和冷啟動(dòng)用戶較多時(shí),本文算法更依賴于通過(guò)用戶之間的信任傳遞來(lái)獲得最佳信任近鄰以實(shí)現(xiàn)評(píng)分預(yù)測(cè)。
圖5 α 值對(duì)推薦質(zhì)量的影響Fig.5 The effect of α values on recommendation quality
圖6 給出了本文算法在不同近鄰個(gè)數(shù)時(shí)的推薦質(zhì)量比較結(jié)果??梢钥闯?,隨著近鄰個(gè)數(shù)的增加,推薦質(zhì)量不斷降低,最終趨于平緩,其中MAE 隨著近鄰個(gè)數(shù)的增加而增加,原因是隨著近鄰個(gè)數(shù)的增加用戶間綜合信任值不斷減小,導(dǎo)致推薦質(zhì)量不斷降低,最終趨于平緩,而COV 和F1 值隨著近鄰個(gè)數(shù)的增加而降低,從而證明本文算法在近鄰個(gè)數(shù)為5 時(shí)推薦質(zhì)量較優(yōu)。
圖6 近鄰個(gè)數(shù)對(duì)推薦質(zhì)量的影響Fig.6 Influence of the number of neighbors on recommendation quality
圖7 給出了本文算法與對(duì)比算法在不同近鄰個(gè)數(shù)下的MAE 變化情況??梢钥闯?,在不同近鄰個(gè)數(shù)時(shí),F(xiàn)CMCF 和BUCF 算法的MAE 均是先下降后上升,最終趨于平穩(wěn),且MAE 值都在1.0 以上,而本文算法與BTCF算法均是隨著近鄰個(gè)數(shù)的增加MAE值不斷增加,最終趨于穩(wěn)定,且MAE 明顯要比FCMCF 和BUCF 算法小很多。
圖7 4 種推薦算法的MAE 比較Fig.7 MAE comparison of four recommendation algorithms
圖8、圖9 給出了本文算法與對(duì)比算法在不同近鄰個(gè)數(shù)時(shí)的COV 和F1 值變化情況。可以看出,4 種推薦算法隨著近鄰個(gè)數(shù)的增加,為目標(biāo)用戶推薦的長(zhǎng)尾商品和個(gè)性化商品減少導(dǎo)致COV 不斷減少。當(dāng)近鄰個(gè)數(shù)為35~40 時(shí),本文算法與對(duì)比算法在COV 上沒(méi)有很大差別,但當(dāng)近鄰個(gè)數(shù)為5~20 時(shí),本文算法相比對(duì)比算法對(duì)于長(zhǎng)尾商品的挖掘效果更好,并且具有更優(yōu)的推薦效果。
圖8 4 種推薦算法的COV 比較Fig.8 COV comparison of four recommendation algorithms
圖9 4 種推薦算法的F1 值比較Fig.9 F1 values comparison of four recommendation algorithms
綜合以上實(shí)驗(yàn)結(jié)果表明,本文算法相比傳統(tǒng)基于用戶的推薦算法、基于模糊C 均值聚類的協(xié)同過(guò)濾算法和基于隱式信任的推薦算法在平均絕對(duì)誤差、對(duì)長(zhǎng)尾商品的挖掘能力以及綜合評(píng)價(jià)指標(biāo)上具有更好的性能表現(xiàn),特別是在近鄰個(gè)數(shù)較少的情況下,本文算法在數(shù)據(jù)稀疏、冷啟動(dòng)問(wèn)題下仍能為目標(biāo)用戶進(jìn)行精準(zhǔn)推薦。
本文提出一種基于用戶模糊聚類的綜合信任推薦算法,使用用戶信任數(shù)據(jù)構(gòu)建信任網(wǎng)絡(luò)計(jì)算用戶間顯式信任值,利用評(píng)分?jǐn)?shù)據(jù)計(jì)算用戶間動(dòng)態(tài)隱式信任值,并將用戶間顯式信任與隱式信任相融合得到綜合直接信任值,通過(guò)動(dòng)態(tài)結(jié)合用戶綜合直接信任值與Jaccard 全局信任值得到用戶綜合信任值,同時(shí)利用綜合信任值取代傳統(tǒng)基于用戶的協(xié)同過(guò)濾中的相似度對(duì)目標(biāo)用戶實(shí)現(xiàn)精準(zhǔn)推薦。實(shí)驗(yàn)結(jié)果表明,本文算法相比傳統(tǒng)推薦算法在平均絕對(duì)誤差、覆蓋率以及F1 值指標(biāo)上具有更好的性能表現(xiàn)。后續(xù)將研究用戶間的信任傳播對(duì)推薦系統(tǒng)的性能影響,進(jìn)一步提升推薦質(zhì)量與用戶體驗(yàn)。