魏紫鈺,朱小棟,徐 怡
上海理工大學 管理學院,上海 200093
在大數據時代,信息種類越來越多,體量越來越大,并且用戶在新聞閱讀、電子商務、視頻娛樂等平臺偏好于從平臺推薦來獲取信息[1]。如果能將這些信息精準地推薦給用戶,那么就會有巨大的商業價值,因此推薦算法已經越來越成為學者研究的方向。
推薦算法模型主要分為基于內容的推薦、基于協同過濾的推薦,以及其他推薦算法[2],其中應用范圍最廣的是協同過濾推薦算法[3],基本思想是利用所有用戶的協作行為來預測目標用戶的行為[4]。協同過濾算法中的核心主要是基于矩陣分解(MF)的推薦算法,矩陣分解技術根據用戶和項目的特征構建了一個評分矩陣,通過內積的方式去重構矩陣。但是僅僅依靠用戶和項目的基本特征是無法挖掘出更深層次的關聯性,因而無法更加準確地作出推薦[5]。
基于協同過濾的推薦算法還存在一些問題。當需要推薦新的用戶或者新的項目時,沒有相關的歷史數據,無法針對其進行推薦,遇到冷啟動問題。并且,不是所有的用戶和項目都有交互數據,導致評分數據稀疏,遇到數據稀疏性問題[6-7]。同時,如何能夠提取用戶和物品中的特征,也是需要考慮的問題。
對于冷啟動問題,Dureddy等人[8]創新提出了一種利用冷啟動用戶來生成用戶嵌入的方法,主要是通過讓冷啟動用戶回答幾個問題,再將問題和答案傳遞到推薦模型中,在一定程度上能解決冷啟動問題。對于數據稀疏性問題,Wang等人[9]提出了名為協作深度學習的分層貝葉斯模型,通過結合內容信息深度表示和評分矩陣的協同過濾方法,能夠有效地緩解輔助信息的稀疏問題。Lei等人[10]提出了DeepCoNN模型,該模型通過兩個并列的神經網絡,分別學習用戶和項目的特征信息,最后通過一個共享層將兩個神經網絡學習的結果融合起來,最后得到預測評級。在對于特征提取方面,李同歡等人[11]提出的多交互混合推薦模型,將輸入信息通過多層交互的非線性深度學習網絡融合了多種輔助信息,從而能獲得不同層次的特征表示結果,在一定程度上緩解了數據稀疏性的問題。劉振鵬等人[12]將用戶和項目的隱藏特征學習出來,再結合用戶的評分提出了一種新的混合推薦模型。馮楚瀅等人[13]提出了一種協同深度學習算法,利用深度學習訓練大量數據,融入協同過濾進行推薦。陳彬等人[14]提出一種基于深度神經網絡和深度交叉網絡以及因子分解劑的混合推薦模型,充分挖掘屬性特征間的隱性關聯關系。Alfarhood等人[15]提出DeepHCF是目前理論和實驗效果都比較出色的融合模型。該模型使用深層神經網絡挖掘用戶和項目的隱表示,將用戶和項目隱表示輸入因子分解機預測評分。
周傳華等人[16]在DeepHCF的基礎上進行了改進,針對個性化推薦中用戶評分矩陣數據集稀疏的問題,充分利用用戶和項目描述信息,提出了DeepRec算法。這些研究都能夠一定程度上解決冷啟動問題,同時有效緩解了數據稀疏性。但時間因素也會對于推薦結果產生重要影響。
針對時間因素,Wu等人[17]提出用一個深度循環神經網絡來追蹤用戶如何瀏覽網頁,通過構建隱藏層模擬用戶訪問的網頁組合和順序,同時利用GRU更好地提升了效果。Wu等人[18]提出一種基于LSTM(long shortterm memory)的循環推薦網絡(RRN)以適應用戶和項目隨時間的動態性。Sun等人[19]提出一種基于注意力的循環網絡社交推薦方法(ARSE),通過融合用戶之間的社交影響來模擬用戶隨時間變化的偏好。同時,卷積神經網絡對于推薦系統的性能提高也是一個有利的工具。蔡念等人[20]提出一種改進矩陣分解與跨通道卷積神經網絡結合的推薦模型,將用戶對項目的評價文本信息特征提取,提高預測模型的準確度。
綜上所述,如果能充分利用用戶在時間維度上的信息來挖掘用戶的隱藏偏好,這樣就能夠提高推薦的準確度。因此,本文的主要貢獻是:首先模型使用二進制的表示法表示用戶與項目的ID編號,有效地緩解了one-hot編碼帶來的數據稀疏性問題。其次提出了兩種結合時間特征的協同過濾深度推薦算法,提取出了用戶和項目特征之間的隱藏特征,結合時間戳信息,通過深度神經網絡進行學習和推薦。其中,C-DRAWT算法利用卷積神經網絡的特點,能夠有效提取用戶近期的偏好;M-DRAWT算法利用多層感知機的特點,能夠挖掘用戶的歷史偏好,以提高推薦的效率與準確度。在MovieLens數據集上的實驗結果表明,本文提出的C-DRAWT和M-DRAWT算法有優于前人模型的效果。
本文提出的基于卷積神經網絡的隱藏特征時間異構推薦算法主要思路流程如圖1所示,通過對原User和Item的數據進行處理,將數據全部數值化。

