萬 梅 曹 琳
1(廣州工商學(xué)院計(jì)算科學(xué)與工程系 廣東 廣州 510850) 2(南方醫(yī)科大學(xué)基礎(chǔ)醫(yī)學(xué)院 廣東 廣州 510515)
隨著移動(dòng)互聯(lián)網(wǎng)的普及,人們?cè)谠S多平臺(tái)均成為了社交網(wǎng)絡(luò)的一個(gè)成員,并且許多人在多個(gè)不同類型的平臺(tái)均建立了社交關(guān)系[1]。目前含有社交網(wǎng)絡(luò)的應(yīng)用平臺(tái)包括網(wǎng)易云音樂、淘寶網(wǎng)、豆瓣電影和抖音短視頻等[2]。近期網(wǎng)紅經(jīng)濟(jì)的發(fā)展也十分迅速,一部分流量明星和網(wǎng)紅擁有巨大的“帶貨”能力,對(duì)潛在消費(fèi)者的購買決定具有極大的影響力。人們?cè)谏缃痪W(wǎng)絡(luò)上所表現(xiàn)出的社群特點(diǎn)和興趣聚合特點(diǎn),促使專家學(xué)者研究利用社交網(wǎng)絡(luò)提高推薦系統(tǒng)的效果,最終最大化商品的銷售量以及服務(wù)的滿意度[3]。
國內(nèi)外的專家學(xué)者已經(jīng)提出了諸多社交網(wǎng)絡(luò)和推薦系統(tǒng)結(jié)合的成功方案。文獻(xiàn)[4]提出了企業(yè)間供應(yīng)關(guān)系和推薦系統(tǒng)的結(jié)合方法,通過分析企業(yè)間的聯(lián)系促進(jìn)推薦系統(tǒng)的推薦多樣性。文獻(xiàn)[5]首先提取用戶的社交檔案和社區(qū)標(biāo)簽,再結(jié)合新聞的語義空間向量預(yù)測相似用戶的偏好,該算法在新聞推薦問題上取得了較好的推薦準(zhǔn)確率。文獻(xiàn)[6]圍繞社交推薦的特點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了一種社交網(wǎng)絡(luò)評(píng)分預(yù)測方法,解決了評(píng)分預(yù)測中用戶評(píng)分主觀性及評(píng)分?jǐn)?shù)據(jù)稀疏帶來的預(yù)測不準(zhǔn)確問題。文獻(xiàn)[7]將傳統(tǒng)聚類方法與蛋白質(zhì)網(wǎng)絡(luò)的新特性相結(jié)合,提出了一種競爭-抑制節(jié)點(diǎn)模型,該模型通過數(shù)據(jù)預(yù)處理和特征值競爭抑制機(jī)制較好地完成數(shù)據(jù)過濾,從而提高數(shù)據(jù)處理效率并提升最終推薦結(jié)果的精度。文獻(xiàn)[4-7]均基于社交網(wǎng)絡(luò)的靜態(tài)拓?fù)浣Y(jié)構(gòu),并未考慮社交網(wǎng)絡(luò)動(dòng)態(tài)演化對(duì)用戶偏好的影響。然而,社交網(wǎng)絡(luò)上的信息來源日益增多,且傳播速度極快,因此需要對(duì)社交網(wǎng)絡(luò)信息進(jìn)行實(shí)時(shí)地動(dòng)態(tài)分析,才能最大化社交網(wǎng)絡(luò)信息的價(jià)值。
考慮社交網(wǎng)絡(luò)動(dòng)態(tài)演化對(duì)用戶偏好的影響,提出一種基于神經(jīng)網(wǎng)絡(luò)嵌入和動(dòng)態(tài)社交網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的新聞推薦系統(tǒng)。首先使用神經(jīng)網(wǎng)絡(luò)嵌入學(xué)習(xí)方法來學(xué)習(xí)用戶的時(shí)域行為特征,使用無監(jiān)督的圖上隨機(jī)游走方法學(xué)習(xí)社交網(wǎng)絡(luò)拓?fù)涞慕Y(jié)構(gòu)信息,利用插值法將兩個(gè)嵌入向量融合成一個(gè)用戶表示向量。然后,利用核映射方法將用戶表示向量映射至低維空間,從而提高相似性計(jì)算的效率。基于新浪微博數(shù)據(jù)完成了新聞推薦實(shí)驗(yàn),結(jié)果表明引入用戶時(shí)域的行為信息能夠增強(qiáng)推薦系統(tǒng)的性能,并且采用神經(jīng)網(wǎng)絡(luò)嵌入學(xué)習(xí)的效果好于傳統(tǒng)基于概率的表示方法。
本文的第一個(gè)目標(biāo)是將社交網(wǎng)絡(luò)的用戶分成不重疊的社群,同一個(gè)社群內(nèi)的用戶應(yīng)當(dāng)對(duì)相似的項(xiàng)目內(nèi)容(電影、商品、新聞等)表現(xiàn)出相似的時(shí)域行為,并且用戶間存在密集的社交連接。
問題模型可描述為:給定一個(gè)用戶集U,問題目標(biāo)是將U分成不重疊的子集,每個(gè)用戶u∈U屬于唯一的子集。將社群分組結(jié)果表示為P={C:C?U,|C|>1},其中?Ci,Cj≠i∈P:Ci∩Cj=?。本文的目標(biāo)是識(shí)別出目標(biāo)P,P的每個(gè)成員Ci對(duì)目標(biāo)項(xiàng)目的時(shí)域行為相似。
本文通過三個(gè)階段尋找目標(biāo)P:(1) 基于時(shí)域行為的社交網(wǎng)絡(luò)表示學(xué)習(xí);(2) 神經(jīng)網(wǎng)絡(luò)嵌入;(3) 檢測目標(biāo)社群。
用戶時(shí)域行為設(shè)為D=(U,M,T),其中U為用戶集,M為用戶產(chǎn)生的內(nèi)容,例如:商品評(píng)價(jià)、評(píng)分等,T為一個(gè)時(shí)間段。將社交網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)建模為有向圖,記為Γ=(Y,A),其節(jié)點(diǎn)為Y中的用戶,邊為每對(duì)用戶的社交關(guān)系,如:(u,v)∈A表示u“關(guān)注”v的關(guān)系。
從兩個(gè)信息源建立用戶表示:(1) 基于時(shí)域社交行為D=(U,M,T)的時(shí)域信息嵌入;(2) 基于社交網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)Γ=(Y,A)的社交連接嵌入。首先,從用戶的時(shí)域行為學(xué)習(xí)用戶的向量表示W(wǎng)D,時(shí)域行為相似的用戶在向量空間應(yīng)當(dāng)更加靠近。提出一種嵌入學(xué)習(xí)方法,通過最大化兩個(gè)用戶間相似性,保證兩個(gè)用戶在向量空間內(nèi)靠近。然后,從社交網(wǎng)絡(luò)的鄰居節(jié)點(diǎn)學(xué)習(xí)用戶的網(wǎng)絡(luò)拓?fù)浔硎網(wǎng)G,采用無監(jiān)督的圖上隨機(jī)游走[8]方法學(xué)習(xí)拓?fù)浣Y(jié)構(gòu),學(xué)習(xí)的向量空間幾何關(guān)系反映了原社交網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。從時(shí)域社交行為和社交網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)所學(xué)習(xí)的向量表示之間彼此獨(dú)立,然后將這兩個(gè)單模表示通過線性插值結(jié)合成一個(gè)多模表示。
將用戶時(shí)域行為表示為三元組格式D=(U,M,T),其中U為用戶集,M為U產(chǎn)生的內(nèi)容,T為一個(gè)時(shí)間段。從M中檢測出時(shí)間段T內(nèi)的偏好項(xiàng)目集Z,將用戶u∈U在時(shí)間段1≤t≤T內(nèi)對(duì)項(xiàng)目z∈Z的偏好表示為一個(gè)時(shí)間序列,記為Xuz=[xuz,1,xuz,2,…,xuz,T],其中xuz,t∈P表示用戶u在時(shí)間t對(duì)項(xiàng)目z的偏好。將所有用戶的項(xiàng)目偏好時(shí)間序列組成一個(gè)三維結(jié)構(gòu),記為Ξ={xuz,t:u∈U,z∈Z, 1≤t≤T}。
圖1給出了3個(gè)用戶對(duì)于5個(gè)項(xiàng)目的興趣度演化實(shí)例圖,圖中用戶2和用戶1在第1~10天對(duì)項(xiàng)目4表現(xiàn)出相似的時(shí)域行為,用戶2和用戶3在第5~7天對(duì)項(xiàng)目3表現(xiàn)出相似的時(shí)域行為。

