余夢夢,孫自強
(華東理工大學 化工過程先進控制和優化技術教育部重點實驗室,上海 200237)
推薦系統中,特征工程是必不可少的組成部分。傳統的推薦算法有:基于鄰域的協同過濾推薦[1]、基于內容的推薦[2]以及SVD分解[3]等。但這些推薦算法主要依靠評分記錄,未能充分挖掘用戶喜好特征。Rendle提出因子分解機FM模型[4]對高階特征建模,有效進行特征間組合。又伴隨著神經網絡模型在特征表示學習中展示出的強大能力,近年來眾多研究學者利用神經網絡來挖掘特征關系。直到Huifeng Guo提出DeepFM模型[5],有效結合因子分解機與神經網絡在特征學習中的優點,并有效提取低階組合特征與高階組合特征。但DeepFM模型只基于原始特征組合,沒有充分挖掘特征隱含信息。在此基礎上,提出FG_DeepFM模型,利用特征生成卷積神經網絡(FGCNN)[6],基于其網絡結構的共享權重和池化機制生成新特征,并將原有特征及生成新特征進行特征拼接共同輸入到DeepFM模型中?;谝陨夏P蛯W習的是隱式的交互特征,并未考慮顯式特征,本文引入極深因子分解機(xDeepFM)[7]模型,將其與FG_DeepFM模型融合,最終構建FGx_Deep模型,以顯式和隱式方式自動學習低階高階特征,挖掘有效特征交互,提升系統推薦效果。
DeepFM模型有效結合因子分解機(FM)與深度神經網絡在特征學習中的優點,將FM算法與DNN算法整合到一起,實現端到端預測。DeepFM模型中,FM組成部分負責提取組合低階特征,DNN組成部分則采用全連接深度神經網絡方式提取高階特征,其總體網絡結構設計如圖1所示。
圖1 DeepFM網絡結構
由圖1得,DeepFM模型的DNN和FM部分共享同樣的輸入,其預測結果可寫為
(1)
其中,yFM是FM部分的輸出,yDNN是DNN部分輸出,則DeepFM模型具體設計原理如下所示。
原始數據集一般呈多域類別形式,通常需進行one-hot編碼,例如,某用戶特征(性別=女性,身高=160,年齡=17),性別,身高,年齡屬于域類別,編碼后表示如下
圖2 嵌入層結構
FM算法是在線性回歸模型基礎上,引入特征交叉項,根據特征的隱向量做內積來表述特征間的相關性,如將特征xi和xj的組合用xixj表示,表達式為
(2)
(3)
其中,vi,vj分別是特征xi,特征xj的隱向量,vi,f是隱向量vi的第f元素。
則以FM算法為原理,DeepFM模型設計FM組成部分網絡結構如圖3所示。
由圖3可知,FM組成部分模型輸出是和(Addition)單元與內積(Inner product)單元總和,表達式如下
圖3 FM組成部分網絡結構
(4)
其中,和(Addition)單元 〈w,x〉 反映一階特征提取特性,內積(Inner product)單元反映二階特征提取特性。
DNN是前饋深度神經網絡,在DeepFM模型中用于學習高階特征組合。它與FM部分共享嵌入層,其網絡結構如圖4所示,由圖4可得,嵌入層的輸出向量表示如下
圖4 DNN組成部分網絡結構
α(0)=[e1,e2,…,en]
(5)
其中,ea是嵌入層的第a個域,n是域的數量,深度神經網絡的前向傳播過程如下
α(l+1)=σ(W(l)α(l)+b(l))
(6)
其中,l表示神經網絡層的深度,σ是激活函數。α(l),W(l),b(l)分別表示神經網絡l層的輸出,模型權重和偏置。DeepFM模型的DNN結構,由原始特征輸入,首先通過嵌入層生成密集的實值特征嵌入向量,接著經過隱藏層進行前向傳播,最終,DNN部分的輸出預測值為
(7)
其中,|H| 是隱藏層數量。
由于DeepFM模型只是基于原始特征進行提取低階組合特征和高階組合特征,未必能學習到有效特征間交互。在此基礎上,本文提出FG_DeepFM模型,應用特征生成卷積神經網絡(FGCNN),基于其網絡結構的共享權重和池化機制生成新特征,并將原有特征及生成新特征進行特征拼接共同輸入到DeepFM模型中,提高系統模型的魯棒性。FG_DeepFM模型的框架如圖5所示。
圖5 FG_DeepFM模型框架
其中,FGCNN網絡是基于CCPM網絡模型改進的有效特征生成算法。CCPM網絡首先對連續特征的嵌入矩陣進行二維卷積[8],再使用彈性池化機制,通過特征聚合和壓縮表示,堆疊若干層后將其所得的特征矩陣作為多層感知機(MLP)輸入,但該網絡模型計算的是局部特征組合。針對這一現象,FGCNN使用重組層進行特征生成,有效緩解CCPM無法捕獲全局組合特征問題。FGCNN網絡結構如圖6所示,網絡模塊原理介紹如下。
圖6 FGCNN網絡
(8)
(9)
第i池化層的池化結果為 (i+1) 卷積層輸入:Ei+1=Si
(10)
Fi=tanh(Si·WFi+BFi)
(11)
F=(F1,F2,…,Fnc)
(12)
DeepFM模型和FG_DeepFM模型雖然能學習低階和高階組合特征,但只針對于元素級隱式特征。因此,針對以上現狀提出極深因子分解機(xDeepFM)模型,同時以顯式和隱式的方式自動學習高階特征,且其特征交互在向量級,還兼具記憶與泛化的學習能力,其模型整體結構如圖7所示。
圖7 xDeepFM模型
由圖7可知,xDeepFM模型是壓縮交互網絡(CIN)神經模型和DNN結構組合,CIN模型中,將輸入原特征和神經網絡隱層分別組織成一個矩陣,記為X0和Xk,CIN中每一層神經元都是根據前一層的隱層向量以及原特征向量推算而來,其計算公式如下
(13)
(14)
(15)
第k層的第h映射表示為
(16)
xDeepFM模型輸出為
(17)
本文在原有DeepFM基礎上,利用FGCNN網絡結構生成新特征,構建FG_DeepFM深度模型。并且考慮到DeepFM和FG_DeepFM模型只能有效提取隱式特征交互,根據模型融合思路,本文將FG_DeepFM模型和基于提取顯式向量級特征交互的xDeepFM模型加權融合,提出FGx_Deep模型。最后通過評價指標來判斷模型預測性能,整體模型預測流程如圖8所示。
圖8 FGx_Deep模型算法流程
本節中通過實驗驗證改進模型的性能。所有實驗均在CPU上使用Intel(R) Core (TM) i5-4200H四核處理器,通過使用基于Tensorflow模型的Python 3.6編程語言進行實現。
本文采用美國Minnesota大學GroupLens項目研究組提供的MovieLens數據集[9]對算法進行評估。該數據集包含1000名用戶信息,1700部電影信息,以及100 000條用戶對電影評分交互數據,其中每個用戶至少有20條評分記錄,評分范圍為1分(討厭)~5分(非常喜歡)。MovieLens 數據集的統計數據見表1。
表1 MovieLens數據集統計數據分布
本文數據預處理中,以用戶ID、電影ID、用戶特征,18種不同電影類型進行one-hot編碼,構造數據輸入模型的特征序列,預測目標值是用戶對電影評分,每條輸入數據特征格式如下所示
“輸入特征1”→
[35 10 14 1 19 622 1 0 0 … 0 1]
“輸入特征2”→
[40 75 37 0 3 243 0 0 1 … 1 1]
“輸入特征3”→
[765 60 25 1 13 297 1 1 0 … 0 0]
上述輸入特征數據中,分別是用戶ID、電影ID、用戶年齡、用戶性別、用戶職業、用戶郵編,后18列代表18種不同類型電影,0表示不具有電影該類型屬性,1則表示具有該電影類型屬性。
本文選用均方根誤差RMSE和平均絕對誤差MAE對模型預測評分進行評價,當RMSE和MAE越小,表明模型對于真實值擬合的偏差越小,則模型的推薦效果越好,具體公式定義如下
(18)
(19)
此外,現今推薦系統領域中,大部分以Top-N推薦形式出現,通過推薦列表是否滿足用戶需求來評價模型效果。本文假設當用戶對項目評分大于等于4分時,則認為該用戶對此項目感興趣。模型會根據用戶對項目的預測評分,為用戶推薦預測得分最高的前N個項目。本文使用精準率(precision)、召回率(recall)和F值3個指標,來度量模型的推薦效果,其值越高說明該模型推薦能力越強,表示如下
(20)
(21)
(22)
其中,U表示用戶集合,R(u) 表示Top-N推薦列表中用戶u感興趣的項目數量,T(u) 表示測試集中用戶u感興趣的所有項目數量。
本文按80%和20%比例隨機劃分原數據集,以70%作訓練集,10%作驗證集,20%作測試集進行實驗。其中,利用測試集評價模型的最終效果,利用驗證集獲取模型的超參數。本文的FGx_Deep推薦模型是基于FG_DeepFM模型和xDeepFM模型的加權融合,加權系數設置為[0.5,0.5],模型訓練過程中,以均方根誤差作為誤差損失函數,采用Adam算法進行優化訓練30次(epochs),為防止過擬合,提高模型泛化能力,設置丟棄率dropout=0.5。并設置原始特征嵌入向量維度k=15,則FG_DeepFM模型和xDeepFM模型其余參數設置如下:
在FG_DeepFM推薦模型中,FGCNN網絡設置4個卷積層、池化層和重組層,其卷積核寬度依次設置為[6,8,10,12],池化寬度設置為[2,2,2,2],重組層映射設置為[3,3,3,3],DeepFM模型的FM網絡結構中原始特征線性學習權重為0.0001,特征嵌入向量學習權重為0.0005,DeepFM的DNN網絡結構設定兩層隱藏層,神經元設置為[128,128],DNN網絡的L2正則項系數設置為0.000 15,DNN網絡的調節學習率為0.0001。
在xDeepFM推薦模型中,CIN網絡結構設置兩層CIN層,每層神經元個數設置為100,CIN網絡的L2正則項系數設置為0.0001,CIN網絡的調節學習率為0.0001。DNN網絡結構設定兩層隱藏層,神經元設置為[128,128],DNN網絡的L2正則項系數設置為0.0001,DNN網絡的調節學習率為0.0005。
在實驗過程中發現FGx_Deep模型推薦效果與原始特征嵌入向量維度相關,分別取不同嵌入維度,進行實驗,實驗結果見表2。從表2可以看出,當嵌入維度為15維的情況下,平均絕對值誤差(MAE)和均方根誤差(RMSE)值最低,本文提出的算法的推薦效果有所改善,實驗結果如下。
表2 嵌入向量維度對模型推薦效果影響
將本文提出的FGx_Deep算法、FG_DeepFM算法與UCF、ICF、SVD、SVD++[10]、DeepFM算法、xDeepFM算法和AFM算法[11]進行比較分析。為了驗證FGx_Deep算法與同類算法的性能比較,本文在實驗過程中選取深度推薦算法的特征嵌入維度為15維,具體實驗結果如下所示。
5.4.1 評分預測推薦
從表3數據中可以看出,本文所提FGx_Deep算法的RMSE和MAE值最低,預測評分精度最高,其推薦效果最優。實驗1~實驗4方法屬于傳統的推薦算法,相比之下,FGx_Deep推薦模型能更精準實現評分預測,泛化能力更強,與UCF算法和ICF算法相比,RMSE指標降低了近11%,MAE指標降低了近9%,與SVD算法和SVD++算法相比,RMSE指標降低了近4%,MAE指標降低了近2%。
表3 模型評分預測對比
實驗5~實驗8方法屬于深度推薦算法,相比之下,FGx_Deep模型融合xDeepFM模型和FG_DeepFM模型有效信息,充分挖掘輸入顯式和隱式特征,其評分預測推薦效果相較于其它深度推薦模型均有進一步提升,RMSE和MAE指標明顯降低。分析結果表明本文提出的FGx_Deep算法的評分預測推薦效果是幾種方法中最優的。
5.4.2 Top-N推薦
取推薦列表長度N為10,從表4數據中可以看出,Top-N推薦中,相比于其它算法,本文所提FGx_Deep算法的召回率、精準率和F值指標均有明顯提升,推薦效果最優。
表4 模型Top-N推薦對比
實驗1~實驗4方法屬于傳統的推薦算法,在Top-N推薦中,FGx_Deep推薦模型包含用戶和物品有效特征信息,泛化能力更強。與UCF算法和ICF算法相比,召回率指標分別提高了近8%和13%,精準率指標分別提高了近6%和1%,F值提高了近9%和17%,與SVD算法和SVD++算法相比,召回率指標分別提高了近10%和9%,精準率指標分別提高了近3%和4%,F值提高了近12%和11%。
實驗5~實驗8方法屬于深度推薦算法,相比之下,FGx_Deep模型融合xDeepFM模型和FG_DeepFM模型有效信息,充分挖掘輸入顯式和隱式特征,其召回率、精準率和F值相較于其它深度推薦模型均有進一步提升。分析結果表明Top-N推薦中,本文提出的FGx_Deep算法的推薦能力是幾種方法中最強的。
本文首先構建FG_DeepFM模型,利用FGCNN網絡生成新特征,并與原始特征拼接輸入到深度DeepFM模型中,又考慮到顯式的特征交互,將FG_DeepFM模型與xDeepFM模型融合,提出FGx_Deep深度推薦模型。通過設計實驗,表明本文提出FGx_Deep模型充分利用特征信息,共同挖掘隱式和顯式的特征交互,低階特征和高階特征組合,較于其它模型,FGx_Deep模型在評分預測推薦和Top-N推薦中模型推薦效果均進一步提升。同時,本文還分析原始特征嵌入向量維度對深度推薦模型效果的影響,設定合適的特征嵌入向量維度大小有助于提高模型的推薦效果。