李玲玲 ,黃 俊,王 粵
(重慶郵電大學 通信與信息工程學院,重慶 400065)
隨著物聯網、云計算的不斷發展,人們面臨的信息量呈爆炸式增長,如何在短時間內為用戶提供有效的個性化推薦尤其重要。協同過濾便于理解,適用于各種行業,是當前推薦系統中運用最常見的方法之一,其主導思想是將用戶過去的行為信息進行挖掘與分析,以獲得用戶偏好[1]。協同過濾算法通??梢苑譃榛趦却婧突谀P蛢深惙椒??;趦却娴膮f同過濾已經在各種商業平臺得到了最大化使用[2],主要是從用戶或者項目的角度進行推薦?;谀P偷姆椒ㄖ饕峭ㄟ^使用機器學習算法[3],對數據的訓練集進行訓練以建立模型,并使用訓練好的模型給用戶推薦可能喜歡的項目[4]。由于該方法對數據信息進行了訓練,與基于內存的方法相比具有更好的性能。其中,基于矩陣分解的模型受到了研究者們的廣泛關注。比如,Mnih[5]將用戶評分信息與概率矩陣相結合來進行推薦;Ma[6]、Jamali[7]、Yang[8]通過分析用戶評分和社交網絡中的用戶關系,并與矩陣分解模型中用戶特征向量融合,完成推薦。
雖然將協同過濾算法運用在推薦系統中已經獲得了較好的效果,推薦質量也提高了很多,但在實際生活中仍然存在著一些難以解決的問題:一是數據稀疏性問題;二是惡意推薦問題;三是推薦精度不高。針對這些問題,大量學者對社交關系以及社交網絡中朋友的選擇進行了深入研究[9-10],發現其對推薦質量有很大的幫助。
在解決數據稀疏和準確度不高的問題時,Li[11]通過直接和間接信任關系構建了社交網絡同心層模型,并融入矩陣分解推薦算法中,提高了用戶特征矩陣的準確度,從而提高了評分預測的準確性。還有的學者通過引入用戶偏好、社交關系和社交活躍度等方法來解決這個問題。比如,王運等人[12]使用了用戶評分信息計算隱式的用戶偏好,從而得到用戶相似度,然后將用戶相似度和物品相似度融入到矩陣分解中,并證明了該方法的有效性;Ju等人[13]同時引入了社交關系和信任關系,將社交關系和用戶偏好相結合計算得到信任度,然后根據信任度進行評分預測;Ran等人[14]通過社交活躍度描述不同用戶對于朋友的影響,并將社交活躍度與矩陣分解相結合,使得通過社交活躍度增強用戶間的信任度,從而增加親密朋友間的關系。
盡管在上述文獻中分別使用了用戶偏好和社交活躍度,但在計算用戶偏好時,沒有考慮只有少數評分的用戶;在計算社交網絡中的信任時,只單純地將社交活躍度與概率矩陣分解融合,沒有考慮用戶之間存在的其他新人用戶。為此,本文提出了一種融合用戶偏好和社交活躍度的概率矩陣分解推薦算法(Probabilistic Matrix Factorization Recommendation Algorithm Combining User Preference and Social Activity,UPSA-PMF)。該算法在使用用戶偏好計算用戶信任度時,使用了用戶間共同已評項目數量在兩個用戶的總共評分數量的比重來解決評分較少的用戶帶來的準確度不高的問題。在計算社交網絡中的信任度時,考慮了社交網絡中活躍的用戶在用戶信任度中的影響。在得到這兩部分信任度后,采用動態組合的方式,精準地提取用戶間的信任程度,并與概率矩陣中的用戶特征矩陣結合,以便更精準地預測用戶特征矩陣,使得預測的評分準確性更高。

(1)

(2)
(3)
式中:I為協方差矩陣。由貝葉斯推導公式可得到用戶特征向量Pi和項目特征向量Qj的后驗概率為
(4)
將公式(4)最大化得到損失函數最小值,即為最終目標函數,其公式如下:


(5)