圖1 3個(gè)用戶對(duì)于5個(gè)項(xiàng)目的興趣度演化實(shí)例
本文的多元時(shí)間序列能夠準(zhǔn)確捕捉用戶對(duì)指定項(xiàng)目的興趣演化過程。該方法包含兩個(gè)步驟:(1) 使用LDA[9]搜索時(shí)間段T內(nèi)的項(xiàng)目集Z;(2) 使用文獻(xiàn)[10]的偏好模型計(jì)算每個(gè)用戶在時(shí)間t對(duì)項(xiàng)目z∈Z的偏好,記為xuz,t。具體處理方法為:將指定用戶發(fā)布的所有評(píng)價(jià)收集到一個(gè)文檔中,所有用戶的評(píng)價(jià)集合組成文檔語料庫。采用LDA主題模型技術(shù)處理該語料庫,獲得一個(gè)主題集Z。在本文的推薦系統(tǒng)中,LDA模型的主題對(duì)應(yīng)推薦系統(tǒng)的項(xiàng)目,主題z∈Z是一個(gè)多項(xiàng)式分布,描述了每個(gè)項(xiàng)對(duì)主題z的貢獻(xiàn)程度。
1) 時(shí)域行為模型。為了學(xué)習(xí)所有用戶的神經(jīng)嵌入表示,每個(gè)用戶需要被定義在其他用戶的上下文。首先將評(píng)分、評(píng)價(jià)內(nèi)容以及時(shí)域行為上相似的用戶作為一對(duì)用戶,然后通過嵌入方法維持每對(duì)用戶的相似性信息,使兩個(gè)偏好相似的用戶在向量空間內(nèi)靠近。
根據(jù)兩個(gè)用戶之間的同質(zhì)性和偏好相似區(qū)域的數(shù)量定義嵌入學(xué)習(xí)的目標(biāo)函數(shù),目標(biāo)函數(shù)將偏好相似區(qū)域多的用戶分入一個(gè)社群,將偏好相似區(qū)域少的用戶分為不同的社群。將兩個(gè)用戶間的偏好相似區(qū)域作為神經(jīng)嵌入學(xué)習(xí)的上下文。
定義1偏好相似區(qū)域。將偏好時(shí)間序列X的子空間R定義為偏好相似區(qū)域,需滿足以下兩個(gè)條件:(1) 子空間內(nèi)的每個(gè)值具有相等的同質(zhì)性;(2) 不存在其他的相似區(qū)域R′,使R?R′,即R為最大化的相似區(qū)域。將滿足條件的子空間R記為P。
搜索偏好相似區(qū)域P的步驟為如下:(1) 搜索用戶在時(shí)間t的偏好項(xiàng)目,獲得一個(gè)二維的向量Pt, 1≤t≤T;(2) 合并所有時(shí)間t的向量,產(chǎn)生最終的P。
2) 基于時(shí)域行為的嵌入學(xué)習(xí)。將嵌入學(xué)習(xí)問題建模為基于用戶上下文的相似用戶最大似然問題,將與目標(biāo)用戶偏好相似區(qū)域Ρ相似的用戶集作為目標(biāo)用戶的上下文。因此,兩個(gè)用戶在彼此上下文出現(xiàn)次數(shù)越多,那么他們之間相似度越高。采用連續(xù)詞袋模型(CBOW)[11]對(duì)用戶進(jìn)行嵌入學(xué)習(xí)。
定義2基于時(shí)間行為的嵌入學(xué)習(xí)。假設(shè)偏好相似區(qū)域的集合為P,嵌入函數(shù)f:Y→Pd將每個(gè)用戶u∈Y映射到一個(gè)d維空間[0,1]d,其中d<<|Y|。映射的目標(biāo)是優(yōu)化以下表達(dá)式:

