譚小輝,祁正華,張海桃,何菲菲
(南京郵電大學 計算機學院、軟件學院、網絡空間安全學院,江蘇 南京 210023)
如今,推薦系統已廣泛應用于每一個數字平臺,這些平臺試圖根據用戶需求調整服務,以提高用戶滿意度[1]。在推薦系統研究中,大部分工作集中在依靠長期偏好模型為用戶提供推薦的技術上。但在推薦系統應用的多個領域,用戶通常是匿名的,用戶的個人資料和長期互動歷史記錄難以獲取,唯一可用的信息是匿名用戶在當前會話中的交互序列。因此,合理的推薦必須基于其它類型的信息(如用戶最近與網站或平臺的互動情況)來確定[2-4]。為解決這些問題,基于會話的推薦系統(Session-based Recommender System,SBRS)悄然興起。SBRS 通常利用基于神經網絡[5-7]或鄰域的方法[8-10]對會話中的歷史交互序列進行建模,以捕獲會話的興趣為用戶進行推薦。如Hidasi 等[5]將所有匿名用戶瀏覽歷史中的會話信息作為遞歸神經網絡(Recurrent Neural Network,RNN)的輸入序列,通過修改RNN 中的排名損失函數以及引入小批次的輸出采樣,使其在基于會話的場景下提升了推薦性能,但是模型訓練需要大量數據(特別是密集的數據)。在可利用會話數據較少的情況下,基于鄰域的方法具有較好的推薦效果。Jannach等[8]將K 近鄰(K Nearest Neighbor,KNN)方法用于會話推薦,提出了SKNN(Session-based KNN)方法。SKNN 利用會話的交互數據,在訓練集中確定過去最相近的K 個鄰居會話,按照每個鄰居會話與當前會話的相似度給候選項目打分。Garg 等[10]利用項目序列與會話之間的時間間隔,提出一種序列和時間感知鄰域(Sequence and Time Aware Neighborhood,STAN)推薦方法。STAN 沒有像SKNN 一樣為會話中的所有項目賦予同等權重,而是根據項目序列和會話的起始時間來考慮項目與會話的權重,并為所考慮的特征設置不同的衰減函數。然而,以上方法仍然面臨一些問題:①沒有綜合考慮整個會話中一般偏好與當前偏好對推薦結果的影響;②尋找候選項目時忽略了項目在會話中的時間信息,難以捕獲到鄰居會話與候選項目之間的關聯;③忽略了匿名用戶誤點行為對推薦結果的影響。
為解決上述存在的問題,本文的主要工作如下:
(1)利用會話中的項目序列和時間信息,構建一種基于鄰域與位置時間感知的會話推薦(Neighborhood and Position Time Awareness Session Recommendation,NPTAS)方法。該方法主要分為3 部分:①為綜合考慮整個會話的一般偏好與當前偏好,利用會話中的項目位置和持續時間信息來分別捕獲會話的當前偏好與一般偏好,并以此得到會話的偏好表示向量;②為找到興趣最接近的鄰居會話,利用會話的起始時間信息捕獲會話之間的時間相關性,并以此得到會話之間的相似度權重;③利用候選項目在會話中的位置及持續時間信息捕獲鄰居會話與候選項目的相關性,并以此得到鄰居會話對候選項目得分的貢獻權重。同時為會話中持續時間短的項目賦予較小權重,以減少用戶誤點行為對推薦結果的影響。
(2)在兩個真實的新聞數據集上進行實驗,通過與現有方法進行對比,驗證了該方法的有效性,同時分析了NPTAS 的變體方法和影響NPTAS 方法推薦性能的參數。
基于會話的推薦系統利用匿名用戶在交互過程中產生的會話數據挖掘和學習用戶偏好,現有的SBRS 可分為基于神經網絡和基于鄰域的方法。
基于神經網絡的SBRS 大多采用遞歸神經網絡結構。GRU4REC[5]是一個基于RNN 的SBRS 模型,通過使用門控循環單元(Gate Recurrent Unit,GRU)為活動會話生成推薦列表,并針對應用場景,對數據特征的處理方法和神經網絡結構中的排名損失函數進行修改,提高了模型對于會話場景的適應度。Li 等[11]通過一種帶有注意力機制的混合編碼器來模擬用戶的交互行為,并捕獲用戶在當前會話中的主要目的,然后利用RNN 為每個會話生成一個會話表示向量,以此計算每個候選項目的推薦得分;Pang 等[12]提出一種考慮時間因素的自注意機制來學習用戶的短期興趣,并將其與用戶的長期興趣相結合進行會話推薦。
基于鄰域的SBRS 通過在訓練階段建立鄰里關系來進行會話推薦。基于項目的K 近鄰(Item-based K Nearest Neighbors,IKNN)[13]是一種樸素的方法,通過利用活動會話中的最后一個項目來尋找鄰居,傳統上被認為是SBRS的基線。Jannach 等[8]利用一種基于整體性的方式從歷史會話中尋找興趣最接近的鄰居會話,再根據鄰居會話得到相應的候選項目??紤]到會話數據中項目的排列順序在用戶推薦過程中的重要性,Ludewig 等[9]對SKNN 進行擴展,提出了VSKNN(Vector Multiplication SKNN)方法,通過給予會話中最近的項目更多權重來捕獲會話興趣。為了利用會話數據中的更多特征來提高推薦結果的準確率,Garg 等[10]利用項目位置、會話間的時間差和項目在鄰居會話中的點擊距離等信息進行會話推薦,并為這些信息特征設置了相應的衰減函數來調整其對于推薦結果的貢獻度。最近,Ludewig 等[14]將STAN 與VSKNN 的思想相結合提出VSTAN(Vector Multiplication STAN)方法,在STAN 基礎上添加了一種加權方案,給頻繁出現的項目以較低權重。雖然基于鄰域的方法相對簡單,但是關于SBRS 的研究表明[2,14-16],在某些場景下基于鄰域的SBRS 方法在準確性和計算成本等方面都優于目前基于復雜神經網絡的SBRS方法。
本文在分析多種基于鄰域的SBRS 方法基礎上,從數據集中提取項目在會話中的位置和時間等信息,設計了一種基于鄰域與位置時間感知的會話推薦方法(NPTAS),其整體結構如圖1所示。

