魏紫鈺,朱小棟,徐 怡
上海理工大學(xué) 管理學(xué)院,上海 200093
在大數(shù)據(jù)時(shí)代,信息種類越來(lái)越多,體量越來(lái)越大,并且用戶在新聞閱讀、電子商務(wù)、視頻娛樂(lè)等平臺(tái)偏好于從平臺(tái)推薦來(lái)獲取信息[1]。如果能將這些信息精準(zhǔn)地推薦給用戶,那么就會(huì)有巨大的商業(yè)價(jià)值,因此推薦算法已經(jīng)越來(lái)越成為學(xué)者研究的方向。
推薦算法模型主要分為基于內(nèi)容的推薦、基于協(xié)同過(guò)濾的推薦,以及其他推薦算法[2],其中應(yīng)用范圍最廣的是協(xié)同過(guò)濾推薦算法[3],基本思想是利用所有用戶的協(xié)作行為來(lái)預(yù)測(cè)目標(biāo)用戶的行為[4]。協(xié)同過(guò)濾算法中的核心主要是基于矩陣分解(MF)的推薦算法,矩陣分解技術(shù)根據(jù)用戶和項(xiàng)目的特征構(gòu)建了一個(gè)評(píng)分矩陣,通過(guò)內(nèi)積的方式去重構(gòu)矩陣。但是僅僅依靠用戶和項(xiàng)目的基本特征是無(wú)法挖掘出更深層次的關(guān)聯(lián)性,因而無(wú)法更加準(zhǔn)確地作出推薦[5]。
基于協(xié)同過(guò)濾的推薦算法還存在一些問(wèn)題。當(dāng)需要推薦新的用戶或者新的項(xiàng)目時(shí),沒(méi)有相關(guān)的歷史數(shù)據(jù),無(wú)法針對(duì)其進(jìn)行推薦,遇到冷啟動(dòng)問(wèn)題。并且,不是所有的用戶和項(xiàng)目都有交互數(shù)據(jù),導(dǎo)致評(píng)分?jǐn)?shù)據(jù)稀疏,遇到數(shù)據(jù)稀疏性問(wèn)題[6-7]。同時(shí),如何能夠提取用戶和物品中的特征,也是需要考慮的問(wèn)題。
對(duì)于冷啟動(dòng)問(wèn)題,Dureddy等人[8]創(chuàng)新提出了一種利用冷啟動(dòng)用戶來(lái)生成用戶嵌入的方法,主要是通過(guò)讓冷啟動(dòng)用戶回答幾個(gè)問(wèn)題,再將問(wèn)題和答案?jìng)鬟f到推薦模型中,在一定程度上能解決冷啟動(dòng)問(wèn)題。對(duì)于數(shù)據(jù)稀疏性問(wèn)題,Wang等人[9]提出了名為協(xié)作深度學(xué)習(xí)的分層貝葉斯模型,通過(guò)結(jié)合內(nèi)容信息深度表示和評(píng)分矩陣的協(xié)同過(guò)濾方法,能夠有效地緩解輔助信息的稀疏問(wèn)題。Lei等人[10]提出了DeepCoNN模型,該模型通過(guò)兩個(gè)并列的神經(jīng)網(wǎng)絡(luò),分別學(xué)習(xí)用戶和項(xiàng)目的特征信息,最后通過(guò)一個(gè)共享層將兩個(gè)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的結(jié)果融合起來(lái),最后得到預(yù)測(cè)評(píng)級(jí)。在對(duì)于特征提取方面,李同歡等人[11]提出的多交互混合推薦模型,將輸入信息通過(guò)多層交互的非線性深度學(xué)習(xí)網(wǎng)絡(luò)融合了多種輔助信息,從而能獲得不同層次的特征表示結(jié)果,在一定程度上緩解了數(shù)據(jù)稀疏性的問(wèn)題。劉振鵬等人[12]將用戶和項(xiàng)目的隱藏特征學(xué)習(xí)出來(lái),再結(jié)合用戶的評(píng)分提出了一種新的混合推薦模型。馮楚瀅等人[13]提出了一種協(xié)同深度學(xué)習(xí)算法,利用深度學(xué)習(xí)訓(xùn)練大量數(shù)據(jù),融入?yún)f(xié)同過(guò)濾進(jìn)行推薦。陳彬等人[14]提出一種基于深度神經(jīng)網(wǎng)絡(luò)和深度交叉網(wǎng)絡(luò)以及因子分解劑的混合推薦模型,充分挖掘?qū)傩蕴卣鏖g的隱性關(guān)聯(lián)關(guān)系。Alfarhood等人[15]提出DeepHCF是目前理論和實(shí)驗(yàn)效果都比較出色的融合模型。該模型使用深層神經(jīng)網(wǎng)絡(luò)挖掘用戶和項(xiàng)目的隱表示,將用戶和項(xiàng)目隱表示輸入因子分解機(jī)預(yù)測(cè)評(píng)分。
周傳華等人[16]在DeepHCF的基礎(chǔ)上進(jìn)行了改進(jìn),針對(duì)個(gè)性化推薦中用戶評(píng)分矩陣數(shù)據(jù)集稀疏的問(wèn)題,充分利用用戶和項(xiàng)目描述信息,提出了DeepRec算法。這些研究都能夠一定程度上解決冷啟動(dòng)問(wèn)題,同時(shí)有效緩解了數(shù)據(jù)稀疏性。但時(shí)間因素也會(huì)對(duì)于推薦結(jié)果產(chǎn)生重要影響。
針對(duì)時(shí)間因素,Wu等人[17]提出用一個(gè)深度循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)追蹤用戶如何瀏覽網(wǎng)頁(yè),通過(guò)構(gòu)建隱藏層模擬用戶訪問(wèn)的網(wǎng)頁(yè)組合和順序,同時(shí)利用GRU更好地提升了效果。Wu等人[18]提出一種基于LSTM(long shortterm memory)的循環(huán)推薦網(wǎng)絡(luò)(RRN)以適應(yīng)用戶和項(xiàng)目隨時(shí)間的動(dòng)態(tài)性。Sun等人[19]提出一種基于注意力的循環(huán)網(wǎng)絡(luò)社交推薦方法(ARSE),通過(guò)融合用戶之間的社交影響來(lái)模擬用戶隨時(shí)間變化的偏好。同時(shí),卷積神經(jīng)網(wǎng)絡(luò)對(duì)于推薦系統(tǒng)的性能提高也是一個(gè)有利的工具。蔡念等人[20]提出一種改進(jìn)矩陣分解與跨通道卷積神經(jīng)網(wǎng)絡(luò)結(jié)合的推薦模型,將用戶對(duì)項(xiàng)目的評(píng)價(jià)文本信息特征提取,提高預(yù)測(cè)模型的準(zhǔn)確度。
綜上所述,如果能充分利用用戶在時(shí)間維度上的信息來(lái)挖掘用戶的隱藏偏好,這樣就能夠提高推薦的準(zhǔn)確度。因此,本文的主要貢獻(xiàn)是:首先模型使用二進(jìn)制的表示法表示用戶與項(xiàng)目的ID編號(hào),有效地緩解了one-hot編碼帶來(lái)的數(shù)據(jù)稀疏性問(wèn)題。其次提出了兩種結(jié)合時(shí)間特征的協(xié)同過(guò)濾深度推薦算法,提取出了用戶和項(xiàng)目特征之間的隱藏特征,結(jié)合時(shí)間戳信息,通過(guò)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)和推薦。其中,C-DRAWT算法利用卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn),能夠有效提取用戶近期的偏好;M-DRAWT算法利用多層感知機(jī)的特點(diǎn),能夠挖掘用戶的歷史偏好,以提高推薦的效率與準(zhǔn)確度。在MovieLens數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,本文提出的C-DRAWT和M-DRAWT算法有優(yōu)于前人模型的效果。
本文提出的基于卷積神經(jīng)網(wǎng)絡(luò)的隱藏特征時(shí)間異構(gòu)推薦算法主要思路流程如圖1所示,通過(guò)對(duì)原User和Item的數(shù)據(jù)進(jìn)行處理,將數(shù)據(jù)全部數(shù)值化。
圖1 隱藏特征提取算法結(jié)構(gòu)Fig.1 Structure of hidden feature extraction
定義1對(duì)于User方面,用戶集的定義為:
定義2則對(duì)于所有User的用戶集表示為:
定義3對(duì)于Item方面,用戶集的定義為:
定義4則對(duì)于所有Item的用戶集表示為:
將Uinf與Iinf分別輸入至兩個(gè)嵌入層中,將其各自設(shè)置確定的維度,得到對(duì)應(yīng)維度的特征表示。并將兩方數(shù)據(jù)分別放入兩個(gè)全連接層,得到更深層次的特征表示,同時(shí)也為了更新維度。全連接層表示為:
另外在Item一側(cè),因?yàn)槲谋拘畔⑼嗟碾[藏特征,因此將包含文本的原始數(shù)據(jù)單獨(dú)放入圖2所示的TextCNN模型中,得到從文本中提取的特征信息后,再與其他Item特征從全連接層得到的特征表示融合在一起,進(jìn)一步放入一個(gè)新的全連接層,得到最終提取到的Item隱藏特征。
圖2 TextCNN結(jié)構(gòu)Fig.2 Structure of TextCNN
同時(shí)為了統(tǒng)一維度,用戶數(shù)據(jù)也一同放入200維的全連接層,得到最終提取的基于User的隱藏特征User Feature與基于Item的隱藏特征Item Feature。中間層得到需要的隱藏特征之后,需要進(jìn)行輸出訓(xùn)練優(yōu)化以得到最好的結(jié)果。所以將User Feature與Movie Feature一同放入全連接層以輸出預(yù)測(cè)的用戶對(duì)電影的評(píng)分,與實(shí)際第三個(gè)數(shù)據(jù)集中真實(shí)的評(píng)分相擬合,利用MSE以降低誤差進(jìn)行訓(xùn)練優(yōu)化,以得到最優(yōu)的User Feature與Item Feature/Movie Feature。
當(dāng)?shù)玫接脩籼卣髋c項(xiàng)目特征,接下來(lái)根據(jù)時(shí)間戳來(lái)構(gòu)建想要的數(shù)據(jù)。時(shí)間戳的結(jié)構(gòu)為,用戶第t(t∈[1,3])時(shí)刻選擇過(guò)的項(xiàng)目的ID和特征,以及用戶對(duì)于該項(xiàng)目的評(píng)分。本文采用二進(jìn)制編碼的形式,對(duì)UserID和ItemID進(jìn)行編碼,就會(huì)極其有效地降低了one-hot編碼導(dǎo)致的內(nèi)存的消耗與數(shù)據(jù)稀疏問(wèn)題。
數(shù)據(jù)按照時(shí)間戳的順序進(jìn)行排列,完整整合之后是864維的數(shù)據(jù)格式,并且與之相對(duì)的y值是在第四時(shí)刻用戶購(gòu)買(mǎi)或者想看的項(xiàng)目ID,同樣也是利用二進(jìn)制表示方法,結(jié)構(gòu)如圖3所示。
圖3 時(shí)間戳特征拼接Fig.3 Timestamp concat
本文提出的第一個(gè)模型是基于卷積神經(jīng)網(wǎng)絡(luò)而設(shè)計(jì)的協(xié)同過(guò)濾深度推薦模型C-DRAWT。
本文所設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。輸入的數(shù)據(jù)是隱藏特征提取部分提取出來(lái)的隱藏特征向量。首先是第一層一維卷積形成特征圖mi,卷積核大小設(shè)置為600×1,以便融合后續(xù)第二時(shí)刻和第三時(shí)刻的Item信息,公式如下。其中,F(xiàn)表示卷積核,*表示卷積運(yùn)算,bi表示偏置項(xiàng),f()·表示一個(gè)非線性激活函數(shù),本模型中使用Relu函數(shù)。
圖4 C-DRAWT中的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Structure of CNN in C-DRAWT
接下來(lái)連接池化層,本文采用的池化方法為最大池化法(Max-pooling),目的是通過(guò)消除非極大值來(lái)降低需要運(yùn)算的參數(shù)量,從而降低運(yùn)算復(fù)雜度,在一定程度上也控制了過(guò)擬合。其中,池化窗口大小設(shè)置為3。其中,p表示池化結(jié)果,max(·)表示最大池化操作。
隨后再連接兩個(gè)卷積層,其中兩個(gè)卷積核的大小分別為60×1和10×1。隨后連接一個(gè)池化層,同樣為最大池化,池化窗口大小為3,池化結(jié)果連接了一個(gè)Flatten層和一個(gè)Dropout層,以平坦數(shù)據(jù)維度和增加泛化能力。
最后,輸出層輸出維度為12的結(jié)果,也就是本文所要預(yù)測(cè)的時(shí)間戳t=4時(shí)的項(xiàng)目ID,即下一時(shí)刻用戶最想看到的項(xiàng)目。
本文提出的第二個(gè)模型是結(jié)合MLP所提出的基于MLP的時(shí)間異質(zhì)深度推薦模型M-DRAWT(MLP-deep recommend model with time),此模型所利用的多層感知機(jī)結(jié)構(gòu)如圖5所示。
本文采用的多層感知機(jī)是包括輸出層在內(nèi)的一共5層的網(wǎng)絡(luò)結(jié)構(gòu),將特征集合D輸入到4層MLP中,輸出維度為12維,也就是本文要的第四時(shí)刻項(xiàng)目的ID,即下一時(shí)刻用戶最想觀看或購(gòu)買(mǎi)的項(xiàng)目的是哪一個(gè),并且在每一層全連接層中間都會(huì)有Dropout層進(jìn)行神經(jīng)元的丟棄,丟棄概率都設(shè)置為0.5,以減少模型參數(shù),增加模型的泛化能力,避免過(guò)擬合,完整的M-DRAWT結(jié)構(gòu)如圖5所示。
圖5 M-DRAWT中的多層感知機(jī)結(jié)構(gòu)Fig.5 Structure of MLP in M-DRAWT
其中,x0為第一層輸出值,xj為后三層輸出值,W1和Wj表示權(quán)重,f(·)表示激活函數(shù),b"1表示偏置向量。
本次實(shí)驗(yàn)用到的是MovieLens-1M的數(shù)據(jù)集,是在經(jīng)過(guò)預(yù)處理后,將其劃分為互不相交的訓(xùn)練集和測(cè)試集,其中訓(xùn)練集占80%,測(cè)試集占20%。數(shù)據(jù)集的信息如表1所示。
表1 實(shí)驗(yàn)數(shù)據(jù)集信息表Table 1 Dataset of expriments
本文運(yùn)用均方根誤差(RMSE)作為損失函數(shù),精確度(Precision)、召回率(Recall)和F1-Score值來(lái)評(píng)價(jià)指標(biāo)來(lái)檢驗(yàn)?zāi)P托Ч?/p>
均方根誤差(RMSE)作為損失函數(shù)能反映出預(yù)測(cè)值與真實(shí)值之間的偏差,偏差值越小說(shuō)明預(yù)測(cè)效果越好,公式如下所示:
精確度(Precision)也稱查準(zhǔn)率,指的是分類器預(yù)測(cè)為正類的部分?jǐn)?shù)據(jù)在實(shí)際數(shù)據(jù)的比例。精確度越高,分類器假正類錯(cuò)誤率越低,公式如下所示:
召回率(Recall)也稱查全率,指的是被分類器正確預(yù)測(cè)的正樣本的比例。具有高召回率的分類器很少將正樣本分為負(fù)樣本,公式如下所示:
F1-Scoure值可以同時(shí)最大化精確率與召回率,使得精確度與召回率共存,是精確率和召回率的調(diào)和平均數(shù),公式如下所示:
本文通過(guò)與以下幾種先進(jìn)的模型進(jìn)行對(duì)比實(shí)驗(yàn),來(lái)驗(yàn)證本文所提模型的推薦性能。
(1)PMF[21]:概率矩陣分解模型,通過(guò)用戶和項(xiàng)目的評(píng)分交互矩陣進(jìn)行協(xié)同過(guò)濾推薦。
(2)DeepCoNN[11]:使用推薦評(píng)論對(duì)用戶和項(xiàng)目進(jìn)行聯(lián)合深度建模模型,通過(guò)卷積神經(jīng)網(wǎng)絡(luò)將用戶評(píng)論集和項(xiàng)目評(píng)論集結(jié)合起來(lái)對(duì)用戶和項(xiàng)目進(jìn)行建模
(2)ConvMF[22]:卷積矩陣分解模型,將卷積神經(jīng)網(wǎng)絡(luò)與矩陣分解模型進(jìn)行推薦。
(3)DeepHCF[15]:結(jié)合CNN和MLP分別從評(píng)分和項(xiàng)目評(píng)論中挖掘用戶和項(xiàng)目的潛在特征,并使用因子分解方法預(yù)測(cè)評(píng)分。
(4)DeepRec[16]:融合評(píng)分矩陣和評(píng)論文本的深度神經(jīng)網(wǎng)絡(luò)推薦模型,它是一種由多層感知機(jī)和卷積神經(jīng)網(wǎng)絡(luò)組成的推薦方法,該模型將兩種不同的數(shù)據(jù)類型作為輸入。
2.4.1 模型性能分析
實(shí)驗(yàn)的F1-Score值結(jié)果和RMSE實(shí)驗(yàn)結(jié)果如圖6和圖7所示。
圖6 F1-Score值對(duì)比圖Fig.6 Comparison of F1-Score values
圖7 RMSE損失函數(shù)對(duì)比圖Fig.7 Comparison of RMSE loss function
F1-Score值隨著訓(xùn)練epoch數(shù)的增加而趨于穩(wěn)定,效果最好的是C-DRAWT,其次是M-DRAWT。二者的結(jié)果均優(yōu)于DeepCoNN、ConvMF和DeepHCF。RMSE損失函數(shù)值隨著epoch數(shù)的增加而下降并收斂,效果最好的仍是C-DRAWT和M-DRAWT,并且優(yōu)于DeepCoNN、ConvMF和DeepHCF。模型的綜合對(duì)比結(jié)果如表2所示。
表2 對(duì)比實(shí)驗(yàn)結(jié)果Table 2 Comparison of experimental results
從表2中可知,C-DRAWT和M-DRAWT在F1-Score值和RMSE上都有所提高。相比較于DeepCoNN,M-DRAWT的F1-Score提升了1.11%,RMSE提升了4.1%,C-DRAWT的F1-Score提升了1.43%,RMSE提升了4.6%;相比較于ConvMF,M-DRAWT的F1-Score提升了0.46%,RMSE提升了2.85%,C-DRAWT的F1-Score提升了0.78%,RMSE提升了3.36%;相比較于DeepHCF,M-DRAWT的F1-Score提升了0.3%,RMSE提升了0.37%,C-DRAWT的F1-Score提升了0.65%,RMSE提升了0.9%。綜合上述結(jié)果可以看出,綜合了時(shí)間信息的C-DRAWT和M-DRAWT在各個(gè)評(píng)價(jià)指標(biāo)上優(yōu)于其他對(duì)比算法,有著較好的推薦性能。
圖8為模型運(yùn)行時(shí)間的對(duì)比??梢钥闯觯诰仃嚪纸獾哪P驮谟?xùn)練大量的矩陣數(shù)據(jù)中需要消耗大量的時(shí)間,而本文所設(shè)計(jì)的基于神經(jīng)網(wǎng)絡(luò)的模型采用one-hot編碼降低了數(shù)據(jù)稀疏性,并且本文采用的CNN模型中的池化操作降低了數(shù)據(jù)維度,從而降低了復(fù)雜度。
圖8 模型運(yùn)行時(shí)間對(duì)比Fig.8 Comparison of model running time
2.4.2 編碼分析
為了能夠更好地表示擁護(hù)和項(xiàng)目的信息,緩解數(shù)據(jù)稀疏性問(wèn)題,本文采用了二進(jìn)制編碼來(lái)代替one-hot編碼。為了驗(yàn)證二進(jìn)制編碼的優(yōu)異性,本文通過(guò)同一個(gè)模型采用兩種編碼方法,選取MovieLens-10M數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn)。同時(shí)還對(duì)比了模型在訓(xùn)練集不同比例下的結(jié)果,如圖9和圖10所示。結(jié)果表明,二進(jìn)制編碼的方法更能表示用戶和項(xiàng)目的大量隱信息,并且當(dāng)訓(xùn)練集比例越高模型效果也好,這表明模型是用了更多的輔助信息進(jìn)行訓(xùn)練后能產(chǎn)生更高的預(yù)測(cè)效果。
圖9 基于C-DRAWT的one-hot編碼與二進(jìn)制編碼對(duì)比分析Fig.9 Comparison of one-hot encoding and binary encoding based on C-DRAWT
圖10 基于M-DRAWT的one-hot編碼與二進(jìn)制編碼對(duì)比分析Fig.10 Comparison of one-hot encoding and binary encoding based on M-DRAWT
2.4.3 Dropout比率分析
在C-DRAWT和M-DRAWT模型中,均加入了Dropout技術(shù),這是因?yàn)镈ropout技術(shù)可以有效地防止模型過(guò)擬合,得到更好的泛化性。兩個(gè)模型中具體的Dropout比率都設(shè)置為了0.5,這樣設(shè)置是因?yàn)榻?jīng)過(guò)實(shí)驗(yàn)表明,當(dāng)Dropout=0.5時(shí),其RMSE最小即模型表現(xiàn)最好,結(jié)果如圖11所示。
圖11 Dropout比率對(duì)模型效果的影響Fig.11 Impact of dropout ratio on model performance
本文提出了基于卷積神經(jīng)網(wǎng)絡(luò)的結(jié)合時(shí)間特征的協(xié)同過(guò)濾深度推薦算法(C-DRAWT)與基于多層感知機(jī)的結(jié)合時(shí)間特征的協(xié)同過(guò)濾深度推薦算法(M-DRAWT),主要貢獻(xiàn)是將推薦任務(wù)轉(zhuǎn)化為用戶下一時(shí)刻最希望看到的項(xiàng)目,在特征提取前用二進(jìn)制表示法取代one-hot編碼,極大地減少了數(shù)據(jù)維度。隨后對(duì)提取出的用戶和項(xiàng)目隱藏特征加入時(shí)間戳信息,再利用改進(jìn)后的卷積神經(jīng)網(wǎng)絡(luò)和多層感知機(jī)進(jìn)行預(yù)測(cè)推薦,C-DRAWT和M-DRAWT更能夠?qū)崟r(shí)了解用戶的興趣點(diǎn),有效地解決了數(shù)據(jù)稀疏性,緩解了冷啟動(dòng)問(wèn)題。進(jìn)一步的工作會(huì)繼續(xù)優(yōu)化算法,減少計(jì)算資源的消耗,提升計(jì)算速度和效果。