(1)
為了簡化分析,假設(shè)用戶在偏好相似區(qū)域內(nèi)是條件獨(dú)立的,可得以下關(guān)系:

(2)
采用圖2所示的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)用戶進(jìn)行嵌入學(xué)習(xí)。

圖2 嵌入學(xué)習(xí)用戶表示的網(wǎng)絡(luò)結(jié)構(gòu)
相似偏好區(qū)域的計(jì)算式為:
R={u,v,…}×{zi,zj,…}×{i,j,…}
(3)
式中:R為相似偏好區(qū)域;u為目標(biāo)用戶;v表示用戶上下文;z表示項(xiàng)目;i和j為項(xiàng)目編號(hào)。

(4)
結(jié)合式(2)和式(3)可將式(1)簡化為:
(5)
式(4)的計(jì)算復(fù)雜度和Y的規(guī)模成正比例關(guān)系,顯然不適合大規(guī)模社交網(wǎng)絡(luò)的應(yīng)用場景,因此采用分層的Softmax技術(shù)[12]來近似完全Softmax計(jì)算以提高計(jì)算效率,將隱藏層到輸出層的連接矩陣變換為一個(gè)二叉哈夫曼樹,用戶作為葉節(jié)點(diǎn)。每個(gè)用戶u在樹中對(duì)應(yīng)一條搜索路徑u1→u2…→uh(u),其中h(u)為u的深度。采用哈夫曼樹能夠?qū)r(shí)間復(fù)雜度從O(|U|)加快到O(log|U|)。分層Softmax條件概率Pr(u|v)的計(jì)算式為:
(6)