Fig.1 NPTAS method architecture圖1 NPTAS方法結構
NPTAS 方法的具體實現可分為以下3部分:
(1)計算會話之間的初始相似度。利用會話中項目的位置和持續時間信息來捕獲會話的當前偏好與一般偏好,并以此構建會話的偏好表示向量,再利用會話的偏好表示向量計算會話之間的初始相似度。
(2)構建鄰居會話。首先利用會話間起始時間的差值來計算會話之間的相似度權重,然后將其與會話間的初始相似度相結合,得到會話之間的相似度,最后根據會話之間的相似度為每個會話選取對應的鄰居會話。
(3)計算候選項目得分。利用鄰居會話中候選項目的位置和持續時間信息來計算鄰居會話對會話內某個候選項目得分的貢獻權重,將此貢獻權重與對應會話之間的相似度相結合,得到鄰居會話對此候選項目得分的貢獻值。通過將所有鄰居會話對此候選項目得分的貢獻值相加,得到此候選項目的最終得分。
S={s1,s2,...,sm-1,sm}表示會話集,其中歷史會話集Sh={s1,s2,...,sm-1},sm表示當前會話。I={i1,i2,...,i|I|}表示S中所有項目的集合,其中|I|表示項目集I包含的項目個數。會話sm的交互序列St={it,1,it,2,...,it,n},其中it,j∈I,n 表示會話sm對應的交互序列長度。NPTAS 方法旨在通過計算候選項目i(i∈I)的相關性得分來給會話sm推薦下一個點擊項目it,n+1。表1 定義了本文使用的主要符號。

