鄒 鋒
(廣州商學院信息技術與工程學院 廣東 廣州 511363)
隨著網絡信息量的爆炸式增長,大數據挖掘成為了一個挑戰,推薦系統作為大數據挖掘的一個重要分支成為目前的研究熱點。協同過濾[1]是推薦系統中最為有效且易于實現的方案,被廣泛應用于大型門戶網站、電子商務網站及新聞門戶網站等。協同過濾系統依賴用戶的評分信息,且需要分析隱式信息來提取用戶的興趣,導致其對稀疏數據的性能不理想[2]。
當前的top-N推薦系統可分為兩個類型:基于優化的方式和基于數據類型的方式[3]。基于優化方式的目標是最小化預測評分的均方誤差,或者最大化每對用戶偏好的相似性[4]。基于數據類型的方式使用評分系統的顯式反饋信息或者隱式反饋信息[5]。文獻[6]提出了一種簡單的個人化推薦算法,直接將項目按受歡迎度降序排列,為用戶提供top-N的相似項目列表。文獻[7]是一種基于用戶-項目偏差項的協同過濾推薦系統,該系統利用遞歸神經網絡學習用戶-項目的偏差信息,結構簡單且效率較高。文獻[8]利用奇異值分解處理用戶評分矩陣,引入信任信息的隱式信息來緩解冷啟動問題,在推薦準確率和效率之間取得了平衡。文獻[9]是一種經典的“擴展少即是好”協同過濾模型,該模型直接最大化平均Reciprocal Rank指標來訓練預測模型。上述文獻利用不同的評估準則和學習方式實現了對用戶興趣的預測,但對于稀疏數據依然未達到理想的性能。
隨著深度學習技術的出現,許多研究人員利用深度學習擬合能力強、表征能力強的優點,結合某些判斷準則預測用戶的興趣。文獻[10]將變化相似性作為學習的目標,采用棧式降噪自編碼器作為深度學習模型,實現了單模型、單學習準則的協同過濾推薦系統。文獻[11]同時考慮了顯式反饋信息和隱式反饋信息,以單自編碼器學習用戶的顯式和隱式信息,實現了較好的推薦效果。根據文獻[10-11]的實驗結果和分析,深度學習技術能夠有效地提高協同過濾系統的預測準確率,但對于稀疏數據的推薦效果依然不理想。
本文采用自編碼器作為深度學習模型,以期提高協同過濾推薦系統的推薦效果。為了提高對稀疏數據的推薦效果,本文有兩個主要貢獻:改進了相似性評價指標,對Jaccard相似性做修改,提高稀疏數據的相似性評估準確率;提出了顯式反饋自編碼器和隱式反饋自編碼器,兩個自編碼器交互學習數據的顯式關系和隱式關系。基于4個不同規模的公開稀疏數據集分別進行實驗,結果驗證了本文算法的有效性。
目前主流推薦系統所采用的相似性度量方案主要存在以下4點不足之處:
① 設U1=(2,0,3,0)和U2=(5,2,0,2)是兩個用戶的評分向量。U1和U2間存在一個共同評分項,U1和U2皮爾森相關系數的分母為0,所以無法計算兩者的皮爾森相關系數。而U1和U2的余弦相似性為100%。
② 設U1=(2,1,3,2)和U2=(1,2,2,3)是兩個用戶的評分向量。U1和U2的皮爾森相關系數為0。
③ 設U1=(2,2,0,1)和U2=(4,4,0,2)是兩個用戶的評分向量。U1和U2的余弦相似性為1,如果兩個用戶的評分成倍數關系,兩者的余弦相似性一般很高。
④ 設U1=(5,5,4,3)和U2=(1,2,2,1)是兩個用戶的評分向量。Jaccard指數的總體相反相似性指數為1,但U1和U2的實際相似性極低。Jaccard僅關注于共同評分項目,忽略了許多相似性信息。
傳統的推薦系統通過共同評分的項目決定相似性,由此識別出最近鄰居。協同過濾系統的思想是利用最近鄰用戶的評分預測未評分項的評分,但在許多情況下協同過濾的思想并不適用,例如:某個高度相似的用戶僅僅對共同評分項進行了評分,此情況的相似用戶對預測評分的價值較小。


表1 目標用戶U1不同近鄰的非共同評分項數


表2 目標用戶U1關于不同近鄰的非共同評分項數
Jaccard相似性的另一個情況是如果共同評分項數增加,那么相似性的顯著度也成比例增加,即simJ(u,v)∝(|Iu∩Iv|)。
Jaccard相似性[12]度量樣本集間交集和并集的比例關系,評估有限樣本集間的相似性。設用戶u和v的評分分別為Iu和Iv,如圖1所示。

