李玲玲 ,黃 俊,王 粵
(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)
隨著物聯(lián)網(wǎng)、云計算的不斷發(fā)展,人們面臨的信息量呈爆炸式增長,如何在短時間內(nèi)為用戶提供有效的個性化推薦尤其重要。協(xié)同過濾便于理解,適用于各種行業(yè),是當(dāng)前推薦系統(tǒng)中運用最常見的方法之一,其主導(dǎo)思想是將用戶過去的行為信息進行挖掘與分析,以獲得用戶偏好[1]。協(xié)同過濾算法通常可以分為基于內(nèi)存和基于模型兩類方法。基于內(nèi)存的協(xié)同過濾已經(jīng)在各種商業(yè)平臺得到了最大化使用[2],主要是從用戶或者項目的角度進行推薦?;谀P偷姆椒ㄖ饕峭ㄟ^使用機器學(xué)習(xí)算法[3],對數(shù)據(jù)的訓(xùn)練集進行訓(xùn)練以建立模型,并使用訓(xùn)練好的模型給用戶推薦可能喜歡的項目[4]。由于該方法對數(shù)據(jù)信息進行了訓(xùn)練,與基于內(nèi)存的方法相比具有更好的性能。其中,基于矩陣分解的模型受到了研究者們的廣泛關(guān)注。比如,Mnih[5]將用戶評分信息與概率矩陣相結(jié)合來進行推薦;Ma[6]、Jamali[7]、Yang[8]通過分析用戶評分和社交網(wǎng)絡(luò)中的用戶關(guān)系,并與矩陣分解模型中用戶特征向量融合,完成推薦。
雖然將協(xié)同過濾算法運用在推薦系統(tǒng)中已經(jīng)獲得了較好的效果,推薦質(zhì)量也提高了很多,但在實際生活中仍然存在著一些難以解決的問題:一是數(shù)據(jù)稀疏性問題;二是惡意推薦問題;三是推薦精度不高。針對這些問題,大量學(xué)者對社交關(guān)系以及社交網(wǎng)絡(luò)中朋友的選擇進行了深入研究[9-10],發(fā)現(xiàn)其對推薦質(zhì)量有很大的幫助。
在解決數(shù)據(jù)稀疏和準(zhǔn)確度不高的問題時,Li[11]通過直接和間接信任關(guān)系構(gòu)建了社交網(wǎng)絡(luò)同心層模型,并融入矩陣分解推薦算法中,提高了用戶特征矩陣的準(zhǔn)確度,從而提高了評分預(yù)測的準(zhǔn)確性。還有的學(xué)者通過引入用戶偏好、社交關(guān)系和社交活躍度等方法來解決這個問題。比如,王運等人[12]使用了用戶評分信息計算隱式的用戶偏好,從而得到用戶相似度,然后將用戶相似度和物品相似度融入到矩陣分解中,并證明了該方法的有效性;Ju等人[13]同時引入了社交關(guān)系和信任關(guān)系,將社交關(guān)系和用戶偏好相結(jié)合計算得到信任度,然后根據(jù)信任度進行評分預(yù)測;Ran等人[14]通過社交活躍度描述不同用戶對于朋友的影響,并將社交活躍度與矩陣分解相結(jié)合,使得通過社交活躍度增強用戶間的信任度,從而增加親密朋友間的關(guān)系。
盡管在上述文獻中分別使用了用戶偏好和社交活躍度,但在計算用戶偏好時,沒有考慮只有少數(shù)評分的用戶;在計算社交網(wǎng)絡(luò)中的信任時,只單純地將社交活躍度與概率矩陣分解融合,沒有考慮用戶之間存在的其他新人用戶。為此,本文提出了一種融合用戶偏好和社交活躍度的概率矩陣分解推薦算法(Probabilistic Matrix Factorization Recommendation Algorithm Combining User Preference and Social Activity,UPSA-PMF)。該算法在使用用戶偏好計算用戶信任度時,使用了用戶間共同已評項目數(shù)量在兩個用戶的總共評分?jǐn)?shù)量的比重來解決評分較少的用戶帶來的準(zhǔn)確度不高的問題。在計算社交網(wǎng)絡(luò)中的信任度時,考慮了社交網(wǎng)絡(luò)中活躍的用戶在用戶信任度中的影響。在得到這兩部分信任度后,采用動態(tài)組合的方式,精準(zhǔn)地提取用戶間的信任程度,并與概率矩陣中的用戶特征矩陣結(jié)合,以便更精準(zhǔn)地預(yù)測用戶特征矩陣,使得預(yù)測的評分準(zhǔn)確性更高。
(1)
(2)
(3)
式中:I為協(xié)方差矩陣。由貝葉斯推導(dǎo)公式可得到用戶特征向量Pi和項目特征向量Qj的后驗概率為
(4)
將公式(4)最大化得到損失函數(shù)最小值,即為最終目標(biāo)函數(shù),其公式如下:
(5)
根據(jù)前面的分析可知,將信任度融入到矩陣分解中,能夠較大地改善冷啟動和數(shù)據(jù)稀疏帶來的影響,而對不同信任度的充分利用不僅能夠提高推薦的可信程度,還能提高評分預(yù)測的準(zhǔn)確性。分析概率矩陣分解的原理可知,在分解時會分成維度較低的用戶和項目特征矩陣,而后對評分值進行預(yù)測。因此分解的這兩個矩陣越精準(zhǔn),則預(yù)測的項目分值越接近用戶偏好。在本文中,考慮了提升用戶特征矩陣的精準(zhǔn)度從而提升預(yù)測項目分值的準(zhǔn)確度,圖1為本文的UPSA-PMF算法圖解。
圖1 UPSA-PMF算法圖解
在推薦算法中,用戶對項目具有評分的行為,根據(jù)相關(guān)相似度計算方法,可以分析得到用戶對不同項目的可能評分情況。
對于用戶i和用戶t的相似度,若采用Pearson相關(guān)系數(shù)計算,其計算公式如(6)所示:
(6)
假設(shè)用戶之間的共同已評項目數(shù)量很少,且分值很接近,根據(jù)公式(6)便會得到較高的相似度,但結(jié)果不準(zhǔn)確,因為基數(shù)較小,具有偶然性。因此,考慮將用戶間共同已評項目數(shù)量在兩個用戶的總共評分?jǐn)?shù)量的比重作為平衡因子Ni,t,改善用戶評分?jǐn)?shù)據(jù)稀疏的問題,其計算公式如(7)所示:
(7)
傳統(tǒng)的Pearson相關(guān)系數(shù)沒有考慮熱門項目對相似度帶來的影響,使得對所有項目都無差別對待。然而在生活中,熱門項目往往反映的都是大眾的普遍愛好,不能完全代表用戶的個人偏好。相反,如果兩個用戶對某個冷門項目進行了評分,則更能確切地反映出用戶間的偏好相似性。因此,本文在計算用戶相似度時,引入熱門項目懲罰因子Wi,t,計算公式如下:
(8)
綜上,結(jié)合了平衡因子和熱門懲罰因子的改進Pearson相關(guān)系數(shù)如公式(9)所示:
(9)
根據(jù)用戶相似度,找到偏好相似用戶,預(yù)測目標(biāo)用戶i已評項目的分?jǐn)?shù),其計算公式如(10)所示:
(10)
(11)
通過計算用戶間在所有共同評過分的項目上的信任度的均值,即為本節(jié)所求的基于用戶偏好的用戶信任度:
(12)
2.2.1 社交活躍度
社交活躍度是通過用戶對朋友意見的依賴程度來表示,可以分析社交網(wǎng)絡(luò)中不同用戶間興趣偏好的影響。其核心思想有兩個:一是如果用戶有大量朋友,則表明該用戶的社交活躍度較高;二是如果用戶的朋友很少是其他用戶的朋友,則表明該用戶處于活躍狀態(tài)。
(13)
式中:β為0.15,是PageRank算法的另一種改進算法Personalized PaneRank算法中的取值,主要用來平衡某些用戶隨機的采納朋友的意見;η為阻尼系數(shù),通常取值為0.85;Ui是用戶i的所有朋友用戶集合。從公式(13)可以看出,如果用戶有很多朋友,則該用戶獲得社交活躍度的來源就很多;如果用戶的朋友很少是其他用戶的朋友,則分母就小,該用戶的社交活躍度的比重就越大。
計算社交活躍度時,采用迭代的方式,并把每個用戶的社交活躍度的初值設(shè)置成1,最大迭代次數(shù)cMAX設(shè)成60,具體步驟的偽代碼如下:
Input:user social relationsS,the maximum number of iterationscMAX,damping coefficientη,initial social activity
Output:social activity of each usersa
1.{ forc=1 tocMAXdo
2. { fori=1 tomdo
5. continue
6.}
7. }
8.}
2.2.2 社交網(wǎng)絡(luò)中的用戶間信任度
在社交網(wǎng)站中,很少通過直接打等級來表示用戶間的信任程度,大多數(shù)都使用二值型,即信任和不信任。但該方法存在的問題是對用來計算信任的信息太統(tǒng)一,使得不能很好地區(qū)分用戶對信任用戶集合中的用戶有什么不同。因此,本文采用SimRank算法[16]計算社交網(wǎng)絡(luò)中用戶間的信任度。令用戶i和用戶t的信任度為soti,t,指向用戶i的所有用戶集合為U(i),計算方法分兩種情況:
(1)當(dāng)U(i)=φ或U(i)=φ時,soti,t=0;
(2)在其他情況時,
(14)
式中:η為2.2.1節(jié)所用的阻尼系數(shù)。
2.2.3 基于社交活躍度的用戶間的信任度
在實際生活中,如果用戶與非活躍用戶建立了朋友關(guān)系,則該關(guān)系可能會更可靠,Gu等人[17]驗證了這個猜想。因此,將社會活躍度作為一個懲罰因子,修正社交網(wǎng)絡(luò)中的信任度,能到更準(zhǔn)確的用戶間的信任度。其計算公式如下:
(15)
將基于用戶偏好的用戶間信任度和基于社交活躍度的用戶間信任相結(jié)合,即得到融合用戶偏好和社交活躍度的用戶間的綜合信任度,其結(jié)合方式采用文獻[18]的動態(tài)調(diào)節(jié)方法。該方法可以提高對鄰居的識別能力,能有效降低數(shù)據(jù)稀疏,使得推薦質(zhì)量提高。其計算公式如下:
(16)
式中:nmin和nmax表示兩個用戶共同評分項目個數(shù)的最小值和最大值,n表示兩用戶間的共同評分項目數(shù)。由于該計算公式采用的分段函數(shù),能根據(jù)共同評分項目數(shù)動態(tài)調(diào)整基于用戶偏好的信任度和基于社交活躍度的信任度的權(quán)重,使得最終計算出的信任度會更加準(zhǔn)確。
假設(shè)用戶i根據(jù)2.1節(jié)、2.2節(jié)和2.3節(jié)計算出的信任用戶集合為Mi,由于用戶的偏好會受到信任用戶的影響,因此利用信任用戶l(l∈Mi)的特征向量更正用戶i的特征向量,則更正后特征向量Pi為
(17)
將公式(17)以矩陣的形式表述,如公式(18)所示,其含義是將用戶對其信任用戶的信任值與原始的特征向量的乘積相加即得到更正后的特征向量。
(18)
假設(shè)用戶間的綜合信任度矩陣的向量Ti先驗概率且服從高斯分布,則有
(19)
因此,用戶特征向量在融入了綜合信任度數(shù)據(jù)之后的概率分布為
(20)
利用貝葉斯推導(dǎo),加入了綜合信任度數(shù)據(jù)和概率矩陣分解的后驗分布如下:
(21)
對公式(21)取對數(shù)并最大化得到最小損失函數(shù),即得到最終目標(biāo)函數(shù)。其計算公式如下:
(22)
(23)
(24)
使用公式(25)和(26)迭代更新Pi和Qj,得到目標(biāo)函數(shù)最小值。
(25)
(26)
式中:α為步長即學(xué)習(xí)速率,表示每次迭代時選取數(shù)據(jù)的變化大小。最后計算用戶i對項目j的預(yù)測評分Ri,j:
(27)
本文的UPSA-PMF算法步驟的偽代碼如下:
Input:ratings matrixR,user social matrixST,predicted score deviationγ,learning rateα,λU,λI,λT,nmin,nmax
Output:user latent feature matrixP,item latent feature matrixQ
1.{ fori=1 tomdo # step 1:calculate comprehensive trust
2. forj=1 tomdo
3. {rt←rt[i][j] # caclulate the user sim by formula(12)
4.st←st[i][j] # caclulate the user sim by formula(15)}
5. forj=1 tomdo
6. {T←T[i][j] # caclulate the user sim by formula(16)}
7.initalize latent feature matrix:P,Q~N(x|0,δ2)
# step 2:gradient descent
8.for (i,j) 9.returnP,Q 10.} 本文實驗采用公開的Epinions數(shù)據(jù)集,包含了所需的用戶評分?jǐn)?shù)據(jù)和社交關(guān)系數(shù)據(jù),其中包含了49 289名用戶對139 738個項目的664 824條評分?jǐn)?shù)據(jù),以及487 183名用戶之間的信任關(guān)系數(shù)據(jù)。用戶的評分范圍為1~5,用戶之間的信任關(guān)系不對稱。在本文實驗中,采用五折交叉驗證法進行驗證[19],即隨機選取Epinions數(shù)據(jù)集的80%數(shù)據(jù)作為訓(xùn)練集,剩下的20%作為測試集。 為了分析本文所提算法的優(yōu)劣,采用平均絕對誤差(Mean Absolute Error,MAE)和均方根誤差(Root Mean Square Error,RMSE)作為評價預(yù)測評分準(zhǔn)確性的評價指標(biāo),其定義如下: (27) (28) 式中:Γ表示測試集中的評分?jǐn)?shù)據(jù)信息。將所有預(yù)測得到的分值與測試集中的真實分值進行比對,通過所得評分差值計算MAE和RMSE,其值越小,表示評分偏差越小,算法效果越好,準(zhǔn)確率越高。 在本文的算法中,包含的參數(shù)有特征因子個數(shù)k、評分偏差閾值γ、迭代次數(shù)d、用戶間的共同評分項目的最小個數(shù)nmin和最大個數(shù)nmax,以及正則化系數(shù)和學(xué)習(xí)速率。在本文中,為了減小算法復(fù)雜度的同時又不失一般性,將正則化系數(shù)設(shè)置為λU=λI=λT=0.001。對于學(xué)習(xí)速率α,由于該參數(shù)只影響算法取值的快慢,不影響算法結(jié)果,因此,將α設(shè)為1。 對于參數(shù)k,通常取值為5或10。在本文實驗中,通過對比在不同迭代次數(shù)下的MAE和RMSE的變化情況來確定參數(shù)k,實驗結(jié)果如圖2所示。 (a)參數(shù)k對MAE的影響 (b)參數(shù)k對RMSE的影響圖2 不同迭代次數(shù)下參數(shù)k對MAE、RMSE的影響 由圖2可知,隨著迭代次數(shù)的增加,MAE和RMSE的值不斷減??;當(dāng)參數(shù)k為5時,MAE和RMSE的值整體比k為10時的結(jié)果差,因此,選擇參數(shù)k=10。 參數(shù)γ用來評估預(yù)測評分與真實評分的偏差多少為可靠,其值越小,對于評分?jǐn)?shù)據(jù)的相似性越嚴(yán)苛,但也表明用戶偏好越相似,評分越可靠??紤]到該值設(shè)置得過低會引入過多的干擾數(shù)據(jù),影響推薦的結(jié)果,設(shè)置得過高將導(dǎo)致數(shù)據(jù)稀疏性越大,因此將γ設(shè)置在[0.9,1.5]進行實驗,結(jié)果如圖3所示。 (a)參數(shù)γ對MAE的影響 (b)參數(shù)γ對RMSE的影響圖3 參數(shù)γ對MAE、RMSE的影響 從圖3可以看出,在不同的迭代次數(shù)下,MAE和RMSE的趨勢先減小后增大,當(dāng)?shù)螖?shù)為350時,γ=1.2時取得最優(yōu)值,因此將參數(shù)γ設(shè)為1.2。 參數(shù)nmin和nmax用于調(diào)整最終的用戶間信任度主要依賴于2.1節(jié)的信任度還是2.2節(jié)的信任度。參考文獻[18]的實驗,本文將nmin設(shè)置為0,然后將參數(shù)nmax設(shè)為{5,6,7,8,9,10}進行實驗,結(jié)果如圖4所示。 (a)參數(shù)nmax對MAE的影響 (b)參數(shù)nmax對RMSE的影響圖4 參數(shù)nmax對MAE、RMSE的影響 從圖4可以看出,隨著迭代次數(shù)的增加,MAE和RMSE的值在降低,表明推薦的準(zhǔn)確度在提升,并在nmax為5時整體的推薦效果最好,因此將參數(shù)nmax設(shè)為5。 為了驗證本文算法的推薦質(zhì)量,選擇了4種推薦算法進行比對分析。 (1)PMF[5]:該算法只利用了評分信息。 (2)SoRec[6]:該算法將用戶評分矩陣和社交關(guān)系矩陣同步分解,并通過共享的用戶特征與概率矩陣因子模型相融合。 (3)SocialMF[7]:該算法假設(shè)目標(biāo)用戶的偏好受直連信任用戶的影響,并作用在概率矩陣分解過程中的用戶特征向量上。 (4)TrustMF[8]:該算法不僅把評分矩陣和關(guān)系矩陣同步分解,還把社交網(wǎng)絡(luò)區(qū)分為信任和被信任關(guān)系,并把這兩種關(guān)系結(jié)合到用戶特征向量中。 為了驗證本文在2.1節(jié)和2.2節(jié)改進的有效性,將對比實驗分為兩部分: (1)將2.1節(jié)基于用戶偏好計算得到的信任度用于推薦算法中,并命名為UP-PMF算法,然后與結(jié)合2.1節(jié)和2.2節(jié)的算法UPSA-PMF進行比較,分別進行5組實驗,驗證2.2節(jié)改進的有效性; (2)將本文結(jié)合2.1節(jié)和2.2節(jié)的UPSA-PMF算法與上述算法進行比較,分別取5組實驗的均值,驗證本文所提算法的有效性。 對于第一部分的實驗,其結(jié)果如圖5和圖6所示。在采用用戶偏好計算用戶間信任度時,結(jié)合使用社交活躍度計算用戶間信任度的UPSA-PMF算法的RMSE和MAE明顯比單獨使用用戶偏好計算用戶間信任度的UP-PMF算法結(jié)果好,因此,證明了2.2節(jié)改進的有效性。 圖5 UP-PMF和UPSA-PMF的MAE比較 圖6 UP-PMF和UPSA-PMF的RMSE比較 對于第二部分的實驗,結(jié)果如圖7和圖8所示。在指標(biāo)MAE上,本文提出的UPSA-PMF算法相對于前四種對比算法分別降低了18.9%、11.97%、9.67%和4.9%;在指標(biāo)RMSE上,本文提出的UPSA-PMF算法相對于前四種對比算法分別降低了11.9%、3.65%、1.79%、1.32%。根據(jù)對比圖可以得出以下結(jié)論: 圖7 不同推薦算法的MAE對比實驗 圖8 不同推薦算法的RMSE對比實驗 (1) 和僅僅使用了評分?jǐn)?shù)據(jù)的PMF算法相比,本文的UPSA-PMF算法的準(zhǔn)確率有所提高; (2) 與SoRec和SocialMF算法相比,由于UPSA-PMF算法使用共同評分項目平衡因子和熱門項目懲罰因子,改進了傳統(tǒng)的相似度計算,使得能適應(yīng)于具有不同評分?jǐn)?shù)量的用戶,提高了尋找近鄰用戶的準(zhǔn)確度; (3) 與TrustMF算法相比,UPSA-PMF算法因為使用了社交活躍度對用戶間的信任度進行了懲罰,使得用戶間的信任度有所區(qū)分; (4) 由于本文的UPSA-PMF算法是從評分?jǐn)?shù)據(jù)中的用戶偏好以及社交網(wǎng)絡(luò)中的社交活躍度的角度,能更加精確地刻畫用戶間的關(guān)系,因此具有更好的推薦效果。 本文根據(jù)用戶偏好和社交活躍度,提出了一種融合用戶偏好和社交活躍度的概率矩陣分解推薦算法。在根據(jù)用戶偏好求信任度時,根據(jù)兩個用戶間共同已評項目數(shù)量占總共評分?jǐn)?shù)量的比重來緩解用戶項目評分?jǐn)?shù)較少的情況,通過熱門懲罰因子來修正用戶間的相似度,能適應(yīng)具有不同評分?jǐn)?shù)量的用戶,并減少評分?jǐn)?shù)據(jù)的稀疏,然后根據(jù)評分偏差閾值計算用戶間的信任度。在根據(jù)社交活躍度求信任時,考慮到社交好友與活躍度不高的用戶的關(guān)系更牢固,因此把社交活躍度作為懲罰因子,得到更準(zhǔn)確的信任度。最后將兩種信任度結(jié)合,更精準(zhǔn)地刻畫了用戶間的關(guān)系,從而提高了推薦精度。未來,可以從用戶評分的時間信息考慮,將更多信息融入算法,以得到更精準(zhǔn)的推薦準(zhǔn)確度。3 實驗分析
3.1 數(shù)據(jù)集
3.2 評價指標(biāo)
3.3 參數(shù)調(diào)整
3.4 算法比對
4 結(jié)束語