使用反向傳播和梯度下降法訓(xùn)練神經(jīng)網(wǎng)絡(luò)。訓(xùn)練達(dá)到收斂之后獲得一對(duì)偏好相似的用戶,設(shè)為u,v∈U,這兩個(gè)用戶的嵌入向量表示Vu和Vv在時(shí)域空間D=(U,M,T)內(nèi)相似。
設(shè)社交網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)為Γ=(Y,A),其中Y為用戶集,A為用戶間的連接集,通過嵌入學(xué)習(xí)獲得用戶在社交網(wǎng)絡(luò)中的局部結(jié)構(gòu)表示。
(1) 鄰居上下文模型。如果兩個(gè)用戶的相似鄰居越多,那么這兩個(gè)用戶屬于同一個(gè)社區(qū)的可能性越大,因此這兩個(gè)用戶在嵌入空間內(nèi)也應(yīng)當(dāng)靠近。實(shí)際社交網(wǎng)絡(luò)的社區(qū)內(nèi)存在一些等價(jià)結(jié)構(gòu),因此采用隨機(jī)游走對(duì)目標(biāo)用戶的鄰居進(jìn)行隨機(jī)采樣,提高搜索過程的效率。
定義3網(wǎng)絡(luò)鄰居。用戶u∈U的鄰居集設(shè)為Nu。從根節(jié)點(diǎn)u開始在網(wǎng)絡(luò)Γ=(Y,A)進(jìn)行長度為l的隨機(jī)游走,隨機(jī)變量為[x1:l],如果(v,w)∈A,那么根據(jù)概率分布Pr(xl=w|xl-1=v)從xl-1的鄰居中選擇一個(gè)用戶xl;否則將隨機(jī)變量置0。
采用二階隨機(jī)游走方法,其返回參數(shù)為p,進(jìn)出參數(shù)為q,偏游走方法定義為:
(7)
式中:d()表示加權(quán)圖中兩個(gè)用戶間最短路徑的距離。p值越高,更傾向于探索未知區(qū)域,q值越高,更傾向于局部開發(fā)。
(2) 基于網(wǎng)絡(luò)拓?fù)涞那度雽W(xué)習(xí)。獲得所有用戶的鄰居之后,通過優(yōu)化相同游走用戶的條件概率,對(duì)每個(gè)用戶進(jìn)行嵌入學(xué)習(xí)。
定義4基于網(wǎng)絡(luò)拓?fù)涞那度雽W(xué)習(xí)。設(shè)鄰居集為N=Uu∈YNu,嵌入函數(shù)g:U→Rd將每個(gè)用戶v∈U映射到d維空間[0, 1]d,d<<|U|,對(duì)以下的目標(biāo)函數(shù)進(jìn)行優(yōu)化:
(8)
采用圖2所示的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。隱藏層H的大小為d,輸入層到隱藏層的連接表示為矩陣Wg,矩陣大小為|Y|×d,每行表示一個(gè)用戶向量。輸入層I為獨(dú)熱編碼的向量,隱藏層神經(jīng)元為線性映射函數(shù);H=WTI。給定一個(gè)用戶v,H是Wg中v行的轉(zhuǎn)置向量,表示為Vv。隱藏層到輸出層的連接矩陣W′g大小為d×|Y|。通過Softmax函數(shù)近似用戶u的概率,其計(jì)算式為:
(9)
式中:V′u為u在矩陣W′g中的列。采用隨機(jī)梯度下降法和反向傳播訓(xùn)練神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)輸出基于社交網(wǎng)絡(luò)拓?fù)涞那度胂蛄勘硎網(wǎng)g。
上文從時(shí)域社交行為D=(U,M,T)和網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)Γ=(Y,A)分別獲得嵌入學(xué)習(xí)表示W(wǎng)D和Wg,然后通過插值函數(shù)h(WD,Wg)將兩個(gè)向量融合為一個(gè)向量。本文的插值函數(shù)定義為:
h(WD,Wg)=αWD+(1+α)Wg
(10)
式中:α表示權(quán)重系數(shù),用于控制不同向量的重要性。
基于嵌入學(xué)習(xí)的用戶表示屬于高維向量,因此需要將表示向量映射至低維空間。首先計(jì)算兩個(gè)表示向量之間的最短路徑,然后運(yùn)用高斯核將向量映射到一個(gè)全局的相似性空間內(nèi)。
使用稀疏線性編碼將嵌入向量映射到低維空間。首先,計(jì)算每對(duì)向量幾何距離Gvi,將每個(gè)用戶的距離集表示為一個(gè)向量G∈Rn×n,G=[Gv1,Gv2,…,Gvn],其中n為節(jié)點(diǎn)數(shù)量。然后,運(yùn)用以下的高斯核函數(shù)將映射距離向量,其結(jié)果作為相似性評(píng)分:
(11)
式中:σs為衰減率;⊙為一個(gè)點(diǎn)積運(yùn)算。假設(shè)每個(gè)社群的內(nèi)部連接密集,外部連接稀疏,所以社群內(nèi)的最短路徑數(shù)量應(yīng)當(dāng)少于不同社群內(nèi)的最短路徑。假設(shè)節(jié)點(diǎn)vi和其他節(jié)點(diǎn)的相似性為:
(12)
式中:αi=[αi(1),αi(2),…,αi(n)]為相似性系數(shù)向量,αi(j)是節(jié)點(diǎn)vi到節(jié)點(diǎn)vj的相似性;sj為式(11)計(jì)算的相似性向量。
然后使用l1正則項(xiàng)的稀疏線性分解尋找最優(yōu)的相似性系數(shù)向量,其目標(biāo)函數(shù)為:
(13)

