王根生,潘方正
1(江西財經大學 人文學院,南昌 330013) 2(江西財經大學 計算機實踐教學中心,南昌 330013) 3(江西財經大學 國際經貿學院,南昌 330013)
推薦算法是解決信息過載問題的一種重要技術,在電子商務、網絡媒體、新聞廣告等領域得到了廣泛應用.目前推薦算法主要分為3類:基于內容過濾推薦、協同過濾推薦和混合推薦[1].協同過濾推薦算法是目前應用最為廣泛的一類算法[2],其主要分為基于用戶(User-based CF)的協同過濾、基于物品(Item-based CF)的協同過濾和基于模型(Model-based CF)的協同過濾[3].基于模型的協同過濾使用機器學習的算法思路進行建模[4],矩陣分解就是一種基于模型協同過濾的經典算法.矩陣分解推薦算法在Netflix百萬大獎賽中脫穎而出后,成為當下十分流行的一種推薦算法.
雖然矩陣分解推薦算法相對其他協同過濾算法能取得更好的推薦效果,但依然面臨數據稀疏和不能反映用戶興趣變化的問題.針對這些問題國內外不少學者提出了相關改進方案,如針對數據稀疏問題:文獻[5]提出了一種基于屬性耦合的矩陣分解方法,將物品屬性信息融入到矩陣分解模型中;文獻[6]在利用顯式評分信息的基礎上,引入其他的隱式信息(如瀏覽、收藏和分享等);文獻[7]利用社交網絡信息計算用戶的社會地位,把用戶的社會地位融合到矩陣分解推薦算法之中;文獻[8]提出一種融合社交網絡和用戶間的興趣偏好相似度的正則化矩陣分解推薦算法.針對用戶興趣變化的問題:文獻[9]利用時序圖區分用戶的長期興趣和短期興趣;文獻[10,11]在協同過濾算法中分別引入了時間衰減模型和艾賓浩斯遺忘曲線來適應用戶興趣變化;文獻[12]利用時間窗口動態計算電影相似度,緩解用戶興趣變化問題.
通過分析發現,目前加入其他輔助信息是緩解數據稀疏的主要思路,引入時間窗口、遺忘曲線、長短期興趣模型是反映用戶興趣變化的主要思路.隨著互聯網的快速發展,數據呈現多元性和異構性,如何整合這些多元異構數據對提高推薦算法的性能有重要意義.所以本文提出一種融合用戶點評數據、用戶-物品評分數據、物品異構信息和遺忘曲線改進的矩陣分解推薦算法,緩解數據稀疏的同時解決用戶興趣變化的問題.
矩陣分解推薦算法(FunkSVD)的基本思想是把用戶-物品評分矩陣R分解成兩個低維的用戶特征矩陣U和物品特征矩陣V,如公式(1)所示.
R≈UVT
(1)
其中,V∈Rn×d,m和n分別代表用戶和物品的個數,d為用戶和物品特征維度.利用矩陣U和V去擬合用戶對物品的評分,并對未評分物品進行預測.為了使公式(1)最大程度擬合用戶-物品的真實評分數據,使用線性回歸的思路,建立目標優化函數,具體如公式(2)所示.
(2)

隨著研究的深入,學者們提出了不少改進型矩陣分解模型,比如聯合矩陣分解、概率矩陣分解模型等.聯合矩陣分解通過分解多重相關聯矩陣來緩解矩陣分解中數據稀疏的問題,這些多重相關聯的矩陣包含相同的實體,可以從包含相同實體的關系矩陣中獲取更多額外的信息[13].
Word2vec基于深度學習把詞語映射到包含語義關系的低維實數空間,語義相似的詞語在這個空間中也相近[14].Word2vec改變了傳統one-hot編碼向量維度高、矩陣稀疏、語義缺失的問題,被廣泛運用于自然語言處理中.Word2vec包括Skip-Gram和CBOW兩種訓練模型,Skip-Gram通過輸入詞wt來預測其上下文Swt=(wt-k,…,wt-1,wt+1,…,wt+k),其中k為wt上下文窗口大小.CBOW則是根據上下文Swt去預測wt,其目標優化函數分別如公式(3)和公式(4)所示.
(3)
(4)
異構信息網絡(heterogeneous information network, HIN)是包含多種類型節點和邊的信息網絡[15].HIN=(V,E,A,R),其中V代表頂點集、E代表邊集、A代表頂點類型、R代表邊類型,|A|>1或者|R|>1,存在映射φ:V→A,φ:E→R.加權異構信息網絡(weighted heterogeneous information network, WHIN)在HIN的基礎上加入連接權重W,WHIN=(V,E,W,A,R),W代表連接權重,存在映射γ:E→W.圖1為一個典型的WHIN網絡模式實例圖.