Table 1 Definition of main symbols表1 主要符號定義
會話推薦以捕獲會話的短期興趣給會話作推薦為目的,而會話中最近的項目更能代表會話的當前偏好,需要為其賦予一個較高權重。因此,在僅考慮當前偏好時,項目i對會話sm偏好表示向量的貢獻度為:
其中,λ11>0(λ11表示在構建會話偏好表示向量時項目位置信息的重要程度)。
考慮到會話的短期興趣通常反映在最近的幾次交互中,但最后一次交互不一定直接反映會話的當前興趣,因此利用會話中每個項目的持續時間來捕獲會話的一般偏好。會話中項目的持續時間占會話持續時間的比重越高,表明用戶對此項目越感興趣,需要為其賦予一個較高權重。同時,在會話數據中,每個會話都有可能存在由于匿名用戶誤點而產生的交互數據,這些交互數據并不能代表用戶的真實意圖。相反,還有可能降低該方法的推薦效果。考慮到此類項目在會話中的持續時間通常很短,因而需要為其賦予一個較低權重。因此,在僅考慮一般偏好時,項目i對會話sm偏好表示向量的貢獻度為:
其中,λ12>0(λ12表示在構建會話偏好表示向量時項目持續時間的重要程度)。
為了更好地捕獲會話興趣,引入參數φ1來綜合考慮會話的當前偏好和一般偏好。因此,會話sm的表示向量在項目i對應維度上的值為:
其中,φ1∈[0,1]。
利用式(3)計算會話sm在每個項目i對應維度上的值,得到會話sm的表示向量(以同樣的方式可以得到會話st的表示向量),然后計算會話sm與st之間的初始相似度為:
其中,l(st)表示會話st包含的項目個數。
借鑒文獻[17]中的思想,為距離會話sm較遠的會話賦予較低權重。因此,會話st與sm之間的相似度權重為:
其中,λ2>0 且λ2≠1(λ2表示會話起始時間差對于會話間相似度權重的重要程度),t(sm) >t(st)。
然后,將會話st和sm之間的初始相似度與其對應的相似度權重相結合,得到會話st與sm之間的相似度為:
利用式(6)計算會話sm與其它會話之間的相似度,把這些相似度值由高到低進行排序,選取前N 個相似度值對應的會話作為會話sm的鄰居會話N(sm)。
得到N(sm)后,出現在會話n(n∈N(sm))中但沒有出現在會話sm中的任何一個項目都是候選項目。在會話序列中,相鄰項目的相關性很強,對于會話n中越靠近的項目應該被賦予較高權重。因此,在僅考慮鄰居會話中候選項目位置信息的情況下,會話n對候選項目i得分的貢獻權重為:
其中,λ31>0(λ31表示鄰居會話中候選項目位置對于候選項目得分權重的重要程度),In表示會話n包含的項目集。
對于同一個會話中持續時間相近的項目,當前會話對其的興趣程度是相近的,其之間可能存在著某種關聯,所以也需為其分配一個較高權重。因此,在僅考慮鄰居會話中候選項目持續時間信息的情況下,會話n對候選項目i得分的貢獻權重為:
其中,λ32>0(λ32表示鄰居會話中候選項目持續時間對候選項目得分權重的重要程度)。
然后,利用φ2綜合考慮上述兩個貢獻權重,得到會話n對候選項目i得分的最終貢獻權重為:
其中,φ2∈[0,1]。當項目i存在于會話n中時,1n(i)=1,否則,1n(i)=0。
接下來將會話n對候選項目i得分的貢獻權重和會話n與sm之間的相似度相結合,得到鄰居會話n對候選項目i得分的貢獻值為:
其中,sim2(sm,n)表示會話sm與n之間的相似度。
最后,候選項目i推薦給會話sm的得分為:
實驗采用的兩個數據集均來自現實世界。包括:
(1)Globo.com。巴西新聞門戶網站globo 建立的一個新聞推薦數據集,包含大約314 000 個用戶、46 000 篇新聞文章和300萬次點擊記錄[18-19]。
(2)Adressa。由adreseavisen 網站構建的一個新聞推薦數據集,分為簡易版(收集1 周的數據)和完整版(收集3個月的數據)兩個版本[19-20]。
本文遵循文獻[19]中的處理方法對兩個數據集進行預處理,將匿名用戶在30min 內產生的一系列點擊事件視為一個會話,同時移除少于兩個交互的會話??紤]到Globo.com 數據集只包含16 天的交互數據,因此在Adressa 數據集中只選擇20 天的交互數據(整個數據集包含3 個月的交互數據)。表2為各個數據集的基本信息。