(14)
式中:D為線性系數(shù)的低維映射結(jié)果。
假設(shè)局部高密度區(qū)域的中心是每個(gè)區(qū)域的核心。首先,計(jì)算每個(gè)節(jié)點(diǎn)的全局影響值,然后,基于影響值識(shí)別社群的意見領(lǐng)袖。節(jié)點(diǎn)vi的影響值計(jì)算式為:
(15)
式中:di為D的第i行。式(15)同時(shí)考慮了網(wǎng)絡(luò)的密度和幾何距離,從時(shí)域和網(wǎng)絡(luò)拓?fù)鋬蓚€(gè)上下文識(shí)別局部的核心。將子空間內(nèi)影響值最大的節(jié)點(diǎn)作為候選核心,節(jié)點(diǎn)vi的子空間定義為:
sub(vi)={vj|?j=1,2,…,n,j≠i,D(i,j)>β}
(16)
式中:β定義了每個(gè)節(jié)點(diǎn)的影響范圍。
算法1所示是子空間核心的識(shí)別算法,每個(gè)核心均為該子空間內(nèi)影響值最高的節(jié)點(diǎn)。然后利用每個(gè)子空間的核心進(jìn)行協(xié)同過濾推薦處理。
算法1子空間核心的識(shí)別算法
輸入:β,D,S。
輸出:子空間核心cc。
1.Pt= 計(jì)算節(jié)點(diǎn)的全局影響值;
//式(15)
2.cc= NULL;
//初始化cc變量
3.for eachifrom 1 toN
4.subspace(vi)=vi的節(jié)點(diǎn);
//式(16)
5. for each 節(jié)點(diǎn)vjinsubspace(vi)
6.tag=TRUE;
7. ifinfluence(vj)>influence(vi) then
//影響力比較
8.tag=FALSE;
9. end if
10. if (tag== TRUE) then
11.cc=cc∪{vi};
12. end if
13.end for
1) 實(shí)驗(yàn)數(shù)據(jù)集采集。利用公開的新浪微博數(shù)據(jù)集MicroblogPCU(下載網(wǎng)址:archive.ics.uci.edu/ml/datasets/microblogPCU)采集實(shí)驗(yàn)的數(shù)據(jù)集,原MicroblogPCU的目標(biāo)是探索微博中的spammers(發(fā)送垃圾信息的人),對(duì)該程序進(jìn)行修改,忽略MicroblogPCU程序中數(shù)據(jù)集屬性列表(weibo_user.csv)的屬性“is_spammer”,利用關(guān)鍵詞搜索屬性“topic”相同的用戶列表,采集本文實(shí)驗(yàn)所需的benchmark數(shù)據(jù)集。
Benchmark數(shù)據(jù)集的采集方法為:利用LDA算法[9]搜索用戶的偏好項(xiàng)目,將LDA算法的偏好項(xiàng)目數(shù)量設(shè)為30。為每個(gè)用戶計(jì)算每日的項(xiàng)目偏好時(shí)間序列,過濾其中值始終小于0.1的用戶。最終的Benchmark數(shù)據(jù)集共包含140 000個(gè)用戶在2019.7.20—2019.8.20期間發(fā)布的3 000 000條微博。每條微博的信息包括微博內(nèi)容、用戶ID和發(fā)布時(shí)間。圖3提取了三個(gè)微博用戶對(duì)國產(chǎn)動(dòng)畫電影《哪吒之魔童降世》的熱度變化情況。