圖1 加權異構信息網絡的網絡模式實例圖

本文算法的主要思路是從用戶點評數據和物品異構信息中挖掘物品相似度矩陣和用戶興趣相似度矩陣,并在用戶興趣表示中引入遺忘曲線,適應用戶興趣變化.然后把物品相似度矩陣和用戶興趣相似度矩陣融合到傳統矩陣分解的目標函數中,得出用戶特征矩陣和物品特征矩陣,預測用戶對物品的評分,完成推薦.
物品相似度的計算依賴于對物品的特征描述,如何獲得對物品內容的精準描述成為一個關鍵,這也是基于內容過濾推薦的核心.在很多推薦領域,我們無法直接獲取物品內容的描述,如電影推薦,目前其相似度的計算大部分基于電影的屬性信息(如類型、主演、導演等).而隨著在線影評網站的發展,每部電影都積累了大量的用戶點評數據,通過文本分析技術可以從這些點評數據中挖掘出電影的內容信息.所以本文以電影推薦為例,結合電影屬性信息和點評數據計算電影的相似度,算法流程如圖2所示.
3.1.1 電影內容相似度
對所有點評數據集進行分詞,并對代詞、連詞、介詞等相關停用詞進行刪除;利用Word2Vec模型進行訓練,得到包含語義關系的詞向量;使用TextRank算法對每部電影的關鍵詞進行提取.TextRank[17]是根據PageRank算法改進而來,該算法廣泛用于文本的關鍵詞和關鍵詞組的提取.如對電影《芳華》提取的影評關鍵詞為“集體主義 戰爭 芳華 馮小剛 七十年代 信仰 殘酷…”.得到代表電影mi內容的關鍵詞組Wmi={w1,w2,…,wn}后,結合詞向量,把Wmi中的每個關鍵詞wn替換成對應的詞向量Vwn=[v1,v2,…,vk],k為詞向量的維度,Wmi={Vw1,Vw2,…,Vwn}.電影mi和mj的內容相似度計算如公式(5)所示.

圖2 物品相似度矩陣計算流程
(5)
其中,n和m分別代表電影mi和mj關鍵詞組的長度,cos(Vwi,Vwj)為詞向量Vwi和Vwj的余弦相似度.
3.1.2 電影屬性相似度
文獻[18]提出了比較詳細的電影屬性相似度計算方法,電影的屬性p={類型、上映國家、主演、導演、上映時間、獲獎情況、標簽、評分}.電影mi和mj的屬性相似度計算如公式(6)所示.
(6)
其中,sim(pi)表示兩部電影在第i個屬性上的相似度,wi為第i個屬性的權重.具體每個屬性的相似度sim(pi)的計算和權重wi的計算參考文獻[18].
3.1.3 電影相似度
得到電影內容相似度Sc(mi,mj)和電影屬性相似度Sp(mi,mj)后,把二者進行融合,得到電影整體相似度,融合計算如公式(7)所示.
S(mi,mj)=βSc(mi,mj)+(1-β)Sp(mi,mj)
(7)
其中,β為融合權重,控制電影內容相似度和電影屬性相似度對電影整體相似度的影響比例.利用公式(7)計算所有電影的相似度,得出電影相似度矩陣D.
通過用戶-物品評分數據、物品異構屬性信息和遺忘曲線構建用戶-物品-屬性的加權異構信息網絡;在網絡中選擇連接用戶的相關元路徑,并計算不同元路徑的權重;計算不同元路徑下的用戶興趣相似度,結合元路徑權重得出最終用戶興趣相似度,算法流程如圖3所示.
3.2.1 用戶-物品-屬性加權異構信息網絡構建
以電影為例,用戶-電影-屬性異構信息網絡中V={電影(Movie)、用戶(User)、主演(Actor)、導演(Director)、類型(Genre)、國家(Country)、編劇(Screenplay)},E={評分/被評分、演繹/被演繹、導演/被導演、屬于/包含、所屬/包含、編寫/被編寫},具體網絡模式可見圖1.確定了網絡中的實體和關系后,重點是如何計算網絡中的連接權重W.目前用戶-電影的連接權重基本上都直接使用用戶對電影的評分,如文獻[19,20],評分1-5分別對應了{非常不喜歡、不喜歡、一般、喜歡、非常喜歡}五種情況,但這種方式有如下問題:首先,使用連續的數字 1-5 很難體現興趣的正反變化(不喜歡<3,喜歡>3)和興趣的非線性變化差異(非常喜歡與喜歡的差別和一般與不喜歡的差別是不一樣,應該是中間變化大,兩頭變化小);其次,沒有體現用戶興趣隨時間的變化,隨著時間的推移,用戶的興趣可能會逐漸改變,所以歷史數據具有保鮮度,時間越長的數據越難反應用戶當前的興趣情況.針對這兩點提出基于神經網絡激活函數tanh和遺忘曲線改進的權重計算,計算如公式(8)所示.