圖1 評分項Iu和Iv的關系示意圖
Jaccard通過兩個用戶間共同評分的數量來評估兩者的相似性:
(1)
式中:Iu和Iv分別為用戶u和v的評分項集。
因為Iu和Iv為非互斥關系,所以根據加法規則可得:|Iu∪Iv|=|Iu|+|Iv|-|Iu∩Iv|。
(2)

(3)
式(3)的分子、分母同除以|Iu∩Iv|,可獲得下式:
(4)

通過共同評分項度量相似性存在許多不足,本文提出了新的相似性模型,稱為相關Jaccard均方距離。首先定義了相關Jaccard相似性指標:
(5)
如果|Iu∩Iv|=0,那么simRJ(u,v)=0。
將相關Jaccard和均方距離矩陣相乘,獲得相關Jaccard均方距離(Relative Jaccard-Mean Square Distance, RJ-MSD):
simRJ-MSD=simRJ(u,v)×simMSD(u,v)=

(6)
如果|Iu∩Iv|=0,那么simRJ-MSD(u,v) =0。

(7)

稀疏評分向量ru是自編碼器的輸入信息,自編碼器的目標是將稀疏向量重建為密集評分向量,將該過程考慮為矩陣分解模型的非線性形式。因為ru的大多數入口為空值,所以設計了以下的稀疏損失函數來訓練自編碼器:
(8)
式中:eu是u的指示向量,如果rui≠0,則eui=1;否則eui=0。將這一項和重建損失相乘,將后向傳播值清零,因此網絡忽略缺失的入口信息,僅考慮評分的分布。學習完網絡權重和偏差信息后,再次將稀疏評分向量ru輸入自編碼器,重建一個包含所有項目預測評分的密集向量。top-N推薦系統為目標用戶提供N個最優的項目。
圖2所示是基于自編碼器的協同過濾框架,本框架包括兩個自編碼器:(1) 用戶排序深度神經網絡,簡稱為UNet;(2) 興趣學習深度神經網絡,簡稱為INet。UNet將成對正則引入自編碼器,以最小化評分預測誤差為網絡的目標。成對損失函數需要采樣負項,設負項為j,采樣的概率分布為p(j|u)。INet為負項提供一個非均勻且用戶相關的采樣概率分布,INet通過學習用戶的隱式反饋判斷用戶對于未評分項是否無興趣,然后利用輸出值計算采樣概率。

圖2 基于自編碼器的協同過濾框架
UNet的目標是通過顯式反饋數據分析用戶對于項目的偏好,通過優化原目標函數來訓練UNet,優化目標是最小化重建誤差和正則成對排列損失。用戶正項和負項的定義是一個關鍵問題,主要有兩種方式:(1) 從用戶u評分的項集中選擇項i,從未評分的項集中選擇項j;(2) 從用戶u評分的項集中任意選擇一對項i和項j,且rui>ruj。考慮以下3個原因:
① 第1種方式考慮了用戶的評分項和未評分項,而第2種方式僅考慮了用戶的評分項,在稀疏數據中評分項的比例一般較小。
② 未評分的項目有兩種情況:用戶不知道該項目,但是偏好該項目;用戶知道該項目,但是無興趣。前者的未評分項對于模型訓練具有意義。
③ 第1種方式的模型從評分項和未評分項均可以獲得反饋信息,本文通過開發未評分的項提高UNet的訓練效果。綜合考慮上述3點理由,選擇第1種方式。最終UNet的目標函數定義為:
(9)
式中:第1項為重建損失,第2項為成對排列損失,α和β是平衡成對正則項和L2正則項的權重參數。采用對數似然函數建模成對排列損失,將成對排列損失作為被減項,將目標函數建模為最小化問題。
式(9)的Pu表示u的一對項目,設u的正項集合為Iu+,負項集合為Iu-。Iu+由rui≥3的評分項組成,剩下的項放入Iu-,u未評分的所有項也放入Iu-。從Iu-采樣項j,采樣的概率分布為p(j|u),Iu+內的每個項i組成一對項目(i,j)。設計了INet深度神經網絡學習用戶的隱式反饋信息來采樣負項,提高總體的準確率。
如果用戶u對項i的評分缺失,其原因可能有兩點:①u可能偏好i,但不知道i的存在,所以u未評分i。②u已知i,但對i無興趣,所以u未評分i。為了提高top-N推薦的準確率,第2個原因的負項優于第1個,但難點在于判斷用戶對于未評分項目的興趣。通過隱式反饋信息可觀察用戶對于未評分項目的興趣,根據所有未評分項的興趣得分計算負項的采樣概率分布,興趣得分越低,UNet中無評分的項被選為負項的可能性越大。
通過最小化以下的損失函數訓練INet:
(10)


