喬 雨 圣文順
(南京工業大學浦江學院 南京 211200)
傳統的推薦系統通常只考慮用戶本身的行為信息和待項目的基本信息,而隨著互聯網的發展,各類信息量都呈快速增長狀態,利用單一的“用戶-項目”信息產生推薦已經不能夠滿足用戶的需求[1]。因此,為了使推薦系統更好地發揮其信息過濾的作用,精準地定位用戶感興趣的點,融合上下文情景的推薦系統應運而生[2~3],即推薦系統中除了要考慮基本的“用戶-項目”二元信息外,還需要實際應用場景中所處的上下文狀態信息對推薦結果的影響。基于上下文情境的推薦系統的實現原理是:根據收集到的用戶基本信息、評分信息、上下文情景等信息,進行“用戶-項目-上下文信息”三維信息的挖掘,來分析出用戶可能的興趣點,并給出對應的推薦結果。
在需要考慮上下文信息的推薦系統中,常用奇異值分解[4](Singular value decomposition,SVD)技術來對用戶行為信息矩陣進行分解,實現高維度矩陣的降維,但是這樣的奇異值分解技術在應用中會面臨由于矩陣過于稀疏(稀疏性達到95%以上)需要填充的數據量過于龐大,并且數據難以得到有效存儲的問題[5];其次,該問題也會導致該方法無法適應互聯網背景下的大數據級別的應用場景;再者,奇異值分解技術在利用Spark等工具進行訓練時,存在著數據利用率不足的情況。因此,對于融合多維上下文情景的推薦系統,奇異值分解的方法顯得過于繁重。
多項式回歸(Polynomial Regression)被應用到推薦算法中,是能夠利用其線性回歸的特征來彌補奇異值分解技術的劣勢,利用因變量與自變量之間的相互作用[6],將上下文信息用線性關系進行表示,避免由于數據矩陣過于龐大而導致的存儲和計算效率問題。但是另一方面,多項式回歸為了盡可能地擬合數據,采用增加高次自變量的方式來對訓練數據集進行逼近,容易形成過度擬合[7],進而帶來訓練不準確的問題。
本文對多項式回歸算法進行了深入的研究,針對其存在的計算復雜度較高的問題進行分析并嘗試著改進,提出了融合因子分解的上下文推薦算法(Context-aware Recommendation based on Factoriza?tion Machines,FM-CR),該算法利用因子分解的方式將多項式回歸中變量之間的相互作用進行分解[8],進而達到降低計算復雜度的目的。式(1)給出了二階因子分解模型,其中w0∈R,v∈Rn×k,n×k表示整體數據維度;參數w0,wi和vi是模型經過訓練學習得出的[7];式(2)為引入的損失函數,用來防止過度擬合。

基于上下文情景的推薦在考慮基本的用戶行為信息外,還需要盡可能地考慮用戶所處的實時狀態信息[9~10],本文提出的FM-CR算法可描述為三個核心步驟。
步驟1:確定上下文特征信息
在含有上下文信息的推薦系統中,由于包含了除用戶、項目之外的多種有關上下文情景的信息,因此將預測評分用式(3)表示:

值得說明的是,式(3)中的上下文屬性下標是從3開始的,這是因為將“用戶”和“項目”分別看成了“上下文”特征信息中的第1項和第2項[11],達到統一數據格式的目的。其他的上下文信息,如用戶所處的時間、心情等屬性都可以根據系統需要作為“上下文”輸入到推薦算法中進行訓練,以電影推薦系統為例,納入用戶的觀影項目I={movie1,mov?ie2,movie3}、觀影心情C3={happy,sad,normal}、觀影 地 址C4={p1,p2,p3}、觀 影 同 伴C5={friend1,friend2,friend3}這四類因素來組成用戶所處的上下文情境。
步驟2:抽象上下文信息的特征向量
基于步驟1所述,將各“上下文信息”抽象為特征向量z進行表示,此向量z包含了5個特征信息,分別是用戶、項目、心情、地點和同伴。例如,用戶u1與f3在心情愉快的情況下,于p2地看了電影mov?ie3,并且給了5分的評價;那么電影項目向量表示為z(2movie)=(0,0,1),心情向量可表示成z(3hap?py)=(1,0,0),地址向量可表示為z(4p2)=(0,1,0),同伴向量表示為z(5friend3)=(0,0,1)。因此,用戶u1的上下文信息向量如式(4)所示,綜合評分矩陣如式(5)所示。

另一種情況,若u1是與同伴friend2和friend3一起觀看的電影movie3,那么這里的同伴向量可以表示為z(5{friend2,friend3})=(0,0.5,0.5),這是因為當某一“上下文”是分類變量的集合時,就將該信息進行歸一化處理,使得此分類向量的權值總和為1。基于對這兩種情況,最終的特征信息可以通過連接映射成如式(6)所示的向量x。

步驟3:通過預測產生目標推薦
確定好信息特征向量后,將向量數據輸入到libFM工具中進行參數的訓練。libFM是一款用來訓練數據的開源工具,利用它可以快速地實現參數的學習和評分預測[12],信息特征向量中的行表示一個實例,“1”表示特征值存在,“0”表示特征值不存在。本實驗采用libFM中的隨機梯度下降算法進行實驗數據的訓練。訓練過程如式(7)所示,其中參數(x,y)是樣本中的數據;μ∈R指迭代的學習效率,并且μ的取值要適中來避免造成模型無法收斂或者收斂速度過慢的情況;γθ表示正則化系數,它是經過實驗確定的,并且θ和γ通常取相同的值。此時基于因子分解模型(如式(1)所示)的過程可將評分預測表示為式(8)。

