陳輝,王鍇鉞
(安徽理工大學 計算機科學與工程學院,安徽 淮南 232001)
推薦系統(RS)通過分析數據中用戶的歷史行為信息、用戶與項目的交互信息、時間信息等記錄構建用戶畫像,為企業提供針對不同用戶的有區別對待的用戶忠誠度培養方式。在現有的針對個性化推薦服務的技術中,協同過濾推薦系統(CFRS)[1-2]相對簡單有效,已被許多商業網站廣泛使用。但隨著網絡上可訪問的數據量急速增長,有用數據變得極為稀疏,使得向用戶提供精準個性化服務,促使網站點擊量、下載量、銷售量等盈利項目增長變得十分困難。
為了獲得目標用戶的興趣,得到合適的推薦結果,一些學者采用基于鄰域的協同過濾推薦算法[3],得到相似的用戶或項目,進一步得到推薦結果。Surya等[4]考慮了用戶的評分習慣,提出了一種基于離差均值的相似性度量方法。Kalamati等[5]利用Beta隨機變量對類別信息進行智能數據建模,提出了一種基于類別的協同過濾方法。Fan等[6]結合調整后的余弦相似度,提出一種通過可靠性來計算用戶相似度的方法。于金明等[7]提出了IPSS相似性度量方法。Jain等[8]將用戶之間對同一項目的絕對差異值存儲在一個用戶相似性矩陣中,為相似性算法提供了一種新的改進思路。
這些相似度算法大部分關注用戶對項目的評分等級,以向量的形式比較距離,忽略了用戶行為本身作為一個普通序列所具有的意義,而且用戶對項目的傾向程度會根據時間的變化而改變,在用戶對推薦結果需求數量較少時,還要盡可能把用戶近期最為感興趣的項目放在靠前的位置。本文為了解決這些問題,將用戶行為作為序列而不是向量來使用,采用計算最長公共子序列(longest common subsequence,LCS)[9]的動態規劃算法,比較兩個用戶序列間的相似性。但大數據量帶來的數據稀疏以及推薦實時性問題,無法單純通過計算相似度找到的相似用戶來預測評分。
基于模型的協同過濾推薦算法通過對訓練數據的離線學習,得到模型的參數,獲得線下預測模型,最后利用模型進行線上實時運算。矩陣分解就是其中運用較為廣泛的一種協同過濾技術,可以隨著用戶信息的實時變化而改變推薦結果。Peng等[10]結合增量矩陣協因子分解模型得到了新的推薦算法。Xu[11]將用戶間的社會信息同項目間的關系結合起來,使得用戶與項目特征穩定分解。Yang等[12]整合用戶與項目的交互信息以及社會網絡來改進推薦算法。孫靜等[13]通過NMF得到不同稀疏度的圖像特征后,對其進行聚類計算。但這些補全矩陣的非線性擴展有相當大的局限性,如果沒有可用的輔助信息或者輔助信息不完整,則非線性操作將不再適用。深度學習技術恰好能夠恢復具有非線性結構的不完全矩陣數據,顧軍華等[14]利用CNN的特征提取特性將多源數據信息融合到概率矩陣分解模型中。曾旭禹等[15]結合變分自編碼器來感知上下文信息。He等[16]將多層感知機與協同過濾相結合,提出利用神經網絡體系結構來建模用戶和項目隱藏特征的方法。然而這些結合深度學習的矩陣分解模型注重于添加額外的輔助信息,反而將顯性的評分反饋都做0-1處理,顧此失彼。
為了提高推薦算法的效果,本文通過深度神經網絡學習架構獲得用戶和項目之間的隱藏特征,使用內積計算用戶和項目之間的交互;通過序列轉換,將最長公共子序列引入深度神經網絡矩陣分解推薦算法,找到相似用戶,并在矩陣分解過程中保持這種聯系,使得相似用戶間的隱藏特征向量更加接近,以解決數據稀疏以及用戶近期偏好對Top-N推薦的排序指標影響的問題。最后通過在Epinions數據集上與多個推薦方法進行實驗對比,驗證本文算法在3種常見評價指標上的優越性。
最長公共子序列(LCS)[17]是兩個或多個已知序列的子序列,且是所有符合此條件序列中最長的序列,通常用于判斷兩個序列的相似程度,其在數據壓縮、生物信息學和文本編輯等領域被廣泛應用。
假定序列Ix={i1,i2,…,ix}∈I,并且Ix是由I的第一個元素開始,按I的順序且不間斷地直到I的第x個元素組成,以相同的規定得到Jy={j1,j2,…,jy}∈J。C( )表示最長公共子序列長度,LCS( )表示最長公共子序列。可以得到遞推公式
C(Ix,Jy)=
(1)
通過對C(Ix,Jy)的回溯,可以得到完整的LCS( )。
LCS是定義在兩個字符序列上,若將其運用在協同過濾推薦算法中,需要定義序列如何生成。
假設U={u1,u2,…,um}是一個用戶集,I={i1,i2,…,in}是一個項目集,rui表示用戶u對項目i的評分。此時固定的字符表由項目ID構成,因為項目ID不存在重復,所以每個符號表示一個項目ID。一旦確定代表用戶時使用的字符表,就需要指定符號的排列順序,因為LCS算法需要兩個序列中的符號具有相同的排列順序,所以在用戶對推薦結果需求數量較少且用戶偏好隨時間變化時,要盡可能把用戶近期最為偏好的項目放在前面。這時候就要根據用戶對項目產生交互的時間對項目ID進行排序,得到的就是字符表的總序列,用戶序列就是這個總序列的子序列。
在實際運用中,評分的范圍是有限的,如r={1,2,…,5},并且項目和它們的ID之間存在映射關系,因此使用項目ID和評分的組合以項目出現時間的順序來構成用戶序列
f(u)=10I(u)+R(u),
(2)
式中:f表示用戶序列轉換函數;f(u)表示用戶u的序列;I(u)表示用戶u評價過的項目ID集合;R(u)表示用戶u對所有項目的評分集合。
轉換函數可以根據不同場合對推薦結果的不同要求,以及數據源格式、內容的差異進行多種組合,且組合的方式也有多種,這就使得本文算法面對現實生活中樣式繁多的數據源時具有較好的擴展性。
在最初的LCS問題中,尋找的是兩個字符串之間的精確匹配。然而,當處理用戶數據時,需要某種程度的模糊性,假設兩個用戶對于同一個項目的評分差值在一定范圍內就可以認為彼此具有相似的品味。因此,提出了一種LCS算法的變體來放寬匹配條件,即使用匹配閾值δ來決定序列的兩個符號是否相等。比如布爾函數匹配bool(a,b,δ),如果a和b具有相同的值或者它們的差值小于δ,則輸出為真。
因為LCS的長度范圍為[0,|Σ|](|Σ|表示字符表的長度),不能直接作為用戶間的相似度度量,所以對其進行歸一化,得到
(3)
式中:C(u,v,f,δ)表示兩個用戶序列的最長公共子序列的長度,由C(Ix,Jy)結合用戶序列轉換函數f以及匹配閾值δ得到;|f(u)|、|f(v)|表示用戶u和v的序列長度。
下面通過一個簡單的例子來說明如何計算基于LCS的用戶相似度。表1為用戶對項目的評分,其中第1列為用戶,第1行為項目ID;表2為每種情況下的相似度值。