圖3 三個(gè)用戶對(duì)項(xiàng)目的興趣變化曲線
2) 模型建立和參數(shù)設(shè)置。在時(shí)域行為的嵌入學(xué)習(xí)中,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率設(shè)為0.025,每個(gè)epoch衰減為0.002,共設(shè)200個(gè)epoch。訓(xùn)練的窗口大小為2,設(shè)置三個(gè)向量大小:d={100,200,300}。
在社交網(wǎng)絡(luò)拓?fù)涞那度雽W(xué)習(xí)中,因?yàn)閳D卷積網(wǎng)絡(luò)(Graph Convolutional Networks, GCN)具有較低的時(shí)間復(fù)雜度O(|A|),并且能夠處理冷啟動(dòng)的用戶,所以選擇GCN作為嵌入學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)。每個(gè)節(jié)點(diǎn)完成5個(gè)長度分別為40和80的隨機(jī)游走,訓(xùn)練的窗口大小為5。學(xué)習(xí)率和epoch數(shù)量分別為0.002和200,隨機(jī)游走的參數(shù)p和q均設(shè)為缺省值1。
插值嵌入程序的參數(shù)α設(shè)為0.1,0.2,…,1。通過試錯(cuò)實(shí)驗(yàn)決定子空間核心識(shí)別程序的β參數(shù),發(fā)現(xiàn)β<0.3的性能差于β≥0.3,并且β≥0.3時(shí)性能差異較小,因此將子空間核心識(shí)別程序的參數(shù)β設(shè)為0.3。
3) 對(duì)比方法選擇。本文算法的特點(diǎn)包括:① 引入用戶時(shí)域行為增強(qiáng)推薦系統(tǒng)的性能;② 通過神經(jīng)網(wǎng)絡(luò)嵌入學(xué)習(xí)用戶的表示。為了驗(yàn)證上述兩點(diǎn)的有效性,選擇了以下的對(duì)比方法。
(1) 基于社交網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的推薦系統(tǒng)[14]。該方法不包含對(duì)用戶時(shí)域行為的分析和利用,將其簡記為LDA。該方法可驗(yàn)證第①個(gè)特點(diǎn)的有效性。
(2) 基于多元時(shí)間序列的推薦系統(tǒng)[15]。該方法利用概率模型將用戶的時(shí)域行為建模為多元時(shí)間序列,將其簡記為TLUCI。該方法可驗(yàn)證第②個(gè)特點(diǎn)的有效性。
(3) 基于用戶時(shí)域演化和社交網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的推薦系統(tǒng)[16]。該方法利用概率模型建模用戶的行為歷史,將其簡記為MFG,其參數(shù)候選項(xiàng)目數(shù)量分別設(shè)為10、20、30。該方法可綜合驗(yàn)證本文方法的有效性。
新聞推薦實(shí)驗(yàn)的步驟為:(1) 分割每個(gè)時(shí)間t(0~32)的社群,搜索每個(gè)時(shí)間的總項(xiàng)目列表;(2) 通過協(xié)同過濾為每個(gè)用戶產(chǎn)生相應(yīng)的推薦列表。
采用兩個(gè)常用指標(biāo)評(píng)價(jià)新聞排列系統(tǒng)的推薦性能,分別為精度P-k和平均倒數(shù)排名(Mean Reciprocal Rank, MRR)[17]。P-k評(píng)估了推薦項(xiàng)目的準(zhǔn)確性,MRR評(píng)估了推薦列表的排列效果。
P-k的計(jì)算式為:
(17)
式中:tu為top-k推薦列表中用戶u相關(guān)的新聞數(shù)量,P-1表示top-1列表的推薦精度,P-10表示top-10列表的推薦精度。
MRR的計(jì)算式為:
(18)
式中:ranku是用戶u第1個(gè)相關(guān)新聞內(nèi)容的排列位置。
圖4是不同推薦系統(tǒng)的平均推薦結(jié)果,圖中NR(News Recommendation)為本文算法的簡稱。LDA的推薦精度和MRR均較低,可看出用戶的時(shí)域信息對(duì)于推薦性能具有較大的貢獻(xiàn)。MFG在候選項(xiàng)目數(shù)量為20時(shí)獲得了較高的推薦性能,其效果好于TLUCI,但是當(dāng)候選項(xiàng)目數(shù)量為10和30時(shí),其性能衰減的幅度較大,因此該算法受參數(shù)影響較大。NR系統(tǒng)在向量長度為200時(shí)取得了最佳的推薦效果,而且向量長度為100和300時(shí)也并未出現(xiàn)大幅度的性能衰減。

