張全貴,胡嘉燕,王 麗
遼寧工程技術大學 電子與信息工程學院,遼寧 葫蘆島125105
協同過濾是推薦系統的一種重要方法,它通過分析用戶和項目(如商品、電影、音樂等)之間的歷史交互信息預測新的用戶-項目交互。在協同過濾領域,由于一些公開競賽(如Netflix 競賽)和公共數據集的出現,大部分研究都是基于顯式反饋信息(如五級評分)。這類研究一般利用歷史評分信息進行評分預測,常作為回歸問題或多分類問題處理。然而,在實際場景中,顯式反饋信息相對難以獲得。相反,在線系統中提供了更多的隱式反饋信息(如頁面鏈接點擊、視頻觀看、產品購買以及其他用戶-項目交互歷史記錄)。近年來,隱式反饋推薦領域的研究受到越來越多的關注。隱式反饋協同過濾由于缺少負反饋信息,一直作為單類協同過濾(one-class collaborative filtering,OCCF)問題研究。
由于隱式反饋數據的不確定性、極度稀疏性和不平衡性,僅使用隱式反饋信息很難獲得較高的推薦精度。針對這一問題,研究人員對OCCF 進行了一定的擴展。Yao等人將上下文信息融入到OCCF中,并提出了基于上下文感知的個性化隨機游走(contextaware personalized random walk,CPRW)和基于語義路徑的隨機游走(semantic path-based random walk,SPRW)方法。文獻[8]在OCCF 中融入了豐富的用戶信息,如用戶的搜索查詢歷史、購買和瀏覽行為等。文獻[9]提出了一種基于地理位置信息和功能描述的情境偏好評分的推薦方法。Pan 等人提出了一種新的假設,在貝葉斯個性化排序(group preference based Bayesian personalized ranking,GBRP)中引入群體偏好而不是單獨引入個體偏好,從而放寬了對個體的獨立性假設。
以上研究的出發點均是將一些輔助信息融入到OCCF 模型中,以提高推薦準確性。這些工作大多是直接使用原始顯式特征或其交叉特征,但這種方式很難獲得顯著的性能改進,因為難以判斷哪些顯式特性真正重要。基于此,本文提出了一種耦合用戶公共特征的單類協同過濾推薦算法(one class collaborative filtering recommendation algorithm coupled with user common characteristics,UCC-OCCF),該算法不是直接使用顯式特征或交叉特征,而是通過建立一個深度神經網絡學習當前用戶的鄰居對項目類別的共同偏好。本文“鄰居”的概念不同于文獻[2,12],他們將“鄰居”定義為具有相似興趣的用戶(例如,用戶-項目評分矩陣中有相似項目的用戶)。在本文中,鄰居是指具有與當前用戶相似的顯式特征(如人口統計學信息)的用戶,本文稱之為自然鄰居。本文假設具有相似顯式特性的用戶存在共同偏好。此外,利用自然鄰居代替直接使用顯式特征,并且利用深度神經網絡學習抽象知識的能力,可以獲得用戶顯式特征與項目類別之間的高層次交互關系。
本文工作具有以下三點貢獻:
(1)提出了一種基于顯式特征和隱式反饋信息相結合的深層神經網絡結構,以提高OCCF 的性能。
(2)通過學習當前用戶的自然鄰居與某一類項目之間的交互,從而間接學習用戶的顯式特征與項目類別之間的高層次交互關系,以充分發揮顯式特征的作用。
(3)通過在三個實際數據集上的實驗評估,驗證了該模型的推薦性能優于基線模型。
深度神經網絡在表示學習領域具有突出的能力,如在計算機視覺和自然語言處理及語音識別中,深度學習均顯示出了有效學習抽象表示的潛力。近年來,深度學習開始應用于推薦系統領域。如文獻[13]提出了一個基于神經網絡的協同過濾模型,它將一個淺層的矩陣分解(matrix factorization,MF)神經網絡和一個NCF(neural collaborative filtering)多層感知器結合起來,學習用戶-項目的隱式交互。本文將個人深度潛在因素表示網絡(deep latent factors representation,DLFR)與基于鄰居的共同偏好表示網絡(neighborhood based common preference representation,NB-CPR)相結合,實現了個人用戶-項目交互與鄰居共同偏好表示的協同訓練網絡。
本文工作的動機與文獻[10-11]類似,都是將用戶顯式特征集成到OCCF 中。文獻[10]提出了一個深度神經網絡聯合訓練淺層模型和深度模型(jointly trained wide linear models and deep neural networks,Wide&Deep)。文獻[11]建立了一個結合了用于推薦的因子分解機器和用于特征學習的深度學習神經網絡結構(deep neural network and factorization machine,DeepFM)模型,與谷歌的Wide&Deep 模型不同,它使用共享的原始特征作為Wide 模型和Deep 模型的輸入,而不需要特征工程。本文通過學習當前用戶的鄰居和項目類別之間的隱式交互使用顯式特征,而不是直接將顯式特征作為模型的輸入。
本文工作出發點與文獻[2,17]有共同之處,均是將用戶的共同偏好融合到協同過濾模型中,通過學習群體的共同偏好來提高協同過濾的準確性。但是,他們的工作中“群體”僅是根據用戶歷史行為構建的。文獻[17]將聚類算法應用于用戶和項目的潛在向量,然后利用聚類級評分矩陣上的MF 來提高評分預測精度。另外,文獻[18-20]均是利用顯式特征來提高OCCF 的性能,說明使用顯式特征提高推薦性能是一項具有意義的工作。基于以上工作,本文采用間接利用顯式特征的方式,利用深度神經網絡模型學習用戶深層抽象共同偏好,以提高OCCF的性能。
在單類協同過濾問題中,用戶集={,,…,u}包含個用戶,項目集={,,…,v} 包含個項目,用戶與項目之間的交互構成交互矩陣(記為)。中的每個元素(記為y)表示一個用戶與一個項目之間是否交互。如圖1 所示,若用戶與項目之間存在交互,則y表示為1(例如,用戶購買了項目或用戶觀看了電影);空元素表示用戶與項目之間沒有交互。與評分預測問題不同,OCCF的目的是預測中未觀測項目是否為1。