Table 2 Dataset basic information表2 數據集基本信息
為得到訓練集和測試集,本文使用文獻[19]中的方法,對于Globo.com 數據集,將每4 天分成一個子數據集,子數據集中前3 天的會話數據作為該組的訓練集,剩下1 天作為該組的測試集。對于Adressa 數據集,由于一天內的會話數據較少,將10 天分成一個子數據集,同時為保持與Globo.com 相似的訓練數據大小,對其訓練天數進行了延長。
在兩個數據集上與6 個基準方法進行對比:①SKNN[8]是一個將K 近鄰應用到會話場景下的推薦方法;②STAN[10]是SKNN 的一個擴展方法,具有3 個可控的時間衰減因子;③VSTAN[14]是STAN 的一個擴展方法,額外添加了逆文本頻率指數(Inverse Document Frequency,IDF)加權方案;④GRU4Rec[5,21]是第一個采用RNN 進行會話推薦的模型,通過構建門控遞歸神經網絡進行會話推薦;⑤STAMP[22]是一個短期注意優先模型,引入了注意機制來建模用戶每次歷史點擊和最后一次點擊之間的關系;⑥SRGNN[23]是一個基于會話的推薦器,使用圖神經網絡捕捉項目的復雜轉換。
為了評估推薦效果,采用文獻[20]中的3 個評估指標,分別是:
(1)HR@K。命中率,其定義為:
其中,R(sm)為根據會話sm在訓練集上的瀏覽記錄給會話sm作出的推薦列表,T(sm)為會話sm在測試集上的瀏覽列表。
(2)NDCG@K。歸一化折損累計增益,其定義為:
其中,reli表示第i個推薦的相關程度,當項目i被選中時,reli=1,否則reli=0;IDCG 是歸一化的DCG,即根據理想排序獲得的最大DCG 值。
(3)ILD@K。列表多樣性,評估推薦列表中的主題多樣性,并反映方法向同一用戶推薦不同項目的能力,其定義為:
其中,d(ɑ,b)是項目ɑ與項目b之間距離的度量,如果項目ɑ和項目b屬于不同主題(類別),d(ɑ,b)=1,否則d(ɑ,b)=0。
將NPTAS 方法與基準方法在兩個數據集上進行比較,實驗結果如表3所示。

Table 3 Performance comparison of different methods on two datasets表3 兩個數據集上不同方法性能比較
從表3可知:
(1)在Adressa 和Globo.com 數據集上,NPTAS 方法相較于SKNN、STAN 和VSTAN 等基于鄰域的會話推薦方法,HR@20 和NDCG@20 指標均有不同程度的提升(除SKNN和VSTAN 外,其余基線方法的結果均來自文獻[20])。這是因為NPTAS 利用會話中項目的持續時間和位置信息來挖掘會話的一般偏好與當前偏好,更好地挖掘了當前會話的短期興趣。而SKNN 平等地對待會話中的所有項目,難以找到當前會話的興趣。STAN 和VSTAN 只重視當前會話中最近的項目,忽略了當前會話的一般偏好。其次,NPTAS 考慮了會話中項目的停留時間,這在很大程度上降低了會話中誤點記錄對于推薦結果的影響。此外,NPTAS方法相較于現有基于神經網絡的方法(包括GRU4Rec、STAMP 和SRGNN),HR@20 和NDCG@20 指標也均有所提升,說明NPTAS 方法在某些方面的推薦效果可以與現有的神經網絡模型相媲美。
(2)在Adressa 和Globo.com 數據集上,NPTAS 方法相較于SKNN、STAN 和VSTAN 等基于鄰域的會話推薦方法,ILD@20 指標得到了極大提升。說明相較于基于鄰域的基準方法,NPTAS 方法能更好地利用會話信息來發現用戶潛在的多樣化興趣。同時發現NPTAS 方法相較于基于神經網絡的方法(包括GRU4Rec、STAMP 和SRGNN),ILD@20指標有所下降,說明基于神經網絡的方法能更好地為用戶推薦多樣化的列表。
將NPTAS 方法與其3 種變體方法進行比較:①變體NPTAS-W1。不使用會話中項目的位置和持續時間來捕獲會話的當前偏好與一般偏好,即給予會話中每個項目相同的權重;②變體NPTAS-W2。不利用會話之間的起始時間來考慮會話之間的時間相關性,即給予所有鄰居會話相同的相似度權重;③變體NPTAS-W3。不使用候選項目在鄰居會話中的位置及持續時間信息來捕獲鄰居會話與候選項目的相關性,即給予鄰居會話中候選項目平等的權重。圖2、圖3 分別顯示了在Globo.com 和Adressa 數據集上的實驗結果。

Fig.2 Experimental results of the NPTAS variant method on the Globo.com dataset圖2 Globo.com數據集上NPTAS變體方法實驗結果