圖3 用戶興趣相似度矩陣計算流程
wu_m(s,t)=tanh(s)*memory(t)
(8)
其中,wu_m(s,t)代表用戶u對電影m的興趣連接權重,s為用戶u對電影m的評分,t為評論間隔時間(天).tanh(s)為激活函數,其函數公式如式(9)所示.memory(t)為遺忘曲線函數,本文選取文獻[21]對艾賓浩斯遺忘曲線擬合函數,其函數公式如式(10)所示.
(9)
memory(t)=31.8*t-0.125
(10)
網絡中其他關系,如:電影與類別、電影與國家、電影與編劇、電影與導演,為單值關系,權重設為1,而電影和主演間的權重可以根據主演的排序決定,取排序的倒數.
3.2.2 元路徑選擇和權重計算
不同的元路徑蘊含了不同的語義信息,本文選擇了6條元路徑,具體說明見表1所示.
不同元路徑下得出的用戶興趣相似度的置信度是不一樣的,隨著路徑的變長,置信度也越低,就好比人際關系網絡,隨著關聯路徑的變長,之間的信任關系也逐漸降低.基于這個事實,文獻[20]提出一種基于元路徑長度的權重計算方法.但這個方法主要有2個問題:1)沒有對同長度的元路徑做權重區分,電影的類型、主演、導演、上映國家、編劇對影響用戶對該電影的喜愛程度是不一樣的;2)沒有對不同用戶做區分,因為同一特征對不同用戶的影響也是不一樣的.所以本文提出一種基于信息增益改進的算法,算法步驟如下:
Step 1.把每個用戶評價過的電影分成喜歡(評分>3)和不喜歡(評分<3)兩類,用Ci表示.
Step 2.把類型、主演、導演、上映國家、編劇作為影響用戶對電影態度的特征T,并根據信息增益IG(T)算法計算每個特征的影響程度,計算如公式(11)所示.
表1 電影推薦異構信息中典型的元路徑及其語義
Table 1 Typical meta path and its semantics in heterogeneous information of movie recommendation

