孫雨新,曹曉梅,王少輝
南京郵電大學 計算機學院,南京 210000
根據互聯網數據中心的預測報告[1]顯示,到2025年全球的數據量將達到163 ZB,將會是現在的3~4倍。從大量信息中獲取有效信息時,推薦系統作為一種信息篩選的工具,可以給用戶提供良好的使用體驗。推薦算法作為推薦系統的核心,幫助用戶發現其感興趣的項目,被應用于各大商業平臺,發揮其獨特的價值[2]。
傳統推薦算法大多使用用戶對項目的評分記錄作為用戶偏好的評價指標,通過計算用戶或項目之間的相似度來生成推薦。雖然這種推薦方式應用廣泛,但是評分記錄數據通常比較稀疏,用戶或項目之間存在聯系較少,往往較難發現相似用戶或項目,影響推薦準確率。與此同時,用戶的興趣偏好往往容易受周圍環境影響,而僅使用評分記錄的傳統推薦算法未考慮這一影響,容易導致推薦結果過于單一,個性化程度低。隨著當前計算機技術的迅速發展,數據收集系統在獲取用戶評分記錄的同時,還能獲取相應的情境信息(時間、地點、用戶的年齡、性別等),充分利用這些信息可以使推薦更加客觀、全面、精準[3]。目前,一些已有的推薦方案通過數據挖掘、機器學習等方法[4-9]處理情境信息,分析某些情境對用戶偏好的影響,然而這些方法大多是針對某一情境信息進行數據集過濾劃分,只利用特定情境信息下的數據樣本,然后使用協同過濾推薦算法進行推薦預測。這些方法雖然可以利用情境信息提高推薦的個性化程度,在一定程度上提高推薦準確性,但是只使用特定情境下的數據樣本進行數據集過濾劃分,可能會產生樣本數據不足、整體樣本集利用率低下的問題,在訓練數據不足的情況下會直接導致推薦結果單一,不能適應情境變化情況,最終反而致使推薦準確度下降。同時,結合了情境特征的多維評分矩陣會存在部分無關和冗余的特征,以及噪聲數據等問題,進一步導致算法復雜度提高,影響推薦準確性。
針對這些問題,本文在傳統推薦算法基礎上提出了一種基于情境信息遷移的因子分解機推薦算法(factorization machine recommender algorithm based on the context information transfer,CITr-FM),該算法在充分利用多維情境信息的基礎上,首先進行特征評估和篩選,計算不同情境特征的價值,去除多余特征求出最佳情境特征子集,再根據情境特征子集和特定情境信息劃分數據集,將原數據集劃分為滿足特定情境信息的目標域數據集和不滿足的源域數據集;其次利用遷移學習的自適應增強方法對源域數據集進行權重調整、樣本遷移,最終得到符合特定情境信息的整體樣本集,充分利用整體樣本集,保證足量的訓練數據,解決樣本利用率低的問題;最后使用因子分解機[10]對調整后的數據樣本進行推薦評分預測,利用因子分解機的特征組合和因子分解方法實現維度約簡,降低模型復雜程度,同時有效緩解多維關系模型的稀疏性問題。分析和仿真實驗表明,CITr-FM算法在充分利用情境信息進行個性化推薦的同時,又能解決預過濾引起的樣本集利用率低問題,同時有效緩解多維評分數據存在的稀疏性問題,提高推薦的準確度。
推薦算法多種多樣,Manouselis等[11]將推薦算法分為三大類:(1)基于內容的推薦:根據用戶給出的偏好信息,計算用戶項目之間的相關性,推薦給用戶相似的項目;(2)基于協同過濾的推薦:根據用戶給出的部分項目的已知偏好信息,預測當前用戶對于其他未評分項目的潛在偏好,或者利用部分對當前項目的偏好數據,預測指定項目的未評分用戶的潛在偏好;(3)混合推薦:按照不同的混合策略將各種推薦算法進行組合。此外,Cai等[12]使用標簽特征向量表示用戶興趣特征,根據單一隱式信息進行推薦;陳碧毅等[13]提出融合顯式和隱式反饋信息的推薦算法;以及使用深度學習技術[14-15]的分層推薦模型都展示了推薦算法的不同研究方向。
近年來,隨著情境信息在提高推薦精確度和用戶滿意度的作用日益顯著,推薦算法中結合情境信息進行個性化的推薦的研究在不斷增多。Wu等[6]闡述了情境信息的產生以及情境信息在豐富用戶行為,刻畫用戶和項目背景,進而有效輔助分析用戶偏好并建立用戶模型起到的作用。情境信息預過濾能夠篩選出滿足特定情境信息的部分樣本集,Adomavicius等[4]提出一種基于維度約簡的預過濾推薦算法,將用戶項目數據樣本按照單一情境信息劃分,然而預過濾方法只使用劃分后特定情境信息下的數據樣本,樣本利用率較低并存在數據稀疏問題。Baltrunas等[7]考慮情境劃分的方式,利用時間信息進行自適應分割將數據劃分成多個代表類,但是該方法仍存在劃分后的數據稀疏和樣本利用率低問題。以上幾種推薦算法都是利用單一情境進行用戶聚類劃分,而對于包含多維情境信息的用戶評分模型,往往存在特征冗余和高維空間的數據稀疏問題,距離函數難以生效,無法進行有效的聚類劃分。羅國前等[8]引入情境感知方法,在算法中加入了全局偏置和情境偏置進一步提高個性化推薦的準確度。Gu等[9]提出了一個情境感知矩陣分解模型AlphaMF,利用矩陣分解模型模擬用戶隱式反饋,利用線性上下文特征和隱式反饋進行推薦,有效緩解冷啟動問題。Oku等[16]利用SVM(支持向量機)處理高維數據模型,進行數據劃分。由于直接使用機器學習模型處理高維數據,導致整體模型的復雜程度提高,并且花費較長時間構造和更新預測模型。
推薦算法經常面臨著隨著用戶和項目數量增長導致的數據稀疏問題。研究結果表明,將遷移學習應用在推薦算法[17]可以在不改變原有數據的基礎上,引入外部數據輔助原有數據生成推薦。Pan等[18]介紹了使用遷移學習對數據樣本進行分布趨近處理,保證整體樣本同分布的同時有效擴充原有數據樣本,緩解稀疏問題。Li等[19]提出一種使用外部數據跨域遷移的CBT算法,將其他領域中密集數據信息的評分矩陣遷移到目標領域的稀疏評分矩陣中,以兩個領域的評分模式的聚類信息作為橋梁,傳遞輔助信息中的有用信息。葛夢凡等[20]對不同領域數據集中的項目標簽進行跨域遷移,結合不同領域標簽計算目標域主題偏好,緩解目標域數據稀疏問題。這些方法在進行跨域處理時,會存在不同領域間用戶、項目信息的異構問題,利用相似領域或者同領域的不同數據則能緩解此問題。Pan等[21]討論了一種半監督協同過濾推薦算法,使用自適應性遷移學習迭代處理,將隱式信息整合到顯式信息中。該方法在有效緩解數據異構問題的同時在顯式信息充分融合隱式信息緩解稀疏性問題。
將情境信息融入用戶-項目二元關系模型中生成多維評分模型的推薦算法,會存在一定的數據稀疏問題,利用矩陣分解可以緩解此問題。文獻[22-23]充分利用標簽信息、時間和信任關系等這些額外信息對用戶偏好的影響,結合矩陣分解方法對多維信息進行降維,降低算法復雜程度同時緩解評分矩陣稀疏性問題。此后,Rendle提出了因子分解機模型,該模型可以處理包含任意實值的特征向量,使用矩陣分解引入隱向量解決多特征引起的模型復雜問題,使用因子化參數來建立特征變量的聯系并通過交叉項特征緩解數據稀疏問題,提升預測的準確性。該方法保證了高維特征交互的可靠估計和模型的線性訓練時間。胡亞慧等[24]在使用因子分解機的同時,利用文化差異這一用戶背景信息對用戶興趣偏好的影響,針對不同情境下的用戶文化背景進行用戶興趣預測。因子分解機在有效利用用戶背景信息的同時又能緩解數據稀疏,進行個性化推薦。但該方法僅將多維特征信息利用因子分解機進行推薦模型預測,沒有對情境信息進行分析處理,不能充分利用情境信息的價值。
通過實驗對各種推薦算法進行驗證比較后,得出本文提出的CITr-FM算法在進行推薦預測上的優勢如下:(1)充分利用情境信息對用戶偏好的影響,提取重要情境特征進行數據樣本預過濾劃分,可以提高推薦的個性化程度。(2)對劃分后的部分數據使用遷移學習方法,調整數據分布,無需引入外部樣本,提高樣本利用率的同時使用因子分解機緩解稀疏性問題。(3)發揮情境信息在個性化推薦中的作用,提高推薦準確度。
本章主要對CITr-FM算法的問題進行形式化定義,同時對算法進行理論分析論述和過程描述,并給出相關的流程圖。
為了便于形式化的描述,本文的符號標記見表1。