圖1 基于隱式(單類)反饋信息的用戶-項目交互矩陣Fig.1 User-item interaction matrix with implicit(one-class)feedback
本文使用的數學符號如表1 所示。

表1 數學符號Table 1 Mathematical notations
為了有效利用輔助信息,本文從較高層次間接利用顯式特征,提出了一種雙分支神經網絡框架,稱之為耦合用戶公共特征的單類協同過濾推薦算法(UCC-OCCF)。如圖2 所示,該框架包括兩部分:個人深度潛在因素表示網絡(DLFR)和基于鄰居的共同偏好表示網絡(NB-CPR)。

圖2 UCC-OCCF 框架Fig.2 UCC-OCCF framework
DLFR 網絡結構主要思想與NCF 模型相似,該模型將用戶和項目ID 的獨熱向量(one-hot)分別輸入模型中,然后分別經過嵌入層將高維稀疏向量轉換為低維稠密用戶和項目向量,再輸入到多層全連接層中,學習當前用戶與項目之間的交互概率。
NB-CPR 網絡結構中,通過某種相似度度量方法計算得到的當前用戶與其前個自然鄰居。將得到的當前用戶與其前個自然鄰居和待預測項目的類別分別轉換為多熱向量(multi-hot)。然后將每個用戶自然鄰居多熱向量輸入到嵌入層得到每個用戶自然鄰居嵌入向量。隨后,每個用戶自然鄰居嵌入向量通過神經網絡的學習得到所有用戶的混合嵌入向量,將其與預測項目類別的嵌入向量通過全連接層學習鄰居對待預測項類別的共同偏好。
本文將DLFR 模型學習到的當前用戶與項目之間的交互概率向量與NB-CPR 模型學習到的鄰居對待預測項目類別的共同偏好向量融合,并送到全連接網絡中聯合學習得到最終的交互向量。最后,輸出層中Sigmoid 函數激活,從而將其輸出壓縮到[0,1],表示用戶與項目的交互概率。總之,UCC-OCCF的目標是通過兩種網絡的協同訓練,預測受顯式特征影響的用戶-項目交互概率。
UCC-OCCF 框架的右側分支是個人深度潛在因素表示網絡(DLFR),其可以獨立成圖3 所示的模型。其作用是預測用戶-項目交互的概率。潛在因素模型(如矩陣分解)是協同過濾領域的重要方法,其試圖從評分模式中學習出用戶和項目的潛在因素,然后利用這兩個潛在因素預測評分表中的缺失評分。它試圖解釋用戶的評分和從評分模式中推斷出的用戶和項目潛在因素。項目潛在因素可以用來描述項目的顯式屬性(如電影類型)或不可解釋的屬性。用戶潛在因素用來描述用戶對項目潛在因素中對應隱式屬性的偏好。DLFR 模型在某種程度上類似于NCF 模型,將用戶和項目的隱式特征連接到一個多層全連接神經網絡中,學習用戶和項目之間的交互。