表1 用戶u和v對項目的評分Tab.1 Item ratings between users
表2中根據公式(2),利用項目ID以及用戶對項目的評分,通過序列轉換得到用戶序列f(u)和f(v)。用戶u和v之間的最長公共子序列長度C()的值通過公式(1)計算。當匹配閾值δ=0時,用戶u和v之間的最長公共子序列長度C(u,v)=1,根據公式(3)計算歸一化的用戶間相似性sim(u,v)=0.08。考慮到在評分相差不多的情況下,用戶間也具有一定的相似性,令δ=1,用戶u和v之間的最長公共子序列長度C(u,v)=2,用戶間相似性sim(u,v)=0.33。

表2 δ的取值對于用戶相似度的影響Tab.2 The influence of δ on user similarity
假設有M個用戶和N個項目,根據每個用戶對各個項目的評價,生成一個M×N的稀疏評價矩陣R。矩陣中的項rui表示用戶u對項目i的評分,如果評分未知,就將rui標記為null。定義Y∈RM×N為用戶-項目交互矩陣,Y的構建方法為
(4)
不同于一般的深神經網絡矩陣分解模型,在用戶u對項目i的評分rui有觀察值時,Yui=1,本文令Yui=rui,當評價未知時,將其標記為0。標記為0并不意味著用戶不喜歡該項目,有可能是沒有接觸過該項目。
Yu*表示用戶u對所有項目的交互,可以在某種程度上表明用戶的全局偏好。Y*i代表一個物品與所有用戶的交互,可以在某種程度上表明一個項目的標簽特征。以向量Yu*、Y*i為輸入,運用深度神經網絡架構,將用戶和項目投射到一個潛在的結構化空間中,如圖1所示。