表1 符號定義Table 1 Definition of symbols

針對不同的使用場景,可以使用不同的情境信息。利用情境信息進行用戶個性化推薦,在傳統用戶項目評分矩陣的基礎上加入額外的環境情境信息構造多維評分矩陣,通過給定的用戶信息U、項目信息I、情境信息C訓練出預測模型。對于評分矩陣中存在的未知評分,可以通過預測模型計算相應評分,該評分代表了用戶u在特定的情境C下對項目i的喜好程度。
在本文中,為了充分利用環境情境信息,構建包含環境情境信息的特征矩陣,對用戶-項目-環境情境多維信息進行one-hot編碼[25],編碼后的矩陣信息更便于進行特征重要性評估,處理后的數據形式如圖1所示。

圖1 用戶-項目-環境情境信息評分矩陣Fig.1 User-item-environmental situation information scoring matrix
其中每一行表示用戶u對項目i在環境情境c下的評分記錄yi。以第一條記錄x1為例,用戶u1對項目i1在環境情境c11的條件下的評分y1為5分。原本m×n的用戶項目評分矩陣轉換為a×(b+1)的用戶評分記錄矩陣,其中a為評分個數,b為編碼后的特征維度。
對編碼處理后的多維關系模型,使用CITr-FM算法建立推薦模型。CITr-FM算法主要分為以下三個階段:(1)情境預過濾:篩選重要特征然后根據篩選后的特征子集進行情境信息預過濾,得到滿足當前情境信息的數據樣本集Tt和其余數據樣本集Ts;(2)樣本遷移:利用遷移學習方法,將過濾后的樣本集Ts,使用滿足當前情境信息的Tt數據集進行樣本權重調整和評分再預測,得到Ts調整后的數據樣本(Xs,Ys);(3)推薦預測:調整后的樣本集Ts和原樣本集Tt合并為一個數據集T,將該數據樣本集放入因子分解機模型進行推薦模型訓練,充分利用情境信息對用戶偏好的影響,最終預測用戶對項目的偏好程度。整體算法的流程圖如圖2所示。