根據前面的分析可知,將信任度融入到矩陣分解中,能夠較大地改善冷啟動和數據稀疏帶來的影響,而對不同信任度的充分利用不僅能夠提高推薦的可信程度,還能提高評分預測的準確性。分析概率矩陣分解的原理可知,在分解時會分成維度較低的用戶和項目特征矩陣,而后對評分值進行預測。因此分解的這兩個矩陣越精準,則預測的項目分值越接近用戶偏好。在本文中,考慮了提升用戶特征矩陣的精準度從而提升預測項目分值的準確度,圖1為本文的UPSA-PMF算法圖解。

圖1 UPSA-PMF算法圖解
在推薦算法中,用戶對項目具有評分的行為,根據相關相似度計算方法,可以分析得到用戶對不同項目的可能評分情況。
對于用戶i和用戶t的相似度,若采用Pearson相關系數計算,其計算公式如(6)所示:
(6)

假設用戶之間的共同已評項目數量很少,且分值很接近,根據公式(6)便會得到較高的相似度,但結果不準確,因為基數較小,具有偶然性。因此,考慮將用戶間共同已評項目數量在兩個用戶的總共評分數量的比重作為平衡因子Ni,t,改善用戶評分數據稀疏的問題,其計算公式如(7)所示:
(7)
傳統的Pearson相關系數沒有考慮熱門項目對相似度帶來的影響,使得對所有項目都無差別對待。然而在生活中,熱門項目往往反映的都是大眾的普遍愛好,不能完全代表用戶的個人偏好。相反,如果兩個用戶對某個冷門項目進行了評分,則更能確切地反映出用戶間的偏好相似性。因此,本文在計算用戶相似度時,引入熱門項目懲罰因子Wi,t,計算公式如下:
(8)
綜上,結合了平衡因子和熱門懲罰因子的改進Pearson相關系數如公式(9)所示:

(9)
根據用戶相似度,找到偏好相似用戶,預測目標用戶i已評項目的分數,其計算公式如(10)所示:
(10)

(11)
通過計算用戶間在所有共同評過分的項目上的信任度的均值,即為本節所求的基于用戶偏好的用戶信任度:
(12)
2.2.1 社交活躍度
社交活躍度是通過用戶對朋友意見的依賴程度來表示,可以分析社交網絡中不同用戶間興趣偏好的影響。其核心思想有兩個:一是如果用戶有大量朋友,則表明該用戶的社交活躍度較高;二是如果用戶的朋友很少是其他用戶的朋友,則表明該用戶處于活躍狀態。

(13)
式中:β為0.15,是PageRank算法的另一種改進算法Personalized PaneRank算法中的取值,主要用來平衡某些用戶隨機的采納朋友的意見;η為阻尼系數,通常取值為0.85;Ui是用戶i的所有朋友用戶集合。從公式(13)可以看出,如果用戶有很多朋友,則該用戶獲得社交活躍度的來源就很多;如果用戶的朋友很少是其他用戶的朋友,則分母就小,該用戶的社交活躍度的比重就越大。
計算社交活躍度時,采用迭代的方式,并把每個用戶的社交活躍度的初值設置成1,最大迭代次數cMAX設成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 社交網絡中的用戶間信任度
在社交網站中,很少通過直接打等級來表示用戶間的信任程度,大多數都使用二值型,即信任和不信任。但該方法存在的問題是對用來計算信任的信息太統一,使得不能很好地區分用戶對信任用戶集合中的用戶有什么不同。因此,本文采用SimRank算法[16]計算社交網絡中用戶間的信任度。令用戶i和用戶t的信任度為soti,t,指向用戶i的所有用戶集合為U(i),計算方法分兩種情況:
(1)當U(i)=φ或U(i)=φ時,soti,t=0;
(2)在其他情況時,
(14)
式中:η為2.2.1節所用的阻尼系數。
2.2.3 基于社交活躍度的用戶間的信任度
在實際生活中,如果用戶與非活躍用戶建立了朋友關系,則該關系可能會更可靠,Gu等人[17]驗證了這個猜想。因此,將社會活躍度作為一個懲罰因子,修正社交網絡中的信任度,能到更準確的用戶間的信任度。其計算公式如下:
(15)
將基于用戶偏好的用戶間信任度和基于社交活躍度的用戶間信任相結合,即得到融合用戶偏好和社交活躍度的用戶間的綜合信任度,其結合方式采用文獻[18]的動態調節方法。該方法可以提高對鄰居的識別能力,能有效降低數據稀疏,使得推薦質量提高。其計算公式如下:
(16)
式中:nmin和nmax表示兩個用戶共同評分項目個數的最小值和最大值,n表示兩用戶間的共同評分項目數。由于該計算公式采用的分段函數,能根據共同評分項目數動態調整基于用戶偏好的信任度和基于社交活躍度的信任度的權重,使得最終計算出的信任度會更加準確。
假設用戶i根據2.1節、2.2節和2.3節計算出的信任用戶集合為Mi,由于用戶的偏好會受到信任用戶的影響,因此利用信任用戶l(l∈Mi)的特征向量更正用戶i的特征向量,則更正后特征向量Pi為
(17)
將公式(17)以矩陣的形式表述,如公式(18)所示,其含義是將用戶對其信任用戶的信任值與原始的特征向量的乘積相加即得到更正后的特征向量。
(18)
假設用戶間的綜合信任度矩陣的向量Ti先驗概率且服從高斯分布,則有
(19)
因此,用戶特征向量在融入了綜合信任度數據之后的概率分布為
(20)
利用貝葉斯推導,加入了綜合信任度數據和概率矩陣分解的后驗分布如下:
(21)
對公式(21)取對數并最大化得到最小損失函數,即得到最終目標函數。其計算公式如下:


(22)


(23)
(24)
使用公式(25)和(26)迭代更新Pi和Qj,得到目標函數最小值。
(25)
(26)
式中:α為步長即學習速率,表示每次迭代時選取數據的變化大小。最后計算用戶i對項目j的預測評分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數據集,包含了所需的用戶評分數據和社交關系數據,其中包含了49 289名用戶對139 738個項目的664 824條評分數據,以及487 183名用戶之間的信任關系數據。用戶的評分范圍為1~5,用戶之間的信任關系不對稱。在本文實驗中,采用五折交叉驗證法進行驗證[19],即隨機選取Epinions數據集的80%數據作為訓練集,剩下的20%作為測試集。 為了分析本文所提算法的優劣,采用平均絕對誤差(Mean Absolute Error,MAE)和均方根誤差(Root Mean Square Error,RMSE)作為評價預測評分準確性的評價指標,其定義如下: (27) (28) 式中:Γ表示測試集中的評分數據信息。將所有預測得到的分值與測試集中的真實分值進行比對,通過所得評分差值計算MAE和RMSE,其值越小,表示評分偏差越小,算法效果越好,準確率越高。 在本文的算法中,包含的參數有特征因子個數k、評分偏差閾值γ、迭代次數d、用戶間的共同評分項目的最小個數nmin和最大個數nmax,以及正則化系數和學習速率。在本文中,為了減小算法復雜度的同時又不失一般性,將正則化系數設置為λU=λI=λT=0.001。對于學習速率α,由于該參數只影響算法取值的快慢,不影響算法結果,因此,將α設為1。 對于參數k,通常取值為5或10。在本文實驗中,通過對比在不同迭代次數下的MAE和RMSE的變化情況來確定參數k,實驗結果如圖2所示。 (a)參數k對MAE的影響 (b)參數k對RMSE的影響圖2 不同迭代次數下參數k對MAE、RMSE的影響 由圖2可知,隨著迭代次數的增加,MAE和RMSE的值不斷減??;當參數k為5時,MAE和RMSE的值整體比k為10時的結果差,因此,選擇參數k=10。 參數γ用來評估預測評分與真實評分的偏差多少為可靠,其值越小,對于評分數據的相似性越嚴苛,但也表明用戶偏好越相似,評分越可靠??紤]到該值設置得過低會引入過多的干擾數據,影響推薦的結果,設置得過高將導致數據稀疏性越大,因此將γ設置在[0.9,1.5]進行實驗,結果如圖3所示。 (a)參數γ對MAE的影響 (b)參數γ對RMSE的影響圖3 參數γ對MAE、RMSE的影響 從圖3可以看出,在不同的迭代次數下,MAE和RMSE的趨勢先減小后增大,當迭代次數為350時,γ=1.2時取得最優值,因此將參數γ設為1.2。 參數nmin和nmax用于調整最終的用戶間信任度主要依賴于2.1節的信任度還是2.2節的信任度。參考文獻[18]的實驗,本文將nmin設置為0,然后將參數nmax設為{5,6,7,8,9,10}進行實驗,結果如圖4所示。 (a)參數nmax對MAE的影響 (b)參數nmax對RMSE的影響圖4 參數nmax對MAE、RMSE的影響 從圖4可以看出,隨著迭代次數的增加,MAE和RMSE的值在降低,表明推薦的準確度在提升,并在nmax為5時整體的推薦效果最好,因此將參數nmax設為5。 為了驗證本文算法的推薦質量,選擇了4種推薦算法進行比對分析。 (1)PMF[5]:該算法只利用了評分信息。 (2)SoRec[6]:該算法將用戶評分矩陣和社交關系矩陣同步分解,并通過共享的用戶特征與概率矩陣因子模型相融合。 (3)SocialMF[7]:該算法假設目標用戶的偏好受直連信任用戶的影響,并作用在概率矩陣分解過程中的用戶特征向量上。 (4)TrustMF[8]:該算法不僅把評分矩陣和關系矩陣同步分解,還把社交網絡區分為信任和被信任關系,并把這兩種關系結合到用戶特征向量中。 為了驗證本文在2.1節和2.2節改進的有效性,將對比實驗分為兩部分: (1)將2.1節基于用戶偏好計算得到的信任度用于推薦算法中,并命名為UP-PMF算法,然后與結合2.1節和2.2節的算法UPSA-PMF進行比較,分別進行5組實驗,驗證2.2節改進的有效性; (2)將本文結合2.1節和2.2節的UPSA-PMF算法與上述算法進行比較,分別取5組實驗的均值,驗證本文所提算法的有效性。 對于第一部分的實驗,其結果如圖5和圖6所示。在采用用戶偏好計算用戶間信任度時,結合使用社交活躍度計算用戶間信任度的UPSA-PMF算法的RMSE和MAE明顯比單獨使用用戶偏好計算用戶間信任度的UP-PMF算法結果好,因此,證明了2.2節改進的有效性。 圖5 UP-PMF和UPSA-PMF的MAE比較 圖6 UP-PMF和UPSA-PMF的RMSE比較 對于第二部分的實驗,結果如圖7和圖8所示。在指標MAE上,本文提出的UPSA-PMF算法相對于前四種對比算法分別降低了18.9%、11.97%、9.67%和4.9%;在指標RMSE上,本文提出的UPSA-PMF算法相對于前四種對比算法分別降低了11.9%、3.65%、1.79%、1.32%。根據對比圖可以得出以下結論: 圖7 不同推薦算法的MAE對比實驗 圖8 不同推薦算法的RMSE對比實驗 (1) 和僅僅使用了評分數據的PMF算法相比,本文的UPSA-PMF算法的準確率有所提高; (2) 與SoRec和SocialMF算法相比,由于UPSA-PMF算法使用共同評分項目平衡因子和熱門項目懲罰因子,改進了傳統的相似度計算,使得能適應于具有不同評分數量的用戶,提高了尋找近鄰用戶的準確度; (3) 與TrustMF算法相比,UPSA-PMF算法因為使用了社交活躍度對用戶間的信任度進行了懲罰,使得用戶間的信任度有所區分; (4) 由于本文的UPSA-PMF算法是從評分數據中的用戶偏好以及社交網絡中的社交活躍度的角度,能更加精確地刻畫用戶間的關系,因此具有更好的推薦效果。 本文根據用戶偏好和社交活躍度,提出了一種融合用戶偏好和社交活躍度的概率矩陣分解推薦算法。在根據用戶偏好求信任度時,根據兩個用戶間共同已評項目數量占總共評分數量的比重來緩解用戶項目評分數較少的情況,通過熱門懲罰因子來修正用戶間的相似度,能適應具有不同評分數量的用戶,并減少評分數據的稀疏,然后根據評分偏差閾值計算用戶間的信任度。在根據社交活躍度求信任時,考慮到社交好友與活躍度不高的用戶的關系更牢固,因此把社交活躍度作為懲罰因子,得到更準確的信任度。最后將兩種信任度結合,更精準地刻畫了用戶間的關系,從而提高了推薦精度。未來,可以從用戶評分的時間信息考慮,將更多信息融入算法,以得到更精準的推薦準確度。3 實驗分析
3.1 數據集
3.2 評價指標
3.3 參數調整






3.4 算法比對




4 結束語