圖1 隱藏特征提取算法結構Fig.1 Structure of hidden feature extraction
定義1對于User方面,用戶集的定義為:

定義2則對于所有User的用戶集表示為:

定義3對于Item方面,用戶集的定義為:

定義4則對于所有Item的用戶集表示為:

將Uinf與Iinf分別輸入至兩個嵌入層中,將其各自設置確定的維度,得到對應維度的特征表示。并將兩方數據分別放入兩個全連接層,得到更深層次的特征表示,同時也為了更新維度。全連接層表示為:

另外在Item一側,因為文本信息往往包含更多的隱藏特征,因此將包含文本的原始數據單獨放入圖2所示的TextCNN模型中,得到從文本中提取的特征信息后,再與其他Item特征從全連接層得到的特征表示融合在一起,進一步放入一個新的全連接層,得到最終提取到的Item隱藏特征。

圖2 TextCNN結構Fig.2 Structure of TextCNN
同時為了統一維度,用戶數據也一同放入200維的全連接層,得到最終提取的基于User的隱藏特征User Feature與基于Item的隱藏特征Item Feature。中間層得到需要的隱藏特征之后,需要進行輸出訓練優化以得到最好的結果。所以將User Feature與Movie Feature一同放入全連接層以輸出預測的用戶對電影的評分,與實際第三個數據集中真實的評分相擬合,利用MSE以降低誤差進行訓練優化,以得到最優的User Feature與Item Feature/Movie Feature。
當得到用戶特征與項目特征,接下來根據時間戳來構建想要的數據。時間戳的結構為,用戶第t(t∈[1,3])時刻選擇過的項目的ID和特征,以及用戶對于該項目的評分。本文采用二進制編碼的形式,對UserID和ItemID進行編碼,就會極其有效地降低了one-hot編碼導致的內存的消耗與數據稀疏問題。

數據按照時間戳的順序進行排列,完整整合之后是864維的數據格式,并且與之相對的y值是在第四時刻用戶購買或者想看的項目ID,同樣也是利用二進制表示方法,結構如圖3所示。

圖3 時間戳特征拼接Fig.3 Timestamp concat
本文提出的第一個模型是基于卷積神經網絡而設計的協同過濾深度推薦模型C-DRAWT。
本文所設計的卷積神經網絡結構如圖4所示。輸入的數據是隱藏特征提取部分提取出來的隱藏特征向量。首先是第一層一維卷積形成特征圖mi,卷積核大小設置為600×1,以便融合后續第二時刻和第三時刻的Item信息,公式如下。其中,F表示卷積核,*表示卷積運算,bi表示偏置項,f()·表示一個非線性激活函數,本模型中使用Relu函數。


圖4 C-DRAWT中的卷積神經網絡結構Fig.4 Structure of CNN in C-DRAWT
接下來連接池化層,本文采用的池化方法為最大池化法(Max-pooling),目的是通過消除非極大值來降低需要運算的參數量,從而降低運算復雜度,在一定程度上也控制了過擬合。其中,池化窗口大小設置為3。其中,p表示池化結果,max(·)表示最大池化操作。

隨后再連接兩個卷積層,其中兩個卷積核的大小分別為60×1和10×1。隨后連接一個池化層,同樣為最大池化,池化窗口大小為3,池化結果連接了一個Flatten層和一個Dropout層,以平坦數據維度和增加泛化能力。

最后,輸出層輸出維度為12的結果,也就是本文所要預測的時間戳t=4時的項目ID,即下一時刻用戶最想看到的項目。
本文提出的第二個模型是結合MLP所提出的基于MLP的時間異質深度推薦模型M-DRAWT(MLP-deep recommend model with time),此模型所利用的多層感知機結構如圖5所示。
本文采用的多層感知機是包括輸出層在內的一共5層的網絡結構,將特征集合D輸入到4層MLP中,輸出維度為12維,也就是本文要的第四時刻項目的ID,即下一時刻用戶最想觀看或購買的項目的是哪一個,并且在每一層全連接層中間都會有Dropout層進行神經元的丟棄,丟棄概率都設置為0.5,以減少模型參數,增加模型的泛化能力,避免過擬合,完整的M-DRAWT結構如圖5所示。

圖5 M-DRAWT中的多層感知機結構Fig.5 Structure of MLP in M-DRAWT

其中,x0為第一層輸出值,xj為后三層輸出值,W1和Wj表示權重,f(·)表示激活函數,b"1表示偏置向量。
本次實驗用到的是MovieLens-1M的數據集,是在經過預處理后,將其劃分為互不相交的訓練集和測試集,其中訓練集占80%,測試集占20%。數據集的信息如表1所示。

表1 實驗數據集信息表Table 1 Dataset of expriments
本文運用均方根誤差(RMSE)作為損失函數,精確度(Precision)、召回率(Recall)和F1-Score值來評價指標來檢驗模型效果。
均方根誤差(RMSE)作為損失函數能反映出預測值與真實值之間的偏差,偏差值越小說明預測效果越好,公式如下所示:

精確度(Precision)也稱查準率,指的是分類器預測為正類的部分數據在實際數據的比例。精確度越高,分類器假正類錯誤率越低,公式如下所示:

召回率(Recall)也稱查全率,指的是被分類器正確預測的正樣本的比例。具有高召回率的分類器很少將正樣本分為負樣本,公式如下所示:

F1-Scoure值可以同時最大化精確率與召回率,使得精確度與召回率共存,是精確率和召回率的調和平均數,公式如下所示:

本文通過與以下幾種先進的模型進行對比實驗,來驗證本文所提模型的推薦性能。
(1)PMF[21]:概率矩陣分解模型,通過用戶和項目的評分交互矩陣進行協同過濾推薦。
(2)DeepCoNN[11]:使用推薦評論對用戶和項目進行聯合深度建模模型,通過卷積神經網絡將用戶評論集和項目評論集結合起來對用戶和項目進行建模
(2)ConvMF[22]:卷積矩陣分解模型,將卷積神經網絡與矩陣分解模型進行推薦。
(3)DeepHCF[15]:結合CNN和MLP分別從評分和項目評論中挖掘用戶和項目的潛在特征,并使用因子分解方法預測評分。
(4)DeepRec[16]:融合評分矩陣和評論文本的深度神經網絡推薦模型,它是一種由多層感知機和卷積神經網絡組成的推薦方法,該模型將兩種不同的數據類型作為輸入。
2.4.1 模型性能分析
實驗的F1-Score值結果和RMSE實驗結果如圖6和圖7所示。

圖6 F1-Score值對比圖Fig.6 Comparison of F1-Score values

圖7 RMSE損失函數對比圖Fig.7 Comparison of RMSE loss function
F1-Score值隨著訓練epoch數的增加而趨于穩定,效果最好的是C-DRAWT,其次是M-DRAWT。二者的結果均優于DeepCoNN、ConvMF和DeepHCF。RMSE損失函數值隨著epoch數的增加而下降并收斂,效果最好的仍是C-DRAWT和M-DRAWT,并且優于DeepCoNN、ConvMF和DeepHCF。模型的綜合對比結果如表2所示。

表2 對比實驗結果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%。綜合上述結果可以看出,綜合了時間信息的C-DRAWT和M-DRAWT在各個評價指標上優于其他對比算法,有著較好的推薦性能。
圖8為模型運行時間的對比。可以看出,基于矩陣分解的模型在訓練大量的矩陣數據中需要消耗大量的時間,而本文所設計的基于神經網絡的模型采用one-hot編碼降低了數據稀疏性,并且本文采用的CNN模型中的池化操作降低了數據維度,從而降低了復雜度。

圖8 模型運行時間對比Fig.8 Comparison of model running time
2.4.2 編碼分析
為了能夠更好地表示擁護和項目的信息,緩解數據稀疏性問題,本文采用了二進制編碼來代替one-hot編碼。為了驗證二進制編碼的優異性,本文通過同一個模型采用兩種編碼方法,選取MovieLens-10M數據集上進行對比實驗。同時還對比了模型在訓練集不同比例下的結果,如圖9和圖10所示。結果表明,二進制編碼的方法更能表示用戶和項目的大量隱信息,并且當訓練集比例越高模型效果也好,這表明模型是用了更多的輔助信息進行訓練后能產生更高的預測效果。

圖9 基于C-DRAWT的one-hot編碼與二進制編碼對比分析Fig.9 Comparison of one-hot encoding and binary encoding based on C-DRAWT

圖10 基于M-DRAWT的one-hot編碼與二進制編碼對比分析Fig.10 Comparison of one-hot encoding and binary encoding based on M-DRAWT
2.4.3 Dropout比率分析
在C-DRAWT和M-DRAWT模型中,均加入了Dropout技術,這是因為Dropout技術可以有效地防止模型過擬合,得到更好的泛化性。兩個模型中具體的Dropout比率都設置為了0.5,這樣設置是因為經過實驗表明,當Dropout=0.5時,其RMSE最小即模型表現最好,結果如圖11所示。

圖11 Dropout比率對模型效果的影響Fig.11 Impact of dropout ratio on model performance
本文提出了基于卷積神經網絡的結合時間特征的協同過濾深度推薦算法(C-DRAWT)與基于多層感知機的結合時間特征的協同過濾深度推薦算法(M-DRAWT),主要貢獻是將推薦任務轉化為用戶下一時刻最希望看到的項目,在特征提取前用二進制表示法取代one-hot編碼,極大地減少了數據維度。隨后對提取出的用戶和項目隱藏特征加入時間戳信息,再利用改進后的卷積神經網絡和多層感知機進行預測推薦,C-DRAWT和M-DRAWT更能夠實時了解用戶的興趣點,有效地解決了數據稀疏性,緩解了冷啟動問題。進一步的工作會繼續優化算法,減少計算資源的消耗,提升計算速度和效果。