公翠娟,賓 晟,孫更新
(青島大學數(shù)據(jù)科學與軟件工程學院,山東 青島 266071)
隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)冗余嚴重干擾了人們獲取有效信息。推薦系統(tǒng)很好地解決了這一問題,成為相關領域的研究熱點。推薦系統(tǒng)根據(jù)人們的興趣愛好、需求信息以及消費行為等[1],為用戶推薦其可能感興趣的商品或者信息。目前,推薦系統(tǒng)廣泛應用于各行各業(yè),如亞馬遜的商品推薦,iTunes的音樂推薦,Netflix的電影推薦等。目前,推薦系統(tǒng)采用的算法主要分為三類:協(xié)同過濾的推薦算法[2-3]、基于內(nèi)容的推薦算法[4]和混合推薦算法[5]。其中,協(xié)同過濾推薦算法是目前應用最廣泛的,它又分為三類:基于用戶(user-based)的協(xié)同過濾推薦算法[6]、基于項目(item-based)的協(xié)同過濾推薦算法[7]和基于矩陣分解(matrix factorization)的協(xié)同過濾推薦算法[8]。基于矩陣分解的協(xié)同過濾推薦算法因在Netflix Prize大賽上的突出表現(xiàn)被越來越多的研究人員所關注,該算法將用戶對商品的評分以矩陣的形式表示,將矩陣進行分解來挖掘低維隱特征空間,進而得到兩個低維的用戶特征矩陣和商品特征矩陣,最后通過兩個低維的特征向量的內(nèi)積來刻畫用戶與物品之間的關聯(lián)性。雖然上述推薦算法得到了較好的推薦結果,但是用戶商品評分矩陣存在數(shù)據(jù)稀疏性以及分布不均等特點,導致推薦準確率低、冷啟動等問題。
針對上述問題,研究人員引入外來信息并在一定程度上較好地改善了推薦結果,物品內(nèi)容的描述與評論信息為物品增加了有用的信息保障;或者其他領域的信息同時服務于用戶和商品也會對推薦的結果造成影響。由于傳統(tǒng)的推薦算法忽略了用戶之間的社交關系對于推薦結果的影響,社交關系能夠體現(xiàn)出用戶之間喜好的相似性,單純考慮用戶對商品的評分已經(jīng)不能滿足推薦的需求,因此將社交關系引入推薦系統(tǒng)中的社會化推薦算法成為當前推薦系統(tǒng)研究的熱點[9],從最初直接利用用戶間的直接社交信息,到近年來通過相關算法獲得用戶間的間接關系構建模型進行推薦,都大大提高了推薦的準確率。根據(jù)社交推薦模型的構建方式對其梳理:1)依據(jù)用戶社交關系,改變當前用戶的隱性變量;2)同步分解評分矩陣和社交矩陣獲取推薦隱性變量。
對于社會化推薦算法,最早可追溯到1997年Kautz等人提出的ReferralWeb系統(tǒng)[10],其在傳統(tǒng)協(xié)同過濾模型上融合社交網(wǎng)絡,為用戶提供了更加準確的推薦結果,由此證明融合社交關系為推薦系統(tǒng)提供了更加可靠的數(shù)據(jù),同時為社會化推薦算法提供了新思路;Yang[11]等人采用矩陣分解技術,根據(jù)用戶的信任關系將其映射到低維潛在特征空間,目的是更準確地反映用戶的相互影響,有效地提高了推薦的準確性;李鎮(zhèn)東[12]等人提出了一種以單調飽和函數(shù)為權,利用目標用戶和其他項目共同評分個數(shù)相對用戶總數(shù)值的真切值作為傳統(tǒng)相似度系數(shù)的加權二部圖推薦算法;曹玉琳[13]等人通過標簽的相似性來計算用戶之間和資源之間的相似性,進行近鄰選擇,提出了一種融合社會標簽的近鄰感知的聯(lián)合概率矩陣分解推薦算法,有效利用標簽的語義性提高了推薦質量;王瑞琴[14]等人借鑒社會心理學中的信任產(chǎn)生原理,基于用戶信譽度的信任擴展方法,緩解數(shù)據(jù)的稀疏性問題,提出了一種信任加強的矩陣分解推薦算法;Ma[15]等人基于用戶特征矩陣共享表示的方法,提出了一種基于用戶特征矩陣共享表示的社交推薦模型,有效提高了推薦的準確性。
大多數(shù)社會化推薦算法只是引入一種社交關系,但是加入的每一種社交關系對推薦結果的影響是不同的,所以引入一種社交關系肯定會影響推薦結果的準確性。為了解決這一問題,本文基于多子網(wǎng)復合復雜網(wǎng)絡模型構建多關系社交網(wǎng)絡[16],利用共享用戶特征矩陣,將多種社交關系引入推薦系統(tǒng),提出了一種融合多種社交關系的矩陣分解推薦算法。
假設推薦系統(tǒng)中包括m個用戶和n個商品,Rm×n=[Rij]m×n表示用戶—商品評分矩陣,如圖1所示,Rij代表用戶i對商品j的評分,其中Rij∈[1,5],通常Rm×n中有許多空元素,導致用戶—商品評分矩陣是一個非常稀疏的矩陣。
在社交網(wǎng)絡中,如圖2所示,用戶之間的社交關系可以用矩陣C表示:C=[Cik]m×m,Cik的值為0或1,0表示用戶之間不存在社交關系,1表示用戶之間存在社交關系。
圖1 用戶商品評分矩陣Fig.1 User item rating matrix
圖2 用戶社交關系矩陣
傳統(tǒng)的矩陣分解算法[17]模型如圖3a所示,用戶商品評分矩陣Rm×n被分解成兩個低維的特征矩陣Um×k,Vk×n,分別表示用戶特征矩陣和商品特征矩陣,其中k表示向量的維數(shù),一般情況下k遠遠小于m和n,進而達到降維的目的。Ui和Vj分別表示對應的用戶ui和商品vj的潛在特征空間,通過UiTVj預測評分矩陣中的空值,進而得到預測評分矩陣。
圖3 推薦算法模型
為了方便研究,使用函數(shù)f(x)=1/Rmax,把用戶對商品的評分映射到[0,1]區(qū)間,其中Rmax表示用戶對商品的最大評分。傳統(tǒng)的矩陣分解只是利用了簡單的線性模型R=UTV,得到的結果會過于擬合評分矩陣,導致預測評分過分偏離真實的數(shù)據(jù),最終預測結果失真[18]。所以,本文引用logistic函數(shù)g(x)=1/(1+e-x),使得在[0,1]范圍內(nèi)界定用戶對商品的評分,所以觀測得到的條件概率分布可定義為
(1)
(2)
(3)
然后經(jīng)過貝葉斯推理可得到U與V聯(lián)合的后驗概率分布:
(4)
傳統(tǒng)的推薦算法中用戶之間是相互獨立的,這忽略了用戶之間的社交關系。在現(xiàn)實世界中,如果兩個用戶之間存在社交關系,則用戶之間的喜好以及對商品的選擇是會相互影響的,單純考慮用戶對商品的評分已經(jīng)無法滿足推薦的需求。因此這就需要將社交關系融入到推薦系統(tǒng),進而提高推薦的準確率。
假設用戶之間只有一種社交關系,通過共享用戶的潛在特征空間將社交關系融入到矩陣分解推薦算法中,即社交關系的用戶潛在特征空間與用戶評分矩陣中的用戶潛在空間是相同的,然后通過概率矩陣分解進行分析。C=Cik表示一個m×m的社交關系矩陣,將社交網(wǎng)絡分解成U∈Rl×m和Z∈Rl×m分別表示用戶特征矩陣和社交特征矩陣,將觀測到的社交關系的條件分布定義為:
(5)
假設用戶特征向量U和社交特征向量Z服從均值為0的球形高斯先驗分布:
(6)
(7)
然后通過簡單的貝葉斯推理,就可以得到:
(8)
將一種社交關系融入到矩陣分解推薦系統(tǒng),算法模型如圖3b所示,同時分解用戶商品評分矩陣和社交關系矩陣,得到一個潛在的用戶特征空間,根據(jù)共享用戶特征空間,將用戶商品評分矩陣與社交關系矩陣緊湊聯(lián)系,社會推薦的后驗分布取對數(shù)可得:
(9)
其中,C是一個不依賴于參數(shù)的常數(shù),最大化的后驗分布函數(shù)等價于最小化的目標函數(shù),目標函數(shù)為
(10)
(11)
采用梯度下降算法對目標函數(shù)進行求解:
(12)
(13)
(14)
(15)
本文采用Epinions作為實驗數(shù)據(jù)集,Epinions是一個知識共享網(wǎng)站和評論網(wǎng)站,用戶可以評論商品或者給出從1到5的整數(shù)評級。新用戶可以根據(jù)這些評論或者評級來判定商品是否值得購買或者電影是否值得觀看。Epinions包括用戶的信任關系,用戶對商品的打分信息以及評論信息。Epinions數(shù)據(jù)集由49 290個用戶組成,包括139 738個不同的項目,664 824條評論信息,487 181條信任關系。
在實驗過程中采用五折交叉驗證方法,對推薦模型進行訓練與測試。將Epinions數(shù)據(jù)集平均分成五等份,每次實驗中,隨機選取一組作為測試集,其余四組作為訓練集。進行5次實驗,確保每組測試集都被測試。實驗的最終結果為5次實驗的平均值。
本文采用三個不同的評價指標衡量推薦的準確性,分別為平均絕對值誤差(Mean Absolute Error, MAE)、均方根誤差(Root Mean Squared Error, RMSE)[19]和標準平均絕對誤差(Normalized Mean Absolute Error,NMAE)[20]。這3種評價指標通過計算預測評分與真實評分之間的誤差來衡量推薦算法的準確度,它們的值越小,表示推薦的準確性越高。MAE、RMSE和NMAE的定義分別如式(16)~(18)。
(16)
(17)
(18)
其中,rij是用戶i對商品的j的真實評分,r′ij是用戶ui對商品j的預測評分,EP表示測試集,rmax和rmin分別表示用戶評分區(qū)間的最大值和最小值。
在實驗過程中,算法用戶特征個數(shù)K=5,迭代次數(shù)為1 000次,λU=λV=0.001。參數(shù)α用于調節(jié)社交關系矩陣和用戶評分矩陣之間的比重,參數(shù)β用于調節(jié)兩種社交關系之間的所占比重,α、β的不同取值將直接影響推薦的結果。采用仿真實驗的方法確定α和β的取值。β=1時表示只引入了一種社交關系,當α取不同的值時,其中MAE的值在數(shù)據(jù)集上的變化如圖4所示。
圖4 參數(shù)α的影響
由圖4可知,在Epinions數(shù)據(jù)集中,當α=0.8時,MAE和RMSE取值最小,即在只有一種社交關系的時候,α=0.8時推薦準確率最高。
用Ou、Ov分別表示用戶u和v評價過的商品集,用戶u和v共同評分的商品越多,那么表明他們可能有相同的興趣并且彼此相互影響,具體定義如式(19):
(19)
當fuv>0.2,代表用戶u和v興趣相似,設滿足這個條件的用戶之間的關系為c2關系。繼續(xù)加載c2關系。當α、β取不同的值時,在Epinions數(shù)據(jù)集上MAE和RMSE的變化如圖5所示。
圖5 參數(shù)α、β的影響
由圖5可知,在Epinions數(shù)據(jù)集中,當參數(shù)α=0.3,β=0.4時,MAE的值最小,即在該算法中的推薦準確率最高,同理,當α=0.7,β=0.5時,RMSE的值最小,即在該算法中的推薦準確率最高。
為了驗證本文所提的算法MDRS2的性能以及多種社交關系對推薦的影響,本文將MDRS2算法與SocRec算法[14](Social Recommendation Using Probabilistic Matrix Factorization,SocRec),TDSRec算法[19](Similarity Social Recommendation with Trust and Distrust Information)和MDRS1算法在Epinions數(shù)據(jù)集上進行比較。SocRec算法在矩陣分解的基礎上考慮了用戶之間的社會關系屬性,融入了一種社交關系;TDSRec算法在考慮社交網(wǎng)絡的同時,融合基于用戶評分偏好的相似性,共同對用戶評分矩陣中的數(shù)值進行了預測;MDRS1算法僅考慮了一種社交關系;MDRS2算法通過共享用戶特征空間,將用戶商品評分矩陣與社交關系矩陣緊湊聯(lián)系,將多種社交關系融入到矩陣分解中。實驗統(tǒng)計結果如表1所示。
表1 不同算法的實驗結果
由表1可知,在Epinions數(shù)據(jù)集中,本文提出的算法MDRS2的MAE、RMSE和NMAE的值相比其他方法的MAE、RMSE和NMAE的值要小,即預測的準確性較高。由此可見,引入兩種社交關系的推薦算法比其他三種推薦算法的準確率要高,表明在推薦算法中,引入用戶之間的多種關系將提高推薦的準確率,并且用戶之間的關系越多,推薦的準確率越高。
本文通過分解用戶商品評分矩陣,根據(jù)多子網(wǎng)復合復雜網(wǎng)絡,利用共享用戶的潛在特征空間將多種社交關系融入到矩陣分解推薦算法中。通過在真實數(shù)據(jù)集上的實驗證明了本文所提的融合多關系的矩陣分解推薦算法提高了推薦的準確率。說明引入多種社交關系可以更好地為用戶做個性化推薦,并且引入的關系越多,推薦的效果越好。在今后的研究中,可以將用戶的間接關系與直接關系相結合,來進一步研究社交關系對推薦的影響。