任柯舟,彭甫镕,郭 鑫,王 喆,張曉靜
(山西大學(xué)大數(shù)據(jù)科學(xué)與產(chǎn)業(yè)研究院,太原 030006)
隨著互聯(lián)網(wǎng)的發(fā)展和電子商務(wù)的蓬勃發(fā)展,信息數(shù)據(jù)呈現(xiàn)爆炸式增長(zhǎng),導(dǎo)致人們面臨的選擇也越來(lái)越多,推薦系統(tǒng)逐漸成為一種普遍應(yīng)用的技術(shù)。傳統(tǒng)的推薦系統(tǒng)大多是基于協(xié)同過(guò)濾或基于內(nèi)容推薦[1],這類(lèi)方法主要基于集體智慧,核心思想是給用戶(hù)推薦他們喜歡物品的相似物品,或者向用戶(hù)推薦與他們有相似行為的用戶(hù)喜歡的物品[2]。雖然這些傳統(tǒng)的方法有不錯(cuò)的效果,但都忽視了用戶(hù)交互物品之間的結(jié)構(gòu)關(guān)系,例如用戶(hù)的行為習(xí)慣、用戶(hù)偏好的發(fā)展及商品的流行時(shí)間等[3]。序列推薦系統(tǒng)能有效利用用戶(hù)與物品的交互序列來(lái)很好地包含這些結(jié)構(gòu)信息,從而進(jìn)行更加準(zhǔn)確和動(dòng)態(tài)的推薦[4]。序列推薦將用戶(hù)的交互物品按照時(shí)間順序來(lái)構(gòu)建一個(gè)序列模型,通過(guò)捕獲物品之間的依賴(lài)關(guān)系獲得用戶(hù)的動(dòng)態(tài)興趣特征,很好地解決了用戶(hù)的興趣遷移問(wèn)題。受處理長(zhǎng)度的影響,序列模型通常得到的是用戶(hù)的短期興趣特征。為了使用戶(hù)特征更加完整,研究人員通常使用矩陣分解模型來(lái)獲取用戶(hù)長(zhǎng)期養(yǎng)成的喜好,即用戶(hù)的長(zhǎng)期興趣。
每位用戶(hù)的交互物品相較于物品總量來(lái)說(shuō)是很稀疏的,因此大多數(shù)的用戶(hù)-物品矩陣是稀疏矩陣,而數(shù)據(jù)的稀疏會(huì)導(dǎo)致推薦的效果下降[5];同時(shí)隨著各大社交網(wǎng)站的發(fā)展,越來(lái)越多的科研人員將社交數(shù)據(jù)作為緩解數(shù)據(jù)稀疏的輔助數(shù)據(jù)[6]。大多數(shù)社會(huì)化推薦都基于同質(zhì)性和社交影響理論,即在社交網(wǎng)路中有聯(lián)系的用戶(hù)有相似的興趣愛(ài)好,同時(shí)具有相似愛(ài)好的人更容易建立聯(lián)系。由于矩陣分解良好的擴(kuò)展性,研究人員在矩陣分解的基礎(chǔ)上提出了兩種融合方式[7]:1)用戶(hù)特征向量的共享表示,在原矩陣分解的基礎(chǔ)上通過(guò)共享用戶(hù)特征,使用戶(hù)-項(xiàng)目矩陣分解得到的用戶(hù)特征向量也可以應(yīng)用在用戶(hù)社交矩陣中;2)用戶(hù)特征重表示,在用戶(hù)興趣與社交興趣相似的基礎(chǔ)上,增加社交約束項(xiàng),保證用戶(hù)特征與社交特征盡可能相似。
用戶(hù)與項(xiàng)目交互是一個(gè)動(dòng)態(tài)序列,用戶(hù)的興趣動(dòng)態(tài)變化[3]在序列推薦算法中已被大量地關(guān)注,而在一般的社會(huì)化推薦算法忽略了用戶(hù)的短期興趣。除了用戶(hù)興趣的動(dòng)態(tài)特性外,社會(huì)化推薦算法也忽略了社交影響的動(dòng)態(tài)特性,將不同時(shí)刻的朋友行為同等對(duì)待。例如,表1展示了用戶(hù)u和其兩個(gè)朋友a(bǔ)、b在t-1到t+1的交互列表,圖1展示朋友a(bǔ)、b對(duì)用戶(hù)u可能的影響力。在t-1時(shí)刻用戶(hù)u和朋友a(bǔ)有相同的交互物品,因此朋友a(bǔ)的影響力要大于朋友b;在t時(shí)刻用戶(hù)u和朋友b有相同的交互物品,因此朋友b的影響力要大于朋友a(bǔ);在t+1 時(shí)刻,雖然朋友a(bǔ),b都交互過(guò)物品3,但朋友a(bǔ)的交互時(shí)刻要比朋友b更接近于用戶(hù)u,因此朋友a(bǔ)的影響力要大于朋友b。
圖1 朋友對(duì)用戶(hù)的影響Fig.1 Influence of friends on a user
表1 用戶(hù)和朋友的交互列表Tab.1 Interactive list of a user and his friends
針對(duì)用戶(hù)的興趣動(dòng)態(tài)變化和社交影響的動(dòng)態(tài)特性,本文提出了一種社交信息動(dòng)態(tài)融合的社會(huì)化推薦模型。首先,利用自注意力機(jī)制構(gòu)建用戶(hù)交互物品的序列模型,捕獲用戶(hù)短期興趣;然后,利用具有時(shí)間遺忘的注意力機(jī)制構(gòu)建社交短期影響,利用具有協(xié)同特性的注意力機(jī)制構(gòu)建社交長(zhǎng)期影響;最后,結(jié)合社交的長(zhǎng)短期影響與用戶(hù)的短期興趣獲得用戶(hù)的最終興趣并產(chǎn)生下一項(xiàng)推薦。本文的主要貢獻(xiàn)如下:
1)在社交短期興趣建模過(guò)程中,提出具有遺忘機(jī)制的注意力融合方法,降低朋友在較遠(yuǎn)時(shí)刻的行為的社交影響力;
2)在社交長(zhǎng)期興趣建模過(guò)程中,提出具有協(xié)同特性的注意力融合方法,加強(qiáng)行為相似的朋友的社交影響力;
3)提出將用戶(hù)短期興趣、社交短期興趣與社交長(zhǎng)期興趣進(jìn)行融合,得到一種社交信息動(dòng)態(tài)融合的推薦模型;
4)在兩個(gè)公開(kāi)數(shù)據(jù)集上分別與最新的序列模型和社會(huì)化模型進(jìn)行對(duì)比驗(yàn)證提出模型的性能。
與基于協(xié)同過(guò)濾的推薦系統(tǒng)的集體智慧相比,序列推薦將重點(diǎn)放在用戶(hù)交互序列之間的依賴(lài)關(guān)系上,考慮物品之間的順序結(jié)構(gòu)關(guān)系,通過(guò)對(duì)用戶(hù)交互物品進(jìn)行序列建模,獲取用戶(hù)的興趣遷移。傳統(tǒng)的序列推薦方法主要基于馬爾可夫鏈,例如Feng 等[8]在下一項(xiàng)興趣點(diǎn)推薦(Point Of Interest,POI)推薦問(wèn)題上,提出了一種個(gè)性化排序度量嵌入方法(Personalized Ranking Metric Embedding,PRME)來(lái)建模個(gè)性化嵌入序列,首先將POI嵌入到高維空間中,然后用歐拉距離表示兩個(gè)POI之間的轉(zhuǎn)換概率,同時(shí)加入用戶(hù)的興趣偏好,最后利用馬爾可夫鏈來(lái)預(yù)測(cè)下一項(xiàng)新的POI,并在兩個(gè)真實(shí)數(shù)據(jù)集上驗(yàn)證了該模型的優(yōu)越性。隨著深度學(xué)習(xí)的發(fā)展,越來(lái)越多的學(xué)者將眼光放在了深度學(xué)習(xí)上。深度學(xué)習(xí)中的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)模型都可以用來(lái)處理序列數(shù)據(jù)。Tang等[9]將在時(shí)間和潛在空間中最近一組項(xiàng)目嵌入到“圖像”中,并使用卷積濾波器學(xué)習(xí)順序模式作為圖像的局部特征。針對(duì)用戶(hù)的長(zhǎng)短期興趣,Li 等[10]提出了區(qū)分長(zhǎng)短期興趣的用戶(hù)動(dòng)態(tài)推薦模型。Ma 等[11]利用矩陣分解的思想得到用戶(hù)的長(zhǎng)期興趣,然后利用分層門(mén)控網(wǎng)絡(luò)(Hierarchical Gated Network,HGN)獲取用戶(hù)短期興趣,最后在預(yù)測(cè)層聚合用戶(hù)的長(zhǎng)短期興趣。
然而不管是傳統(tǒng)的馬爾可夫鏈還是基于深度學(xué)習(xí)的RNN 或者CNN 模型都無(wú)法很好地處理長(zhǎng)距離依賴(lài)問(wèn)題。文獻(xiàn)[12]發(fā)現(xiàn)在機(jī)器翻譯中注意力機(jī)制因其可處理長(zhǎng)距離依賴(lài)關(guān)系和可并行化處理的優(yōu)勢(shì),被廣泛應(yīng)用在各類(lèi)自然語(yǔ)言處理(Nature Language Processing,NLP)問(wèn)題中。Kang 等[13]利用自注意機(jī)制來(lái)構(gòu)建序列模型,通過(guò)實(shí)驗(yàn)驗(yàn)證了該模型的有效性。Liu 等[14]提出了一種基于會(huì)話(huà)推薦的短期注意/記憶優(yōu)先級(jí)模型,通過(guò)注意力機(jī)制來(lái)獲取用戶(hù)最后一次交互產(chǎn)生的短期記憶,并從用戶(hù)的上下文中捕獲用戶(hù)的長(zhǎng)期興趣,在3 個(gè)基準(zhǔn)數(shù)據(jù)集上驗(yàn)證了模型的有效性。
因評(píng)分矩陣的稀疏性,人們引入社交信息作為額外信息來(lái)緩解數(shù)據(jù)稀疏的問(wèn)題。Yang 等[15]在矩陣分解的基礎(chǔ)上,提出了一種基于用戶(hù)共享表示的特征融合方式。將用戶(hù)與物品交互矩陣分解為用戶(hù)特征和物品特征,并將用戶(hù)社交矩陣分解為用戶(hù)信任特征和被信任特征,通過(guò)共享用戶(hù)特征和用戶(hù)信任特征來(lái)融合社交信息。Jamali 等[16]認(rèn)為用戶(hù)的個(gè)性化特征與其朋友的個(gè)性化特征類(lèi)似,在矩陣分解的基礎(chǔ)上增加約束項(xiàng)使用戶(hù)朋友的個(gè)性化特征與用戶(hù)的個(gè)性特征類(lèi)似。Sun等[17]提出了一種基于遞歸網(wǎng)絡(luò)的時(shí)間社會(huì)推薦方法,利用上一時(shí)刻的長(zhǎng)短期記憶(Long Short-Term Memory,LSTM)神經(jīng)網(wǎng)絡(luò)輸出,通過(guò)注意力機(jī)制捕獲用戶(hù)朋友的長(zhǎng)期興趣,然后將當(dāng)前時(shí)刻的輸入和得到的社交信息輸入到LSTM 中得到用戶(hù)的動(dòng)態(tài)興趣,同時(shí)利用用戶(hù)的長(zhǎng)期興趣通過(guò)注意力機(jī)制來(lái)再次聚合用戶(hù)朋友的長(zhǎng)期興趣,最后通過(guò)加權(quán)聚合用戶(hù)的長(zhǎng)短期興趣。
以上方法忽視用戶(hù)的短期興趣和社交影響的動(dòng)態(tài)特性,本文針對(duì)這兩點(diǎn)提出了一種社交信息動(dòng)態(tài)融合的社會(huì)化推薦模型。
假設(shè)有M個(gè)用戶(hù)組成的用戶(hù)集合U,N個(gè)物品組成的物品集合R。對(duì)于每一個(gè)用戶(hù)u交互過(guò)的物品集合,按時(shí)間順序進(jìn)行重新排序,構(gòu)建用戶(hù)的交互列表Ru=。用戶(hù)通常含蓄的表達(dá)喜好,而不是給予準(zhǔn)確的評(píng)分值。因此本文考慮隱式反饋的問(wèn)題:如果用戶(hù)u在t時(shí)刻交互(點(diǎn)擊或收藏、購(gòu)買(mǎi))了物品i,則=1;否則=0。為了統(tǒng)一表示,本文使用i,j表示物品,u表示用戶(hù),a,b表示朋友。使用F∈RM×M表示用戶(hù)之間的有向社交矩陣:如果用戶(hù)u收藏或關(guān)注了用戶(hù)b,則Fu,b=1;否則Fu,b=0。因?yàn)槭怯邢蛏缃魂P(guān)系,因此Fu,b≠Fb,u,F(xiàn)u表示用戶(hù)u的朋友集合。
下一項(xiàng)推薦問(wèn)題是在給定用戶(hù)的交互物品序列Ru=和用戶(hù)之間的社交關(guān)系Fu前提下,預(yù)測(cè)用戶(hù)在t+1時(shí)刻的交互行為。
針對(duì)序列推薦中的數(shù)據(jù)稀疏問(wèn)題,提出了一種社交信息動(dòng)態(tài)融合的社會(huì)化推薦,其整體框架如圖2所示。整體分為3層,從下到上分別為處理用戶(hù)序列信息的短期興趣層、融合社交信息的社交融合層和預(yù)測(cè)用戶(hù)評(píng)分的預(yù)測(cè)層。
圖2 模型框架Fig.2 Framework of the model
為了實(shí)現(xiàn)對(duì)用戶(hù)興趣的動(dòng)態(tài)描述在短期興趣層,使用自注意機(jī)制針對(duì)用戶(hù)的歷史交互行為構(gòu)建序列模型,得到用戶(hù)的短期興趣。
如果用戶(hù)u在t時(shí)刻對(duì)物品i有興趣,一般近期交互過(guò)物品i的朋友和長(zhǎng)期接觸物品i的朋友可能對(duì)用戶(hù)當(dāng)前興趣產(chǎn)生更大的影響,因此將社交融合層,分為左側(cè)的社交短期興趣和右側(cè)的社交長(zhǎng)期興趣,并使用具有時(shí)間遺忘的注意力機(jī)制對(duì)社交短期興趣進(jìn)行建模,使用具有協(xié)同特性的注意力機(jī)制對(duì)社交長(zhǎng)期興趣進(jìn)行建模。
在社交短期興趣部分,利用用戶(hù)t時(shí)刻的短期興趣通過(guò)注意力機(jī)制融合朋友的短期興趣,得到用戶(hù)動(dòng)態(tài)興趣特征,并將朋友行為的遺忘曲線(xiàn)加入到注意力權(quán)重中。在社交長(zhǎng)期興趣部分,利用用戶(hù)t時(shí)刻的短期興趣Aut通過(guò)注意力機(jī)制融合朋友的長(zhǎng)期興趣Va,得到用戶(hù)靜態(tài)興趣特征,并將用戶(hù)與朋友的杰卡德相似度系數(shù)加入注意力權(quán)重中。最后在預(yù)測(cè)層通過(guò)權(quán)重參數(shù)α和β融合社交的長(zhǎng)短期興趣與用戶(hù)的短期興趣獲得用戶(hù)在t+1時(shí)刻的最終興趣:
其中:表示用戶(hù)u在t+1 時(shí)預(yù)測(cè)的用戶(hù)興趣,α和β為自學(xué)習(xí)的權(quán)重參數(shù)。
下面分別從短期興趣層、社交融合層和預(yù)測(cè)層三部分詳細(xì)介紹本文的模型。
因?yàn)樽宰⒁饬C(jī)制在處理序列關(guān)系中可并行和處理長(zhǎng)期依賴(lài)的優(yōu)點(diǎn),使用自注意力機(jī)制搭建用戶(hù)與物品的交互序列模型,通過(guò)短期興趣得到用戶(hù)u在t時(shí)刻的短期興趣特征。短期興趣層的整體結(jié)構(gòu)如圖3 所示,分為特征嵌入層、位置嵌入層和自注意力層。
圖3 短期興趣層Fig.3 Short-term interest layer
隱式反饋只包含用戶(hù)id和物品id并不包含其它上下文及額外信息,為了豐富用戶(hù)表示,參照Word Embedding[18]思想,使用嵌入層將用戶(hù)和物品id 轉(zhuǎn)換為固定長(zhǎng)度的向量,并通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)潛在空間參數(shù)。
為了便于訓(xùn)練,固定用戶(hù)交互物品的序列大小。取用戶(hù)交互物品序列中的最后n項(xiàng)物品作為模型的輸入,如果用戶(hù)交互個(gè)數(shù)小于n,則在序列的前端填充0。將用戶(hù)u的交互物品序列映射到d維的物品潛在空間得到固定長(zhǎng)度的用戶(hù)交互物品嵌入特征,用戶(hù)id 映射到d維的用戶(hù)潛在空間得到用戶(hù)的長(zhǎng)期興趣特征Vu。
因?yàn)樽宰⒁饬C(jī)制平等的對(duì)待t時(shí)刻之前的每個(gè)交互物品,并不包含具體的位置信息,本文使用Vaswani 等[12]的固定位置嵌入方法:
其中I=[I1,I2,…,In]表示位置信息嵌入矩陣。
注意力機(jī)制模仿人類(lèi)眼睛的觀察行為,在機(jī)器翻譯任務(wù)等各類(lèi)自然語(yǔ)言處理任務(wù)中證明自注意力機(jī)制的有效性,本文采用自注意力機(jī)制來(lái)構(gòu)建序列模型[7],對(duì)于用戶(hù)t時(shí)刻的短期興趣具體定義如下:
通過(guò)對(duì)t時(shí)刻之前用戶(hù)交互物品的聚合,得到用戶(hù)在t時(shí)刻的短期興趣特征。為了賦予模型非線(xiàn)性并考慮不同潛在維度之間的相互作用,參照文獻(xiàn)[7]添加全連接層和多頭操作,并對(duì)自注意力和全連接層進(jìn)行疊加,得到用戶(hù)的短期興趣Aut。全連接層定義如下:
2.4.1 社交短期興趣
當(dāng)用戶(hù)u在t時(shí)刻對(duì)物品i感興趣時(shí),若他的朋友a(bǔ)最近收藏或購(gòu)買(mǎi)過(guò)類(lèi)似于i的物品,那么朋友a(bǔ)可能對(duì)用戶(hù)u產(chǎn)生比其他未交互物品i的朋友更大的影響,并且朋友a(bǔ)的很久以前的行為與近期行為對(duì)用戶(hù)u的影響不同?;谝陨峡紤],提出了具有時(shí)間遺忘的注意力機(jī)制來(lái)對(duì)社交短期興趣進(jìn)行建模。首先,利用2.3 節(jié)中的自注意層得到用戶(hù)朋友的短期興趣;然后,利用用戶(hù)的短期興趣在朋友的短期興趣中搜索那些與用戶(hù)當(dāng)前興趣相似的朋友,并根據(jù)相似度賦予相應(yīng)的權(quán)重,同時(shí)為了使不同時(shí)刻的朋友興趣對(duì)用戶(hù)的影響不同,在相似度權(quán)重中加入時(shí)間遺忘值,最后根據(jù)得到的權(quán)重聚合朋友的短期興趣。具體定義如下:
為了保持物品的有序性,將用戶(hù)朋友在t時(shí)刻之后交互的物品屏蔽掉;并且加入時(shí)間因素,當(dāng)朋友短期興趣的時(shí)間ta距離當(dāng)前時(shí)刻t越遠(yuǎn)時(shí)對(duì)當(dāng)前時(shí)刻的用戶(hù)影響越小。在注意力權(quán)重部分加入時(shí)間遺忘值,來(lái)減少距離當(dāng)前時(shí)刻較遠(yuǎn)的朋友興趣的影響,具體定義如下:
其中:時(shí)間t和ta的基本時(shí)間單位是周,為朋友a(bǔ)的行為對(duì)應(yīng)的時(shí)間。
2.4.2 社交長(zhǎng)期興趣
一般情況下,如果用戶(hù)u在t時(shí)刻喜歡物品i,那么長(zhǎng)期與物品i交互的朋友能給用戶(hù)u提供更好的建議。在此基礎(chǔ)上提出了具有協(xié)同特性的注意力機(jī)制對(duì)社交長(zhǎng)期興趣進(jìn)行建模。利用用戶(hù)的短期興趣,通過(guò)注意力機(jī)制在朋友的長(zhǎng)期興趣中查找與用戶(hù)當(dāng)前興趣相似的用戶(hù)。同時(shí)通過(guò)杰卡德(Jaccard)相似度系數(shù)[19]進(jìn)一步利用序列信息計(jì)算用戶(hù)與朋友的相似度,并將該相似度加入注意力權(quán)重中。具體定義如下:
同時(shí)考慮用戶(hù)與朋友之間的總體相似度,加入用戶(hù)與朋友之間的杰卡德相似度系數(shù)來(lái)加強(qiáng)那些與用戶(hù)相似度更近的朋友,杰卡德相似度系數(shù)定義如下:
其中:Ru表示用戶(hù)u交互物品的集合,∩和∪分別表示交和并操作。
為了穩(wěn)定訓(xùn)練過(guò)程并防止過(guò)擬合,加入layer Normalization 和dropout 操作[7]。針對(duì)2.3 和2.4 節(jié)中的任意網(wǎng)絡(luò)層(注意力層和全連接層),網(wǎng)絡(luò)層定義為z=y(x),增加層歸一化(layer Normalization)和dropout操作后的定義如下:
利用式(1)得到用戶(hù)的下一項(xiàng)推薦Gu t+1根據(jù)矩陣分解[20]的思想預(yù)測(cè)用戶(hù)在t+1時(shí)刻對(duì)物品i的喜好程度:
其中hi表示物品i在物品潛在空間的嵌入特征。
將t時(shí)刻之前的用戶(hù)交互物品作為模型輸入得到用戶(hù)在t+1 時(shí)刻下一項(xiàng)推薦,用二元交叉熵?fù)p失函數(shù)[7]作為目標(biāo)函數(shù),并將用戶(hù)的t+1 時(shí)刻的交互物品作為正樣本,用戶(hù)從未交互過(guò)的物品j作為負(fù)樣本:
其中θ(x)=1/(1+e-x),將預(yù)測(cè)的喜好程度調(diào)整至(0,1)區(qū)間。
使用2014 年提出的Adam[21]優(yōu)化算法,繼承了AdaGrad(Adaptive Gradient Algorithm)和RMSProp(Root Mean Square Prop)的優(yōu)點(diǎn),具有計(jì)算高效、方便實(shí)現(xiàn)和較好處理系數(shù)梯度等優(yōu)點(diǎn)。整體算法流程如算法1所示。
使用同時(shí)滿(mǎn)足序列信息和社交信息的兩個(gè)公開(kāi)的隱式反饋數(shù)據(jù)集brightkite 和Last.FM,將兩個(gè)數(shù)據(jù)集的用戶(hù)交互物品序列按照時(shí)間戳進(jìn)行排序來(lái)保證序列性。
brightkite 是一個(gè)基于位置的社交網(wǎng)絡(luò)數(shù)據(jù)集,用戶(hù)通過(guò)簽到來(lái)實(shí)時(shí)共享他們的位置。它包含了從2008年3月21日至2010年10月18日的用戶(hù)交互記錄及用戶(hù)之間的社交關(guān)系。Last.FM 是一個(gè)音樂(lè)數(shù)據(jù)集,記錄了從2005年8月1日到2011 年5 月9 日用戶(hù)對(duì)歌曲的評(píng)價(jià)及用戶(hù)之間的社交記錄,詳細(xì)的數(shù)據(jù)信息見(jiàn)表2。
表2 數(shù)據(jù)集詳細(xì)信息Tab.2 Dataset detailed information
模型主要參數(shù)有:batch_lr表示每次訓(xùn)練的用戶(hù)個(gè)數(shù)和學(xué)習(xí)率,maxlen 表示用戶(hù)的最大交互個(gè)數(shù),dropout 表示丟失率,maxfriend表示最大的用戶(hù)朋友個(gè)數(shù)。兩個(gè)數(shù)據(jù)集的具體參數(shù)見(jiàn)表3。
表3 兩個(gè)數(shù)據(jù)集的參數(shù)Tab.3 Parameters of two datasets
本文使用leave-one-out[7]來(lái)對(duì)數(shù)據(jù)集進(jìn)行分類(lèi),將用戶(hù)的最后一個(gè)交互物品作為測(cè)試集來(lái)評(píng)估模型的最終性能,將剩余的交互物品作為訓(xùn)練集。在評(píng)估推薦性能時(shí),將測(cè)試集作為正樣本i,從未交互的物品集合中隨機(jī)抽取100 個(gè)物品作為負(fù)樣本,將正負(fù)樣本結(jié)合組成包含101 個(gè)物品的推薦物品列表,然后利用Top-N指標(biāo)來(lái)評(píng)估模型性能。
本文使用的Top-N評(píng)價(jià)指標(biāo)為HR@10[22]和NDCG@10[23]。
命中率(HR@10)評(píng)估在推薦列表的相似度排名中正樣本是否能排在前10,若排在前10則認(rèn)為命中:
其中:U表示所有用戶(hù)的集合;lu,i表示正樣本i預(yù)測(cè)評(píng)分值在推薦列表中的排序位置;為指示函數(shù)表示正樣本i的排序位置是否在前10,是為1,不是為0。
NDCG@10 在HR 的基礎(chǔ)上加入了位置因素,當(dāng)正樣本的排名越靠前時(shí),推薦效果更好:
為了驗(yàn)證本文的模型,與使用了序列信息的序列推薦模型(BERT4Rec、SASRec)和使用了社交信息的社交推薦模型(DiffNet)進(jìn)行對(duì)比驗(yàn)證。
使用python 對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,利用tensorflow 實(shí)現(xiàn)SLSRec 模型,在高性能服務(wù)器(CPU 主頻2.20 GHz*24,內(nèi)存126 GB,4 塊NVIDIA P100 的顯卡及2.7 TB 磁盤(pán))上進(jìn)行實(shí)驗(yàn)。采用早停機(jī)制進(jìn)行實(shí)驗(yàn),一次迭代200 次左右能達(dá)到最優(yōu)推薦結(jié)果,訓(xùn)練及評(píng)估運(yùn)行時(shí)間在2 h左右。
SASRec[7]2018 年Kang 等提出的一種捕獲長(zhǎng)期語(yǔ)義的自注意力序列推薦模型。
BERT4Rec[24]2019年Sun等提出的一種序列推薦模型,該模型首次將深度雙向順序模型和完形目標(biāo)引入推薦系統(tǒng)領(lǐng)域,通過(guò)完形任務(wù)用雙向自注意網(wǎng)絡(luò)來(lái)建模用戶(hù)行為序列。
DiffNet[25]2019 年Wu 等提出的一種基于社會(huì)化推薦的深度影響傳播模型,設(shè)計(jì)了一個(gè)分層影響傳播結(jié)構(gòu),以模擬用戶(hù)的潛在嵌入是如何隨著社會(huì)擴(kuò)散過(guò)程的繼續(xù)而演變的,以此來(lái)表示用戶(hù)如何受到遞歸社會(huì)擴(kuò)散過(guò)程的影響。
3.4.1 SLSRec的性能測(cè)試
通過(guò)在兩個(gè)數(shù)據(jù)集上與所有的對(duì)比模型的比較來(lái)驗(yàn)證本文模型的性能。3.3節(jié)中的對(duì)比模型都是用tensorflow 來(lái)實(shí)現(xiàn)的,并且針對(duì)兩個(gè)數(shù)據(jù)集對(duì)各個(gè)模型的參數(shù)進(jìn)行了微調(diào)。針對(duì)DiffNet和BERT4Rec按照模型要求對(duì)數(shù)據(jù)集進(jìn)行進(jìn)一步處理,剔除了那些交互個(gè)數(shù)小于2 的用戶(hù),并對(duì)剔除后的數(shù)據(jù)集進(jìn)行了新的id 映射。因?yàn)锽ERT4Rec 對(duì)內(nèi)存的要求很高,在數(shù)據(jù)量較大的brightkite 數(shù)據(jù)集上難以進(jìn)行驗(yàn)證。各模型在兩個(gè)數(shù)據(jù)集上的NDCG@10 和HR@10 的結(jié)果如表4 所示,其中最優(yōu)的結(jié)果用加粗表示,次優(yōu)的結(jié)果使用下劃線(xiàn)來(lái)表示,并在最后一行給出了SLSRec相較于次優(yōu)結(jié)果的提升比率。
表4 不同模型在兩個(gè)數(shù)據(jù)集上的結(jié)果對(duì)比Tab.4 Comparison of results of various models on two datasets
從3.1 節(jié)數(shù)據(jù)集的分析中可以看出,brightkite 數(shù)據(jù)集中評(píng)分?jǐn)?shù)據(jù)密度是遠(yuǎn)遠(yuǎn)小于Last.FM的,因此從表4可以看出在brightkite 數(shù)據(jù)集的所有模型的結(jié)果要小于在Last.FM 數(shù)據(jù)集上的結(jié)果。本文提出的SLSRec 在序列推薦的基礎(chǔ)上加入用戶(hù)的社交信息,來(lái)緩解數(shù)據(jù)稀疏問(wèn)題。從表3 可以看出,針對(duì)數(shù)據(jù)密度較大的Last.FM 數(shù)據(jù)集,SLSRec 在HR 指標(biāo)上有1.3%的提升,在NDCG 指標(biāo)上有2.1%的提升,說(shuō)明SLSRec的推薦結(jié)果的命中程度提升不大,但是命中物品的排名更高。相反,SLSRec 模型在數(shù)據(jù)密度較小的brightkite 數(shù)據(jù)集中HR指標(biāo)有8.5%的提升,NDCG 指標(biāo)有8.9%的提升,說(shuō)明本文提出的SLSRec能有效緩解數(shù)據(jù)稀疏問(wèn)題。
3.4.2 消融實(shí)驗(yàn)
從圖2 中可以看出,社交融合層分為社交短期興趣和社交長(zhǎng)期興趣兩個(gè)部分。同時(shí)分別在社交短期興趣部分加入時(shí)間遺忘值,在社交長(zhǎng)期興趣部分加入杰卡德相似度系數(shù)。本文通過(guò)消融研究分析它們的影響,表5 顯示了SLSRec 的默認(rèn)方法及其4 種結(jié)構(gòu)在兩個(gè)數(shù)據(jù)集上的性能。下面分別介紹了變體并分析了它們的效果:
1)Short 結(jié)構(gòu):表示社交短期興趣部分,在序列推薦的基礎(chǔ)上僅僅加入用戶(hù)朋友的短期興趣,可以看出相對(duì)純粹的序列推薦模型該變體的推薦效果還是有所提升。
2)Short+time 結(jié)構(gòu):相對(duì)Short 結(jié)構(gòu)加入了時(shí)間遺忘值Tt,ta,通過(guò)時(shí)間遺忘值來(lái)弱化那些相對(duì)當(dāng)前時(shí)刻較遠(yuǎn)物品的影響,從表4可以看出加入時(shí)間遺忘值之后推薦效果有所提升。
3)Long 結(jié)構(gòu):表示社交長(zhǎng)期興趣部分,在序列推薦的基礎(chǔ)上僅僅加入用戶(hù)社交的長(zhǎng)期興趣,相對(duì)于純粹的序列推薦模型有所提升并且提升幅度要大于加入社交的短期興趣。
4)Long+sim 結(jié)構(gòu):在Long結(jié)構(gòu)的基礎(chǔ)上加入杰卡德相似度系數(shù),在注意力權(quán)重的基礎(chǔ)上加強(qiáng)那些與用戶(hù)行為相似的朋友信息,相較于long結(jié)構(gòu)效果有所提升。
5)SLSRec(Short+time+Long+sim)結(jié)構(gòu):利用α和β來(lái)融合Short+time結(jié)構(gòu)和Long+sim 結(jié)構(gòu),從表5中看出總體效果有所提升。
表5 兩個(gè)數(shù)據(jù)集上的消融實(shí)驗(yàn)分析Tab.5 Ablation experiment analysis on two datasets
3.4.3 社交影響力分析
式(1)中的α和β通過(guò)自學(xué)習(xí)的方式來(lái)融合模型中各個(gè)因素的比例關(guān)系:α值可以反映模型中的用戶(hù)短期興趣和社交短期興趣的權(quán)重大小,如果α值越大則社交短期興趣的權(quán)重越大,否則用戶(hù)短期興趣的權(quán)重越大;β值表示社交長(zhǎng)期興趣的的權(quán)重,越小則社交長(zhǎng)期興趣的權(quán)重越小。
從圖4 可以看出,在數(shù)據(jù)較為密集的Last.FM 數(shù)據(jù)集中α都比較低,而在數(shù)據(jù)較為稀疏的brightkite 數(shù)據(jù)集中,α的值要遠(yuǎn)大于Last.FM 數(shù)據(jù)集中的值,即:用戶(hù)行為數(shù)據(jù)越少,社交短期興趣對(duì)用戶(hù)最終興趣重構(gòu)貢獻(xiàn)越大。β值在兩個(gè)數(shù)據(jù)集基本保持不變,說(shuō)明社交長(zhǎng)期興趣比較穩(wěn)定,受到數(shù)據(jù)稀疏性的影響較弱。
圖4 參數(shù)α和β的值Fig.4 Values of parameters α and β
3.4.4 最大朋友和最大交互物品的參數(shù)分析
圖5 展示了最大序列長(zhǎng)度maxlen 和最大朋友個(gè)數(shù)maxfriend 對(duì)模型推薦性能的影響,maxlen 主要影響的是序列推薦的結(jié)果,maxfriend 主要影響的是社交融合的結(jié)果。因服務(wù)器內(nèi)存的大小限制,無(wú)法運(yùn)行maxlen 超過(guò)200 和maxfriend超過(guò)15的實(shí)驗(yàn)。
圖5 maxlen和maxfriend參數(shù)的影響Fig.5 Influence of maxlen and maxfriend parameters
從圖5 可以觀察到,maxlen 和maxfriend 對(duì)推薦結(jié)果的影響與數(shù)據(jù)的密度有關(guān)。對(duì)于數(shù)據(jù)密度較大的Last.FM 數(shù)據(jù)集,maxlen 影響較大,性能曲線(xiàn)呈現(xiàn)整體上升的趨勢(shì);maxfriend 影響較小,性能曲線(xiàn)整體比較平穩(wěn)。在數(shù)據(jù)較為稀疏的brightkite數(shù)據(jù)集中,maxlen影響較小,性能曲線(xiàn)整體比較平穩(wěn);maxfriend影響較大,性能曲線(xiàn)整體比較平穩(wěn)。從兩個(gè)數(shù)據(jù)集的對(duì)比可以看出,本文提出的SLSRec模型在稀疏數(shù)據(jù)上能更有效地利用朋友興趣恢復(fù)用戶(hù)興趣進(jìn)而提升推薦效果。
針對(duì)社會(huì)化推薦模型忽視用戶(hù)動(dòng)態(tài)興趣和朋友對(duì)用戶(hù)影響的動(dòng)態(tài)變化的情況,提出一種社交信息動(dòng)態(tài)融合的社會(huì)化推薦算法。首先,利用自注意力機(jī)制構(gòu)建用戶(hù)短期興趣;然后,利用具有時(shí)間遺忘的注意力機(jī)制構(gòu)建社交短期興趣,利用具有協(xié)同特性的注意力機(jī)制構(gòu)建社交長(zhǎng)期興趣;最后,融合社交的長(zhǎng)短期興趣與用戶(hù)的短期興趣獲得用戶(hù)的最終興趣并產(chǎn)生下一項(xiàng)推薦。在實(shí)驗(yàn)部分利用HR@10和NDCG@10指標(biāo)對(duì)模型性能進(jìn)行評(píng)估,結(jié)果表明SLSRec 算法在Last.FM 和brightkite數(shù)據(jù)集上相較于最新的推薦模型推薦效果都有所提升。本文主要利用朋友的一階關(guān)系,沒(méi)有進(jìn)一步考慮社交網(wǎng)絡(luò)中的影響擴(kuò)散,在下一步工作中將利用GCN 等網(wǎng)絡(luò)模型來(lái)捕獲不同時(shí)刻朋友興趣在社交網(wǎng)絡(luò)中的影響擴(kuò)散。