張舒娟,靳 禎
(1. 中北大學(xué) 機(jī)電工程學(xué)院,山西 太原 030051; 2. 中北大學(xué) 大數(shù)據(jù)學(xué)院,山西 太原 030051;3. 山西大學(xué) 復(fù)雜系統(tǒng)研究所,山西 太原 030006)
目前,已有很多的推薦算法被提出,包括協(xié)同過濾推薦[1-3]、基于內(nèi)容的推薦[4-5],混合推薦[6-7]. 隨著復(fù)雜網(wǎng)絡(luò)概念的提出,一些研究者還提出了基于網(wǎng)絡(luò)的推薦方法[8-10]. 根據(jù)這種方法,推薦系統(tǒng)一般被表示成由節(jié)點(diǎn)和邊構(gòu)成的一種特殊的網(wǎng)絡(luò),通常采用二分網(wǎng)絡(luò),它有兩種類型的節(jié)點(diǎn): 一種表示用戶,另一種表示物品. 二分網(wǎng)絡(luò)中連接節(jié)點(diǎn)的每條邊表示這兩種類型節(jié)點(diǎn)之間的相互作用或相互關(guān)系[11-12]. 以上這些方法已被應(yīng)用到許多特定領(lǐng)域,例如電影的推薦. 2012年,Choi等人[13]提出了一種基于類型相關(guān)的改進(jìn)方法,并使用GroupLens電影數(shù)據(jù)庫進(jìn)行了實(shí)驗(yàn)研究. 2014年,Wang等人[14]研究了一種混合的基于模型的電影推薦系統(tǒng),該系統(tǒng)利用改進(jìn)的K-均值聚類算法和遺傳算法劃分用戶空間. 2016年,Wei等人[15]利用社會(huì)標(biāo)簽和評(píng)分提出了一種電影推薦方法. 同年,Hwang等人[16]提出了一種關(guān)于電影推薦的算法,該算法利用電影的類型提高了評(píng)分預(yù)測(cè)的準(zhǔn)確性. 2017年,Soni等人[17]研究了基于內(nèi)容的算法、基于用戶的協(xié)同過濾算法和基于評(píng)論的文本挖掘算法在個(gè)性化電影推薦系統(tǒng)中的應(yīng)用. 然而,這些方法和研究沒有考慮物品(電影)的多屬性問題和用戶偏好問題,而這兩點(diǎn)對(duì)推薦結(jié)果起著重要作用.
鑒于以上的兩個(gè)問題,本文以用戶和電影構(gòu)成的系統(tǒng)作為研究對(duì)象,一方面考慮每部電影都有多種屬性,例如,電影類型、導(dǎo)演和演員等,基于多種屬性計(jì)算電影之間的相似性,提出了基于物品(電影)屬性的推薦; 另一方面使用現(xiàn)有的方法計(jì)算推薦分時(shí),可以知道每個(gè)用戶看過的電影,但卻不能具體地區(qū)分是哪些類型的電影,或者由誰執(zhí)導(dǎo)的電影,或者哪位演員主演的電影,而這些信息能體現(xiàn)出用戶的喜好,因此本文提出了基于用戶偏好的推薦. 最后將提出的方法與經(jīng)典的基于物品的協(xié)同過濾和基于用戶的協(xié)同過濾進(jìn)行比較.
本文中的用戶-電影網(wǎng)是一個(gè)由用戶和電影構(gòu)成的網(wǎng)絡(luò). 因此,網(wǎng)絡(luò)中的節(jié)點(diǎn)被分成兩種類型: 用戶節(jié)點(diǎn)和電影節(jié)點(diǎn). 它們之間的關(guān)系如圖 1 所示.
圖 1 用戶、電影以及電影屬性之間關(guān)系的示意圖Fig.1 The schematic diagram of the relation between users, movies and movie attributes
圖 1 中,用戶集表示為U={u1,u2,…,um},其中m表示用戶總數(shù); 電影集表示為O={o1,o2,…,on},其中n表示電影總數(shù). 另外,每部電影有很多屬性,這里主要考慮了電影的類型、導(dǎo)演和演員三種屬性. 用C={c1,c2,…,cs}表示電影的類型集,它由所有電影涉及到的類型構(gòu)成,例如動(dòng)作片、喜劇片、冒險(xiǎn)片、科幻片、戰(zhàn)爭(zhēng)片等等,其中s表示類型總數(shù). 由所有電影的導(dǎo)演組成的導(dǎo)演集表示為D={d1,d2,…,dk},其中k表示導(dǎo)演總數(shù). 演員集則表示為A={a1,a2,…,aq},它由所有電影的主要演員構(gòu)成,其中q表示演員總數(shù).
當(dāng)用戶ui(i=1,2,…,m)看過電影oα(α=1,2,…,n)后,在用戶-電影網(wǎng)中用戶節(jié)點(diǎn)ui和電影節(jié)點(diǎn)oα之間便產(chǎn)生連邊. 于是,可以用鄰接矩陣R=(riα)m×n描述用戶和電影之間的關(guān)系. 若用戶ui已看過電影oα,則元素riα=1; 反之riα=0. 將連接到一部電影的邊數(shù)定義為該電影的度. 下面介紹幾種推薦方法.
基于物品的協(xié)同過濾推薦(簡(jiǎn)稱ICF)的基本思想是首先計(jì)算物品之間的相似性,然后把與用戶喜歡的物品相類似的物品推薦給用戶. 在用戶-電影網(wǎng)中,利用矩陣R,計(jì)算電影oα和電影oβ之間的相似性,其公式為
(1)
然后依據(jù)式(1),計(jì)算為用戶ui推薦未看電影oα的推薦分可表示為
(2)
基于用戶的協(xié)同過濾推薦(簡(jiǎn)稱UCF)的基本思想是用戶選擇某個(gè)推薦對(duì)象是基于興趣偏好相似的其他用戶的推薦. 因而該方法基于用戶已有的歷史行為,首先計(jì)算用戶之間的相似性,相似性越高,表明用戶就越相近. 在用戶-電影網(wǎng)中,基于矩陣R可以計(jì)算用戶ui和用戶uj之間的相似性,其表示為
(3)
然后根據(jù)式(3),計(jì)算給用戶ui推薦未看電影oα的推薦分可表示為
(4)
以上兩種算法僅依賴鄰接矩陣R,即只考慮了用戶的歷史行為,但用戶或物品本身都有屬性,那么也可以根據(jù)屬性進(jìn)行推薦,于是本文提出以下兩種新的推薦方法.
基于物品屬性的推薦(簡(jiǎn)稱IA)是基于物品的多種屬性來計(jì)算物品之間的相似性. 每部電影都有很多屬性,比如,電影類型、導(dǎo)演、演員等. 其中電影類型可分為喜劇、愛情、動(dòng)作等,假設(shè)共有s種,即c1,c2,…,cs,那么用鄰接矩陣G=(gαγ)n×s表示電影和所屬類型之間的關(guān)系. 若電影oα屬于類型cγ(γ=1,2,…,s),gαγ=1,否則gαγ=0. 同理,假設(shè)有k個(gè)電影導(dǎo)演,即d1,d2,…,dk,那么用鄰接矩陣B=(bαη)n×k表示電影和導(dǎo)演之間的關(guān)系. 若dη(η=1,2,…,k)是電影oα的導(dǎo)演,bαη=1,反之bαη=0. 假設(shè)電影的主演共有q個(gè),即a1,a2,…,aq,那么電影和主演之間的關(guān)系用矩陣V=(vαω)n×q表示. 若αω(ω=1,2,…,q)是電影oα的主要演員,vαω=1,反之vαω=0. 于是基于屬性任兩部電影oα和oβ之間的相似性可以表示為
Sim(oα,oβ)=Simc(oα,oβ)+Simd(oα,oβ)+
Sima(oα,oβ),
(5)
其中
(6)
(7)
(8)
分別表示根據(jù)電影的類型、導(dǎo)演和主演計(jì)算得到的電影oα和電影oβ之間的相似性.
然后對(duì)Sim(oα,oβ)進(jìn)行歸一化得到
(9)
式中:Xmax和Xmin分別是歸一化之前數(shù)據(jù)集中的最大值和最小值.
因此,基于電影屬性計(jì)算為用戶ui推薦未看電影oα的推薦分為
(10)
基于已有的方法進(jìn)行推薦時(shí),利用矩陣,只能知道每個(gè)用戶看過哪些電影,但卻不能具體地區(qū)分是哪些類型的電影,或者由誰執(zhí)導(dǎo)的電影,或者哪位演員主演的電影,而這些信息在推薦過程中也是非常重要的. 當(dāng)知道了這些信息后,可以根據(jù)用戶喜歡的電影類型,或者根據(jù)用戶關(guān)注的導(dǎo)演,或者根據(jù)用戶喜歡的演員給他們推薦相關(guān)的電影. 因此,本文提出了基于用戶偏好的推薦,簡(jiǎn)稱UA.
通過鄰接矩陣R,可以知道每個(gè)用戶看過的電影,而通過鄰接矩陣G得到每部電影所屬的類型,于是將矩陣R和矩陣G相乘能得到一個(gè)新的矩陣X=(xiγ)m×s,即X=R×G,其表示用戶和電影類型之間的關(guān)系,不僅能說明每個(gè)用戶看過哪些類型的電影,還能知道看過的每種類型電影的數(shù)量; 同理,將矩陣R和矩陣B相乘得到矩陣Y=(yiη)m×k,即Y=R×B,其表示用戶和導(dǎo)演之間的關(guān)系,表明每個(gè)用戶看過哪些導(dǎo)演的電影以及相應(yīng)的數(shù)量; 將矩陣R和矩陣V相乘也能得到一個(gè)新的矩陣Z=(ziω)m×q,即Z=R×V,其表示用戶和演員之間的關(guān)系,說明每個(gè)用戶看過哪些演員主演的電影以及相應(yīng)的數(shù)量; 然后可以分別通過矩陣X、矩陣Y和矩陣Z為用戶推薦電影.
本文以研究根據(jù)電影的類型為用戶推薦電影為例,通過矩陣可以得到每個(gè)用戶看過的每種類型電影的數(shù)量,從而能夠知道每個(gè)用戶對(duì)電影類型的喜好程度,于是對(duì)每個(gè)用戶先根據(jù)已觀看的每種類型電影的數(shù)量進(jìn)行排序,然后再根據(jù)對(duì)電影類型的喜好程度推薦相關(guān)的電影,如果在同一類型或者是對(duì)電影類型喜好程度相同的情況下,再按照電影的度進(jìn)行推薦,其推薦過程如圖 2 所示.
圖 2 基于用戶偏好的推薦過程Fig.2 Recommendation process based on user preferences
算法設(shè)計(jì)好之后,要用有關(guān)數(shù)據(jù)集對(duì)算法進(jìn)行測(cè)試,一般將數(shù)據(jù)集劃分為兩部分,一部分是訓(xùn)練集,一部分是測(cè)試集,在訓(xùn)練集上用推薦方法進(jìn)行推薦,然后與測(cè)試集比較. 通常情況下,使用某種推薦方法,為某用戶推薦L部電影,那么每個(gè)用戶就會(huì)有一個(gè)長度為的推薦列表. 本文通過準(zhǔn)確率、召回率、新穎性和多樣性四種指標(biāo)來衡量上述四種方法的性能.
推薦的準(zhǔn)確度是基本的衡量指標(biāo). 在用戶-電影網(wǎng)中,對(duì)于某一用戶ui,準(zhǔn)確率定義為系統(tǒng)推薦的L部電影中,該用戶實(shí)際看過的電影所占的比例,即
(11)
式中:Xi(L)表示在長度為L的推薦列表中實(shí)際被用戶ui看過的電影數(shù)量,那么系統(tǒng)整體的推薦準(zhǔn)確率為
(12)
召回率[18]用來量化推薦物品的準(zhǔn)確性,其定義為
(13)
新穎性是度量準(zhǔn)確度之外的一種很重要的指標(biāo),它用來度量系統(tǒng)給用戶推薦意想不到物品的能力. 評(píng)測(cè)新穎性的最簡(jiǎn)單方法是利用推薦物品的平均度[19]. 如果推薦物品的平均度較低,那么對(duì)于用戶來說,其新穎性就較高. 推薦物品的平均度定義為
(14)
除了準(zhǔn)確度之外,還可以衡量系統(tǒng)對(duì)不同用戶推薦不同物品的能力,即用戶間的多樣性,其定義為
(15)
式中:Qij表示用戶和用戶的推薦列表中相同電影的數(shù)量.
為了考察以上幾種方法的性能,本文使用Netflix 數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行了模擬. 這些數(shù)據(jù)中包含有用戶對(duì)電影的評(píng)分,且評(píng)分范圍從1(非常不喜歡)至5 (非常喜歡). 因?yàn)樵瓟?shù)據(jù)集非常大,從中選取至少評(píng)價(jià)過20 部電影的用戶以及評(píng)分大于2的電影,經(jīng)過篩選,使用的數(shù)據(jù)集涉及到了2000年1月至2004年5月的數(shù)據(jù),包含了560個(gè)用戶,1 132部電影和57 172條記錄.
將篩選后的數(shù)據(jù)集中2000年1月至2004年4月的數(shù)據(jù)記錄作為訓(xùn)練集ET,把2004年5月的數(shù)據(jù)記錄作為測(cè)試集EP,首先利用訓(xùn)練集ET構(gòu)造了一個(gè)初始的用戶-電影網(wǎng),然后通過不同的推薦方法預(yù)測(cè)2004年5月網(wǎng)絡(luò)的演化情況. 假設(shè)5月份系統(tǒng)會(huì)按照一定的推薦算法給每個(gè)用戶推薦部電影,推薦后每個(gè)用戶將會(huì)觀看推薦列表中推薦分較高的電影,并且電影數(shù)量由數(shù)據(jù)集中的數(shù)據(jù)確定. 這樣用戶和電影之間就會(huì)產(chǎn)生新的連邊,由此形成一個(gè)新的網(wǎng)絡(luò),然后將新產(chǎn)生的連邊,即表示通過推薦5月份用戶觀看電影的情況與測(cè)試集EP作對(duì)比.
在Matlab環(huán)境下進(jìn)行了模擬實(shí)驗(yàn),其中參數(shù)m=560,下面分別給出了準(zhǔn)確率、召回率、新穎性和多樣性的模擬結(jié)果.
3.2.1 準(zhǔn)確率
根據(jù)式(11)和(12),分別得到了UCF方法、ICF方法、IA方法和UA方法四種方法的推薦準(zhǔn)確率.圖 3 給出了這四種推薦方法的推薦準(zhǔn)確率隨推薦列表長度L的變化趨勢(shì). 通過將提出的IA方法和UA方法與經(jīng)典的UCF方法、ICF方法的推薦準(zhǔn)確率比較,可以發(fā)現(xiàn): UCF方法、ICF方法和IA方法的推薦準(zhǔn)確率隨L的增加呈現(xiàn)出一種下降的趨勢(shì),而UA方法的推薦準(zhǔn)確率隨L的增加先上升,后下降,這說明推薦過程中需要的推薦列表長度值不宜太大. 當(dāng)L<10時(shí),UCF方法的推薦準(zhǔn)確率最高,ICF方法次之; 當(dāng)L=11時(shí),ICF方法的推薦準(zhǔn)確率稍高,UA方法次之; 當(dāng)11
圖 3 推薦準(zhǔn)確率隨推薦列表長度的變化Fig.3 The changes of recommendation precision with the length of the recommendation list
3.2.2 召回率
根據(jù)式(13),分別得到了UCF方法、ICF方法、IA方法和UA方法四種推薦方法的召回率.
圖 4 推薦的召回率隨推薦列表長度的變化Fig.4 The changes of recommendation recall with the length of the recommendation list
圖 4 說明了四種推薦方法的召回率與推薦列表長度L的關(guān)系,橫坐標(biāo)表示推薦列表長度,縱坐標(biāo)表示召回率. 很明顯,圖 4 的整體變化趨勢(shì)與圖 3 截然相反,隨著L的增加,四種推薦方法的召回率都呈一種上升的趨勢(shì). 當(dāng)L<10時(shí),四種推薦方法的召回率非常接近; 當(dāng)10
3.2.3 新穎性
基于UCF方法、ICF方法、IA方法和UA方法四種方法,根據(jù)式(14)分別計(jì)算推薦電影的平均度.圖 5 給出了在這四種方法下推薦電影的平均度隨推薦列表長度L的變化趨勢(shì). 從圖中可以看出,當(dāng)分別使用四種方法進(jìn)行推薦時(shí),推薦電影的平均度完全不一樣,而且推薦電影的平均度隨L的增加都在減小. 由于推薦電影的平均度越低,其新穎性就越高,因此,隨L的增加,平均度呈下降趨勢(shì),說明新穎性呈上升趨勢(shì). IA方法推薦的新穎性最高,UA方法推薦的新穎性次之,這兩種推薦的新穎性高于ICF方法和UCF方法. 可見,就新穎性而言,本文提出的方法優(yōu)于經(jīng)典的推薦方法.
圖 5 推薦電影的平均度隨推薦列表長度的變化Fig.5 The changes of average degree of recommended movies with the length of the recommendation list
3.2.4 多樣性
根據(jù)式(15),分別得到了UCF方法、ICF方法、IA方法和UA方法四種方法的推薦多樣性.圖 6 說明了隨L的增加,每種方法的推薦多樣性的變化趨勢(shì). 很明顯,每種方法的推薦多樣性隨L的增加呈下降趨勢(shì). 特別地,當(dāng)L<30時(shí),UA方法和ICF方法的推薦多樣性非常接近; 當(dāng)時(shí),UA方法的推薦多樣性超過ICF方法. 另外,在這四種方法中,IA方法的推薦多樣性始終保持最高; 而UCF方法的推薦多樣性最低. 因此,就多樣性而言,本文提出的方法勝過經(jīng)典的UCF方法和ICF方法.
圖 6 推薦的多樣性隨推薦列表長度的變化Fig.6 The changes of recommendation diversity with the length of the recommendation list
針對(duì)用戶-電影網(wǎng),本文考慮了電影的多種屬性,即電影類型、導(dǎo)演和演員,提出了兩種新的推薦方法,即IA方法和UA方法,采用推薦準(zhǔn)確率、召回率、新穎性和多樣性作為度量指標(biāo),與經(jīng)典的UCF方法和ICF方法進(jìn)行了比較. 通過使用Netflix數(shù)據(jù)集進(jìn)行數(shù)值模擬發(fā)現(xiàn)根據(jù)推薦列表長度L的不同,UA方法和UCF方法的推薦準(zhǔn)確率、召回率相對(duì)較高; 而就推薦新穎性和多樣性而言,提出的方法優(yōu)于經(jīng)典的UCF方法和ICF方法. 從四種度量指標(biāo)來看,本文提出的UA方法較好,而IA方法在推薦的新穎性和多樣性上占優(yōu),本文提出的方法除了適用于用戶-電影網(wǎng),還可以用于用戶-視頻網(wǎng)、用戶-圖書網(wǎng)等等,但這些方法還有待進(jìn)一步改進(jìn)以提高其準(zhǔn)確度等.