元路徑語義信息P1=User-Movie-User兩用戶評分過同一部電影P2=User-Movie-Genre-Movie-User兩用戶評分過屬于同一類型下的兩部電影P3=User-Movie-Actor-Movie-User兩用戶評分過屬于同一演員主演的兩部電影P4=User-Movie-Director-Movie-User兩用戶評分過屬于同一導演執導的兩部電影P5=User-Movie-Country-Movie-User兩用戶評分過屬于同一國家上映的兩部電影P6=User-Movie-Screenplay-Movie-User兩用戶評分過屬于同一編劇編制的兩部電影
(11)
Step 3.結合路徑長度和特征信息增益,計算不同用戶間的元路徑權重,計算如公式(12)所示.
(12)
其中,wPl(ui,uj)表示對于用戶ui和uj來說元路徑Pl的權重,T表示元路徑Pl中連接用戶的某個電影特征,len(Pl)為路徑長度,IGui(T)和IGuj(T)分別為用戶ui和uj的特征T的信息增益.
3.2.3 用戶興趣相似度計算
本文使用PathSim[22]算法計算元路徑中同類型節點的相似度,算法如公式(13)所示.
(13)
其中,Wi,j表示在元路徑Pl下用戶ui到uj所有路徑實例的連接權重之和.在得出不同元路徑下的用戶相似度后,結合元路徑權重,綜合所有元路徑下的用戶相似度,計算如公式(14)所示.
(14)
其中,P為元路徑集合,wPl(ui,uj)為對于用戶ui和uj來說的元路徑Pl的權重,其計算見公式(12).利用公式(14)計算所有用戶間的興趣相似度,得出用戶-用戶興趣相似度矩陣S.
將用戶興趣相似度矩陣S、電影相似度矩陣D和用戶-物品評分矩陣R進行聯合分解,融合多元異構信息得出用戶和物品的特征矩陣,彌補單一信息可能存在的數據稀疏和局部性問題.融合矩陣分解的目標函數如公式(15)所示.
(15)
其中,U為用戶特征矩陣、V為物品特征矩陣、Z為用戶興趣相似特征矩陣、H為物品相似特征矩陣、Iik為指示參數.g(Ri,j)=(Ri,j-min)/(max-min)把評分歸一化,和用戶興趣相似度矩陣S和物品相似度矩陣D的取值范圍保持一致.λ1、λ2是平衡系數,平衡用戶興趣相似度和電影相似度的影響,如果二者都為0,算法退化為只利用了評分信息的傳統矩陣分解算法.使用梯度下降法進行目標優化函數(15)進行求解,具體迭代過程如公式(16)-公式(23)所示.
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
其中α為學習率.得出用戶特征矩陣U和物品特征矩陣V后,利用公式(24)預測用戶i對物品j的評分,把大于某閾值的預測評分物品推薦給用戶,完成推薦.
(24)
其中,max為公式(15)中g(Ri,j)中進行歸一化的評分最大值,min為評分最小值,公式(24)為歸一化的反過程.
本實驗數據集來源于網絡爬蟲爬取的豆瓣影評數據,爬取的原始數據為94534個用戶對8872部電影的404972條評價,數據的稠密度為0.048%,考慮到原始數據太過于稀疏,所以只保留評論和被評論不少于10次的用戶和電影,最終得到7815個用戶,1593部電影,214920條評論作為實驗數據,數據稠密度為1.73%,介于數據集MovieLens1M(稠密度為4.3%)和MovieLens10M(稠密度為1.2%)之間.存儲實驗數據的主要表結構如表2、表3所示.
表2 評論表結構
Table 2 Comment table structure

字段說 明Id主鍵Timestamp評價時間MovieId被評論電影IdRating評分Content評論UserId評價用戶Id
表3 電影信息表結構
Table 3 Movie information table structure

字段說 明Id主鍵Name片名DirectorId導演imdb編號ActorIds主演imdb編號,多個主演用逗號隔開Country制片國家ScreenwriterIds編劇imdb編號,多個編劇用逗號隔開Genres類型,多種類型用逗號隔開ReleaseDate上映日期
本實驗使用預測評分與實際用戶評分的均方根誤差(RMSE)、準確率(Precision)、召回率(Recall)和覆蓋率(Coverage)四個指標進行算法性能衡量,四者的計算分別如公式(25)-公式(28)所示.
(25)
(26)
(27)
(28)
表4 混合矩陣
Table 4 Mixed matrix

推薦算法用戶喜愛用戶不喜愛推薦TPFP未推薦FNTN
公式(28)中N為測試數據集T中不同電影總個數,Nd為推薦結果中不同電影總數目.覆蓋率越高說明推薦結果具有多樣性和新穎性.
為了對算法的性能進行更精準的衡量,本文使用k-交叉驗證的方式進行驗證,k值取5,即隨機把試驗數據均分成五份,每次挑選其中一份作為測試集,其他4份作為訓練集,一共進行5次測試,使用5次測試的平均值作為算法最終評價.實驗主要參數及其默認值如表5所示.
表5 實驗參數設置
Table 5 Setting of experimental parameters

