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