在傳統的推薦系統中,若采用多項式回歸進行學習,考慮特征數量為k,上下文因素的維數n,則需要學習的參數量為k(k-1)/2[13];而因式分解模型需要學習的參數量為k×n,并且上下文影響因素的維度n通常情況下是遠低于特征數量k的,因此可認為該方法的一次完整迭代時間復雜度為O(nk)。
1)實驗環境
實驗環境是基于虛擬機VMWare10中的Ubun?tu操作系統,利用libFM軟件中提供的SGD方法對數據進行學習訓練,產生實驗結果。
2)實驗數據
實驗采用由新浪提供的在線測評數據集,是目前公開的大規模數據集之一,通常用于用戶社交關系的推薦研究。該數據集包含2300000位用戶,6000個項目,108000000條數據記錄,分為用戶基本信息、用戶關注的信息、關鍵詞信息、行為信息、待推薦信息等[6]。
1)準確度分析
本實驗采用平均準確率MAP(Mean Average Precision)指標來衡量推薦的準確度,該指標體現了所推薦的結果中被用戶接納的比例[14~15]。計算方式如式(9)所示,式中N表示推薦列表中的項目數,這里取值為5,表示推薦列表中有5個項目,并計算出整體的平均準確率。n表示待推薦的項目集合,則ap@n表示用戶對于推薦系統的總體接受程度,ap@ni表示用戶對推薦集合n中第i個推薦對象的接受度,采用ap@ni=(i-1)/i的計算方式,表示待推薦項目集合n中的前i項均被用戶考慮并且存在實際的接受項目;需要注意的是,當推薦列表中的第1項(即i=1時)就被用戶接受時,此時ap@n1=1/1=100%。

例如,在5個待推薦的候選項目中用戶實際接受了兩個,分別是第1、4個,那么ap@5=(1/1+3/4)/5=0.35,即可認為用戶對于當前的推薦結果接受度為35%;以此類推,當計算出所有用戶的MAP值后,就可得出系統的整體推薦準確度,如式(10)所示。當整體的MAP值越大時,表示推薦的項目被用戶接受的程度就越高,系統的推薦就越有效。

在將各上下文信息作為整體考慮的情況下,分別確定用戶所具有的各類屬性信息所占的權值。具體做法是:首先,通過交叉驗證的方式計算出各個用戶特征的權重,在本實驗中是選取了用戶的鄰居數f1、用戶的粉絲數f2、用戶所處的上下文情景f3作為特征信息。其次,利用線性疊加的形式(式(11))得出用戶的偏置參數B[16],其中fi表示特征i,θi表示特征fi所占的權重。

本文在基于上下文屬性的影響程度的基礎上,將結合因子分解的推薦算法與多項式推薦進行精確度比較,以此驗證算法的有效性,比較結果如圖1所示。從圖中可看出基于多項式回歸的推薦算法與本文提出的融合因子分解的推薦算法在推薦準確度方面差距不是很大,峰值出現在θ3取值為0.5(即“上下文”特征信息的權值為0.5)時,兩者的MAP值相差最大,但是差值小于0.05;因此也可認為融合因子分解的推薦算法在考慮上下文特征信息的推薦精確度上基本與多項式回歸的推薦算法相持平。
2)時間復雜度比較
本實驗將融合因子分解的上下文推薦算法分別與基于奇異值分解的推薦算法和基于多項式回歸的推薦算法在時間運行方面進行比較,結果分別如圖2和圖3所示。從圖2中可以看出基于奇異值分解的推薦算法在耗時上明顯高于本文提出的FM-CR算法,這是因為奇異值分解方法對于矩陣數據的訓練需要大量的時間;而圖3中FM-CR算法與基于多項式分解的算法在運行時間的差距上就相對縮小了很多,尤其是在上下文屬性維度小于3時兩者的差距并不明顯,當屬性維度大于3時,運行時間上才有了較為明顯的差距。因此可以得出,當推薦算法中考慮的屬性維度達到一定程度的時候,融合因子分解的推薦算法運行效率上較優于基于多項式回歸的推薦算法。

圖1 融合因子分解的推薦算法與多項式回歸推薦算法的準確度比較

圖2 融合因子分解的推薦算法與基于奇異值分解的推薦算法運行時間比較

圖3 融合因子分解的推薦算法與基于多項式回歸的推薦算法運行時間比較
本文針對包含上下文信息的推薦系統進行了調研和研究,通過分析上下文情景推薦中常用的奇異值分解技術和多項式分解技術的特點與過程,針對其存在的問題進行新技術的嘗試,提出了融合因子分解技術的推薦算法,并設計了驗證用戶對于推薦結果接受率和算法運行時間的實驗,實驗結果表明該算法具有一定的有效性,并且在時間復雜度方面有了較為明顯的改善。未來的研究工作中,縱向上可以在此基礎上繼續研究不同的上下文特征信息對推薦結果準確性的影響程度,研究是否可以抽象出相關的規則來覆蓋多種場景;其次,在時間效率方面,可以采用不同的數據處理平臺,橫向對比算法的性能變化特征,進一步提升算法處理的效率。