圖3 個人深度潛在因素表示網絡(DLFR)Fig.3 Deep latent factor representation(DLFR)
在DLFR 模型中,分別輸入用戶標識和項目標識的獨熱向量。受文獻[21-22]的啟發,將用戶和項目分別通過神經網絡嵌入層(embedding)轉換為和的兩個低維稠密嵌入向量。

其中,權值矩陣W∈R和W∈R在輸入層與連接層之中是一樣的。
通過這一過程,模型將用戶和項目映射成相同空間維度的潛在因素向量。在嵌入層之上,將潛在因素向量和輸入到一個連接層中,該連接層將和對應元素相乘,輸出向量代表線性用戶-項目交互,表示為:

與基本的矩陣因子分解模型不同,本文模型利用內積對用戶-項目交互進行建模,將向量送入多層全連接神經網絡中,學習深度抽象的用戶-項目交互。
經過DLFR 模型的訓練,W和W兩個矩陣分別表示所有用戶和項目的潛在因素。由于用戶和項目的編碼表示為獨熱編碼,W和W的每一列分別表示某個用戶和項目潛在因素和。對于一個給定的項目,每個維度度量的是該項目具有這些因素的程度。對于給定的用戶,每個維度度量的是用戶對項目相應因素的興趣程度。因此,連接層的輸出向量捕獲了用戶和項目之間的線性交互。經過多層全連接層的處理,可以將其轉換為表示用戶與項目之間的非線性交互,表示為:

其中,,,…,W和,,…,b分別表示各層的權矩陣和偏置,,,…,a表示的是由ReLU 激活函數激活的每一層的輸出。由于DLFR 的目標是預測用戶-項目交互的概率,本文使用邏輯(logistic)回歸的sigmoid 函數將該模型的輸出壓縮到區間[0,1],并將目標問題解釋為概率:



其中,是最后一層的權重矩陣;a是上一層的輸出;是最后一層的偏重向量。
由于OCCF 問題沒有負樣本,需要用負樣本采樣策略抽取負樣本。在本文實驗中,采用類似于文獻[13]的均勻負采樣策略,從矩陣中未觀察到的交互中抽取了負樣本。


學習損失函數的參數:

下面介紹如何將NB-CPR 模型與DLFR 模型結合起來,利用顯式特征來提高DLFR 模型的性能。圖2①展示NB-CPR 模型的架構,該模型通過學習當前用戶的鄰居和項目類別之間的交互,學習具有相似顯式特征用戶的共同偏好。NB-CPR 的輸入是當前用戶自然鄰居的ID,可以通過相應的相似性度量方法,如漢明距離(Hamming distance)、Pearson 相關性系數(Pearson correlation coefficient)和COS(coupled attribute similarity),從所有用戶中確定鄰居。通過全連接層的第一個隱藏層將用戶自然鄰居和項目類別轉化為稠密向量。
在輸入層輸入當前用戶的個自然鄰居向量,,…,NB。NB(∈{1,2,…,})是當前用戶及自然鄰居用戶ID 轉換的獨熱編碼,因此每個用戶的用戶自然鄰居維數最大值為||。然后,將其送入神經網絡嵌入層得到用戶的自然鄰居低維稠密的嵌入向量。




將項目類別的多熱向量輸入到網絡中后,使用一個嵌入層將稀疏向量轉換為項目類別的稠密向量。然后將用戶鄰居和項目類別的嵌入向量送入連接層并輸出向量E,并將其輸入多層全連接神經網絡中,學習鄰居對某類項目高層抽象的共同偏好表示,表示為:







本文使用與DLFR 相同的代價函數來訓練UCCOCCF 模型。
本節介紹如何獲取當前用戶的鄰居。首先,使用用戶的顯式特征(如性別、年齡、職業和郵編等),采用某種相似度度量算法計算得到某個數據集的用戶相似度矩陣(如圖4 所示)。然后,為每一個用戶取出前個相似用戶作為該用戶的鄰居。本文實驗中使用三個相似度度量算法:漢明距離、Pearson 相關性系數和COS。

圖4 用戶相似矩陣和鄰居Fig.4 User similarity matrix and neighbors
漢明距離是利用類別型屬性計算對象相似性的一種簡單而常用的方法,其計算兩個等長向量漢明距離,若兩個向量對應位置的字符相同則漢明距離增加1,從而得到兩個向量的漢明距離。漢明距離的值越小,兩個向量相似度就越高。
Pearson 相關性系數算法考慮向量之間的變化趨勢,公式如式(13)所示。

其中,(,)為數據對象,為向量總數。
COS是由Wang 和Cao 等人提出的一種基于耦合關系分析的相似度度量方法,其考慮了類別型屬性之間的耦合關系,由于篇幅所限,本文不做闡述,在文獻[23]中有詳細介紹。本文采用三種相似度度量算法的目的是驗證不同相似度度量算法對UCCOCCF 性能的影響。


表2 數據集統計Table 2 Statistics of datasets

表3 用戶和項目的顯式特征Table 3 Explicit features of users and items
UCC-OCCF 是在Python 和Keras 框架中實現的。所有的實驗執行于IntelCorei7-4770K@3.50 GHz處理器,32 GB 運行內存,NVIDIA GeForce GTX 1080Ti 11 GB 顯卡硬件設備。
使用以下基線方法評估本文提出的UCC-OCCF方法。
itemKNN(item K-nearest neighbor),基于項目的協同過濾方法。本文按照文獻[10]的設置對OCCF進行評估,比較本文方法與傳統的不使用深度學習方法的性能。
NeuMF(neural matrix factorization),這是一種利用神經網絡進行隱式反饋的協同過濾方法。用它來比較本文提出的具有顯式特征的方法與沒有顯式特征的基本神經網絡協同過濾方法的性能。
Wide&Deep,這是由谷歌提出的一種包含Wide模型和Deep 神經網絡的神經網絡結構。在該模型中,需要對Wide 模型的輸入進行特征工程(如交叉產品特征)。為了公平起見,本文將每個用戶的顯式特征(人口統計學信息:性別、年齡、職業、郵政編碼)轉換為交叉特征。將交叉特征和原始的顯式特征一起輸入到Wide&Deep 模型,來比較間接使用用戶鄰居顯式特征的模型與直接使用顯式特征和交叉特征的模型的性能。
NGCF(neural graph collaborative filtering),該模型通過GNN(graph neural network)的高階連通性傳播學習用戶與項目的顯式交互信息的作用,來比較間接使用用戶鄰居顯式特征和用戶-項目交互信息的模型與僅使用顯式用戶-項目交互信息模型的性能。
DeepICF(deep variant of item-based collaborative filtering),該模型不僅僅對兩個項目之間的相似性建模,而且使用非線性神經網絡考慮項目之間的高階關系模型,捕獲用戶的決策從而提高基于項目的協同過濾的性能。用它來比較本文使用用戶共同項目類別偏好聯合個人深度潛在因素的模型和其項目之間高階關系模型的性能。
本文使用OCCF中廣泛使用的留一法作為性能評估方法。與文獻[13,19,31]相同,本文將每個用戶最新的交互項作為測試項,其余交互項作為訓練數據,隨機抽取數據集中用戶-項目交互項之外的99 個項目作為負樣本,與測試項目一起構成用戶測試數據。評估目的是對每個用戶的100 個條目進行排序,利用命中率(hit ratio,HR)、歸一化累積折扣信息增益值(normalized discounted cummulative gain,NDCG)和平均倒 數排名(mean reciprocal rank,MRR)來評估其性能。
上述方法公式分別為:

其中,為測試集,rel為位置處項目的分級關聯值,Z為歸一化系數。實驗設置rel∈{0,1},若在測試數據集正例中則為1,若不在則為0。


將數據集轉換為隱式版本后,對每個正例隨機抽樣4 個負例。本文模型的超參數主要如表4 所示。

表4 測試超參數Table 4 Test hyper-parameters
本文使用ReLU 作為所有全連接層的激活函數。本實驗使用Adam 優化器。對于參數初始化,使用隨機正態分布(均值和標準差分別為0 和0.01)初始化嵌入矩陣,使用glorot-uniform 作為全連接層的初始化。該模型中的所有偏置項都初始化為0。
為了驗證用戶鄰居數量對UCC-OCCF 性能的影響,本實驗針對COS、漢明距離和Pearson 相關性系數度量分別采用表4 中的鄰居數量進行測試。
圖5、圖6 和圖7 分別對比了UCC-OCCF 和基線方法在HR@、NDCG@和MRR 評估指標下的性能,測試了取1 到10 時的情況。本文從以下幾個方面來討論實驗結果。

圖5 HR@K 評估Fig.5 Evaluation of HR@K

圖6 NDCG@K 評估Fig.6 Evaluation of NDCG@K

圖7 MRR 評估Fig.7 Evaluation of MRR
(1)與基線方法的比較:對于3 個數據集上的每一個值,所有方法的性能都優于itemKNN(基本的協同過濾方法)。這說明深度學習方法的性能優于傳統的OCCF 方法。
(2)Wide&Deep 和NeuMF 在3 個數據集的每個值時結果都很接近。這說明對于Wide&Deep 來說,直接使用顯式特征的深度模型不一定能獲得更好的性能。
(3)本文提出的使用三種度量方法的UCC-OCCF均比所有基線方法表現得更好。使用COS、漢明距離和Pearson 相關性系數度量的UCC-OCCF 在3 個數據集中性能均優于所有對比實驗,如圖5、圖6 和圖7所示。在MovieLens 1M 與NGCF 比較,HR@10 的性能分別提高了0.057、0.092 和0.120,NDCG@10 的性能分別提高了0.034、0.076 和0.213,MRR 的性能分別提高 了0.121、0.178 和0.270;在MovieLens 100K 與NGCF 比較,HR@10 的性能分別提高了0.076、0.035和0.054,NDCG@10 的性能分別提高了0.109、0.033和0.089,MRR的性能分別提高了0.130、0.099 和0.119;在MyAnimeList與DeepICF 比較,HR@10 的性能分別提高了0.066、0.074 和0.085,NDCG@10 的性能分別提高了0.061、0.075 和0.092,MRR 的性能分別提高了0.037、0.060 和0.085。這些結果表明,與直接使用用戶顯式特征或使用隱式反饋信息(用戶和項目歷史交互信息)相比,通過鄰居間接集成用戶顯式特征可以獲得更多的性能改進。
(4)鄰居數量的影響:圖8、圖9 和圖10 為UCCOCCF 在不同用戶鄰居情況下的結果。可以看出,鄰居數量對UCC-OCCF 的性能有不同的影響。對于MovieLens 1M,當每個用戶設置20個鄰居時,HR@10的性能最高;當每個用戶設置50 個鄰居時,NDCG@10 和MRR 的性能對于COS 和漢明距離度量都是最高的,而Pearson 相關性系數是最低的,每個用戶設置20 個鄰居時性能最高;對于MovieLens 100K,每個用戶設置40 個鄰居時,HR@10、NDCG@10 和MRR 的性能最高;對于MyAnimeList,每個用戶設置20 個鄰居時,HR@10、NDCG@10 和MRR 的性能最高。由上述結果可知,鄰居的數量會影響OCCF 的性能,但是OCCF 的性能與鄰居的數量沒有對應關系。本文目的是學習具有相似顯式特征鄰居的共同偏好,最合適的鄰居數量由數據集的數據分布決定。

