劉春玲,張 黎
武漢紡織大學 機械工程與自動化學院,武漢 430200
隨著信息技術和互聯網的發展,人們逐漸進入信息爆炸的時代,如何從海量信息中快速獲取相關的信息已成為亟待解決的問題。推薦系統作為一種有效的信息過濾技術,是解決這一問題的重要手段,在各大電商平臺、音樂網站以及在線評論網站中有著廣泛的應用[1]。推薦系統通過分析用戶歷史行為(如評分、瀏覽記錄等),來預測用戶在不同項目上的興趣偏好,從而幫助用戶快速有效地獲取其需要或感興趣的項目。隨著推薦系統的發展,各類相關理論與技術應運而生,目前應用最廣泛、效果較好的是協同過濾(Collaborative Filtering)推薦算法。
協同過濾推薦算法[2-5]根據用戶的行為來分析用戶偏好,根據推測結果給出相關推薦內容,其中又以矩陣分解應用較廣。蘇慶等[6]考慮時間差因子、熱門物品權重因子以及冷門物品權重因子,提出一種改進模糊劃分聚類的協同過濾推薦算法。黃賢英等[7]考慮了用戶關系的不平衡性,提出一種改進用戶非對稱相似性的協同過濾推薦算法。Salakhutdinov等[8]從概率的角度解釋了傳統矩陣分解模型的合理性,并提出了概率矩陣分解模型(Probabilistic Matrix Factorization,PMF)。Saveski 等[9]融合項目內容信息和用戶歷史行為提出一種LCE(Local Collective Embeddings)算法,有效緩解了冷啟動問題。
融合用戶信息與矩陣分解的推薦算法在一定情況下行之有效,但仍受限于數據稀疏的問題,難以解決冷啟動問題,為此研究者們提出了社會化的推薦算法。為了平衡用戶間信息的不對稱性,Ma 等[10]考慮了用戶的社會信息,提出SoRec推薦算法。吳賓等[11]不僅考慮了用戶的社會信息,還將用戶的關聯關系作為考量因素,提出聯合正則化的矩陣分解算法。Guo 等[12]在SVD++模型的基礎上考慮用戶之間的顯式信任信息加入評分預測,通過用戶之間的信任關系對特征向量進行學習。Yang等[13]綜合考慮信任者和被信任者模型,提出了一種混合推薦算法TrustMF。Jamali 等[14]運用信任傳播方法,提出SocialMF,有效緩解了冷啟動問題。郭寧寧等[15]提出了一種融合社交網絡特征的協同過濾推薦算法,有效緩解了數據稀疏性對推薦結果的影響,并提高了推薦準確率。但以上算法的社會關系或者信任關系是顯式的,信息只能通過用戶標注來獲取。
針對上述算法存在的問題,本文提出一種改進非對稱相似度比和關聯正則化的推薦算法。考慮不同用戶與不同項目之間的不對稱關系,提出一種改進相關度計算式,在綜合考量項目與用戶兩種不同因素偏移量的補充量的基礎上,對評分預測式加以改進。同時針對用戶歷史行為信息不對稱的問題,利用傳統相似度獲取鄰域集合來表示用戶的社會關系,將關聯正則化用于約束矩陣分解目標函數,以此緩解數據稀疏帶來的用戶信息不對稱。實驗結果表明,與主流的推薦算法相比,該算法能夠更加有效地預測實際評分。
一般來說,用戶在評分的時候會有個人偏好,有的用戶評分普遍比其他用戶高,有的用戶則普遍偏低,因此,一般定義基礎偏移量bui來表示用戶和物品的偏好。

其中,表示所有評分的平均值,bu表示用戶u的評分偏好,bi表示用戶對項目i的評分偏好。例如小明給電影《魔戒》打分,《魔戒》的平均分為3.5 分,高一般電影1.0 分,小明給電影的平均評分高一般用戶0.1 分,則bui=3.5+1.0+0.1=4.6。
傳統的矩陣分解將預測評分矩陣∈Rm×n分解為用戶特征矩陣P∈Rm×k和項目特征矩陣Q∈Rk×m,其中k為特征個數。其用戶的評分預測計算式見式(2):

其中,pfu表示用戶u的第f個特征值,qfi表示項目i的第f個特征值。為了提高預測精度,需要使得預測值與真實值之間的差值最小,目標函數G見式(3):

其中,λ為正則項系數,為正則項,用于防止在訓練中出現過擬合。以bu為例,如果不增加正則項,在訓練參數時,參數迭代式為在增加正則項后,參數迭代式變為bu=(1-λα)bu-顯然1-λα小于1,實現了權重衰減,也減少了訓練中出現過擬合的可能。
實際情況中,不同用戶之間的評分數量存在較大差異,因此其潛在特征向量的樣本數也是不同的。對于這一情況,傳統的矩陣分解算法未予以考慮。黃賢英等[7]考慮了用戶關系的不平衡性,對評分預測式做出了一些改進,具體見式(4):

