劉春玲,張 黎
武漢紡織大學(xué) 機(jī)械工程與自動化學(xué)院,武漢 430200
隨著信息技術(shù)和互聯(lián)網(wǎng)的發(fā)展,人們逐漸進(jìn)入信息爆炸的時(shí)代,如何從海量信息中快速獲取相關(guān)的信息已成為亟待解決的問題。推薦系統(tǒng)作為一種有效的信息過濾技術(shù),是解決這一問題的重要手段,在各大電商平臺、音樂網(wǎng)站以及在線評論網(wǎng)站中有著廣泛的應(yīng)用[1]。推薦系統(tǒng)通過分析用戶歷史行為(如評分、瀏覽記錄等),來預(yù)測用戶在不同項(xiàng)目上的興趣偏好,從而幫助用戶快速有效地獲取其需要或感興趣的項(xiàng)目。隨著推薦系統(tǒng)的發(fā)展,各類相關(guān)理論與技術(shù)應(yīng)運(yùn)而生,目前應(yīng)用最廣泛、效果較好的是協(xié)同過濾(Collaborative Filtering)推薦算法。
協(xié)同過濾推薦算法[2-5]根據(jù)用戶的行為來分析用戶偏好,根據(jù)推測結(jié)果給出相關(guān)推薦內(nèi)容,其中又以矩陣分解應(yīng)用較廣。蘇慶等[6]考慮時(shí)間差因子、熱門物品權(quán)重因子以及冷門物品權(quán)重因子,提出一種改進(jìn)模糊劃分聚類的協(xié)同過濾推薦算法。黃賢英等[7]考慮了用戶關(guān)系的不平衡性,提出一種改進(jìn)用戶非對稱相似性的協(xié)同過濾推薦算法。Salakhutdinov等[8]從概率的角度解釋了傳統(tǒng)矩陣分解模型的合理性,并提出了概率矩陣分解模型(Probabilistic Matrix Factorization,PMF)。Saveski 等[9]融合項(xiàng)目內(nèi)容信息和用戶歷史行為提出一種LCE(Local Collective Embeddings)算法,有效緩解了冷啟動問題。
融合用戶信息與矩陣分解的推薦算法在一定情況下行之有效,但仍受限于數(shù)據(jù)稀疏的問題,難以解決冷啟動問題,為此研究者們提出了社會化的推薦算法。為了平衡用戶間信息的不對稱性,Ma 等[10]考慮了用戶的社會信息,提出SoRec推薦算法。吳賓等[11]不僅考慮了用戶的社會信息,還將用戶的關(guān)聯(lián)關(guān)系作為考量因素,提出聯(lián)合正則化的矩陣分解算法。Guo 等[12]在SVD++模型的基礎(chǔ)上考慮用戶之間的顯式信任信息加入評分預(yù)測,通過用戶之間的信任關(guān)系對特征向量進(jìn)行學(xué)習(xí)。Yang等[13]綜合考慮信任者和被信任者模型,提出了一種混合推薦算法TrustMF。Jamali 等[14]運(yùn)用信任傳播方法,提出SocialMF,有效緩解了冷啟動問題。郭寧寧等[15]提出了一種融合社交網(wǎng)絡(luò)特征的協(xié)同過濾推薦算法,有效緩解了數(shù)據(jù)稀疏性對推薦結(jié)果的影響,并提高了推薦準(zhǔn)確率。但以上算法的社會關(guān)系或者信任關(guān)系是顯式的,信息只能通過用戶標(biāo)注來獲取。
針對上述算法存在的問題,本文提出一種改進(jìn)非對稱相似度比和關(guān)聯(lián)正則化的推薦算法??紤]不同用戶與不同項(xiàng)目之間的不對稱關(guān)系,提出一種改進(jìn)相關(guān)度計(jì)算式,在綜合考量項(xiàng)目與用戶兩種不同因素偏移量的補(bǔ)充量的基礎(chǔ)上,對評分預(yù)測式加以改進(jìn)。同時(shí)針對用戶歷史行為信息不對稱的問題,利用傳統(tǒng)相似度獲取鄰域集合來表示用戶的社會關(guān)系,將關(guān)聯(lián)正則化用于約束矩陣分解目標(biāo)函數(shù),以此緩解數(shù)據(jù)稀疏帶來的用戶信息不對稱。實(shí)驗(yàn)結(jié)果表明,與主流的推薦算法相比,該算法能夠更加有效地預(yù)測實(shí)際評分。
一般來說,用戶在評分的時(shí)候會有個(gè)人偏好,有的用戶評分普遍比其他用戶高,有的用戶則普遍偏低,因此,一般定義基礎(chǔ)偏移量bui來表示用戶和物品的偏好。
其中,表示所有評分的平均值,bu表示用戶u的評分偏好,bi表示用戶對項(xiàng)目i的評分偏好。例如小明給電影《魔戒》打分,《魔戒》的平均分為3.5 分,高一般電影1.0 分,小明給電影的平均評分高一般用戶0.1 分,則bui=3.5+1.0+0.1=4.6。
傳統(tǒng)的矩陣分解將預(yù)測評分矩陣∈Rm×n分解為用戶特征矩陣P∈Rm×k和項(xiàng)目特征矩陣Q∈Rk×m,其中k為特征個(gè)數(shù)。其用戶的評分預(yù)測計(jì)算式見式(2):
其中,pfu表示用戶u的第f個(gè)特征值,qfi表示項(xiàng)目i的第f個(gè)特征值。為了提高預(yù)測精度,需要使得預(yù)測值與真實(shí)值之間的差值最小,目標(biāo)函數(shù)G見式(3):
其中,λ為正則項(xiàng)系數(shù),為正則項(xiàng),用于防止在訓(xùn)練中出現(xiàn)過擬合。以bu為例,如果不增加正則項(xiàng),在訓(xùn)練參數(shù)時(shí),參數(shù)迭代式為在增加正則項(xiàng)后,參數(shù)迭代式變?yōu)閎u=(1-λα)bu-顯然1-λα小于1,實(shí)現(xiàn)了權(quán)重衰減,也減少了訓(xùn)練中出現(xiàn)過擬合的可能。
實(shí)際情況中,不同用戶之間的評分?jǐn)?shù)量存在較大差異,因此其潛在特征向量的樣本數(shù)也是不同的。對于這一情況,傳統(tǒng)的矩陣分解算法未予以考慮。黃賢英等[7]考慮了用戶關(guān)系的不平衡性,對評分預(yù)測式做出了一些改進(jìn),具體見式(4):
其中,wuv表示用戶u和用戶v之間的評分關(guān)系,作為bu偏移項(xiàng),是對基礎(chǔ)偏移量的補(bǔ)充。當(dāng)wuv和rui-bui較高時(shí),說明預(yù)測值要低于實(shí)際值,此時(shí)正好可以補(bǔ)充預(yù)測值,使其更接近實(shí)際值。Rn(u)表示用戶u的前n個(gè)近鄰,可以由wuv得到:
其中,N(u)表示用戶u有過評分的項(xiàng)目數(shù),N(v)表示用戶v有過評分的項(xiàng)目數(shù)?;谟脩舴菍ΨQ性的矩陣分解推薦算法的目標(biāo)函數(shù)見式(6):
上述目標(biāo)函數(shù)考慮了用戶之間的相關(guān)性,對于行為信息少的用戶,利用其鄰居的行為進(jìn)行補(bǔ)充和修正,在一定程度上克服了數(shù)據(jù)稀疏的問題。然而,在海量用戶與項(xiàng)目數(shù)據(jù)并存的背景下,僅考慮用戶信息而未考慮項(xiàng)目變化的模型就顯得較為單一,其忽略了項(xiàng)目的關(guān)聯(lián)變化會影響用戶之間關(guān)系的因素,容易造成數(shù)據(jù)稀疏問題,降低了算法推薦的準(zhǔn)確度。
基于用戶非對稱性的矩陣分解推薦算法僅考慮用戶之間的相關(guān)性,然而不同項(xiàng)目之間的相關(guān)性程度也可能影響用戶對項(xiàng)目的評分,因此本文在深入研究項(xiàng)目之間聯(lián)系的基礎(chǔ)上,通過綜合用戶信息、項(xiàng)目變化以及兩者之間的關(guān)系來對原模型進(jìn)行補(bǔ)充改進(jìn)。具體做法為基于項(xiàng)目的關(guān)系在原模型的基礎(chǔ)上增加一個(gè)偏差量用于補(bǔ)充項(xiàng)目偏差量,式(4)和式(6)分別變?yōu)榱耸剑?)和式(8):
其中,mi是bi的偏移量,與wuv的作用相似,是對基礎(chǔ)偏移量的補(bǔ)充,如果用戶u喜歡的項(xiàng)目都與項(xiàng)目i的相關(guān)性很高,可以使用mij對預(yù)測值進(jìn)行修正(補(bǔ)充),反之如果用戶u喜歡的項(xiàng)目與項(xiàng)目i的相關(guān)度不高,那么使用mij對預(yù)測值進(jìn)行修正(減少)。以電影推薦為例,如果用戶u看過《加勒比海盜》1~3部,那么在預(yù)測其對《加勒比海盜》第4 部的偏好時(shí)會給予增量,而如果用戶u沒有看過加勒比系列相關(guān)電影,那么在預(yù)測其對《加勒比海盜》第4部的偏好時(shí)會給予懲罰。其具體定義見式(9):
其中,cij表示項(xiàng)目i和項(xiàng)目j之間的相似度,μi表示第i個(gè)項(xiàng)目和其他所有項(xiàng)目相似度的均值,Rn表示所有項(xiàng)目。
同樣以電影推薦為例,在實(shí)際推薦中,如果用戶經(jīng)??锤叻蛛娪?,則該類型用戶在較小可能性下會去看低分電影?;谠摲N情況,本文參考用戶相似度的定義,在衡量項(xiàng)目相似度的同時(shí)綜合考慮不同項(xiàng)目的評分情況以及共現(xiàn)次數(shù),以此提出一種改進(jìn)項(xiàng)目相似度cij計(jì)算式。其定義見式(10):
其中,N(i)表示項(xiàng)目i有過評分的數(shù)量,N(j)表示項(xiàng)目j有過評分的數(shù)量。cosine(i,j)從評分角度衡量兩個(gè)項(xiàng)目之間的相關(guān)性,jaccard(i,j)是從共現(xiàn)次數(shù)角度評價(jià)兩個(gè)項(xiàng)目之間的共現(xiàn)。再以電影推薦為例,如果項(xiàng)目i和j分別是熱度很高的高分電影和低分電影,那么jaccard(i,j)會較為相似,但是cosine(i,j)會很大區(qū)別;而如果項(xiàng)目i和j分別是一個(gè)喜劇低分電影和一個(gè)恐怖低分電影,其cosine(i,j)會較為相似,而jaccard(i,j)區(qū)別會很大,因此式(7)可以較好地區(qū)分不同類型的電影以及相同熱度下不同口碑的電影。
社會學(xué)研究發(fā)現(xiàn),同一社群的用戶偏好存在較大的相似性。由Ma 等的研究可知,將社會正則化作為矩陣分解的約束可以提高矩陣分解推薦算法的效果。然而基于社會正則化的矩陣分解推薦算法一般根據(jù)用戶的社會關(guān)系,這需要用戶給出其信任用戶群,是一種顯式表示。而由于涉及隱私,通常用戶不會直接給出完整的信任用戶群,因此本文采用一種隱式表示法,將用戶的近鄰用戶集作為其信任用戶群,在綜合考慮不同用戶與不同項(xiàng)目之間相關(guān)性的基礎(chǔ)之上,提出一種基于非對稱相似度和關(guān)聯(lián)正則化的推薦算法。對此,在上文改進(jìn)評分預(yù)測式的基礎(chǔ)上將關(guān)聯(lián)正則化作為矩陣分解的約束,一方面可以避免模型訓(xùn)練過程中出現(xiàn)過擬合;另一方面在模型中增加了用戶信息,對于信息量很少的用戶,其潛在特征向量會更接近于其近鄰用戶的特征向量,因此該類用戶信息可以得到一定的補(bǔ)償,對其進(jìn)行評分預(yù)測時(shí)也能得到較高的評分預(yù)測精度。改進(jìn)后的目標(biāo)函數(shù)見式(11):
因此,式(11)變?yōu)槭剑?2):
本文使用隨機(jī)梯度下降來求解式(11),其核心操作在于計(jì)算梯度 ?G/?bu,?G/?bi,?G/?qi,?G/?pu,?G/?wuv,?G/?cij,如式(13)~(18)所示:
其中,eui表示預(yù)測評分和真實(shí)評分的差值?;诜菍ΨQ相似度和關(guān)聯(lián)正則化的推薦算法的時(shí)間復(fù)雜度主要包括了對目標(biāo)函數(shù)G和各梯度的計(jì)算。計(jì)算目標(biāo)函數(shù)G的時(shí)間復(fù)雜度為,其中|W|表示用戶關(guān)聯(lián)關(guān)系數(shù)量,表示項(xiàng)目關(guān)聯(lián)關(guān)系數(shù)量,|R|表示評分?jǐn)?shù)量,d表示特征空間的維度。計(jì)算梯度?G/?bu, ?G/?bi, ?G/?qi,?G/?pu, ?G/?wuv, ?G/?cij的時(shí)間復(fù)雜度,分別為可以看出該算法訓(xùn)練一輪的時(shí)間復(fù)雜度為,與用戶關(guān)聯(lián)關(guān)系數(shù)量、項(xiàng)目關(guān)聯(lián)關(guān)系數(shù)量以及評分?jǐn)?shù)量呈線性相關(guān),可以處理大規(guī)模數(shù)據(jù)的推薦。
為了對比融合項(xiàng)目近鄰和融合用戶近鄰的矩陣分解推薦算法在不同數(shù)據(jù)集上的表現(xiàn),本文選取了Movie-Lens10M 數(shù)據(jù)集[16]、Amazon 評論數(shù)據(jù)集[17]以及 Ciao 數(shù)據(jù)集作為測試數(shù)據(jù)進(jìn)行實(shí)驗(yàn)驗(yàn)證。三個(gè)數(shù)據(jù)集的評分范圍均在[0,5],其統(tǒng)計(jì)特性見表1。
表1 三個(gè)數(shù)據(jù)集的統(tǒng)計(jì)特性
本文將數(shù)據(jù)集分成訓(xùn)練集和測試集,訓(xùn)練集用于訓(xùn)練推薦算法中的參數(shù),測試集用于評估推薦算法的準(zhǔn)確性,本實(shí)驗(yàn)按照9∶1的比例將數(shù)據(jù)集隨機(jī)分割成訓(xùn)練集和測試集,實(shí)驗(yàn)程序基于Python語言實(shí)現(xiàn)。
本文選擇了RMSE(Root Mean Square Error)作為衡量標(biāo)準(zhǔn),通過計(jì)算預(yù)測評分和實(shí)際評分的均方根誤差來描述算法的推薦質(zhì)量,RMSE值越小說明推薦的質(zhì)量越好。RMSE的計(jì)算公式見式(19):
其中,rui為實(shí)際評分,為預(yù)測評分,n表示測試集中評分?jǐn)?shù)量。
本文做了兩組對比實(shí)驗(yàn),實(shí)驗(yàn)1研究了本文算法在不同參數(shù)下的表現(xiàn),實(shí)驗(yàn)2對比了本文模型和一些常用算法在真實(shí)數(shù)據(jù)集上的表現(xiàn)。
實(shí)驗(yàn)1 不同參數(shù)變化的效果對比
這部分實(shí)驗(yàn)都是在MovieLens數(shù)據(jù)集下完成。圖1顯示了隨著迭代次數(shù)的增加,本文算法的RMSE 值變化,可以發(fā)現(xiàn)在迭代次數(shù)為50左右開始收斂。
圖1 本文算法在MoiveLens上的RMSE值
圖2 顯示了本文算法在不同鄰居個(gè)數(shù)下的RMSE值變化。發(fā)現(xiàn)在低鄰居個(gè)數(shù)的情況下,推薦效果逐步提升,但是在達(dá)到一定鄰居個(gè)數(shù)之后,推薦效果出現(xiàn)了波動,可能出現(xiàn)一定程度的下降。
圖2 不同鄰居數(shù)下的RMSE值
圖3 顯示了本文算法在不同潛在特征維度下的RMSE值變化。發(fā)現(xiàn)在一定潛在特征維度下,算法的推薦效果逐步提升,但是在潛在特征維度達(dá)到一個(gè)特定值后,推薦算法效果近似收斂,無太大提升。
圖3 不同潛在特征維度下的RMSE值
實(shí)驗(yàn)2 不同推薦算法的表現(xiàn)對比
表2是本文算法以及一些常用推薦算法在Amazon數(shù)據(jù)集以及MoiveLens 數(shù)據(jù)集上的RMSE 值。由實(shí)驗(yàn)數(shù)據(jù)可以看出,本文算法相較于其他算法在推薦準(zhǔn)確性上有明顯的提升,這是由于本文考慮了目標(biāo)用戶的關(guān)聯(lián)用戶信息。
表2 本文算法和其他算法的RMSE值
在社會化推薦系統(tǒng)中考慮用戶的信任關(guān)系通常可以提高推薦效果。為了進(jìn)一步驗(yàn)證本文算法的推薦效果,本文還在Ciao數(shù)據(jù)集上進(jìn)行了驗(yàn)證。表3顯示了Ciao數(shù)據(jù)集的信任信息。從表3 和表1 的數(shù)據(jù)可以看出,信任關(guān)系的稀疏性要高于評分的稀疏性。
表3 Ciao數(shù)據(jù)集信任信息
表4對比了本文算法、SVD++算法以及現(xiàn)有的一些社會化推薦算法。從表4 可以看出,本文算法的RMSE值優(yōu)于大部分基于社會關(guān)系的推薦算法,稍遜于trustSVD算法。而trustSVD 算法訓(xùn)練一輪的時(shí)間復(fù)雜度為,大于本文算法的時(shí)間復(fù)雜度,而且本文算法與后者算法的效果相比差別不大,因此綜合來看,本文算法成本低,較容易實(shí)現(xiàn)。
表4 本文算法和其他算法在Ciao數(shù)據(jù)集上的RMSE值
本文針對用戶信息量不對稱問題提出一種改進(jìn)非對稱相似度和關(guān)聯(lián)正則化的推薦算法。考慮不同用戶與不同項(xiàng)目之間的不對稱關(guān)系,提出一種改進(jìn)相關(guān)度計(jì)算式,在綜合考量項(xiàng)目與用戶兩種不同因素偏移量的補(bǔ)充量的基礎(chǔ)上,對評分預(yù)測式加以改進(jìn)。同時(shí)針對用戶歷史行為信息不對稱的問題,利用傳統(tǒng)相似度獲取鄰域集合來表示用戶的社會關(guān)系,將關(guān)聯(lián)正則化用于約束矩陣分解目標(biāo)函數(shù),以此緩解數(shù)據(jù)稀疏帶來的用戶信息不對稱。實(shí)驗(yàn)結(jié)果表明,與主流的推薦算法相比,該算法能夠達(dá)到更好的推薦效果,同時(shí)與基于社會化的推薦系統(tǒng)相比,該算法的數(shù)據(jù)獲取較為簡單,推薦效果也有一定保證。