于 波,楊紅立,冷 淼
(中國科學(xué)院大學(xué),北京 100049)
(中國科學(xué)院 沈陽計(jì)算技術(shù)研究所,沈陽 110168)
隨著互聯(lián)網(wǎng)特別是移動互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)上的資源呈指數(shù)級增長,網(wǎng)上資源嚴(yán)重過載[1,2].傳統(tǒng)的搜索引擎技術(shù)已經(jīng)不能滿足人們的實(shí)際需要,而推薦系統(tǒng)可以利用用戶行為信息和物品內(nèi)容信息挖掘人們可能感興趣的物品,從而進(jìn)行個(gè)性化的信息推薦[1,3].因此推薦系統(tǒng)利用本身獨(dú)特的優(yōu)勢開始逐步融入到日常生活中,減短人們獲取信息的時(shí)間,它被大量地應(yīng)用在網(wǎng)絡(luò)商城、信息檢索和互聯(lián)網(wǎng)廣告等領(lǐng)域[1,2].好的推薦系統(tǒng)不僅僅可以給用戶推薦個(gè)性化信息,而且可以增加用戶對網(wǎng)站的依賴性.推薦系統(tǒng)同時(shí)也面臨著眾多的問題:數(shù)據(jù)稀疏性問題[4]、冷啟動問題[5]、計(jì)算量大[6]、擴(kuò)展性問題[7]等.目前國內(nèi)外的眾多學(xué)者已經(jīng)針對這些問題進(jìn)行了一系列的研究.文獻(xiàn)[8]首先介紹了協(xié)同過濾推薦技術(shù)所面臨的問題,接著介紹了解決這些問題的方案,最后指明了協(xié)同過濾推薦技術(shù)未來的研究重點(diǎn).文獻(xiàn)[9]提出了一種基于共同評分和相似性權(quán)重的協(xié)同過濾推薦算法.文獻(xiàn)[10]提出將時(shí)間因素融入用戶項(xiàng)目評分矩陣中,以解決興趣衰減的問題.文獻(xiàn)[11]提出利用基于用戶協(xié)同過濾算法計(jì)算出鄰居集,再結(jié)合加權(quán) Slope One 算法,預(yù)測項(xiàng)目評分,實(shí)現(xiàn)對用戶個(gè)性化信息推薦.文獻(xiàn)[12]提出了為了降低用戶推薦的計(jì)算時(shí)間,提出了一種改進(jìn)的層次聚類協(xié)同過濾用戶推薦算法.對用戶聚類,按照分類計(jì)算出每個(gè)用戶的推薦列表.上述這些研究著重于利用某種機(jī)制改進(jìn)用戶相似度的計(jì)算或者加速用戶相似度的計(jì)算,忽略了物品內(nèi)容信息對用戶偏好的影響.在傳統(tǒng)協(xié)同過濾機(jī)制中直接利用評分矩陣來挖掘出目標(biāo)用戶的偏好,但并不能反映出目標(biāo)用戶真實(shí)的興趣愛好.例如電影《泰坦尼克號》的屬性為愛情、災(zāi)難、萊昂納多、卡梅隆等,用戶選擇該電影是因?yàn)樗侵鹘侨R昂納多的影迷,但通過評分矩陣無法體現(xiàn)該用戶的興趣所在[13].因此本文提出通過結(jié)合物品內(nèi)容信息和用戶行為信息來構(gòu)建用戶興趣模型,利用用戶興趣模型進(jìn)行推薦,這充分發(fā)揮了物品內(nèi)容對用戶興趣愛好的影響.推薦結(jié)果在準(zhǔn)確率和召回率等方面相比傳統(tǒng)的基于用戶的協(xié)同過濾有著明顯的提高.
主題模型[14–17]是對文字隱含主題的一種建模方式,它可以挖掘文本中潛在的主題.LDA[18]是主題模型中最經(jīng)典的一種算法.它也是一種生成模型[14],認(rèn)為一篇文檔中每個(gè)單詞都是經(jīng)過“以一定概率選擇某個(gè)主題,并在這個(gè)主題中以一定概率選擇某個(gè)單詞”這一過程得到的.根據(jù)LDA主題模型的生成過程[16,17]的定義,那么每篇文檔中詞語出現(xiàn)的概率如式(1)所示.
LDA的概率圖模型如圖1所示.其中,M是文檔數(shù)量;K是主題個(gè)數(shù);V是詞袋長度;Nm是第m篇文檔中單詞的總數(shù);α和β是先驗(yàn)參數(shù);θ是一個(gè)M×K的矩陣,θm表示第m篇文檔的主題分布.α到θ到Z的過程表示在生成第m篇文檔時(shí),先確定第m篇文檔的主題分布,然后確定第m篇文檔中的第n個(gè)詞語的主題.φ是一個(gè)K×V的矩陣,φk表示第k個(gè)主題的詞分布;β到φ到W的過程表示在K個(gè)主題中,選出編號為Zm,n的主題,然后生成第m篇文檔中的第n個(gè)詞語Wm,n.LDA算法的輸入是大規(guī)模的文檔集合、兩個(gè)超參數(shù)和主題個(gè)數(shù),經(jīng)過LDA主題模型的訓(xùn)練之后得到兩個(gè)分布,分別為文檔-主題概率分布和主題-單詞概率分布.
圖1 LDA 的概率圖模型
基于用戶的協(xié)同過濾算法[3,8]認(rèn)為,一個(gè)用戶會喜歡和他有相似興趣愛好的最近鄰所喜歡的東西[14],其主要利用行為的相似度計(jì)算興趣的相似度.
用戶相似度的計(jì)算是基于共同評分的項(xiàng)目集進(jìn)行的,通常利用余弦相似度[19,20]進(jìn)行計(jì)算,如式(2)所示:
其中,D(i)表示對物品i有過行為的用戶集,N(u)表示用戶u有過行為的物品集合.
基于用戶的協(xié)同過濾算法如算法1.
算法1.基于用戶的協(xié)同過濾算法輸入:評分矩陣R,物品集D,用戶集N,目標(biāo)用戶u輸出:目標(biāo)用戶u的推薦列表Begin:Usim={},sim={},rank={}forvinN:fordinN(u)anddinN(v):sim(u,v)+= 1/(ln(1 +len(D(d))));
end for sim(u,v)/=(len(N(u))* len(N(v)));end for Usim= sorted(sim(u,v))[0:N];forvinUsim:foriinN(v)andinot inN(u):rank(i)+=sim(u,v)end for end for return sorted(rank)[0:N]
雖然基于用戶的協(xié)同過濾對物品冷啟動問題不敏感,但需要解決第一推動力問題,即第一個(gè)用戶如何發(fā)現(xiàn)新物品.如果將物品隨機(jī)展示給用戶,顯然不太個(gè)性化,因此可以考慮利用物品的內(nèi)容信息,將新物品投放給曾經(jīng)喜歡過和它內(nèi)容相似的物品的用戶[20].
通過分析用戶的歷史評分記錄來創(chuàng)建用戶歷史興趣模型,進(jìn)而為用戶推薦一組物品.用戶的歷史記錄是有限的,因此存在數(shù)據(jù)稀疏性問題.針對此問題,提出了以用戶行為和物品內(nèi)容為基礎(chǔ)來構(gòu)建用戶興趣模型,從而為用戶進(jìn)行推薦.
首先通過標(biāo)題、導(dǎo)演、編劇、主演、類型和簡介等等來給電影劃分屬性,生成電影-屬性分布文件.然后在電影-屬性分布上利用LDA主題模型進(jìn)行建模,得到電影-主題概率分布,利用這個(gè)分布計(jì)算相似性.
給定電影集M={m1,m2,…,mn},將每個(gè)電影看成一個(gè)單獨(dú)的文檔,對于文檔中內(nèi)容信息諸如像導(dǎo)演、主演等實(shí)體的話可以直接將這些實(shí)體作為電影屬性,但諸如像簡介等需要對文本內(nèi)容進(jìn)行分詞,從字流變?yōu)樵~流,從詞流中提取出命名實(shí)體,將這些命名實(shí)體也作為電影屬性,形成電影-屬性分布.在電影-屬性分布上利用LDA算法進(jìn)行建模,設(shè)置主題個(gè)數(shù)為K,從而得到主題特征序列[21]F=(f1,f2,…,fk)和電影-主題概率分布矩陣Θ,如式(3)所示:
對于任意用戶,利用評論過的電影和電影-主題概率分布矩陣Θ進(jìn)行數(shù)學(xué)運(yùn)算,得到與F對應(yīng)的權(quán)值向量稱為用戶歷史興趣模型(User History Interest Model,UHIM),其數(shù)學(xué)式為UHIM=(w11,w12,…,w1i,…,w1k),其中,w1i表示主題詞fi在UHIM中的權(quán)值.用戶u的UHIM中主題詞fi的權(quán)值計(jì)算如式(4)所示,該值代表了用戶現(xiàn)有情況下的興趣分布情況,較好了反映了用戶歷史的興趣愛好.
其中,Mu是用戶u評論的電影集合.
對于任意用戶,利用評論過的電影計(jì)算用戶行為之間的相似度,通過協(xié)同過濾將相似用戶群的歷史模型推薦給該用戶,得到與F對應(yīng)的權(quán)值向量稱為用戶行為興趣模型(User Actor Interest Model,UAIM),其數(shù)學(xué)式為UAIM=(w21,w22,…,w2i,…,w2k),其中,w2i表示主題詞fi在UAIM中的權(quán)值.在選擇相似用戶群時(shí)選擇相似度最大的前h個(gè)用戶.
用戶u和用戶v的行為相似度計(jì)算如式(2)所示.
用戶u的UAIM中主題詞fi權(quán)值計(jì)算如式(5)所示:
其中,Uact為用戶u的行為相似用戶群.
對于任意用戶,結(jié)合電影的內(nèi)容信息計(jì)算用戶內(nèi)容之間的相似度,通過協(xié)同過濾將相似用戶群的歷史興趣模型推薦給該用戶,得到與F對應(yīng)的權(quán)值向量稱為用戶內(nèi)容興趣模型(User Content Interest Model,UCIM),其數(shù)學(xué)式為UCIM=(w31,w32,…,w3i,…,w3k),其中,w3i表示主題詞fi在UCIM中的權(quán)值.在選擇相似用戶群時(shí)選擇相似度最大的前h個(gè)用戶.
設(shè)用戶u評論的電影集Mu={mu1,mu2,…,mus},歷史模型UHIMu=(w1u1,w1u2,…,w1uk),用戶v評論的電影集Mv={mv1,mv2,…,mvt},UHIMv=(w1v1,w1v2,…,w1vk).
用戶u和用戶v的內(nèi)容相似度計(jì)算如式(6)所示.
用戶u的UCIM中主題詞fi權(quán)值計(jì)算如式(7)所示:
其中,Ucon為用戶u的內(nèi)容相似用戶群.
得到目標(biāo)用戶的UHIM、UAIM和UCIM后,將三個(gè)興趣模型的主題詞權(quán)值進(jìn)行合并,可得到用戶興趣模型(User Interest Model,UIM),其數(shù)學(xué)表達(dá)形式為UIM=(w41,w42,…,w4i,…,w4k),其中,w4i表示主題詞fi在UIM中的權(quán)值.
設(shè)目標(biāo)用戶u的UHIMu=(w1u1,w1u2,…,w1uk)、UAIMu=(w2u1,w2u2,…,w2uk)、UCIMu=(w3u1,w3u2,…,w3uk),UIMu=(wu1,wu2,…,wuk),則用戶u的UIM中主題詞fi的權(quán)值計(jì)算如式(8)所示:
將候選電影集同目標(biāo)用戶UIM進(jìn)行相似度計(jì)算,進(jìn)行TOP-N推薦.
設(shè)候選電影Mcs={m1,m2,…,mh}.目標(biāo)用戶u和候選電影之間的相似度計(jì)算如式(9)所示:
構(gòu)建用戶興趣模型算法的描述如算法2.
首先將電影內(nèi)容向量化,利用LDA模型建模,生成電影-主題概率分布矩陣Θ;其次分析用戶記錄,構(gòu)建用戶歷史興趣模型UHIM;再次利用用戶記錄計(jì)算用戶行為相似度,從而構(gòu)建用戶行為興趣模型UAIM;最后結(jié)合物品內(nèi)容信息計(jì)算用戶內(nèi)容相似度,進(jìn)而構(gòu)建用戶內(nèi)容興趣模型UCIM,融合UHIM、UAIM和UCIM生成用戶興趣模型UIM.
算法2.構(gòu)建用戶興趣模型的算法輸入:電影-主題概率分布矩陣Θ,用戶集N,目標(biāo)用戶u輸出:目標(biāo)用戶u的興趣模型Begin:UHIMu=(w1u1,…,w1ui,…,w1uk),UAIMu=(w2u1,…,w2ui,…,w2uk),UCIMu=(w3u1,…,w3ui,…,w3uk),UIMu=(w4u1,…,w4ui,…,w4uk),Ucon={},Uact={},simcon={},simact={}// calculateUHIMufordinN(u):w1ui+=wdi;end for w1ui/= len(N(u));
實(shí)驗(yàn)數(shù)據(jù)采用豆瓣電影網(wǎng)的1337部電影,1535個(gè)用戶,109 398條評分記錄作為實(shí)驗(yàn)數(shù)據(jù)集.
本文使用離線實(shí)驗(yàn)方法進(jìn)行評測[20].評價(jià)指標(biāo)選用準(zhǔn)確率/召回率和F值來評測推薦算法的精度.召回率[17,20]描述有多少真正產(chǎn)生過行為的物品包含在最終的推薦列表中;準(zhǔn)確率[3,20]描述最終的推薦列表中包含多少真正產(chǎn)生過行為的物品;F值[19,21]是準(zhǔn)確率和召回率之間的調(diào)和平均值.對用戶u推薦N個(gè)物品,記為R(u);用戶u在測試集合上產(chǎn)生過行為的物品記為T(u).召回率計(jì)算如式(10)所示.
準(zhǔn)確率計(jì)算如式(11)所示.
F值計(jì)算如式(12)所示.
(1)主題個(gè)數(shù)K的確定
利用LDA主題模型進(jìn)行建模時(shí),需要設(shè)定主題個(gè)數(shù)K的大小,表1顯示了當(dāng)給每個(gè)用戶推薦電影數(shù)目為20時(shí),不同的K值對召回率、準(zhǔn)確率和F值的影響,可以看出K為20的時(shí)候是最佳值.
表1 不同的主題個(gè)數(shù)對應(yīng)的召回率、準(zhǔn)確率和F值
(2)最近鄰h的確定
構(gòu)建UAIM和UCIM時(shí)需要設(shè)置最近鄰的個(gè)數(shù),表2顯示了當(dāng)主題個(gè)數(shù)為20并且給每個(gè)用戶推薦電影數(shù)為20的時(shí)候,不同h值對召回率、準(zhǔn)確率和F值的影響,可以看出相似用戶數(shù)為30的時(shí)候是最佳值.
表2 不同的h值對應(yīng)的召回率、準(zhǔn)確率和F值
(3)不同推薦方法下召回率、準(zhǔn)確率和F值.
圖2顯示了主題個(gè)數(shù)為20,最近鄰為30時(shí),不同的推薦電影數(shù)目對三種推薦算法在召回率方面的影響.隨著推薦電影數(shù)量的增加,召回率均隨之增加.
圖3顯示了主題個(gè)數(shù)為20,最近鄰為30時(shí),不同的推薦電影數(shù)目對三種推薦算法在F值方面的影響.隨著推薦電影數(shù)量的增加,準(zhǔn)確率隨之降低.
圖2 召回率對比
圖3 準(zhǔn)確率對比
圖4顯示了主題個(gè)數(shù)為20,最近鄰為30時(shí),不同的推薦電影數(shù)目對三種推薦算法在召回率方面的影響.推薦電影數(shù)量為40,F值最佳.
圖4 F值對比
通過上述的對比可以看出,本文采用的方法在推薦質(zhì)量上要優(yōu)于傳統(tǒng)的推薦算法,從而證明了該模型的可行性.
本文針對傳統(tǒng)協(xié)同過濾算法中面臨的數(shù)據(jù)冷啟動和稀疏性的問題,提出了一種基于用戶興趣模型的電影推薦算法,該算法首先利用用戶記錄和物品信息構(gòu)建用戶歷史興趣模型,然后使用協(xié)同過濾算法挖掘出用戶行為興趣模型和用戶內(nèi)容興趣模型,最后將三種模型進(jìn)行融合,再與候選電影集進(jìn)行相似度計(jì)算.最后通過實(shí)驗(yàn)驗(yàn)證,表明本文算法在一定程度上改善了數(shù)據(jù)稀疏性問題,提高了算法的推薦質(zhì)量.面對日益增多的用戶,數(shù)據(jù)量的急劇增加,算法的擴(kuò)展性問題成為制約推薦系統(tǒng)實(shí)施的重要因素,尤其當(dāng)用戶量達(dá)到一定水平時(shí),用戶相似度的計(jì)算量是巨大的,傳統(tǒng)的推薦算法會遇到嚴(yán)重的瓶頸問題,該問題解決不好,將會直接影響推薦系統(tǒng)的質(zhì)量,那么下一步的重點(diǎn)是解決算法的擴(kuò)展性問題.