Fig.3 Experimental results of the NPTAS variant method on the Adressa dataset圖3 Adressa數據集上NPTAS變體方法實驗結果
從圖2、圖3 可以看出,當NPTAS 方法不使用會話之間的起始時間來考慮會話之間的時間相關性時,HR@K 和NDCG@K 指標下降最為明顯。說明在NPTAS 方法中,利用會話起始時間之差來考慮會話之間的相關性是必要的。這是因為使用會話之間的起始時間差來考慮會話之間的時間相關性時,可以找到興趣更接近的鄰居會話。當NPTAS 方法不使用會話中項目的位置和持續時間來捕獲會話的當前偏好與一般偏好時,NPTAS 方法在HR@K 和NDCG@K 指標上有所下降,說明利用項目在會話中的位置和持續時間來考慮會話的當前偏好與一般偏好是合理的。同時發現,NPTAS 方法不使用候選項目在鄰居會話中的位置及持續時間信息來捕獲鄰居會話與候選項目的相關性時,HR@K 和NDCG@K 指標也有所下降,說明利用候選項目在鄰居會話中的位置及持續時間信息來捕獲鄰居會話與候選項目的相關性也是合理的。
主要分析在Globo.com 數據集中,NPTAS 方法中的7個參數對方法HR@20 指標的影響,實驗結果如圖4 所示(在其它數據集中也觀察到相似的結果)。其中,NPTAS 方法中7個參數在兩個數據集上的最優值如表4所示。

Table 4 Optimal parameter values for the NPTAS method表4 NPTAS方法最優參數值

Fig.4 Effect of seven parameters on the NPTAS method HR@20 metric on the Globo.com dataset圖4 Globo.com數據集上7個參數對NPTAS方法HR@20指標的影響
從圖4(a)中可以看出,只考慮最近項目(λ11<<1),而忽視會話中的其它項目,或把會話中每個項目平等看待(λ11→∞),結果都不是最優。除最近的項目外,當前會話中的其它項目也很重要,但不如最近的項目重要。λ31在NPTAS 中發揮了重要作用,因為HR@20 根據λ31的不同發生了顯著變化,當只利用推薦會話中被點擊項目在鄰居會話中的相鄰兩個項目(λ31<<1),或者給予鄰居會話中所有項目相同的得分權重(λ31→∞),取得的效果都不是最佳的。當利用λ31來控制項目位置對于項目得分權重的重要性,取得的效果更好。
在圖4(b)中,發現只利用會話中停留時間長的項目(λ12<<1)或給予當前會話中所有項目同等權重(λ12→∞),效果都不佳。在給予會話中持續時間長的項目較高權重時,也需要考慮會話中的其它項目。同時發現,僅考慮和鄰居會話中項目持續時間相近的項目(λ32<<1)或給予鄰居會話中所有項目同等權重(λ32→∞),效果都不是最佳的。利用λ32來控制項目持續時間對于項目得分權重的重要性,所取得的效果更好。
由圖4(c)可以看出,僅考慮最近的項目(φ1→1)或會話中持續時間長的項目(φ1→0)都不能很好地捕獲當前會話的短期興趣。使用φ1綜合考慮當前會話的一般偏好和當前偏好所表現出來的效果更好。隨著φ2從0 開始不斷增大,推薦結果的準確率不斷提高,說明候選項目在鄰居會話中的位置信息十分重要,只考慮候選項目在鄰居會話中的持續時間(φ2→0)所取得的效果不是最佳的。但隨著φ2的繼續擴大,推薦結果的準確率開始下降,說明只考慮候選項目的位置信息(φ2→1)所取得的效果也不是最佳的,使用φ2來控制這兩個因素的重要性所取得的效果更好。
從圖4(d)中明顯看出,僅考慮最近的歷史會話(λ2<<1)或給予所有歷史會話同等權重(λ2→∞)都降低了推薦效果,使用λ2來控制歷史會話的權重,取得的效果最好。除最近的歷史會話外,其它歷史會話也很重要,但其重要性低于最近的歷史會話。
從表4 可以看出,NPTAS 方法在不同數據集上的最優參數值各有不同,說明了實驗選取數據集的多樣性,以及NPTAS 方法能通過調整參數來適應各種應用場景的能力。
本文提出一種基于鄰域與位置時間感知的會話推薦方法(NPTAS),該方法通過捕獲會話的一般偏好與當前偏好來構建會話的表示向量,利用會話的起始時間來獲取會話相似度的權重因子,并利用會話中項目的持續時間來減小由于匿名用戶誤點產生的影響,最后利用鄰居會話中候選項目的時間和位置信息來捕獲鄰居會話對候選項目得分的貢獻度,有效挖掘了用戶的短期興趣。在后續工作中,將利用會話數據中隱含更深的信息來挖掘匿名用戶的短期興趣,提升推薦效果。