圖8 評價鄰居數量對HR@10 的影響Fig.8 Evaluation of HR@10 using different number of neighbors

圖9 評價鄰居數量對NDCG@10 的影響Fig.9 Evaluation of NDCG@10 using different number of neighbors

圖10 評價鄰居數量對MRR 的影響Fig.10 Evaluation of MRR using different number of neighbors
(5)不同鄰居距離度量方法的比較:從圖5、圖6和圖7 可以看出,鄰居距離度量方法會影響UCCOCCF 的性能。對MovieLens 1M 和MyAnimeList 而言,Pearson 相關性系數度量的效果是最好的,對于MovieLens 1M 和MyAnimeList,使用漢明距離度量比COS 度量表現得更好,但對于MovieLens 100K,結果卻相反。究其原因,Pearson 相關系數在數據受級別膨脹影響大時更加有效,COS 中存在較多的特征工程,在大數據集下的深度學習模型不一定能帶來積極的影響。相反,當數據集較小時,它是有意義的。
(6)網絡結構評估:本文對是否集成NB-CPR 模塊情況下的OCCF 性能進行了評估,如圖11 所示,集成NB-CPR 模塊可以獲得更高的性能。UCC-OCCF模型的性能在3 個數據集上都比基本的DLFR 模型提高了0.1以上,表明本文提出的網絡結構的有效性。

圖11 模型結構評估Fig.11 Evaluation of model structure
(7)基線模型和UCC-OCCF 在3 個數據集中訓練和預測的時間對比,如表5 所示。當數據集的數量級變大時,對于所有模型來說,訓練和預測所需的時間都會顯著增加。在所有模型中,itemKNN 在所有數據集上的訓練和預測過程花費的時間始終是最少的。在訓練過程中,本文的模型UCC-OCCF 每一個epoch 的平均訓練時間高于大部分對比模型,然而UCC-OCCF 的訓練總時間小于絕大多數的模型。證明UCC-OCCF 花費更少的訓練時間來獲得更佳性能。對于預測過程,UCC-OCCF 花費的時間與其他模型相差不大,且均小于NGCF。

表5 訓練和預測時間Table 5 Time for training and prediction
(8)參數評估:本文模型使用的最終超參數如表6 所示。

表6 超參數Table 6 Hyper-parameters
本文提出了一種深度單類協同過濾模型UCCOCCF,通過將用戶鄰居的共同偏好與當前用戶的個人偏好相結合,間接融合潛在特征和顯式特征。通過對MovieLens 100K、MovieLens 1M 和MyAnimeList數據集的實證評估,證明了該方法相對于現有方法的優越性。在這項工作中,只使用人口統計學信息來計算用戶鄰居,在實際應用中,UCC-OCCF 模型可使用更多其他類型的顯式特征,例如社交網絡信息。未來考慮基于GNN學習用戶的人口統計學信息和社交網絡信息來得到用戶的鄰居,從而提高推薦性能。