圖2 CITr-FM算法流程圖Fig.2 Flowchart of CITr-FM algorithm
根據算法設計提出的內容,本文提出的CITr-FM算法的具體實現過程如下。
2.3.1 情境預過濾
傳統推薦算法使用聚類算法來計算用戶相似度,進行數據集分類,在加入情境信息的多維關系模型中,使用聚類算法不僅會提高計算復雜度,而且對高維數據進行聚類可能會失效。此外,不同數據集都需要考慮情境信息對用戶的偏好的影響價值,并不是所有情境特征都會對推薦結果產生有效影響,冗余的情境特征[3]會提高算法復雜度,影響推薦準確度。對此,首先需要對包含情境特征的數據樣本進行重要特征的篩選,本文使用XGBoost[26]算法進行特征重要性評估,相較于傳統特征選擇算法,XGBoost可以有效防止過擬合,同時進行并行優化,考慮數據集稀疏情況,大大提高算法的效率;然后根據特征重要性對環境情境特征進行排序,建立特征子集Xsub并利用前向搜索的思想依次往特征子集中放入排序后的特征;最后對不同的特征子集建立評分預測模型,計算不同特征子集下模型的AUC指標的值Rsub,將最優AUC指標的情境特征子集作為最優子集Xsub,并根據保留的多維重要特征Xsub和指定情況下的情境特征ck進行情境預過濾,將原數據集劃分為兩個子集Tt和Ts。
利用XGBoost篩選重要特征并進行情境信息預過濾的過程如圖3所示。