圖1 深度神經網絡矩陣分解模型Fig.1 Deep neural network matrix factorization model
在實際應用中,真實數據集往往來自非線性潛在變量模型,具有非線性結構,因此需要隱藏層來擬合這些非線性數據。根據多層感知機(MLP)的原理,構造輸入層
h1=W1x+b1。
(5)
隱藏層有多層,具體層數將根據實驗結果進行參數調整。本文為了緩解梯度消失以及計算復雜性問題,選取ReLU函數作為激活函數,給每層結點引入非線性因素
g(x)=max(0,x),
(6)
隱藏層構造公式
hL=g(WLhL-1+bL),L=2,…,N-1,
(7)
輸出層構造公式
y=g(WNhN-1+bN),
(8)
式中:x表示MLP的輸入向量;hL表示第L個隱藏層;y表示MLP的輸出向量;W表示權重矩陣;b表示偏置量。
(9)
(10)
將交互矩陣Y的向量作為隱藏層的輸入代入式(5)—式(7),通過逐級映射,最后由式(9)—式(10)得到隱藏特征向量Pu,Qi,式中:WU、WI分別表示用戶深度網絡以及項目深度網絡的權重矩陣;bU、bI分別表示用戶深度網絡以及項目深度網絡的偏置量。
得到特征隱藏向量后,通過內積的方式得到預測值,設定如下深度神經網絡矩陣分解模型(DMF)可以補全缺失矩陣
(11)

本文在運用深度神經網絡模型對用戶-項目交互矩陣進行分析的同時,還考慮利用LCS算法,從而提供了一種新的視角來分析用戶行為,找到具有相似序列模式的其他用戶。將基于LCS的相似性計算方法運用于協同過濾推薦算法中尋找相似用戶,對深度神經網絡模型進行約束,提高模型預測精度。模型結構如圖2所示。

圖2 基于LCS相似度的深度神經網絡矩陣分解模型Fig.2 LCS based similarity calculation deep neural network matrix factorization model
本文采用與 SocialMF算法[18]相同的假設,即用戶偏好與他的相似用戶偏好的平均值相似,使用LCS相似度算法sim(u,v)代替原本的信任度Tu,v,
(12)
式中:Nu表示相似用戶集合;|Nu|表示相似用戶個數。由于本文在構造輸入矩陣Y時并沒有將數據簡化為0、1組合,而是繼承了原始評分數值構成回歸問題,所以采用均方差損失函數來構造代價函數,
(13)
式中:Iui為指示函數,當用戶u對項目i有評價信息時Iui=1,否則Iui=0;P為用戶隱藏特征矩陣;Q為項目隱藏特征矩陣。
為了得到推薦模型,首先要運用動態規劃方法計算LCS的長度,并且求出用戶間的相似度。為描述方便,用戶序列f(u)和f(v)分別記為Ia和Jb,最長公共子序列長度C(Ix,Jy)記為C(x,y),具體算法過程如下:

然后最小化代價函數,按照逆誤差傳播算法即BP算法,訓練基于LCS相似度的深度神經網絡矩陣分解模型(SeqDMF),學習得到用戶、項目隱藏特征矩陣以及神經網絡中的各項參數。具體算法過程如下:

本文采用Epinions數據集進行實驗,該數據集涵蓋了分布在美國和歐洲的消費者對商品的評價,數據集中,用戶數量為40 163個,項目數量為139 738個,評分稀疏度為0.011 8%。
采用數據集中的前70%作為訓練集,之后的20%作為評估模型性能的測試集。驗證集在剩下的10%中根據需要抽取,用于前期尋找模型最優參數。
HR@n:命中率,能直觀地衡量用戶感興趣的項目是否在Top-N里。
NDCG@n:歸一化折損累計增益,是一個排序指標,用來衡量用戶對推薦列表的滿意程度,如果感興趣的項目放在了前面,該值就會較大。
MAE:平均絕對值誤差,評估推薦系統預測的評分與用戶給出的評分之間的差異。
(14)
(15)
(16)

3.3.1 實驗參數選取
在驗證集中隨機抽取數據進行參數調優,不同數量隱藏層的對比實驗如圖3所示。隱藏層為0明顯表現出其較差的推薦性能,沒有隱藏層意味著模型還是線性的,這證明通過MLP的多個隱藏層進行非線性計算,將高維的交互矩陣降維映射到潛在空間中的低維向量是有必要的。雖然增加層數能使推薦結果繼續向好發展,但效果并不明顯,且增加了計算負擔,考慮到內存消耗,本文將隱藏層數定為3。

