鄒 鋒
(廣州商學(xué)院信息技術(shù)與工程學(xué)院 廣東 廣州 511363)
隨著網(wǎng)絡(luò)信息量的爆炸式增長,大數(shù)據(jù)挖掘成為了一個挑戰(zhàn),推薦系統(tǒng)作為大數(shù)據(jù)挖掘的一個重要分支成為目前的研究熱點。協(xié)同過濾[1]是推薦系統(tǒng)中最為有效且易于實現(xiàn)的方案,被廣泛應(yīng)用于大型門戶網(wǎng)站、電子商務(wù)網(wǎng)站及新聞門戶網(wǎng)站等。協(xié)同過濾系統(tǒng)依賴用戶的評分信息,且需要分析隱式信息來提取用戶的興趣,導(dǎo)致其對稀疏數(shù)據(jù)的性能不理想[2]。
當(dāng)前的top-N推薦系統(tǒng)可分為兩個類型:基于優(yōu)化的方式和基于數(shù)據(jù)類型的方式[3]?;趦?yōu)化方式的目標是最小化預(yù)測評分的均方誤差,或者最大化每對用戶偏好的相似性[4]?;跀?shù)據(jù)類型的方式使用評分系統(tǒng)的顯式反饋信息或者隱式反饋信息[5]。文獻[6]提出了一種簡單的個人化推薦算法,直接將項目按受歡迎度降序排列,為用戶提供top-N的相似項目列表。文獻[7]是一種基于用戶-項目偏差項的協(xié)同過濾推薦系統(tǒng),該系統(tǒng)利用遞歸神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)用戶-項目的偏差信息,結(jié)構(gòu)簡單且效率較高。文獻[8]利用奇異值分解處理用戶評分矩陣,引入信任信息的隱式信息來緩解冷啟動問題,在推薦準確率和效率之間取得了平衡。文獻[9]是一種經(jīng)典的“擴展少即是好”協(xié)同過濾模型,該模型直接最大化平均Reciprocal Rank指標來訓(xùn)練預(yù)測模型。上述文獻利用不同的評估準則和學(xué)習(xí)方式實現(xiàn)了對用戶興趣的預(yù)測,但對于稀疏數(shù)據(jù)依然未達到理想的性能。
隨著深度學(xué)習(xí)技術(shù)的出現(xiàn),許多研究人員利用深度學(xué)習(xí)擬合能力強、表征能力強的優(yōu)點,結(jié)合某些判斷準則預(yù)測用戶的興趣。文獻[10]將變化相似性作為學(xué)習(xí)的目標,采用棧式降噪自編碼器作為深度學(xué)習(xí)模型,實現(xiàn)了單模型、單學(xué)習(xí)準則的協(xié)同過濾推薦系統(tǒng)。文獻[11]同時考慮了顯式反饋信息和隱式反饋信息,以單自編碼器學(xué)習(xí)用戶的顯式和隱式信息,實現(xiàn)了較好的推薦效果。根據(jù)文獻[10-11]的實驗結(jié)果和分析,深度學(xué)習(xí)技術(shù)能夠有效地提高協(xié)同過濾系統(tǒng)的預(yù)測準確率,但對于稀疏數(shù)據(jù)的推薦效果依然不理想。
本文采用自編碼器作為深度學(xué)習(xí)模型,以期提高協(xié)同過濾推薦系統(tǒng)的推薦效果。為了提高對稀疏數(shù)據(jù)的推薦效果,本文有兩個主要貢獻:改進了相似性評價指標,對Jaccard相似性做修改,提高稀疏數(shù)據(jù)的相似性評估準確率;提出了顯式反饋自編碼器和隱式反饋自編碼器,兩個自編碼器交互學(xué)習(xí)數(shù)據(jù)的顯式關(guān)系和隱式關(guān)系。基于4個不同規(guī)模的公開稀疏數(shù)據(jù)集分別進行實驗,結(jié)果驗證了本文算法的有效性。
目前主流推薦系統(tǒng)所采用的相似性度量方案主要存在以下4點不足之處:
① 設(shè)U1=(2,0,3,0)和U2=(5,2,0,2)是兩個用戶的評分向量。U1和U2間存在一個共同評分項,U1和U2皮爾森相關(guān)系數(shù)的分母為0,所以無法計算兩者的皮爾森相關(guān)系數(shù)。而U1和U2的余弦相似性為100%。
② 設(shè)U1=(2,1,3,2)和U2=(1,2,2,3)是兩個用戶的評分向量。U1和U2的皮爾森相關(guān)系數(shù)為0。
③ 設(shè)U1=(2,2,0,1)和U2=(4,4,0,2)是兩個用戶的評分向量。U1和U2的余弦相似性為1,如果兩個用戶的評分成倍數(shù)關(guān)系,兩者的余弦相似性一般很高。
④ 設(shè)U1=(5,5,4,3)和U2=(1,2,2,1)是兩個用戶的評分向量。Jaccard指數(shù)的總體相反相似性指數(shù)為1,但U1和U2的實際相似性極低。Jaccard僅關(guān)注于共同評分項目,忽略了許多相似性信息。
傳統(tǒng)的推薦系統(tǒng)通過共同評分的項目決定相似性,由此識別出最近鄰居。協(xié)同過濾系統(tǒng)的思想是利用最近鄰用戶的評分預(yù)測未評分項的評分,但在許多情況下協(xié)同過濾的思想并不適用,例如:某個高度相似的用戶僅僅對共同評分項進行了評分,此情況的相似用戶對預(yù)測評分的價值較小。
表1 目標用戶U1不同近鄰的非共同評分項數(shù)
表2 目標用戶U1關(guān)于不同近鄰的非共同評分項數(shù)
Jaccard相似性的另一個情況是如果共同評分項數(shù)增加,那么相似性的顯著度也成比例增加,即simJ(u,v)∝(|Iu∩Iv|)。
Jaccard相似性[12]度量樣本集間交集和并集的比例關(guān)系,評估有限樣本集間的相似性。設(shè)用戶u和v的評分分別為Iu和Iv,如圖1所示。
圖1 評分項Iu和Iv的關(guān)系示意圖
Jaccard通過兩個用戶間共同評分的數(shù)量來評估兩者的相似性:
(1)
式中:Iu和Iv分別為用戶u和v的評分項集。
因為Iu和Iv為非互斥關(guān)系,所以根據(jù)加法規(guī)則可得:|Iu∪Iv|=|Iu|+|Iv|-|Iu∩Iv|。
(2)
(3)
式(3)的分子、分母同除以|Iu∩Iv|,可獲得下式:
(4)
通過共同評分項度量相似性存在許多不足,本文提出了新的相似性模型,稱為相關(guān)Jaccard均方距離。首先定義了相關(guān)Jaccard相似性指標:
(5)
如果|Iu∩Iv|=0,那么simRJ(u,v)=0。
將相關(guān)Jaccard和均方距離矩陣相乘,獲得相關(guān)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的大多數(shù)入口為空值,所以設(shè)計了以下的稀疏損失函數(shù)來訓(xùn)練自編碼器:
(8)
式中:eu是u的指示向量,如果rui≠0,則eui=1;否則eui=0。將這一項和重建損失相乘,將后向傳播值清零,因此網(wǎng)絡(luò)忽略缺失的入口信息,僅考慮評分的分布。學(xué)習(xí)完網(wǎng)絡(luò)權(quán)重和偏差信息后,再次將稀疏評分向量ru輸入自編碼器,重建一個包含所有項目預(yù)測評分的密集向量。top-N推薦系統(tǒng)為目標用戶提供N個最優(yōu)的項目。
圖2所示是基于自編碼器的協(xié)同過濾框架,本框架包括兩個自編碼器:(1) 用戶排序深度神經(jīng)網(wǎng)絡(luò),簡稱為UNet;(2) 興趣學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò),簡稱為INet。UNet將成對正則引入自編碼器,以最小化評分預(yù)測誤差為網(wǎng)絡(luò)的目標。成對損失函數(shù)需要采樣負項,設(shè)負項為j,采樣的概率分布為p(j|u)。INet為負項提供一個非均勻且用戶相關(guān)的采樣概率分布,INet通過學(xué)習(xí)用戶的隱式反饋判斷用戶對于未評分項是否無興趣,然后利用輸出值計算采樣概率。
圖2 基于自編碼器的協(xié)同過濾框架
UNet的目標是通過顯式反饋數(shù)據(jù)分析用戶對于項目的偏好,通過優(yōu)化原目標函數(shù)來訓(xùn)練UNet,優(yōu)化目標是最小化重建誤差和正則成對排列損失。用戶正項和負項的定義是一個關(guān)鍵問題,主要有兩種方式:(1) 從用戶u評分的項集中選擇項i,從未評分的項集中選擇項j;(2) 從用戶u評分的項集中任意選擇一對項i和項j,且rui>ruj。考慮以下3個原因:
① 第1種方式考慮了用戶的評分項和未評分項,而第2種方式僅考慮了用戶的評分項,在稀疏數(shù)據(jù)中評分項的比例一般較小。
② 未評分的項目有兩種情況:用戶不知道該項目,但是偏好該項目;用戶知道該項目,但是無興趣。前者的未評分項對于模型訓(xùn)練具有意義。
③ 第1種方式的模型從評分項和未評分項均可以獲得反饋信息,本文通過開發(fā)未評分的項提高UNet的訓(xùn)練效果。綜合考慮上述3點理由,選擇第1種方式。最終UNet的目標函數(shù)定義為:
(9)
式中:第1項為重建損失,第2項為成對排列損失,α和β是平衡成對正則項和L2正則項的權(quán)重參數(shù)。采用對數(shù)似然函數(shù)建模成對排列損失,將成對排列損失作為被減項,將目標函數(shù)建模為最小化問題。
式(9)的Pu表示u的一對項目,設(shè)u的正項集合為Iu+,負項集合為Iu-。Iu+由rui≥3的評分項組成,剩下的項放入Iu-,u未評分的所有項也放入Iu-。從Iu-采樣項j,采樣的概率分布為p(j|u),Iu+內(nèi)的每個項i組成一對項目(i,j)。設(shè)計了INet深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)用戶的隱式反饋信息來采樣負項,提高總體的準確率。
如果用戶u對項i的評分缺失,其原因可能有兩點:①u可能偏好i,但不知道i的存在,所以u未評分i。②u已知i,但對i無興趣,所以u未評分i。為了提高top-N推薦的準確率,第2個原因的負項優(yōu)于第1個,但難點在于判斷用戶對于未評分項目的興趣。通過隱式反饋信息可觀察用戶對于未評分項目的興趣,根據(jù)所有未評分項的興趣得分計算負項的采樣概率分布,興趣得分越低,UNet中無評分的項被選為負項的可能性越大。
通過最小化以下的損失函數(shù)訓(xùn)練INet:
(10)
(11)
最終將u無興趣的項采樣為負項。
采用SGD和后向傳播訓(xùn)練UNet和INet。首先最小化式(10)隱式反饋來訓(xùn)練INet,然后最小化式(9)顯式反饋和INet訓(xùn)練UNet。給定評分矩陣R,最小批大小為B,負采樣率為SPR,學(xué)習(xí)率為μ,ΘIL為訓(xùn)練模型參數(shù),訓(xùn)練UNet的總體程序如算法1所示。
算法1UNet的訓(xùn)練算法
輸入:評分矩陣R,ΘPR,預(yù)訓(xùn)練ΘIL,參數(shù)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) 實驗數(shù)據(jù)集。實驗數(shù)據(jù)集為4個真實的數(shù)據(jù)集:Ciao[16]、Watcha(watcha.net)、Movielens 100K[17]和Movielens 1M數(shù)據(jù)集[17]。表3所示是實驗數(shù)據(jù)集的基本信息。
表3 實驗數(shù)據(jù)集的基本信息
每個數(shù)據(jù)集的評分數(shù)據(jù)隨機分為兩個子集:80%的評分數(shù)據(jù)作為訓(xùn)練集,其他的20%作為測試集。
(2) 性能評價指標。設(shè)用戶為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個項的相關(guān)評分。
RRuN的計算方法為:
(15)
式中:rank1th為Nu中第1個正確項的位置。
實驗中為測試集的每個用戶提供top-N的推薦列表,然后計算所有用戶4個指標的平均值,分別記為PN、RN、GN、MN。實驗中選擇兩個N值:5和20。
(3) 神經(jīng)網(wǎng)絡(luò)的具體實現(xiàn)。首先通過實驗確定模型的超參數(shù),UNet和INet隱層節(jié)點的激活函數(shù)為sigmoid函數(shù),輸出節(jié)點的激活函數(shù)為恒等函數(shù),采用文獻[18]的方法初始化神經(jīng)網(wǎng)絡(luò)的權(quán)重,mini-batch大小設(shè)為128,學(xué)習(xí)率為0.001,L2泛化系數(shù)β設(shè)為0.001。
觀察實驗結(jié)果發(fā)現(xiàn)4個數(shù)據(jù)集的UNet和INet的最優(yōu)模型不同,所以通過網(wǎng)格搜索微調(diào)神經(jīng)網(wǎng)絡(luò)的超參數(shù),微調(diào)實驗從訓(xùn)練集隨機采樣20%的樣本作為驗證集。定義超參數(shù)hPR表示隱層節(jié)點對于前一層節(jié)點數(shù)量的百分比,0 本文對協(xié)同過濾推薦系統(tǒng)提出兩點改進:(1) 設(shè)計了相關(guān)Jaccard指標,以期改善對稀疏數(shù)據(jù)集的處理效果;(2) 利用隱式反饋和顯式反饋訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),以期提高神經(jīng)網(wǎng)絡(luò)的預(yù)測準確率。為了詳細測試這兩個改進點的效果,對UNet和INet兩種神經(jīng)網(wǎng)絡(luò)采用不同的機制組合分別進行了訓(xùn)練,實驗結(jié)果總結(jié)如圖3所示。 (a) Ciao數(shù)據(jù)集 (b) Watcha數(shù)據(jù)集 (c) Movielens 100K數(shù)據(jù)集 (d) Movielens 1M數(shù)據(jù)集 分析圖3的結(jié)果,可總結(jié)出以下結(jié)論:(1) 改進Jaccard相似性的總體性能一致優(yōu)于普通Jaccard相似性,表明本文對Jaccard相似性進行了有效的改進,通過對所有樣本的相似性評估提高了相似性度量的顯著性。改進的Jaccard相似性也有效地緩解了稀疏數(shù)據(jù)集的相似性問題,有助于提高自編碼器預(yù)測用戶偏好的準確率。(2) 顯式反饋的效果優(yōu)于隱式反饋,而同時使用顯式反饋和隱式反饋的效果最佳。因為顯式反饋和隱式反饋從不同的角度反映了用戶的興趣,隱式反饋反映了用戶對于項目的興趣,顯式反饋則反映了偏好該項目的用戶數(shù)量,所以這兩種反饋之間具有互補性。 實驗研究了以下3個超參數(shù)對模型的影響:(1) 自編碼器的隱層數(shù)量。(2) 隱層節(jié)點的hU參數(shù)。(3) 排列系數(shù)α。以不同的參數(shù)組合訓(xùn)練自編碼器,以推薦的準確率為評價指標。首先,評估神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)相關(guān)的超參數(shù)即hPR和L的效果,結(jié)果如圖4所示。 (b) Watcha數(shù)據(jù)集 (c) Movielens 100K數(shù)據(jù)集 (d) Movielens 1M數(shù)據(jù)集 由圖4可知:(1) 不同數(shù)據(jù)集的最優(yōu)hU值不同,因為Ciao數(shù)據(jù)集較小且較為稀疏,所以少量的隱層節(jié)點即可提取訓(xùn)練數(shù)據(jù)集的最近特征,因此Ciao數(shù)據(jù)集自編碼器無需大量的隱層節(jié)點來實現(xiàn)高準確率。而其他3個數(shù)據(jù)集需要大量的隱層節(jié)點才能實現(xiàn)較高的準確率。(2) 圖2中隱層數(shù)量對于推薦準確率存在影響,單層自編碼器結(jié)構(gòu)難以提取用戶-項目間復(fù)雜的非線性信息,所以準確率較低。而多層的網(wǎng)絡(luò)結(jié)構(gòu)包括較多的模型參數(shù),容易引起過擬合問題,所以準確率也較低。 圖5所示是超參數(shù)α對實驗結(jié)果的影響,圖中x軸為變化的α值,y軸為top-N推薦的準確率。圖4的結(jié)果顯示,通過最小化MSE和正則成對排名損失兩個指標訓(xùn)練本文的自編碼器,有助于提高自編碼器對于用戶興趣的預(yù)測準確率。 圖5 超參數(shù)α的微調(diào)實驗 根據(jù)上述超參數(shù)微調(diào)實驗的結(jié)果,將每個數(shù)據(jù)集的超參數(shù)設(shè)為性能最優(yōu)的參數(shù)組合。選擇其他的top-N推薦算法與本文比較,包括:itemModel[6]、itemRNN[7]、SVD[8]、xCLiMF[9]、SDAutoRec[10]、DHAutoRec[11]。其中:SVD和xCLiMF是兩個經(jīng)典的top-N推薦系統(tǒng),SVD是經(jīng)典的奇異值分解模型,xCLiMF為擴展的少即是好協(xié)同過濾模型; itemModel和itemRNN是兩個針對項目顯式信息的推薦系統(tǒng),這兩個系統(tǒng)的推薦效率較高;SDAutoRec和DHAutoRec是兩個基于深度神經(jīng)網(wǎng)絡(luò)的推薦系統(tǒng),均為單網(wǎng)絡(luò)的結(jié)構(gòu)。 7個推薦系統(tǒng)的性能結(jié)果如圖6所示。由圖6可知:(1) 本系統(tǒng)對于4個數(shù)據(jù)集均實現(xiàn)了最優(yōu)的推薦準確率,總體而言,本文算法比次優(yōu)系統(tǒng)的推薦準確率提高約40%。(2) 本系統(tǒng)的top-5推薦效果優(yōu)于top-20,如果對于僅需要為用戶提供少量推薦列表的場景下,本系統(tǒng)具有比較突出的優(yōu)勢。 (a) Ciao數(shù)據(jù)集 (b) Watcha數(shù)據(jù)集 (c) Movielens 100K數(shù)據(jù)集 (d) Movielens 1M數(shù)據(jù)集 最終統(tǒng)計了7個推薦系統(tǒng)的平均訓(xùn)練時間和推薦響應(yīng)時間。表4所示是7個算法的平均訓(xùn)練時間,itemModel和itemRNN均為基于項目的推薦系統(tǒng),模型的訓(xùn)練時間較小,SDAutoRec和DHAutoRec則是單網(wǎng)絡(luò)模型的推薦系統(tǒng),其訓(xùn)練速度也明顯快于本系統(tǒng)??傮w而言,本文系統(tǒng)設(shè)計了兩個自編碼器的深度神經(jīng)網(wǎng)絡(luò),改進的Jaccard相似性需要計算全部項目的相關(guān)相似性值,因此訓(xùn)練時間較長。 表4 實驗數(shù)據(jù)集的訓(xùn)練時間 s 圖7所示是7個算法的平均推薦響應(yīng)時間,SVD和xCLiMF的推薦響應(yīng)時間較長,并且影響了其應(yīng)用價值。本文算法的響應(yīng)時間略高于itemModel、itemRNN、SDAutoRec及DHAutoRec四個算法,但平均響應(yīng)時間低于0.5秒,滿足實時性的需求。 圖7 推薦系統(tǒng)的平均響應(yīng)時間 為了提高協(xié)同過濾推薦系統(tǒng)對于稀疏數(shù)據(jù)的推薦效果,本文提出了一種基于深度神經(jīng)網(wǎng)絡(luò)和改進相似性度量的推薦算法。主要提出兩個改進點,改進了相似性評價指標,對Jaccard相似性進行了改進,提高稀疏數(shù)據(jù)的相似性評估準確率。提出了顯式反饋自編碼器和隱式反饋自編碼器,兩個自編碼器交互學(xué)習(xí)數(shù)據(jù)的顯式關(guān)系和隱式關(guān)系。因為顯式反饋和隱式反饋從不同的角度反映了用戶的興趣,隱式反饋反映了用戶對于項目的興趣,顯式反饋則反映了偏好該項目的用戶數(shù)量,所以這兩種反饋之間具有互補性。 本文采用了兩個深度學(xué)習(xí)網(wǎng)絡(luò),并且改進Jaccard相似性需要計算全部數(shù)據(jù)集的相似性,導(dǎo)致模型訓(xùn)練的時間較長。因此本系統(tǒng)僅僅適用于穩(wěn)定數(shù)據(jù)流的推薦問題,過長的訓(xùn)練時間無法滿足實時訓(xùn)練的要求。未來將關(guān)注于引入分布式計算和云計算技術(shù),加快深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時間。5.2 實驗分析
5.3 超參數(shù)的設(shè)置
5.4 對比實驗分析
5.5 算法的時間效率
6 結(jié) 語