衛(wèi)鼎峰,李 梁,柴 晶
1.太原理工大學 信息與計算機學院,太原 030600
2.太原師范學院 城市與旅游學院,太原 030619
互聯(lián)網(wǎng)的高速發(fā)展極大地便利了人們的生活,然而各種各樣的信息充斥著人們的生活,但人的精力是有限的,一些雜亂的冗余信息顯然并不值得關注,為此,推薦系統(tǒng)的應用而生讓人們對感興趣的事物更加專注。數(shù)據(jù)稀疏性問題是限制傳統(tǒng)推薦算法性能的重要因素,社交網(wǎng)絡的引入可以緩解了這一問題,使推薦算法更加優(yōu)化。由生活經(jīng)驗可知,人們判斷某些事物時,往往會征求他信任朋友的意見[1-2],因此,社交朋友對產(chǎn)品的推薦上有很大的推動作用。大量融合社交網(wǎng)絡的推薦實驗表明,引入社交網(wǎng)絡會改善推薦算法的性能,提高冷啟動用戶推薦的準確性。然而在大量的社交推薦算法中,僅僅只是對用戶和其好友之間的特征向量的限制,并未對物品與其相似性物品的特征向量進行限制,阻礙了社交推薦算法的性能。
為解決上述問題,本文通過用戶與物品的交互圖構建物品相似性網(wǎng)絡,在物品相似性網(wǎng)絡上通過隨機游走的方法得到物品節(jié)點序列,并將其輸入到SkipGram 中得到物品的特征向量,依靠余弦相似度構建出Top-K個相似物品,從而構建物品隱性相似性網(wǎng)絡。同時,融合隱性物品相似性網(wǎng)絡和社交網(wǎng)絡,利用圖神經(jīng)網(wǎng)絡編碼用戶和物品的嵌入表示,并通過正則化迫使該物品與相似物品的特征接近,用戶與社交好友的偏好接近,實現(xiàn)了物品相似性傳播和用戶的信任傳播。在三個公開的數(shù)據(jù)集上進行測試,結果表明:本文所提出的改進算法優(yōu)于同類的社交推薦算法,并在一定程度上提升了冷啟動用戶的推薦性能。
隨著深度學習的興起,基于神經(jīng)網(wǎng)絡的推薦算法改善了傳統(tǒng)推薦算法的性能。文獻[3]提出了神經(jīng)矩陣分解模型即利用多層感知機學習用戶和物品之間的交互函數(shù),提升其非線性建模的能力。文獻[4]提出了使用外積來顯式地對嵌入維度之間成對的相關性進行建模,即利用用戶和物品的外積建立成二維交互作用圖,并使用卷積神經(jīng)網(wǎng)絡來學習特征向量維度之間的高階相關性,進而改善推薦性能。而編碼器的研究在神經(jīng)網(wǎng)絡中也占有一席之地,為此,文獻[5]提出了協(xié)作降噪自動編碼器(CDAE),即用于利用降噪自動編碼器對物品推薦。文獻[6]將變分自動編碼器擴展到用于隱式反饋的協(xié)作過濾,這種非線性概率模型能夠超越線性因子模型的有限建模能力。文獻[7]提出了一個聯(lián)合協(xié)作自動編碼器框架,該框架可同時學習用戶與用戶之間和物品與物品之間的相關性,從而產(chǎn)生更強大的模型并提高推薦性能。但是,在深度學習領域中,圖神經(jīng)網(wǎng)絡天然地適用于物品推薦,產(chǎn)生更好的推薦性能。因此,本文利用圖神經(jīng)網(wǎng)絡獲取用戶和物品的特征向量。
在實際生活中,人們購買商品時更習慣傾聽朋友的意見,依據(jù)這一現(xiàn)象,社交推薦算法應運而生。文獻[8]利用概率矩陣分解模型進行社交推薦即SoRec模型,將評分矩陣分解為用戶特征矩陣和物品特征矩陣,社交矩陣分解為用戶特征矩陣和好友特征矩陣,其中,用戶特征矩陣的共享將評分矩陣和好友矩陣聯(lián)系起來。為了更具有可解釋性,文獻[9]提出了RSTE 模型,即用戶最終對物品的預測來源于兩方面,一方面是用戶本身對物品的預測,另一方面是該用戶社交朋友對該物品的預測,為此,加權兩方面的預測提升了推薦的性能,但是該模型并未包含信任傳播。文獻[10]提出SocialMF模型,認為用戶的偏好更為接近其社交朋友的平均偏好。而在實際生活中,用戶的偏好與其不同的社交朋友的偏好略有不同,為此,文獻[11]提出SocialReg模型,該模型是社交正則化模型,通過用戶之間的相似度表示社交好友之間的信任強度,該模型有兩種正則化:一種是基于平均的正則化,即用戶的偏好接近為不同信任強度的社交朋友的加權平均偏好;另一種是基于個人的正則化,即在不同的信任強度下,用戶的偏好接近其社交朋友的偏好。顯然,后者可以間接傳播用戶偏好,有利于推薦性能的提升。文獻[12]提出的TrustSVD 模型是通過引入隱式社交信息和對社交矩陣的分解來改進SVD++模型。實際中,用戶的偏好與社交朋友的偏好會有很大的不同,為此,顯式社交網(wǎng)絡可能會誤導推薦性能。文獻[13]提出了CUNE 模型,該模型在評分矩陣上獲得與用戶有相同偏好的前k個可靠的語義朋友,并采用矩陣分解的方法傳播用戶偏好。
社交網(wǎng)絡的引入,提高了推薦算法的性能,但以上的社交推薦算法并未進行物品相似性的傳播[14-15]。在實際中,物品與物品之間有直接或間接的聯(lián)系,配套的物品往往會發(fā)揮一加一大于二的效果,因此融入物品隱性相似性網(wǎng)絡對推薦算法具有重要意義。
2.1.1 構建物品相似性網(wǎng)絡
在用戶與物品的交互圖上,有兩個集合,分別是用戶集合和物品集合,用戶和物品交互的實際意義是用戶曾經(jīng)購買或點擊過該物品,即該物品可能被多個用戶點擊或者購買過,如圖1所示。為此可以在物體交互圖上構建僅有物品的網(wǎng)絡,即將物品作為節(jié)點,物品之間的連線表示為物品被共有的用戶點擊或者購買過,連線的權重為共有用戶的個數(shù)。如圖2 所示的物品相似性網(wǎng)絡中,物品1和物品2共同被一個用戶b點擊或購買,則這兩物品之間的權重為1。該物品相似性網(wǎng)絡不僅可以表示相鄰物品之間的相似性還可以傳遞間接物品的相似性,即圖2中,物品1和物品2相似,物品2和物品4相似,則物品1和物品4間接相似,事實上,物品1和物品4是相連接的,其本身相似。這也符合實際生活,當用戶購買了電腦和鼠標,另一用戶購買了該鼠標和U 盤,顯而易見,電腦和U盤都是使用電腦者所必備的,為此,兩者之間有相似性,電腦和U盤的相似性通過用戶購買鼠標間接進行傳遞。
圖1 用戶物品交互圖Fig.1 User item interaction diagram
圖2 物品相似性網(wǎng)絡Fig.2 Item similarity network
2.1.2 構建物品隱性相似性網(wǎng)絡
為了進一步探究物體之間的相似性,在物品相似性網(wǎng)絡上需要構建物品隱性相似性網(wǎng)絡。在物品相似網(wǎng)絡中的某一特定節(jié)點上采用隨機游走的方法得到特定長度的節(jié)點序列,即從前一個物品節(jié)點的鄰居節(jié)點中隨機選擇一個節(jié)點作為下一個物品節(jié)點,而在每個節(jié)點上通過n次隨機游走得到n個節(jié)點序列。如圖2所示,物體1作為特定節(jié)點,當節(jié)點序列的長度為4時,其中一種節(jié)點序列為1 →2 →4 →3 其采取的隨機游走方式受兩方面的限制,一方面選擇節(jié)點之間權重大的節(jié)點作為下一個節(jié)點;另一方面從未被游走過的節(jié)點中選擇節(jié)點作為下一個節(jié)點。將每個節(jié)點得到的節(jié)點序列輸入到SkipGram中,可得到物品相似網(wǎng)絡中物品的向量表示,通過余弦相似度計算出物品相似網(wǎng)上與該物體相似程度最大的Top-K個物品,從而得到該物品的隱性相似性網(wǎng)絡。
余弦相似度的公式如下:
其中,Qj和Qt分別為SkipGram得到的物品j和t的向量,cos(j,t)為物品j和t相似的程度。
由于通過隨機游走的方式得到的物品節(jié)點序列相似于文本中的單詞序列,因此將節(jié)點序列輸入到SkipGram中具有合理性。使用該方法得到的物品隱性相似性網(wǎng)絡可以更加高效地傳遞相鄰物品的相似性。
社交正則化模型是概率矩陣分解模型在社交網(wǎng)絡上的拓展,數(shù)學意義為用戶的特征向量與其相連用戶的特征向量的距離盡可能小,實際的表示含義為用戶的偏好與其社交用戶的偏好接近,該模型的作用在于可以間接傳播用戶之間的信任程度。其損失函數(shù)為:
公式(2)中,右側的第一項是預測分數(shù)和實際分數(shù)的總誤差,第二項是用戶和物品的正則項,第三項是用戶和其鄰居用戶的正則項,其中Iij為指示函數(shù),指當用戶i對物品j有歷史交互時為1,否則為0。pi和qj分別表示用戶i和物品j的特征向量。rij為用戶i對物品j的評分,‖· ‖F(xiàn)為f范數(shù),P∈Rl×m,Q∈Rl×n分別為用戶和物品的特征矩陣,l為特征向量的維度,m和n分別為用戶和物品的個數(shù),H(i)為用戶i直接鄰居的集合,f表示用戶i的其中一個直接鄰居,Sim(i,f)為用戶i和用戶f的相似程度,其公式如下:
其中,I(i)為用戶i購買物品的集合,為用戶i對物品的平均評分,j為用戶i和用戶f共同購買過的物品。
最新研究的圖神經(jīng)網(wǎng)絡為圖結構開辟了新的思路,通過傳遞和收集領域節(jié)點的信息以編碼節(jié)點的特征信息,既在特征表示中嵌入結構信息,又可捕捉全局信息。本文通過物品的隱性相似性網(wǎng)絡、社交網(wǎng)絡和用戶與物品的交互網(wǎng)絡編碼用戶和物品的結構信息,其公式如下:
以往的算法中,通常引入社交網(wǎng)絡來改進社交網(wǎng)絡中用戶與其直接鄰居的正則化項,實現(xiàn)信任傳播,并未考慮引入隱性物品相似性網(wǎng)絡來實現(xiàn)物品與其相似性物品的相似性傳播,即將物品與其相似性物品的距離加以約束。本文提出基于物品相似性傳播的社交推薦算法,該算法會對物品的特征向量進行進一步的正則化,以增加算法的精確度,其損失函數(shù)為:
在公式(6)中,用戶的偏好會盡可能接近社交網(wǎng)絡中相鄰用戶的偏好,物品的特征也盡可能與隱性物品相似性網(wǎng)絡中的物品特征接近,具有很好的現(xiàn)實意義。
若僅考慮隱性物品相似性網(wǎng)絡未引入社交網(wǎng)絡,可得本文的一種變體算法,其損失函數(shù)為:
為有效地學習該模型,本文采用梯度下降法,即分別對向量pi和qj求導:
通過梯度下降法迭代更新用戶和物體的特征向量。將用戶的特征向量和物品的特征向量內積可得該用戶對物品的評分,以達到很好的預測效果。
ISGCF算法描述如下。
輸入:社交網(wǎng)絡和用戶物品交互圖。
輸出:目標用戶對測試物品的預測評分。
步驟1在用戶物品交互圖上通過隨機游走和Skip-Gram方法構建物品隱性相似性網(wǎng)絡。
步驟2通過圖神經(jīng)網(wǎng)絡的方法學習物品隱性相似性網(wǎng)絡、社交網(wǎng)絡和用戶物品交互圖,通過公式(4)(5)得到用戶和物品編碼的特征向量。
步驟3通過公式(6)(8)(9)迭代更新得到最終的用戶和物品的特征向量。
在3 個公共數(shù)據(jù)集上驗證基于物品相似性傳播的社交推薦算法的推薦效果,并采用兩個經(jīng)典的評價指標即均方根誤差和平均絕對誤差來評價實驗結果。
為了驗證提出算法的有效性,本文在3個公共的數(shù)據(jù)集上進行實驗,即film-trust、Ciao 和Douban。3 個公共數(shù)據(jù)集都包含了評分矩陣和信任矩陣。作為電影評分數(shù)據(jù)集,film-trust 的評分在0.5 到4.0 之間,用戶之間的社交關系在信任矩陣中,此數(shù)據(jù)集的用戶數(shù)目少于電影數(shù)目。作為物品評分數(shù)據(jù)集,Ciao和Douban的評分在1.0 到5.0 之間,Ciao 中用戶的數(shù)目略多于物品的數(shù)目,Douban 中用戶的數(shù)目遠小于物品的數(shù)目,而film-trust數(shù)據(jù)集的評分矩陣稀疏度低于Douban 數(shù)據(jù)集,高于Ciao數(shù)據(jù)集。兩個數(shù)據(jù)集的具體統(tǒng)計情況如表1所示。
表1 數(shù)據(jù)集分析Table 1 Data set analysis
本文采用平均絕對誤差(MAE)和均方根誤差(RMSE)作為推薦算法的評價指標。公式如下:
其中,N為測試集的評分數(shù)目,為測試集中用戶i對物品j的預測分數(shù),評價指標的值越小,推薦算法的效果越好。
為了有效地評估本文模型的推薦性能,選取了4種經(jīng)典的社交推薦算法和本文的一個變體推薦算法進行對比。
(1)SoRec:通過共享用戶特征矩陣的方式將評分矩陣與社交矩陣聯(lián)系的一種社交推薦算法模型。
(2)SocialMF:可實現(xiàn)信任傳播的一種社交推薦算法。
(3)SocialReg:通過正則化的方式來間接傳播偏好的一種社交推薦算法。
(4)NGCF[16]:在用戶物品交互圖上高階傳播用戶和物品信息的推薦算法。
(5)IGCF:本文推薦算法的一種變體,只進行物品相似性傳播的推薦算法。
在所有的算法中,用戶和物品的特征維數(shù)都是10,λ設置為0.001,為了設計方便,α=β=0.01,在film-trust和Douban數(shù)據(jù)集中,學習率設置為0.01,迭代數(shù)為100,在Ciao數(shù)據(jù)集中,為了避免梯度爆炸,將學習率設置為0.001,迭代數(shù)為200。本文中所有的實驗結果都采用五折交叉驗證的方法,其中80%的數(shù)據(jù)集作為訓練集,20%的數(shù)據(jù)集作為測試集,將測試結果的均值作為最終的評價結果,其中設置每個物品有30個節(jié)點序列,長度為20 個物品節(jié)點。在film-trust 和Ciao 數(shù)據(jù)集中Top-K設置為50,在Douban數(shù)據(jù)集中Top-K設置為10,隨后進一步探討Top-K對推薦效果的影響。
本文設計了3 個實驗,在第一個實驗中,記錄了不同算法下普通用戶的評價指標,實驗結果如圖3所示。
圖3 不同算法對普通用戶評價指標的比較Fig.3 Comparison of evaluation indexes of different algorithms on ordinary users
由圖3 可知,在3 個數(shù)據(jù)集中,NGCF 效果最差,因為該算法僅在用戶物品交互圖上進行推薦算法的改良,未進行社會化推薦。SoRec 效果次之,因為SoRec 算法僅共享用戶特征向量,并未進行用戶之間的信任傳播和物品之間的相似性傳播。在film-trust 和Ciao 數(shù)據(jù)集中,本文算法ISGCF 明顯優(yōu)于其他算法,分析原因是本文算法不僅間接傳播用戶的偏好而且間接傳遞物品的相似性。在filmtrust數(shù)據(jù)集中,ISGCF算法略優(yōu)于IGCF算法,在Ciao 數(shù)據(jù)集中,算法ISGCF 明顯優(yōu)于算法IGCF,說明引入社交網(wǎng)絡會提高推薦算法的準確性。在film-trust 和Ciao 數(shù)據(jù)集中,算法ISGCF 明顯優(yōu)于算法SocialReg,說明物品隱性相似性網(wǎng)絡可有效提高推薦算法的性能。在Douban數(shù)據(jù)集中,算法IGCF產(chǎn)生最優(yōu)的推薦性能,但與算法SocialReg相差不大,因為相比前兩個數(shù)據(jù)集,Douban數(shù)據(jù)集中社交矩陣稀疏度更高,社交網(wǎng)絡發(fā)揮著更為重要的作用。綜合實驗結果可知,我們的算法在不同的數(shù)據(jù)集中均可對普通用戶達到最優(yōu)的推薦結果。
在第二個實驗中,探究不同算法對冷啟動用戶的推薦效果。本實驗將對物品的評分數(shù)小于等于5 的用戶視為冷啟動用戶,實驗結果如圖4所示。
圖4 不同算法對冷啟動用戶評價指標的比較Fig.4 Comparison of evaluation indexes of different algorithms on cold start users
由圖4 可知,在filmtrust 和Douban 數(shù)據(jù)集中,算法ISGCF中優(yōu)于其他算法,其中ISGCF算法明顯優(yōu)于算法SocialReg 和算法IGCF,說明結合社交網(wǎng)絡和物品隱性相似性網(wǎng)絡會提高冷啟動用戶的推薦性能。在數(shù)據(jù)集Ciao 中,算法IGCF 產(chǎn)生最優(yōu)的推薦性能,算法Social-Reg 的推薦性能次之,算法ISGCF 的推薦效果不優(yōu),說明單獨使用社交網(wǎng)絡和物品隱性相似性網(wǎng)絡會提高冷啟動用戶的推薦性能,同時結合社交網(wǎng)絡和物品隱性相似性網(wǎng)絡則會產(chǎn)生過擬合使得推薦性能下降。綜合實驗結果可知,本文的算法在在社交稀疏度較大的filmtrust 和Douban 數(shù)據(jù)集中實現(xiàn)了最優(yōu)的推薦性能,在社交稀疏度較小的Ciao數(shù)據(jù)集中,本文變體算法對冷啟動用戶實現(xiàn)最優(yōu)的推薦效果。
在第三個實驗中,探究參數(shù)Top-K 對實驗的影響。在數(shù)據(jù)集filmtrust 中,Top-K 設置在0 到500 之間,其中每隔50 做一次記錄;在數(shù)據(jù)集Ciao 中,設置在0 到100之間,每隔10 做一次記錄;在數(shù)據(jù)集Douban 中,Top-K設置在0到20之間,并進行記錄,如圖5所示。
由圖5可知,在film-trust數(shù)據(jù)集中,當Top-K設置在0~50時,性能顯著提高,設置為150時,本文算法的兩個指標均達到了最優(yōu)的推薦性能,Top-K超過150時,因為過擬合的產(chǎn)生,兩個指標極為緩慢地上升。在Ciao 數(shù)據(jù)集中,當Top-K 設置為50 時,RMSE 的值最小,超過50 時,該指標上升比較明顯,該數(shù)據(jù)集MAE 指標是在Top-K 設置為20 時最小,超過20 時,該指標顯著上升,甚至超過70時,該指標已經(jīng)超過Top-K為0時的值。在Douban 數(shù)據(jù)集中,當Top-K 設置為5 時,MAE 的值最小,當Top-K 設置為10 時,RMSE 的值最小。該實驗結果表明,Top-K對實驗性能有明顯的影響。
圖5 Top-K對評價指標的影響Fig.5 Impact of Top-K on evaluation indexes
本文融合圖神經(jīng)網(wǎng)絡提出了一個傳遞物品相似性的社會化推薦模型,該模型分別通過物品隱性相似性網(wǎng)絡和社交網(wǎng)絡對物品和用戶的特征進行約束,既能間接傳播用戶的偏好,又能間接傳遞物品的相似性。在3個數(shù)據(jù)集上與當前經(jīng)典算法進行對比實驗,實驗結果證明:該模型提高了推薦性能,在一定程度上為冷啟動用戶提供很好的物品推薦。下一步的工作,將重點利用神經(jīng)網(wǎng)絡來解決物品排序的問題。