參 數默認值TextRank提取關鍵詞組長度20Word2vec詞向量維度k100電影相似度融合系數β0.6融合矩陣分解平衡系數λ11融合矩陣分解平衡系數λ22正則化參數λ31e-3梯度下降學習率α1e-2梯度下降迭代次數300用戶和電影特征維度d25推薦閾值預測評分4
1)不同用戶和電影特征維度下的實驗對比
矩陣分解時需要設定用戶和電影的特征維度d,不同的維度值下可能會得到不同的實驗結果.本實驗設置維度d={10、15、20、25、30、35、40、45、50},共9組實驗進行對比,其他參數和表4保持一致,實驗結果如圖4所示.

圖4 不同用戶和電影特征維度下的實驗結果對比
通過實驗發現,當用戶和電影維度為25時,算法的RMSE、準確率、召回率、覆蓋率相對較好.
2)不同平衡系數值的實驗對比
公式(15)中的融合矩陣分解平衡系數λ1和λ2分別控制用戶興趣信息和電影相似度信息對結果的影響比例,本次實驗設置a(λ1=0,λ2=0)、b(λ1=0,λ2=1)、c(λ1=1,0)、d(λ1=1,λ2=1)、e(λ1=1,λ2=2),f(λ1=2,λ2=1)共6組實驗進行對比,其他參數和表4保持一致,實驗結果如圖5所示.
通過實驗發現,a組相對其他5組的準確率、召回率、覆蓋率最低,RMSE值最高.a組λ1和λ2都為0,算法退化為傳統的矩陣推薦算法,其他五組都在傳統的矩陣推薦算法中融入了用戶興趣信息或電影相似度信息,證明融入相關輔助信息可以改進傳統矩陣推薦算法.同時融入了用戶興趣信息和電影相似度信息的d、e、f三組實驗結果優于只融入了其中一種信息的b、c兩組實驗結果.在d、e、f三組實驗中e(λ1=1,λ2=2)組的準確率、召回率、覆蓋最高,RMSE最低.
3)和其他算法對比
為了進一步驗證本文算法的有效性,把本文算法(MHI_MF)和基于用戶(UCF)的協同過濾、基于物品(ICF)的協同過濾、傳統矩陣分解推薦算法(FunkSVD)、在本文算法基礎上不考慮遺忘曲線memory(t)的改進算法(MHI_CF-m)、文獻

圖5 不同平衡系數組合下的實驗結果對比

圖6 不同算法間的實驗結果對比
通過實驗結果圖6可以看出,FunkSVD相比于UCF和ICF兩種協同過濾算法的性能指標要好,其他四種改進的算法(MHI_MF、MHI_CF-m、HIN_UCF、ICFUIC)相比于FunkSVD算法的性能指標更好,本文改進算法(MHI_MF)算法相比其他三種改進算法(MHI_CF-m、HIN_UCF、ICFUIC)的性能指標更好.HIN_UCF在協同過濾推薦算法加入了相關輔助信息但沒有考慮用戶興趣的變化,ICFUIC考慮了用戶的興趣變化但沒有引入其他的輔助信息,本文MHI_MF算法兩者皆有考慮,說明了融合多元異構信息的有效性.而通過MHI_MF算法和MHI_CF-m的對比,近一步證明了本文算法引入遺忘曲線是有效果的.
傳統矩陣分解的推薦算法為靜態推薦模型,沒有考慮用戶興趣隨時間的變化,并且算法十分依賴評分數據的稠密度,當數據稀疏時算法效果不佳,而現實當中我們往往面臨的數據又十分稀疏的.針對這兩個問題,本文提出一種融合用戶點評數據、用戶-物品評分數據、物品異構信息和遺忘曲線的改進型矩陣分解推薦算法.通過融合多種異構信息緩解評分數據稀疏問題,并且增強了矩陣推薦算法的可解釋性;通過遺忘曲線模擬人的心理學變化和數據的保鮮度,從而反映用戶的興趣變化.最后通過多組實驗對比證明了本文算法的有效性.雖然本文對傳統矩陣分解推薦算法進行了很好的改進,但依然存在不足,例如,當面對海量數據時,矩陣分解的效率低下,而隨著互聯網的快速發展,將來面臨的數據越來越龐大,如何在海量數據中如何設計高效的推薦算法是進一步需要研究的方向.