圖3 情境預過濾流程圖Fig.3 Flowchart of situational prefiltering
情景預過濾的主要步驟為:
(1)依次構建XGBoost樹模型,直到整棵樹深度到達M,構建過程中估計葉節點區域的值,能使得目標函數Loss盡可能小,最終得到回歸樹模型f(x)。

其中,第一部分為損失函數,第二部分為L2正則項。
(2)從頂至下遍歷整個樹模型,計算情境特征重要性,然后建立特征子集初始為空,前向搜索依次加入特征,順序為排序后重要性從大到小,并在特征子集上進行建立預測模型,通過AUC指標Rsub求得最優特征子集Xsub。
(3)保留最優特征子集,對原評分記錄進行特征縮減。加入當前情境信息ck,其中,其中j<k,k為最終保留的情境特征c的個數。
(4)對原數據集的評分記錄進行情境信息預過濾劃分。
通過該部分對原始數據集的處理后,將滿足指定情境的數據樣本劃分為目標域數據Tt,即Xa×b評分記錄中context部分中的情境特征與ck中情境特征相符的劃分為目標域數據Tt,不相符的則與指定情境相關度較低,劃分為源域數據Ts。
2.3.2 樣本遷移
傳統情境信息預過濾[6-7]方法只使用滿足特定情境信息的樣本集,這會導致訓練樣本不足引起模型訓練不充分、樣本利用率低問題。使用遷移學習方法對數據集進行遷移處理,可以充分利用整個樣本集。由于目標域數據Tt和源域數據Ts屬于不同的情境條件,因此這兩部分的數據作為不同分布的數據集進行處理,源域數據Ts是不可以直接用來進行推薦模型訓練。利用樣本遷移技術,對與特定情境相關度較低的源域數據Ts進行數據遷移,從而確保源域與目標域的整體數據分布和特征分布相似。對此使用TrAdaBoost[27]算法的思想對劃分后的數據集處理如圖4。

圖4 樣本遷移流程圖Fig.4 Flowchart of instance transfer
經過劃分后的目標域和源域數據,將含有評分的數據集Ts(大小為m)和Tt(大小為n)按順序合并為T,其中前n個為Tt,后m個Ts,設置迭代次數為S。
(1)初始化樣本權重向量W1=(w1,w2,…,wm+n),其中w1=w2=…=wm+n=1/(m+n),對樣本權重和模型進行迭代更新,直到達到一定的迭代次數S。更新規則為:根據樣本權重和整體數據集T訓練得到分類器ft(x),計算平均損失εt并判斷平均損失是否小于e,如果平均損失εt比e小,則可以進行權重調整。
(2)完成相應的迭代更新后,選擇迭代過程中平均損失最小的第i次的樣本權重向量Wi及其條件下的組合預測模型f(x)。
(3)源域樣本利用調整后的權重向量Wi和組合預測模型f(x)進行樣本評分預測,得到新的樣本評分。
當需要進行權重更新時,更新的學習率為lr1,并且權重進行如下調整:

其中,wi為樣本權重,Zt為標準化因子,βt為更新梯度。
不同部分的權重調整策略不同,對于目標域樣本,如果預測錯誤,則說明模型欠擬合,需要增大權重;對于源域樣本,如果預測錯誤,則說明不符合目標域數據分布,應該降低其權重。
預測模型使用組合預測器,組合分類器的個數為i,其中i為最佳迭代次數。在得到最優源域樣本權重和組合預測器f(x)之后,利用訓練好的預測函數f(x)計算源域樣本在進行樣本遷移,權重調整后的評分Ys=f(Xs),調整后的源域數據為(Xs,Ys)其樣本分布和用戶偏好更加符合目標域數據。
2.3.3 推薦預測
推薦預測部分主要工作是將樣本遷移處理過的源域數據和目標域數據合并,再使用因子分解機建立推薦預測模型。因子分解機將多維的推薦預測問題表示為:U×I×C→R,該預測模型除了使用傳統的用戶和項目這兩個特征外,還可以利用額外特征。本文使用的情境信息將作為額外的特征來提高整體推薦的個性化和準確性,對于輸入輸出可以表示為:

因子分解機在傳統的線性函數模型的基礎上,引入特征之間的交叉項,學習特征之間的關聯信息,主要模型如下:


模型采用梯度下降方法進行參數調優,每一輪的學習率為lr2,在進行一定次數的迭代循環后可以得出最終的推薦預測模型,將源域Ts的樣本的評分看成未知,即看作是無監督樣本,進而進行用戶評分預測。
在開源的數據集MovieLens上,進行CITr-FM算法與其他典型推薦算法的對比實驗,結果表明了CITr-FM算法的可行性。此外,本文還進一步分析了本文使用的算法的一些重要參數對結果的影響。
3.1.1 數據集與評價指標
本文實驗主要使用Movielens數據集和Book-Crossing數據集,Movielens數據集是由GroupLens Research從MovieLens網站上收集到的關于用戶對電影的評級數據,Book-Crossing數據集是Book-Crossing社區的用戶對書本的評級數據。關于本文使用的MovieLens-100k、MovieLens-1M和Book-Crossing數據集,其中MovieLens-100k數據集(ML-100k)主要是由943名用戶對1 684部的電影產生的共10 000條評級數據,該數據集已經進行了一定的處理,保證了每名用戶至少有20條評級數據,并且每部電影有3次評級;MovieLens-1M數據集(ML-1M)主要是由6 040名用戶對3 900部電影產生的共1 000 209條評級數據,處理方式同MovieLens-100k數據集;Book-Crossing數據集(Book-C)主要是由92 107名用戶對271 379本書籍產生的1 031 175條評級數據,對該數據集進行評級標準化,將數據的評級調整為1~5評級。3個數據集的評分標準都為1~5評級,分數越高表明用戶越喜愛,3個數據集相關屬性詳細統計如表2所示。

表2 數據集統計數據Table 2 Statistics of data set
本文將使用數據集進行遷移處理之后混合數據樣本再進行隨機劃分,其中90%數據作為訓練集,10%的數據作為驗證集。確保不同數據集之間可以進行對比,統一使用的初始情境特征的C的個數為8,經過特征重要性評估篩選處理后,保留的情境特征個數為6,ck中的情境個數為半數以上。樣本遷移中的權重更新誤差e設置為0.5,TrAdaBoost算法中分類器的數量為[100,130]較好,學習率lr1為0.005。FM模型的學習率lr2為0.5,L2正則化參數λθ為0.005,隱向量個數k為8的時候,其模型收斂較快,推薦誤差較低。
本文使用的評價指標主要為機器學習中常用回歸算法的評價指標均方根誤差(RMSE)和平均絕對誤差(MAE),利用這兩種算法可以對推薦結果的準確度進行評價。其公式如下:

其中,yi表示用戶對項目的原始評分,表示推薦算法的預測評分,使用的數據樣本都為測試集中的數據包含M個測試樣本。

其中,yi表示原始評分,表示預測評分,兩個指標的評價結果都是所計算的數值越小,推薦結果更加準確。
3.1.2 推薦結果分析
本文提出的CITr-FM算法主要與以下幾種傳統推薦算法進行對比:(1)最近鄰推薦算法(KNN),(2)非負矩陣分解推薦算法(NMF),(3)奇異值矩陣分解推薦算法SVD,(4)基于隱因子的SVD(SVD++),(5)集合矩陣分解推薦算法(CMF)[28],(6)情境感知矩陣分解算法(CAMF)[9],通過閱讀相關算法的參考文獻和介紹,并通過實驗對相關算法的參數進行了調整,使各個算法的實驗結果達到最優值。分別在三個數據集上使用上述推薦算法和本文的推薦算法進行推薦預測,在進行多輪實驗后取評價指標的平均值,實驗結果如圖5所示。