(a) P-1精度結(jié)果

(b) P-10精度結(jié)果

(c) MRR的實(shí)驗(yàn)結(jié)果圖4 新聞推薦的平均實(shí)驗(yàn)結(jié)果
隨之測試了圖上隨機(jī)游走對(duì)于NR推薦性能的影響,將游走長度l分別設(shè)為40和80,嵌入學(xué)習(xí)的向量長度設(shè)為200。圖5是不同推薦模型的性能關(guān)于插值嵌入程序參數(shù)α的變化曲線,圖中NR40和NR80分別對(duì)應(yīng)l為40和80的推薦系統(tǒng),NR0為僅包含時(shí)域行為(不包含社交網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息)的NR推薦系統(tǒng)。從結(jié)果發(fā)現(xiàn)隨機(jī)游走的長度越長,所提取的社交網(wǎng)絡(luò)拓?fù)湫畔⒃綔?zhǔn)確,其推薦性能越好。通過設(shè)置合適的α值,NR40和NR80的推薦性能均能夠明顯好于NR0,因此,驗(yàn)證了結(jié)合時(shí)域行為信息和社交網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息的效果好于單獨(dú)采用時(shí)域行為信息的模型。

(a) P-1精度結(jié)果

(b) P-10精度結(jié)果

(c) MRR的實(shí)驗(yàn)結(jié)果圖5 新聞推薦的平均實(shí)驗(yàn)結(jié)果
本文使用嵌入學(xué)習(xí)方法學(xué)習(xí)用戶的時(shí)域行為,使用嵌入學(xué)習(xí)方法學(xué)習(xí)社交網(wǎng)絡(luò)拓?fù)涞慕Y(jié)構(gòu)信息。然后,利用核映射方法將用戶表示向量映射至低維空間,從而提高相似性計(jì)算的效率。基于新浪微博的新聞推薦實(shí)驗(yàn)結(jié)果表明,引入用戶時(shí)域行為能夠增強(qiáng)推薦系統(tǒng)的性能,并且采用神經(jīng)網(wǎng)絡(luò)嵌入學(xué)習(xí)的效果好于傳統(tǒng)基于概率的表示方法。
由于圖上隨機(jī)游走和神經(jīng)網(wǎng)絡(luò)嵌入學(xué)習(xí)的時(shí)間復(fù)雜度較高,因此本文方法僅支持以天為單位的應(yīng)用場景,如新聞應(yīng)用和音樂播放器的“每日推薦”等。本文方法難以支持推薦頻率高、演化速度快的應(yīng)用場景,未來將對(duì)圖上隨機(jī)游走和神經(jīng)網(wǎng)絡(luò)嵌入學(xué)習(xí)進(jìn)行優(yōu)化,在時(shí)間效率和推薦精度之間實(shí)現(xiàn)平衡。