(11)
最終將u無興趣的項采樣為負項。
采用SGD和后向傳播訓練UNet和INet。首先最小化式(10)隱式反饋來訓練INet,然后最小化式(9)顯式反饋和INet訓練UNet。給定評分矩陣R,最小批大小為B,負采樣率為SPR,學習率為μ,ΘIL為訓練模型參數,訓練UNet的總體程序如算法1所示。
算法1UNet的訓練算法
輸入:評分矩陣R,ΘPR,預訓練ΘIL,參數B,μ,SPR。

1. 初始化ΘPR;
2.while不滿足收斂條件do
3. 采樣用戶B={u1,u2,…,uB}的一個最小批;
4.g=0;
5. for eachuinΒdo
6.Pu= ?;
8. 式(5)計算p(j|u);
9. fors=1 toSPRdo
10.fori∈Iu+do
11. 從p(j|u)采樣j;
12.Pu=Pu∪{i,j};
13.endfor
14.endfor
15.g=g+▽ΘPRPR;
15.endfor
16.ΘPR=ΘPR-gμ/
16.endwhile

(1) 實驗數據集。實驗數據集為4個真實的數據集:Ciao[16]、Watcha(watcha.net)、Movielens 100K[17]和Movielens 1M數據集[17]。表3所示是實驗數據集的基本信息。