圖5 不同數據集上的RMSE和MAE對比Fig.5 Comparison of RMSE and MAE on different data sets
從圖5可以看出對于三個不同的數據集,本文提出的推薦算法都比推薦算法有更低的RMSE和MAE指標,并且本文提出的CITr-FM算法是針對特定的情境下進行用戶個性化推薦的,因此,在使用測試集進行預測實驗時,比傳統的推薦算法有著更低的RMSE,預測結果的整體分布更加接近。通過三個數據集的驗證,可以發現隨著訓練樣本數據的增多,推薦算法的擬合效果更好,兩種指標的誤差更小,最終的預測能力更強。此外,通過使用Movielens數據集和Book-Crossing數據集這兩種不同領域的數據集進行實驗可以發現,對于包含情境信息的不同數據集,本文提出的CITr-FM算法都能比傳統推薦算法產生更加準確的評分預測,體現了算法的有效性和適用性。
此外本文還對不同算法使用整體樣本集進行多次迭代擬合訓練,在使用ML-100k的數據樣本進行多次的迭代訓練后,各個算法之間的RMSE指標對比如圖6所示,給出了在訓練集和測試集上,使用數據集進行多次訓練后的預測結果的RMSE指標,由圖6可知,在隨著使用整體數據集進行迭代循環訓練的次數上升,算法中模型的擬合程度越來越高,最終參數接近整體最優。多次迭代后通過在測試集上進行驗證時會發現,隨著迭代次數的增多,預測結果的RMSE指標會先下降后上升,這是由于在進行過多次的epoch之后,造成預測模型過擬合的結果,可以發現當迭代次數在20次左右的時候,使用ML-100k數據樣本達到整體最優。

圖6 不同算法在訓練集和測試集上不同迭代次數的RMSE Fig.6 Different algorithms with different iteration times on training set and test set
本文提出的CITr-FM推薦算法的步驟中包含以下幾個超參數會對最終推薦結果產生影響:(1)樣本遷移算法TrAdaBoost中的分類器個數S和學習率lr1,(2)FM模型中的學習率lr2、正則化參數λθ和隱向量個數k。本次實驗還對這些參數進行進一步實驗,研究其對于推薦結果的影響。
對于TrAdaBoost算法的分類器個數S和學習率lr1lr1,使用Movielens-100k數據集,在進行情境預過濾后的數據集進行實驗。首先固定分類器個數S,調整學習率從0.000 01到0.05并記錄TrAdaBoost算法中預測結果的RMSE指標。然后固定學習率lr1和權重更新的閾值e,調整分類器個數從80逐漸增加到250個并記錄遷移算法對于目標域數據的預測結果的RMSE指標,結果如圖7所示。
由圖7可以看出學習率lr1在0.005時,分類器的個數在[110,130]區間,可以獲得最佳的遷移效果。

圖7 學習率和分類器個數對TrAdaBoost算法的影響Fig.7 Influence of learning rate and number of classifiers on TrAdaBoost algorithm
對于FM中的學習率lr2、正則化參數λθ和隱向量個數k,首先固定其中的正則化參數λθ和隱向量個數k,調整學習率lr2從0.000 1到1,并記錄FM模型對于處理后的數據集的預測結果的RMSE指標。然后固定其中的學習率lr2和隱向量個數k,調整正則化參數從0.000 1到0.01,并記錄預測結果的相關指標。最后固定學習率lr2和正則化參數λθ,調整隱向量個數從1到30,并記錄預測結果的相關指標。最終結果如圖8所示。
由圖8可知,FM模型的學習率lr2在0.5,正則化參數λθ在0.005,隱向量個數k的個數在8的時候,最終的CITr-FM算法的預測結果可以取得最低的RMSE誤差損失,保證了整體的推薦性能最佳。

圖8 學習率、正則項和隱向量個數對因子分解機的影響Fig.8 Influence of learning rate,regular term and number of implicit vectors on factorization machine
本文提出的基于情境信息遷移的因子分解機算法,通過特征評估篩選重要特征并結合情境信息進行數據集劃分,分為符合特定情境信息的目標域和不相關的源域,充分考慮情境信息對用戶偏好的影響;對源域數據進行樣本遷移重新計算評分,保證其數據分布符合目標域數據分布;最后將整體數據整合后放入因子分解機中建立推薦模型。與傳統推薦算法相比,能夠有效利用情境信息進行個性化推薦,充分利用整體數據集和多維特征來緩解推薦算法中的稀疏性問題,提高了推薦的個性化程度和推薦準確度。下一步,將嘗試結合不同領域的數據樣本集,使用更高效的遷移方法,進一步探究如何將不同領域數據集中的異構情境信息與當前數據集相結合,利用外部數據進一步緩解數據稀疏問題。