其中,wuv表示用戶u和用戶v之間的評分關系,作為bu偏移項,是對基礎偏移量的補充。當wuv和rui-bui較高時,說明預測值要低于實際值,此時正好可以補充預測值,使其更接近實際值。Rn(u)表示用戶u的前n個近鄰,可以由wuv得到:

其中,N(u)表示用戶u有過評分的項目數,N(v)表示用戶v有過評分的項目數。基于用戶非對稱性的矩陣分解推薦算法的目標函數見式(6):

上述目標函數考慮了用戶之間的相關性,對于行為信息少的用戶,利用其鄰居的行為進行補充和修正,在一定程度上克服了數據稀疏的問題。然而,在海量用戶與項目數據并存的背景下,僅考慮用戶信息而未考慮項目變化的模型就顯得較為單一,其忽略了項目的關聯變化會影響用戶之間關系的因素,容易造成數據稀疏問題,降低了算法推薦的準確度。
基于用戶非對稱性的矩陣分解推薦算法僅考慮用戶之間的相關性,然而不同項目之間的相關性程度也可能影響用戶對項目的評分,因此本文在深入研究項目之間聯系的基礎上,通過綜合用戶信息、項目變化以及兩者之間的關系來對原模型進行補充改進。具體做法為基于項目的關系在原模型的基礎上增加一個偏差量用于補充項目偏差量,式(4)和式(6)分別變為了式(7)和式(8):

其中,mi是bi的偏移量,與wuv的作用相似,是對基礎偏移量的補充,如果用戶u喜歡的項目都與項目i的相關性很高,可以使用mij對預測值進行修正(補充),反之如果用戶u喜歡的項目與項目i的相關度不高,那么使用mij對預測值進行修正(減少)。以電影推薦為例,如果用戶u看過《加勒比海盜》1~3部,那么在預測其對《加勒比海盜》第4 部的偏好時會給予增量,而如果用戶u沒有看過加勒比系列相關電影,那么在預測其對《加勒比海盜》第4部的偏好時會給予懲罰。其具體定義見式(9):

其中,cij表示項目i和項目j之間的相似度,μi表示第i個項目和其他所有項目相似度的均值,Rn表示所有項目。
同樣以電影推薦為例,在實際推薦中,如果用戶經常看高分電影,則該類型用戶在較小可能性下會去看低分電影。基于該種情況,本文參考用戶相似度的定義,在衡量項目相似度的同時綜合考慮不同項目的評分情況以及共現次數,以此提出一種改進項目相似度cij計算式。其定義見式(10):

其中,N(i)表示項目i有過評分的數量,N(j)表示項目j有過評分的數量。cosine(i,j)從評分角度衡量兩個項目之間的相關性,jaccard(i,j)是從共現次數角度評價兩個項目之間的共現。再以電影推薦為例,如果項目i和j分別是熱度很高的高分電影和低分電影,那么jaccard(i,j)會較為相似,但是cosine(i,j)會很大區別;而如果項目i和j分別是一個喜劇低分電影和一個恐怖低分電影,其cosine(i,j)會較為相似,而jaccard(i,j)區別會很大,因此式(7)可以較好地區分不同類型的電影以及相同熱度下不同口碑的電影。
社會學研究發現,同一社群的用戶偏好存在較大的相似性。由Ma 等的研究可知,將社會正則化作為矩陣分解的約束可以提高矩陣分解推薦算法的效果。然而基于社會正則化的矩陣分解推薦算法一般根據用戶的社會關系,這需要用戶給出其信任用戶群,是一種顯式表示。而由于涉及隱私,通常用戶不會直接給出完整的信任用戶群,因此本文采用一種隱式表示法,將用戶的近鄰用戶集作為其信任用戶群,在綜合考慮不同用戶與不同項目之間相關性的基礎之上,提出一種基于非對稱相似度和關聯正則化的推薦算法。對此,在上文改進評分預測式的基礎上將關聯正則化作為矩陣分解的約束,一方面可以避免模型訓練過程中出現過擬合;另一方面在模型中增加了用戶信息,對于信息量很少的用戶,其潛在特征向量會更接近于其近鄰用戶的特征向量,因此該類用戶信息可以得到一定的補償,對其進行評分預測時也能得到較高的評分預測精度。改進后的目標函數見式(11):


因此,式(11)變為式(12):

本文使用隨機梯度下降來求解式(11),其核心操作在于計算梯度 ?G/?bu,?G/?bi,?G/?qi,?G/?pu,?G/?wuv,?G/?cij,如式(13)~(18)所示:


其中,eui表示預測評分和真實評分的差值。基于非對稱相似度和關聯正則化的推薦算法的時間復雜度主要包括了對目標函數G和各梯度的計算。計算目標函數G的時間復雜度為,其中|W|表示用戶關聯關系數量,表示項目關聯關系數量,|R|表示評分數量,d表示特征空間的維度。計算梯度?G/?bu, ?G/?bi, ?G/?qi,?G/?pu, ?G/?wuv, ?G/?cij的時間復雜度,分別為可以看出該算法訓練一輪的時間復雜度為,與用戶關聯關系數量、項目關聯關系數量以及評分數量呈線性相關,可以處理大規模數據的推薦。
為了對比融合項目近鄰和融合用戶近鄰的矩陣分解推薦算法在不同數據集上的表現,本文選取了Movie-Lens10M 數據集[16]、Amazon 評論數據集[17]以及 Ciao 數據集作為測試數據進行實驗驗證。三個數據集的評分范圍均在[0,5],其統計特性見表1。

表1 三個數據集的統計特性
本文將數據集分成訓練集和測試集,訓練集用于訓練推薦算法中的參數,測試集用于評估推薦算法的準確性,本實驗按照9∶1的比例將數據集隨機分割成訓練集和測試集,實驗程序基于Python語言實現。
本文選擇了RMSE(Root Mean Square Error)作為衡量標準,通過計算預測評分和實際評分的均方根誤差來描述算法的推薦質量,RMSE值越小說明推薦的質量越好。RMSE的計算公式見式(19):

其中,rui為實際評分,為預測評分,n表示測試集中評分數量。
本文做了兩組對比實驗,實驗1研究了本文算法在不同參數下的表現,實驗2對比了本文模型和一些常用算法在真實數據集上的表現。
實驗1 不同參數變化的效果對比
這部分實驗都是在MovieLens數據集下完成。圖1顯示了隨著迭代次數的增加,本文算法的RMSE 值變化,可以發現在迭代次數為50左右開始收斂。

圖1 本文算法在MoiveLens上的RMSE值
圖2 顯示了本文算法在不同鄰居個數下的RMSE值變化。發現在低鄰居個數的情況下,推薦效果逐步提升,但是在達到一定鄰居個數之后,推薦效果出現了波動,可能出現一定程度的下降。

圖2 不同鄰居數下的RMSE值
圖3 顯示了本文算法在不同潛在特征維度下的RMSE值變化。發現在一定潛在特征維度下,算法的推薦效果逐步提升,但是在潛在特征維度達到一個特定值后,推薦算法效果近似收斂,無太大提升。

圖3 不同潛在特征維度下的RMSE值
實驗2 不同推薦算法的表現對比
表2是本文算法以及一些常用推薦算法在Amazon數據集以及MoiveLens 數據集上的RMSE 值。由實驗數據可以看出,本文算法相較于其他算法在推薦準確性上有明顯的提升,這是由于本文考慮了目標用戶的關聯用戶信息。

表2 本文算法和其他算法的RMSE值
在社會化推薦系統中考慮用戶的信任關系通常可以提高推薦效果。為了進一步驗證本文算法的推薦效果,本文還在Ciao數據集上進行了驗證。表3顯示了Ciao數據集的信任信息。從表3 和表1 的數據可以看出,信任關系的稀疏性要高于評分的稀疏性。

表3 Ciao數據集信任信息
表4對比了本文算法、SVD++算法以及現有的一些社會化推薦算法。從表4 可以看出,本文算法的RMSE值優于大部分基于社會關系的推薦算法,稍遜于trustSVD算法。而trustSVD 算法訓練一輪的時間復雜度為,大于本文算法的時間復雜度,而且本文算法與后者算法的效果相比差別不大,因此綜合來看,本文算法成本低,較容易實現。

表4 本文算法和其他算法在Ciao數據集上的RMSE值
本文針對用戶信息量不對稱問題提出一種改進非對稱相似度和關聯正則化的推薦算法。考慮不同用戶與不同項目之間的不對稱關系,提出一種改進相關度計算式,在綜合考量項目與用戶兩種不同因素偏移量的補充量的基礎上,對評分預測式加以改進。同時針對用戶歷史行為信息不對稱的問題,利用傳統相似度獲取鄰域集合來表示用戶的社會關系,將關聯正則化用于約束矩陣分解目標函數,以此緩解數據稀疏帶來的用戶信息不對稱。實驗結果表明,與主流的推薦算法相比,該算法能夠達到更好的推薦效果,同時與基于社會化的推薦系統相比,該算法的數據獲取較為簡單,推薦效果也有一定保證。