圖3 隱藏層層數對命中率的影響Fig.3 Effect of hidden layer number on the hit rate
輸出層的節點數量繼承自最后一層隱藏層并且保持不變,而輸出的節點數量代表了隱藏特征向量的長度,即項目的標簽數量,所以最后一層隱藏層的節點數量決定了模型的能力。本文假設最后一層隱藏層的節點數量為8、16、32、64,則隱藏層節點數對命中率的影響結果如圖4所示。

圖4 隱藏層節點數對命中率的影響Fig. 4 Effect of hidden layer nodes on the hit rate
根據實驗結果,選擇將最后一層的節點數量設置為32。雖然隨著節點個數的增加,模型性能有所提升,但效果并不明顯,考慮到參數調優選取的數據集是我們有所取舍之后形成的,稀疏度同原本數據集有一定差別,為防止之后在完整數據集上的模型過擬合,選擇3層隱藏層的節點數分別為[128,64,32] ,則隱藏特征矩陣的特征數量為32 。
圖5為迭代次數對命中率的影響,結果表明模型在迭代10次之前的性能是有明顯提高的,隨后命中率趨于平緩,在迭代18次之后出現起伏,說明模型隨著迭代次數的增加會出現過擬合現象,所以本文選擇通過迭代18次來學習模型的參數。

圖5 迭代次數對命中率的影響Fig.5 Effect of iteration times on the hit rate
3.3.2 對比實驗分析
SeqDMF算法與其它3種對比算法CBCF[5]、SPMF[10]、NeuMF[16]在Epinions數據集上的MAE測試效果如圖6所示。

圖6 Epinions數據集上MAE比較Fig.6 Comparison of MAE on Epinions dataset
CBCF算法與其他3種算法相比存在較大差距,且隨著推薦項目數量的增加而出現誤差增大的趨勢。因為CBCF將用戶的評分通過聚類算法分類到幾個類別來減小基于用戶的CF算法計算復雜度,減少了運算時間,但并不能保證預測精度。SPMF、NeuMF以及SeqDMF這3種運用矩陣分解的基于模型的CF算法對于稀疏矩陣的推薦效果較好,相比之下SeqDMF算法擁有最小的誤差,并在推薦項目數量達到20時趨向于平穩。
圖7所示的命中率強調預測的準確性,隨著推薦項目的增多,測試集中每個用戶喜歡的項目被推薦的可能性越高,SeqDMF在項目數量達到10以后比其他算法更快趨于平穩,可以更好地適應對推薦項目數量有要求的場景。

圖7 Epinions數據集上命中率比較Fig.7 Comparison of HR@n on Epinions dataset
如圖8所示NDCG@n是一個排序敏感的指標,對比可知4種方法在MAE上的差別并不明顯,SeqDMF顯然在NDCG@n這一評價標準上比其他3種算法更有優勢。因為我們在相似度的計算方法上有較大的突破,將用戶相似計算從序列的角度出發摒棄傳統的基于離散分布求距離度量的方法,采用了基于LCS的相似度算法,還可以根據不同應用場合的需求,自由設定一種合適的序列轉換方法。本文在設定轉換方法時考慮的是用戶興趣隨時間變化的不確定性,使推薦結果更接近近期的興趣,而深度神經網絡與LCS的應用讓符合用戶興趣的推薦結果出現在更靠前的位置。

圖8 Epinions數據集上歸一化折損累計增益比較Fig.8 Comparison of NDCG@n on Epinions dataset
為了解決數據稀疏以及Top-N推薦的排序指標問題,本文采用深度神經網絡矩陣分解模型將用戶和項目交互矩陣投影到潛在空間中的低維向量中,并且將最長公共子序列(LCS)方法引入到矩陣分解模型,進而提出了一種基于LCS相似度的深度神經網絡矩陣分解推薦算法。通過對Epinions數據集的實驗分析表明,該算法能有效提升推薦性能,特別是在排序指標上取得了明顯提高。但本文只考慮了相似用戶對推薦性能的影響,忽略了相似項目的作用。由于存在數據的稀疏性和大量缺失的未被觀察到的數據,在下一步的研究工作中,應考慮將額外的輔助數據整合到項目相似度中,如時間因素、評論文本等,利用項目的相似性,結合用戶的相似性更有效地為用戶進行推薦。