表3 實驗數據集的基本信息
每個數據集的評分數據隨機分為兩個子集:80%的評分數據作為訓練集,其他的20%作為測試集。
(2) 性能評價指標。設用戶為u,Nu為u的推薦項集,Relu為正定集。采用推薦精度、召回率、歸一化折扣累加增益(Normalized Discounted Cumulative Gain, NDCG)以及(Reciprocal Rank, RR)。精度PuN和召回率RuN重點評估Nu中包含的項目準確性,分別定義為:
(12)
(13)
精度和召回率忽略了Nu中項目的順序和位置,DCGuN和RRuN則考慮了推薦列表的位置,DCGuN的計算方法為:
(14)
式中:yk表示Nu中第k個項的相關評分。
RRuN的計算方法為:
(15)
式中:rank1th為Nu中第1個正確項的位置。
實驗中為測試集的每個用戶提供top-N的推薦列表,然后計算所有用戶4個指標的平均值,分別記為PN、RN、GN、MN。實驗中選擇兩個N值:5和20。
(3) 神經網絡的具體實現。首先通過實驗確定模型的超參數,UNet和INet隱層節點的激活函數為sigmoid函數,輸出節點的激活函數為恒等函數,采用文獻[18]的方法初始化神經網絡的權重,mini-batch大小設為128,學習率為0.001,L2泛化系數β設為0.001。
觀察實驗結果發現4個數據集的UNet和INet的最優模型不同,所以通過網格搜索微調神經網絡的超參數,微調實驗從訓練集隨機采樣20%的樣本作為驗證集。定義超參數hPR表示隱層節點對于前一層節點數量的百分比,0 本文對協同過濾推薦系統提出兩點改進:(1) 設計了相關Jaccard指標,以期改善對稀疏數據集的處理效果;(2) 利用隱式反饋和顯式反饋訓練深度神經網絡,以期提高神經網絡的預測準確率。為了詳細測試這兩個改進點的效果,對UNet和INet兩種神經網絡采用不同的機制組合分別進行了訓練,實驗結果總結如圖3所示。 (a) Ciao數據集 (b) Watcha數據集 (c) Movielens 100K數據集 (d) Movielens 1M數據集 分析圖3的結果,可總結出以下結論:(1) 改進Jaccard相似性的總體性能一致優于普通Jaccard相似性,表明本文對Jaccard相似性進行了有效的改進,通過對所有樣本的相似性評估提高了相似性度量的顯著性。改進的Jaccard相似性也有效地緩解了稀疏數據集的相似性問題,有助于提高自編碼器預測用戶偏好的準確率。(2) 顯式反饋的效果優于隱式反饋,而同時使用顯式反饋和隱式反饋的效果最佳。因為顯式反饋和隱式反饋從不同的角度反映了用戶的興趣,隱式反饋反映了用戶對于項目的興趣,顯式反饋則反映了偏好該項目的用戶數量,所以這兩種反饋之間具有互補性。 實驗研究了以下3個超參數對模型的影響:(1) 自編碼器的隱層數量。(2) 隱層節點的hU參數。(3) 排列系數α。以不同的參數組合訓練自編碼器,以推薦的準確率為評價指標。首先,評估神經網絡結構相關的超參數即hPR和L的效果,結果如圖4所示。 (b) Watcha數據集 (c) Movielens 100K數據集 (d) Movielens 1M數據集 由圖4可知:(1) 不同數據集的最優hU值不同,因為Ciao數據集較小且較為稀疏,所以少量的隱層節點即可提取訓練數據集的最近特征,因此Ciao數據集自編碼器無需大量的隱層節點來實現高準確率。而其他3個數據集需要大量的隱層節點才能實現較高的準確率。(2) 圖2中隱層數量對于推薦準確率存在影響,單層自編碼器結構難以提取用戶-項目間復雜的非線性信息,所以準確率較低。而多層的網絡結構包括較多的模型參數,容易引起過擬合問題,所以準確率也較低。 圖5所示是超參數α對實驗結果的影響,圖中x軸為變化的α值,y軸為top-N推薦的準確率。圖4的結果顯示,通過最小化MSE和正則成對排名損失兩個指標訓練本文的自編碼器,有助于提高自編碼器對于用戶興趣的預測準確率。 圖5 超參數α的微調實驗 根據上述超參數微調實驗的結果,將每個數據集的超參數設為性能最優的參數組合。選擇其他的top-N推薦算法與本文比較,包括:itemModel[6]、itemRNN[7]、SVD[8]、xCLiMF[9]、SDAutoRec[10]、DHAutoRec[11]。其中:SVD和xCLiMF是兩個經典的top-N推薦系統,SVD是經典的奇異值分解模型,xCLiMF為擴展的少即是好協同過濾模型; itemModel和itemRNN是兩個針對項目顯式信息的推薦系統,這兩個系統的推薦效率較高;SDAutoRec和DHAutoRec是兩個基于深度神經網絡的推薦系統,均為單網絡的結構。 7個推薦系統的性能結果如圖6所示。由圖6可知:(1) 本系統對于4個數據集均實現了最優的推薦準確率,總體而言,本文算法比次優系統的推薦準確率提高約40%。(2) 本系統的top-5推薦效果優于top-20,如果對于僅需要為用戶提供少量推薦列表的場景下,本系統具有比較突出的優勢。 (a) Ciao數據集 (b) Watcha數據集 (c) Movielens 100K數據集 (d) Movielens 1M數據集 最終統計了7個推薦系統的平均訓練時間和推薦響應時間。表4所示是7個算法的平均訓練時間,itemModel和itemRNN均為基于項目的推薦系統,模型的訓練時間較小,SDAutoRec和DHAutoRec則是單網絡模型的推薦系統,其訓練速度也明顯快于本系統。總體而言,本文系統設計了兩個自編碼器的深度神經網絡,改進的Jaccard相似性需要計算全部項目的相關相似性值,因此訓練時間較長。 表4 實驗數據集的訓練時間 s 圖7所示是7個算法的平均推薦響應時間,SVD和xCLiMF的推薦響應時間較長,并且影響了其應用價值。本文算法的響應時間略高于itemModel、itemRNN、SDAutoRec及DHAutoRec四個算法,但平均響應時間低于0.5秒,滿足實時性的需求。 圖7 推薦系統的平均響應時間 為了提高協同過濾推薦系統對于稀疏數據的推薦效果,本文提出了一種基于深度神經網絡和改進相似性度量的推薦算法。主要提出兩個改進點,改進了相似性評價指標,對Jaccard相似性進行了改進,提高稀疏數據的相似性評估準確率。提出了顯式反饋自編碼器和隱式反饋自編碼器,兩個自編碼器交互學習數據的顯式關系和隱式關系。因為顯式反饋和隱式反饋從不同的角度反映了用戶的興趣,隱式反饋反映了用戶對于項目的興趣,顯式反饋則反映了偏好該項目的用戶數量,所以這兩種反饋之間具有互補性。 本文采用了兩個深度學習網絡,并且改進Jaccard相似性需要計算全部數據集的相似性,導致模型訓練的時間較長。因此本系統僅僅適用于穩定數據流的推薦問題,過長的訓練時間無法滿足實時訓練的要求。未來將關注于引入分布式計算和云計算技術,加快深度神經網絡的訓練時間。5.2 實驗分析




5.3 超參數的設置




5.4 對比實驗分析




5.5 算法的時間效率


6 結 語