閔潞,王根生,,3,黃學(xué)堅
(1.江西財經(jīng)大學(xué) 人文學(xué)院,江西 南昌 330013;2.江西財經(jīng)大學(xué) 計算機實踐教學(xué)中心,江西 南昌 330013;3.江西財經(jīng)大學(xué) 國際經(jīng)貿(mào)學(xué)院,江西 南昌 330013)
推薦算法是解決網(wǎng)絡(luò)信息過載問題的一種典型技術(shù),在網(wǎng)絡(luò)媒體、電子商務(wù)、新聞廣告等領(lǐng)域均得到了廣泛應(yīng)用[1]。目前,推薦算法根據(jù)推薦引擎的不同主要分為3類,即基于內(nèi)容過濾推薦、協(xié)同過濾推薦和混合推薦[2]。協(xié)同過濾推薦算法基于用戶歷史行為數(shù)據(jù),沒有領(lǐng)域限制,是目前應(yīng)用最為廣泛的一種推薦算法,其主要分為基于用戶(user-based CF)的協(xié)同過濾、基于項目(item-based CF)的協(xié)同過濾和基于模型(model-based CF)的協(xié)同過濾。基于用戶和項目的協(xié)同過濾推薦算法面對用戶歷史評價矩陣數(shù)據(jù)稀疏時無法起到較好的推薦效果[3],基于模型的協(xié)同過濾使用機器學(xué)習(xí)的算法思路進行建模,可在一定程度上解決矩陣稀疏問題[4],矩陣分解推薦算法就是一種基于模型協(xié)同過濾的典型算法[5]。
矩陣分解推薦算法只利用用戶-項目評價矩陣,沒有考慮其他因素,導(dǎo)致推薦結(jié)果準確率不高,針對這個問題,國內(nèi)外不少學(xué)者提出了改進方案。如文獻[6]提出一種基于屬性耦合的矩陣分解方法,將項目屬性信息合并到矩陣分解模型中;文獻[7]引入用戶間的信任關(guān)系,提高了矩陣分解推薦算法的性能;文獻[8]在利用用戶-項目評價顯式信息的基礎(chǔ)上,加入其他的隱式信息(如瀏覽、購買和點擊歷史等);余永紅等[9]利用社交網(wǎng)絡(luò)信息計算用戶的社會地位,把用戶的社會地位融合到矩陣分解推薦算法之中;李昆侖等[10]提出一種近鄰用戶影響力的數(shù)學(xué)模型,考慮近鄰用戶對目標用戶的影響,并把這個模型整合到矩陣分解推薦算法中;文凱等[11]提出一種融合社交網(wǎng)絡(luò)和用戶間興趣偏好相似度的正則化矩陣分解推薦算法。上述研究結(jié)果發(fā)現(xiàn),引入用戶或項目的額外相關(guān)信息是目前改進矩陣分解推薦算法的主要路徑。隨著知識圖譜技術(shù)的發(fā)展,目前業(yè)界已經(jīng)有大量開放的語義知識數(shù)據(jù),如通用知識圖譜Freebase、OpenKN和DBpedia,特定領(lǐng)域知識圖HerbNet(中醫(yī)領(lǐng)域)、WolframAlpha(數(shù)學(xué)領(lǐng)域)和BMKG(影視領(lǐng)域)等。通過知識圖譜表示學(xué)習(xí)算法可以將推薦對象所處領(lǐng)域的語義數(shù)據(jù)嵌入到一個低維語義向量空間,所以本文提出一種融合語義相似度的矩陣分解推薦算法,把推薦對象間語義相似度融入矩陣分解的目標優(yōu)化函數(shù)中,彌補矩陣分解推薦算法沒有考慮推薦對象本身特征的不足。
矩陣分解推薦算法(FunkSVD)通過用戶-項目評分矩陣分解出兩個低維的用戶和項目特征矩陣,利用這兩個矩陣去擬合用戶對項目的評分,并對未評分項目進行預(yù)測。矩陣分解表示為
R≈UVT,
(1)
式中:R為用戶-項目實際評分矩陣;U∈Rm×d為分解出的用戶特征矩陣;V∈Rn×d為分解出的項目特征矩陣;m,n分別為用戶和項目的個數(shù),d為用戶和項目特征維度。
用戶i對項目j的預(yù)測評分計算式為
(2)
式中:Ui為用戶i的特征;Vj為項目j的特征。
為使式(1)最大程度擬合用戶-項目的真實評分數(shù)據(jù),使用線性回歸的思路,建立目標優(yōu)化函數(shù),具體為
(3)
使用梯度下降法進行目標優(yōu)化函數(shù)(3)的求解,具體為
(4)
(5)
Ui=Ui-α[?J/(?Ui)],
(6)
Vj=Vj-α[?J/(?Vj)],
(7)
式中,α為學(xué)習(xí)率。
基于FunkSVD算法,文獻[12]提出一種改進的Biased MF算法,Biased MF在目標優(yōu)化函數(shù)(式(3))中引入全局平均分項、用戶偏置項(用戶評價平均分與全局平均分差值)和項目偏置項(項目所得平均分與全局平均分差值),最終目標優(yōu)化函數(shù)為
(8)
式中:μ為全局平均分項;αi為用戶i偏置項;βj為項目j偏置項。
Biased MF用戶i對項目j預(yù)測評分計算式為
(9)
Google在2012年提出了知識圖譜概念,用于構(gòu)建其下一代語義智能搜索引擎。知識圖譜使用“實體-關(guān)系-實體”三元組描述現(xiàn)實世界中的實體和實體之間的關(guān)系,通過關(guān)系構(gòu)成網(wǎng)狀的知識結(jié)構(gòu)[13]。知識圖譜分布式表示學(xué)習(xí)對知識圖譜中的實體和關(guān)系進行分布式表示,得出包含語義關(guān)系的低維向量表示[14]。TransE模型[15]因參數(shù)簡單,計算復(fù)雜度低,在大規(guī)模知識圖譜上性能顯著,是目前主流的知識圖譜分布式表示學(xué)習(xí)模型[16]。對于每個三元組(h,r,t),其中h,t分別為頭實體和尾實體,r為頭尾實體間的關(guān)系,TransE模型把h,t和r分別表示為嵌入向量vh,vt和vr,vr為向量vh和vt間的平移,也稱為向量vh到vt的翻譯,三者之間的關(guān)系為
vh+vr≈vt,
(10)
TransE模型要使公式(10)無限接近,之間的誤差越小,說明頭尾兩個實體間越可能存在關(guān)系r,所以TransE模型的損失函數(shù)為
(11)
f(vh′,vr,vt′)+γ),
(12)
式中:S為所有三元組集合,稱為正樣本;S′為集合S的負采樣,即對S中每個存在的三元組隨機替換掉其頭實體或尾實體,得到一個新的三元組,且該三元組不屬于S;γ為正負樣本間的距離。
TransE模型沒有區(qū)分不同關(guān)系下的實體,在處理復(fù)雜關(guān)系的知識圖譜時存在不足,針對這個問題,文獻[17]提出了TransR模型,把實體和關(guān)系嵌入到不同的空間中,在對應(yīng)的關(guān)系空間中實現(xiàn)實體表示,其損失函數(shù)為
(13)
式中:Mr為關(guān)系r的投影矩陣;vhMr為實體向量vh投影到關(guān)系r的空間。
針對矩陣分解推薦算法只利用用戶-項目評價矩陣,沒有考慮項目本身的內(nèi)涵特征知識,導(dǎo)致推薦結(jié)果不佳的問題,本文提出一種融合語義相似度的矩陣分解推薦算法,把推薦對象間語義相似度融入矩陣分解的目標優(yōu)化函數(shù)中,從語義視角彌補矩陣分解推薦算法沒有考慮推薦對象本身內(nèi)涵特征的不足,算法流程如圖1所示。
算法流程分為4步,即語義向量表示、項目語義相似度計算、融合矩陣分解和推薦列表生產(chǎn)。
圖1 算法流程圖
根據(jù)知識圖譜分布式表示學(xué)習(xí)算法,得出推薦對象所屬領(lǐng)域中所有實體和關(guān)系的向量表示,在實體向量中篩選出推薦對象的實體表示。該推薦對象的向量表示融合了整個領(lǐng)域中和其有關(guān)的實體知識,所以該向量表示包含了推薦對象上下文語義知識。推薦對象實體表示為一個d維語義向量,即
Ii=(E1i,E2i,…,Edi)T,
(14)
式中:Ii為項目i的語義向量;Eni為第n維上的值。
相似度計算主要有余弦相似度、皮爾遜相似度、Jaccard 相似度、對數(shù)似然相似度、歐式距離相似度。知識圖譜分布式表示學(xué)習(xí)算法訓(xùn)練時損失函數(shù)是基于歐式距離,為了保持一致性,項目語義的相似度同樣采用歐式距離作為衡量,計算式為
(15)
將其規(guī)約到(0,1]之間,規(guī)約計算式為
sim(i,j)=1/[1+d(Ii,Ij)],
(16)
sim(i,j)值越大,說明項目i和j語義越相近。
融合項目語義相似度的矩陣分解算法的思想是語義相近的項目,其特征向量也應(yīng)該相似,所以基于這思想,把項目語義相似度融合到Biased MF矩陣分解的目標優(yōu)化函數(shù)公式(8)中,融合后的目標優(yōu)化函數(shù)為
(17)
融合矩陣分解出兩個低維的用戶特征矩陣和項目特征矩陣,利用式(9)計算預(yù)測評分,基于預(yù)測評分越高,用戶對其越感興趣的原則,設(shè)置一個閾值,把大于該閾值的預(yù)測評分項目推薦給用戶。
選取電影推薦作為研究對象,實驗數(shù)據(jù)來源于豆瓣影評數(shù)據(jù),數(shù)據(jù)包含 7 815個用戶對1 593部電影的214 920條評論。用戶對電影的喜愛程度通過其對電影的星級評價衡量,星級分為1~5星,星級越大,說明用戶對該電影越喜愛。本實驗把4~5星標注為用戶喜愛的電影,1~3星標注為用戶不喜愛的電影。
本實驗選用清華大學(xué)知識工程試驗研究室發(fā)布的最新雙語影視知識圖譜(BMKG)[18],該知識圖譜包含72萬多個和影視相關(guān)的實體,91個屬性,1 300多萬條三元組,融合了豆瓣電影、百度百科和LinkedMdb等多個中英文影視數(shù)據(jù)。為了減少知識圖譜分布式表示學(xué)習(xí)算法的訓(xùn)練時間,文本從BMKG中只抽取出和實驗數(shù)據(jù)相關(guān)的知識。
本實驗使用準確率(Precision),召回率(Recall),覆蓋率(Coverage)3個指標進行算法性能衡量,計算式分別為
Precision=TP/(TP+FP),
(18)
Recall=TP/(TP+FN),
(19)
Coverage=Nd/N,
(20)
式中,TP,FP,FN為混合矩陣中的值,具體如表1所示;N為實驗中所有電影種類個數(shù);Nd為推薦算法給出的電影種類數(shù)目。覆蓋率越高,說明算法對冷門物品越具有很好的推薦能力,推薦結(jié)果具有多樣性和新穎性。
為了對算法性能進行更精準的衡量,本文使用k-交叉驗證的方式進行驗證,k值取5,即隨機把試驗數(shù)據(jù)均分成5份,每次挑選其中1份作為測試集,其他4份作為訓(xùn)練集,一共進行5次測試,使用5次測試的平均值作為算法最終評價。
表1 混合矩陣
實驗具體步驟如下。
Step1 根據(jù)影視知識圖譜(BMKG)抽取和實驗數(shù)據(jù)相關(guān)的知識。
Step2 使用知識圖譜表示學(xué)習(xí)算法TransR對抽取的知識進行訓(xùn)練,得出電影實體的語義向量表示。
Step3 根據(jù)訓(xùn)練數(shù)據(jù)集構(gòu)建用戶-電影評分矩陣。
Step4 根據(jù)電影的語義向量,計算電影間的語義相似度,具體計算見公式(16)。
Step5 結(jié)合用戶-電影評分矩陣和語義相似度進行融合矩陣分解,目標優(yōu)化函數(shù)見公式(17)。
Step6 根據(jù) Step5得出的結(jié)果,對測試數(shù)據(jù)集進行預(yù)測評分,具體計算見式(9),并且預(yù)測評分≥8分的電影放入推薦列表。
Step7 統(tǒng)計測試數(shù)據(jù)集的準確率,召回率,覆蓋率3個指標。
Step8 改變訓(xùn)練集和測試集,重復(fù)Step3~Step7的實驗過程,一共重復(fù)5次。
Step9 統(tǒng)計5次實驗的平均準確率,召回率和覆蓋率。
3.3.1 電影實體語義向量不同維度的實驗對比
在進行知識圖譜分布式表示時,不同的電影實體向量表示維度會對實驗結(jié)果產(chǎn)生一定的影響,所以設(shè)置維度50,100,150,200共4組對比實驗,實驗過程中的其他關(guān)鍵參數(shù)如表2所示,實驗結(jié)果如圖2所示。
表2 實驗關(guān)鍵參數(shù)設(shè)置
圖2 電影實體語義向量不同維度下的實驗結(jié)果對比
通過圖2可以看出,當知識圖譜分布式表示算法的實體維度設(shè)定為100時,本文算法的準確率、召回率、覆蓋率相對較好。
3.3.2 不同用戶和電影特征維度的實驗對比
在進行矩陣分解時需要設(shè)定用戶和電影的特征維度d,設(shè)為10,20,30,40,50,60,70,80,90,100共10組實驗進行對比,電影實體語義向量維度設(shè)為100,其他參數(shù)和表2保持一致,實驗結(jié)果如圖3所示。
圖3 用戶和電影特征不同維度的實驗結(jié)果對比
由圖3可知,當矩陣分解出的用戶和電影維度為80時,算法的準確率、召回率、覆蓋率較好。
3.3.3 不同融合系數(shù)值的實驗對比
式(17)中的融合系數(shù)λ2控制語義相似度在整個算法中所占的比例,本次實驗設(shè)為0,0.5,1.0,1.5,2.0共5組λ2值,進行實驗對比,電影實體語義向量維度都設(shè)為100,用戶和電影特征維度設(shè)為80,其他參數(shù)和表1保持一致,實驗結(jié)果如圖4所示。
圖4 不同融合系數(shù)的實驗結(jié)果對比
當融合系數(shù)為0時,本文算法退化成Biased MF矩陣分解推薦算法,當融合系數(shù)不為0時,即在Biased MF算法中融合了電影的語義相似度。通過實驗結(jié)果可以發(fā)現(xiàn),該融合算法提高了Biased MF矩陣分解推薦算法的準確率、召回率和覆蓋率,并且當融合系數(shù)為1.5時相對效果最好。
3.3.4 和其他矩陣分解推薦算法的實驗對比
為了進一步驗證本文算法的有效性,把本文算法和文獻[12]提出的引入偏置的矩陣分解推薦算法(Biased MF)、傳統(tǒng)矩陣分解推薦算法(FunkSVD)進行實驗對比,本文算法的實體語義向量維度設(shè)為100,融合系數(shù)λ2設(shè)為1.5,其他參數(shù)和表1保持一致,實驗結(jié)果如圖5所示。
圖5 不同矩陣分解推薦算法的實驗結(jié)果對比
通過圖5可以看出,本文算法和Biased MF相比于FunkSVD,具有更高的準確率,召回率和覆蓋率,本文算法也比Biased MF算法的準確率,召回率和覆蓋率高。
基于矩陣分解的推薦算法,在一定程度上解決了協(xié)同過濾中矩陣稀疏問題,但算法僅利用了用戶-項目評價矩陣,沒有考慮項目的額外相關(guān)信息,導(dǎo)致推薦結(jié)果不夠準確。因此,本文提出一種融合語義相似度的矩陣分解推薦算法,通過知識圖譜分布式表示學(xué)習(xí)算法得出項目的語義相似度,把該語義相似度融合到矩陣分解的目標優(yōu)化函數(shù)中,使語義相似的項目特征向量也相近,并且通過實驗證明了本文算法的有效性。雖然本文算法對傳統(tǒng)矩陣分解推薦算法進行了部分改進,但還存在一定的不足:一方面是算法依賴于開源的知識圖譜,導(dǎo)致算法具有一定的領(lǐng)域限制;另一方面,當面對海量數(shù)據(jù)時,矩陣分解的效率低;此外,算法也沒有考慮到用戶興趣漂移和數(shù)據(jù)時效性問題,這些都是下一步值得研究的地方。