祝 婷,秦春秀
(1.西安工業(yè)大學(xué) 圖書館,西安 710021;2.西安電子科技大學(xué) 經(jīng)濟(jì)與管理學(xué)院,西安 710071)
隨著互聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用和普及,網(wǎng)絡(luò)空間中的信息資源急劇增長(zhǎng),2012年國(guó)際數(shù)據(jù)集團(tuán)的一份報(bào)告指出,預(yù)計(jì)到2020年,世界數(shù)據(jù)總?cè)萘繉⒃鲩L(zhǎng)至35.2 ZB,是2011年的22倍[1]。由此可見(jiàn),用戶每天都面臨著海量的信息資源,很難從中獲取有價(jià)值且適合自己的資源。在這種背景下,個(gè)性化推薦方法便顯得越發(fā)重要。通常推薦方法主要分為協(xié)同過(guò)濾推薦方法、基于內(nèi)容的推薦方法和混合推薦方法[2]三大類。在上述推薦方法中,協(xié)同過(guò)濾是當(dāng)前業(yè)界普遍應(yīng)用且推薦效果相對(duì)準(zhǔn)確的推薦方法[3],其是利用相似性方法計(jì)算出目標(biāo)用戶的相似用戶,即近鄰用戶,獲取近鄰用戶的喜好對(duì)目標(biāo)用戶產(chǎn)生個(gè)性化推薦。其中關(guān)鍵一步是獲取近鄰用戶,但由于用戶僅僅對(duì)少量項(xiàng)目有評(píng)分,這就造成評(píng)分矩陣的稀疏性,使得無(wú)法準(zhǔn)確獲取近鄰用戶,進(jìn)而影響到推薦的準(zhǔn)確性。
為了緩解稀疏性問(wèn)題,不少學(xué)者對(duì)其進(jìn)行了研究,主要方法有矩陣填充、聚類、矩陣降維和分解技術(shù)等。在矩陣填充方法上,最常見(jiàn)的是利用缺省值、均值以及眾數(shù)進(jìn)行填充。這些方法可以提高推薦精度,但沒(méi)有考慮到用戶的個(gè)體差異,使用統(tǒng)一數(shù)值表示所有用戶的興趣愛(ài)好,沒(méi)有做到個(gè)性化。文獻(xiàn)[4]利用關(guān)聯(lián)規(guī)則數(shù)據(jù)填充用戶-項(xiàng)目評(píng)分矩陣,降低其稀疏性。隨著關(guān)聯(lián)數(shù)目的增多,推薦的復(fù)雜度會(huì)越來(lái)越大。文獻(xiàn)[5]使用BP神經(jīng)網(wǎng)絡(luò)算法計(jì)算用戶-項(xiàng)目評(píng)分矩陣中的缺失值,填補(bǔ)空值,從而處理近鄰用戶集合的稀疏性問(wèn)題。然而隨著計(jì)算時(shí)間的增長(zhǎng),BP神經(jīng)網(wǎng)絡(luò)的收斂會(huì)越來(lái)越慢,導(dǎo)致查找近鄰用戶速度變慢。在聚類方法上,文獻(xiàn)[6]利用凝聚層析聚類算法對(duì)社區(qū)進(jìn)行劃分,在目標(biāo)用戶所屬的社區(qū)范圍內(nèi)利用用戶評(píng)分及標(biāo)簽計(jì)算用戶間相似性,最終進(jìn)行推薦。由于該模型僅在社區(qū)內(nèi)部進(jìn)行相似性計(jì)算,因此可以有效緩解數(shù)據(jù)稀疏性。聚類可以降低近鄰用戶的查找次數(shù),但是并沒(méi)有從根本上解決數(shù)據(jù)的稀疏性問(wèn)題。在矩陣降維和分解技術(shù)上,文獻(xiàn)[7]綜合基于用戶的協(xié)同過(guò)濾算法和基于項(xiàng)目的協(xié)同過(guò)濾算法,同時(shí)利用雙聚類技術(shù)降低矩陣維度。降維雖然能優(yōu)化矩陣的稀疏問(wèn)題,但是在降維的過(guò)程中會(huì)丟失有效數(shù)據(jù),影響推薦精度。文獻(xiàn)[8]提出了一種結(jié)合矩陣分解和延伸相似度的最近鄰算法,利用矩陣分解技術(shù)降低稀疏性,在計(jì)算皮爾遜相似度時(shí)增加了延伸相似度,進(jìn)一步克服了矩陣的稀疏性。但是在矩陣的分解過(guò)程中無(wú)法保證數(shù)據(jù)的完整性,同樣會(huì)造成有效數(shù)據(jù)丟失。
以上方法提高了推薦的準(zhǔn)確性,都沒(méi)有考慮用戶及項(xiàng)目的語(yǔ)義特征,可解釋性不強(qiáng)。推薦系統(tǒng)由用戶、項(xiàng)目以及評(píng)分組成,可見(jiàn)考慮用戶和項(xiàng)目的語(yǔ)義特征是非常有必要的。因此,本文從用戶及項(xiàng)目?jī)蓚€(gè)角度出發(fā),分別通過(guò)用戶屬性特征及項(xiàng)目領(lǐng)域本體計(jì)算出未評(píng)分項(xiàng)目的預(yù)測(cè)評(píng)分,加權(quán)兩者作為最終數(shù)值填充至評(píng)分矩陣,解決其稀疏性問(wèn)題,最終達(dá)到提高推薦準(zhǔn)確度的效果。
協(xié)同過(guò)濾技術(shù)是從用戶自身出發(fā),通過(guò)計(jì)算與其他用戶間的相似性,尋找目標(biāo)用戶的近鄰用戶,進(jìn)而根據(jù)近鄰用戶喜好的項(xiàng)目對(duì)目標(biāo)用戶進(jìn)行推薦。其核心思想是用戶往往會(huì)選擇和自己興趣相投的用戶喜歡的商品。由于協(xié)同過(guò)濾推薦過(guò)程中用戶對(duì)推薦的項(xiàng)目是預(yù)料不到的,可以挖掘用戶潛在的卻未發(fā)現(xiàn)的喜好,因此具備推薦新項(xiàng)目的能力。協(xié)同過(guò)濾推薦方法分為基于用戶的協(xié)同過(guò)濾與基于項(xiàng)目的協(xié)同過(guò)濾兩類[9]?;谟脩舻膮f(xié)同過(guò)濾方法是獲取用戶-項(xiàng)目評(píng)分矩陣,在此矩陣上利用相似性算法計(jì)算用戶間相似性,獲取目標(biāo)用戶的近鄰用戶,根據(jù)近鄰用戶的評(píng)分計(jì)算目標(biāo)用戶對(duì)未評(píng)分項(xiàng)目的預(yù)測(cè)評(píng)分,并以此進(jìn)行推薦?;陧?xiàng)目的協(xié)同過(guò)濾思想是獲取目標(biāo)用戶的高評(píng)分項(xiàng)目,在評(píng)分矩陣上利用相似性算法計(jì)算項(xiàng)目間的相似性,尋找與高評(píng)分項(xiàng)目最為相似的項(xiàng)目,并將其推薦給用戶。
協(xié)同過(guò)濾方法已經(jīng)廣泛應(yīng)用于產(chǎn)業(yè)界,但由于其自身的算法特性及應(yīng)用場(chǎng)景導(dǎo)致在推薦過(guò)程中仍舊存在一些缺點(diǎn),主要表現(xiàn)為稀疏性問(wèn)題、冷啟動(dòng)問(wèn)題以及擴(kuò)展性問(wèn)題[10]。
① 稀疏性問(wèn)題
在實(shí)際場(chǎng)景中,項(xiàng)目的數(shù)量往往非常龐大,通常用戶僅對(duì)不超過(guò)1%的項(xiàng)目進(jìn)行評(píng)分[11],而兩個(gè)用戶對(duì)同一項(xiàng)目的評(píng)分則更少,這樣就使得通過(guò)評(píng)分矩陣計(jì)算用戶相似性的數(shù)據(jù)非常稀疏,導(dǎo)致無(wú)法準(zhǔn)確尋找近鄰用戶,影響推薦的準(zhǔn)確性。
② 冷啟動(dòng)問(wèn)題
冷啟動(dòng)問(wèn)題是指新用戶沒(méi)有對(duì)系統(tǒng)中的任何項(xiàng)目進(jìn)行評(píng)分,因此無(wú)法計(jì)算該用戶的近鄰用戶,也就無(wú)法進(jìn)行推薦。同理,當(dāng)一個(gè)新項(xiàng)目進(jìn)入系統(tǒng)時(shí),由于還沒(méi)有用戶對(duì)其作出評(píng)價(jià),也就無(wú)法將該項(xiàng)目推薦給用戶。
③ 擴(kuò)展性問(wèn)題
通常系統(tǒng)中的用戶和項(xiàng)目規(guī)模都異常龐大,這樣就導(dǎo)致在計(jì)算近鄰用戶時(shí)需要花費(fèi)大量的時(shí)間,即算法時(shí)間復(fù)雜度高,實(shí)時(shí)性也很難保證。
為了解決由于用戶僅對(duì)少量項(xiàng)目評(píng)分而造成評(píng)分矩陣的稀疏性問(wèn)題,本文將用戶語(yǔ)義相似性及項(xiàng)目語(yǔ)義相似性引入到協(xié)同過(guò)濾方法中,分別計(jì)算用戶及項(xiàng)目語(yǔ)義相似性,利用其相似性預(yù)測(cè)出對(duì)應(yīng)評(píng)分,進(jìn)而完善原評(píng)分矩陣,然后根據(jù)填充后的矩陣計(jì)算近鄰用戶,最后進(jìn)行推薦。具體可描述為以下5個(gè)步驟:
① 用戶語(yǔ)義相似性度量。使用性別、年齡和職業(yè)這三項(xiàng)屬性將用戶進(jìn)行語(yǔ)義特征表示,根據(jù)這些特征計(jì)算用戶相似性,進(jìn)而對(duì)未評(píng)分項(xiàng)目進(jìn)行預(yù)測(cè)。
② 項(xiàng)目語(yǔ)義相似性度量。首先構(gòu)建項(xiàng)目領(lǐng)域本體,然后利用領(lǐng)域本體中的語(yǔ)義關(guān)系計(jì)算出項(xiàng)目相似性,最后對(duì)未評(píng)分項(xiàng)目進(jìn)行預(yù)測(cè)。
③ 填充評(píng)分矩陣。分別將根據(jù)用戶語(yǔ)義相似性和項(xiàng)目語(yǔ)義相似性計(jì)算出的預(yù)測(cè)評(píng)分加權(quán)獲取最終評(píng)分值,利用該值填充評(píng)分矩陣。
④ 近鄰用戶計(jì)算。根據(jù)修正的余弦相似性算法計(jì)算出用戶相似性矩陣,進(jìn)而獲取近鄰用戶。
⑤ 個(gè)性化推薦。通過(guò)獲取近鄰用戶的評(píng)分?jǐn)?shù)據(jù),進(jìn)而預(yù)測(cè)項(xiàng)目評(píng)分,最終進(jìn)行Top-N推薦。
用戶由一些屬性特征組成,這些屬性特征構(gòu)成用戶的語(yǔ)義表示,可以使用屬性特征來(lái)計(jì)算用戶間語(yǔ)義相似性。通常情況下,用戶對(duì)某種事物的喜好往往受個(gè)體特征的影響。性別方面,男性和女性由于心理和思維方式不同,其對(duì)事物的選擇往往不一致。比如選擇觀影時(shí),女性一般鐘情于情感電影,而男性對(duì)戰(zhàn)爭(zhēng)片比較感興趣。年齡方面,用戶的心理成熟度和認(rèn)知水平會(huì)隨著年齡的增長(zhǎng)而發(fā)生變化,進(jìn)而對(duì)用戶的選擇產(chǎn)生影響。職業(yè)方面,受到不同工作場(chǎng)景和工作內(nèi)容的影響,不同行業(yè)的從業(yè)者對(duì)事物的認(rèn)知和理解將有所區(qū)別,相反,同一行業(yè)的工作群體對(duì)某一事物的接受度和喜愛(ài)程度將趨于統(tǒng)一,進(jìn)而影響用戶選擇和對(duì)事物的評(píng)價(jià)。綜上所述,具有相同屬性的用戶對(duì)同一項(xiàng)目感興趣的概率較大。
本文將用戶數(shù)據(jù)集記為U(A1,A2,A3,…,An),其中U為用戶,A為用戶屬性。經(jīng)過(guò)上述分析,最終選擇性別、年齡和職業(yè)作為用戶的屬性特征,將用戶表示為U(id,age,gender,occupation),id為用戶編號(hào),可唯一識(shí)別用戶。屬性取值見(jiàn)表1。
表1 用戶屬性取值
設(shè)存在用戶U1(A1,U1,A2,U1,A3,U1)和用戶U2(A1,U2,A2,U2,A3,U2)。則U1和U2間的用戶語(yǔ)義相似性為
(1)
式中:n為屬性個(gè)數(shù);a1、a2、a3分別為年齡、性別和職業(yè)在用戶屬性特征中占用的權(quán)重,mi為系數(shù)。通常情況下,年齡因素對(duì)用戶的興趣愛(ài)好影響最大,其次是性別因素,最后是職業(yè)因素。因此,屬性權(quán)重分別取值為a1=0.5,a2=0.25,a3=0.25。
用戶相似性計(jì)算核心代碼如算法1所示。
算法1:計(jì)算用戶語(yǔ)義相似性矩陣。
輸入:用戶信息文件User.dat,用戶屬性權(quán)重a1、a2、a3。
輸出:用戶語(yǔ)義相似性矩陣UserSimilarity[n][n]。
User[n][3] = Read(User.dat);
fori=0 ton
forj=0 ton
m1=User[i][0]==User[j][0] ? 1:0;
m2=User[i][1]==User[j][1] ? 1:0;
m3=User[i][2]==User[j][2] ? 1:0;
UserSimilarity[i][j]=a1*m1+a2*m2+a3*m3;
end for
end for
通過(guò)用戶語(yǔ)義相似性計(jì)算評(píng)分矩陣中的缺失值:
(2)
本體作為語(yǔ)義網(wǎng)的重要組成部分,是對(duì)世界或者領(lǐng)域知識(shí)、概念、實(shí)體及其關(guān)系的一種明確的、規(guī)范的概念化描述[12]。本體具體可以表示為分層的樹狀結(jié)構(gòu),其中節(jié)點(diǎn)表示項(xiàng)目,節(jié)點(diǎn)之間的連線代表項(xiàng)目間的語(yǔ)義距離。項(xiàng)目間的語(yǔ)義關(guān)系可以通過(guò)本體來(lái)表示。在本體的構(gòu)建過(guò)程中,選擇核心概念并調(diào)整概念間的關(guān)系尤為重要,需遵循清晰化、一致性、可擴(kuò)展、編碼偏差最小和最小承諾這五項(xiàng)準(zhǔn)則[13],在此基礎(chǔ)上,使用本體構(gòu)建工具即可完成本體構(gòu)建。Protégé軟件是由斯坦福大學(xué)生物信息中心研發(fā)完成,該軟件用于編輯本體與獲取知識(shí),實(shí)現(xiàn)了構(gòu)建本體概念類、關(guān)系、屬性以及實(shí)例,同時(shí)為用戶屏蔽了底層的本體描述語(yǔ)言,用戶可快速實(shí)現(xiàn)本體模型的構(gòu)建。
由于《中國(guó)圖書館分類法》類目規(guī)范、分類準(zhǔn)確,是目前使用最為廣泛的分類法體系,因此本文對(duì)其中“J9 電影、電視藝術(shù)”這一類別進(jìn)行進(jìn)一步的數(shù)據(jù)清理及語(yǔ)義調(diào)整,將其轉(zhuǎn)化為電影領(lǐng)域本體。在構(gòu)建過(guò)程中,通過(guò)增加、刪除和修改等操作在該分類部分中選擇核心概念。例如,在此分類的基礎(chǔ)上增加“動(dòng)作片”“科幻片”等常見(jiàn)的電影類型。遵從本體對(duì)關(guān)系的界定原則,調(diào)整概念之間的關(guān)系,如等同關(guān)系、等級(jí)關(guān)系和相關(guān)關(guān)系。在以上分析的基礎(chǔ)上,通過(guò)Protégé 5.5.0軟件進(jìn)行電影領(lǐng)域本體的構(gòu)建。最終構(gòu)建結(jié)果如圖1所示。
本體構(gòu)建完成后,接著就是計(jì)算概念間的語(yǔ)義相似性,基于本體的語(yǔ)義相似性方法包括基于距離的語(yǔ)義相似性計(jì)算、基于內(nèi)容的語(yǔ)義相似性計(jì)算、基于屬性的語(yǔ)義相似性計(jì)算和混合語(yǔ)義相似性計(jì)算。其中基于距離的語(yǔ)義相似性可以通過(guò)本體樹狀分類體系中概念之間的路徑長(zhǎng)度來(lái)度量[14],具體方法包含Shortest Path法、Weighted Links法和Wu and Palmer法等。其中Wu and Palmer法并不是通過(guò)直接計(jì)算項(xiàng)目間的路徑長(zhǎng)度來(lái)衡量其相似性,而是基于項(xiàng)目與其最近公共父節(jié)點(diǎn)之間的距離度量項(xiàng)目相似性??紤]到部分項(xiàng)目所屬類型不止一種,例如,有的電影既屬于愛(ài)情片又屬于喜劇片。因此本文首先使用Wu and Palmer法計(jì)算項(xiàng)目類別之間的語(yǔ)義相似性,然后取項(xiàng)目類別相似性的平均值作為最終的項(xiàng)目語(yǔ)義相似性。計(jì)算方法如下:
(3)
(4)
式中:sim_itemType(t1,t2)為項(xiàng)目所屬類別t1和t2之間的相似性;N1和N2分別為項(xiàng)目類別與最近公共父節(jié)點(diǎn)的距離;H為最近公共父節(jié)點(diǎn)與根節(jié)點(diǎn)之間的距離;sim_item(I1,I2)為項(xiàng)目I1和I2之間的語(yǔ)義相似性;T1和T2為對(duì)應(yīng)項(xiàng)目所屬的類別集合;n1和n2為類別集合中元素個(gè)數(shù)。
項(xiàng)目語(yǔ)義相似性計(jì)算核心代碼如算法2所示。
圖1 電影領(lǐng)域本體表示
算法2:計(jì)算項(xiàng)目語(yǔ)義相似性矩陣。
輸入:項(xiàng)目信息文件Movies.dat,項(xiàng)目類別數(shù)組Item Type[n],電影領(lǐng)域本體。
輸出:項(xiàng)目語(yǔ)義相似性矩陣Item Similarity[n][n]。
Item Type Similarity[n][n] = {{}};
Item Similarity[m][m] = {{}};
Build Tree(Movies);
fori=0 ton
forj=0 ton
N1=Get DepthIn Tree(Movies,Item Type[i]);
N2=Get DepthIn Tree(Movies,Item Type[j]);
H=Get Father Depth(Movies,Item Type[i],Item Type[j]);
Item Type Similarity[i][j]=2*H/(N1+N2);
end for
end for
Movies[n][10] = Read(Movies.dat);
fori=0 tom
forj=0 tom
Item Similarity[m][m]=Cal Similarity(Movies[i],Movies[j],Item Type Similarity[i][j]);
end for
end for
同理,通過(guò)項(xiàng)目語(yǔ)義相似性計(jì)算評(píng)分矩陣中的缺失值:
(5)
協(xié)同過(guò)濾方法中用戶對(duì)項(xiàng)目的喜愛(ài)程度通過(guò)評(píng)分矩陣表示,具體見(jiàn)表2。其中u1到um分別為m個(gè)用戶,I1到In分別為n個(gè)項(xiàng)目,其中數(shù)值為評(píng)分,大小在1~5之間,為用戶對(duì)項(xiàng)目的喜愛(ài)程度,分值越高表示越喜歡,反之則越不喜歡,“-”為用戶還未對(duì)該項(xiàng)目發(fā)表評(píng)價(jià)。真實(shí)場(chǎng)景中,用戶已發(fā)表評(píng)價(jià)的項(xiàng)目占比極小,這就造成了根據(jù)評(píng)分矩陣計(jì)算近鄰用戶的不準(zhǔn)確性,因此,填充評(píng)分矩陣是非常有必要的。
表2 評(píng)分矩陣
本文分別根據(jù)用戶語(yǔ)義相似性和項(xiàng)目語(yǔ)義相似性計(jì)算出預(yù)測(cè)評(píng)分,然后加權(quán)兩者獲得最終的預(yù)測(cè)評(píng)分對(duì)評(píng)分矩陣進(jìn)行填充,計(jì)算方法見(jiàn)式(6),其中R_fill為最終的填充值。
(6)
填充矩陣計(jì)算核心代碼如算法3所示。
算法3:計(jì)算用戶-項(xiàng)目評(píng)分填充矩陣。
輸入:評(píng)分文件Rating.dat,用戶語(yǔ)義相似性矩陣User Similarity[n][n],項(xiàng)目語(yǔ)義相似性矩陣Item Similarity[m][m]。
輸出:用戶-項(xiàng)目評(píng)分填充矩陣Filled Rating[n][m]。
Rating[n][m]=Read(Rating.dat)。
fori=0 ton
forj=0 tom
Similar User[10]=Get Top10 Similar User(User Similarity[i][n]);
SimilarItem[10] = Get Top10 SimilarItem (ItemSimilarity[j][m]);
R_User=Pridect (Similar User[10],Rating[i][j]);
R_Item=Pridect (SimilarItem[10],Rating[i][j]);
Filled Rating[i][j] = (R_User+R_Item)/2;
end for
end for
評(píng)分矩陣填充完成后,接下來(lái)就是協(xié)同過(guò)濾最關(guān)鍵的一步,即使用相似性算法識(shí)別近鄰用戶。
通常,相似性大小可以利用Pearson相關(guān)系數(shù)、余弦相似性方法和修正的余弦相似性進(jìn)行計(jì)算。其中,Pearson相關(guān)系數(shù)方法只用于計(jì)算兩個(gè)定距變量間聯(lián)系的緊密程度,并未考慮用戶評(píng)價(jià)過(guò)的項(xiàng)目數(shù)量對(duì)相似性計(jì)算的影響,因此,如果用戶之間僅存在一個(gè)相同項(xiàng)目的評(píng)分,則無(wú)法計(jì)算相似性。余弦相似性方法根據(jù)向量夾角的余弦值度量相似性,由于不同用戶對(duì)同一項(xiàng)目的評(píng)價(jià)尺度不同,對(duì)于相同喜好程度的項(xiàng)目,有的用戶習(xí)慣給予高分,有的用戶習(xí)慣給予低分,因此該方法不能準(zhǔn)確給出用戶相似性,而修正的余弦相似性通過(guò)評(píng)分的均值來(lái)消除評(píng)價(jià)尺度不同而造成的差異。因此本文采用修正的余弦相似性來(lái)計(jì)算用戶相似性,用戶u1和用戶u2間的相似性計(jì)算方法[15]見(jiàn)式(7)。通過(guò)式(7),獲取用戶相似性矩陣,針對(duì)目標(biāo)用戶,根據(jù)用戶相似度從大到小依次排序,選取前k個(gè)用戶作為近鄰用戶,表示為nei=(u1,u2,u3,…,uk)。
sim(u1,u2)=
(7)
(8)
MovieLens數(shù)據(jù)集由users.dat,movies.dat和ratings.dat三個(gè)文件組成。users.dat中存儲(chǔ)了用戶具體信息,如編號(hào)、性別、年齡以及職業(yè)等。movies.dat存儲(chǔ)了電影信息,包括電影編號(hào)、名稱和類別。ratings.dat包含了6 040名用戶對(duì)3 883部電影的1 000 209個(gè)評(píng)分(分值為1~5分),其中每位用戶的評(píng)分?jǐn)?shù)量均大于等于20次。為驗(yàn)證本文方法的個(gè)性化推薦效果,考慮到計(jì)算量等因素,本實(shí)驗(yàn)的測(cè)試數(shù)據(jù)大小設(shè)置為5 000條,從上述數(shù)據(jù)集中隨機(jī)獲得,具體涉及426名用戶對(duì)248部影片評(píng)分,隨機(jī)選取其中80%作為訓(xùn)練集,其余作為測(cè)試集進(jìn)行推薦效果驗(yàn)證。通過(guò)訓(xùn)練集生成的矩陣計(jì)算用戶相似性和獲取近鄰用戶,對(duì)測(cè)試集中的項(xiàng)目進(jìn)行預(yù)測(cè)評(píng)分,與相應(yīng)的實(shí)際評(píng)分進(jìn)行對(duì)比來(lái)衡量推薦的準(zhǔn)確性。該實(shí)驗(yàn)選取的數(shù)據(jù)集稀疏性級(jí)別計(jì)算結(jié)果為95.267%。
本文采用平均絕對(duì)誤差(Mean Absolute Error,MAE)和接收者工作特性(Receive Operating Characteristic,ROC)曲線作為評(píng)估方法的標(biāo)準(zhǔn)。
3.2.1 平均絕對(duì)誤差
MAE可以根據(jù)預(yù)測(cè)評(píng)分和實(shí)際評(píng)分的差值衡量推薦精度,MAE越小,代表推薦效果越好。將預(yù)測(cè)評(píng)分?jǐn)?shù)據(jù)集表示為{p1,p2,p3,…,pn},真實(shí)評(píng)分?jǐn)?shù)據(jù)集表示為{q1,q2,q3,…,qn},則平均絕對(duì)誤差計(jì)算方法[6]為
(9)
3.2.2 ROC曲線
在推薦過(guò)程中,項(xiàng)目可以理解為用戶喜歡和非喜歡這兩種類別,對(duì)應(yīng)的混淆矩陣見(jiàn)表3。其中的“1”表示正類,即用戶喜歡的項(xiàng)目,“0”表示負(fù)類,即用戶不喜歡的項(xiàng)目。如果評(píng)分大于某一閾值,則定義該項(xiàng)目為正類,否則為負(fù)類。MovieLens數(shù)據(jù)集中評(píng)分區(qū)間為[1,5],本實(shí)驗(yàn)對(duì)用戶的真實(shí)評(píng)分取閾值為3,即認(rèn)為評(píng)分值在[3,5]區(qū)間內(nèi)為用戶真實(shí)喜歡的項(xiàng)目,評(píng)分值在[1,2]區(qū)間內(nèi)為用戶真實(shí)不喜歡的項(xiàng)目。
若一個(gè)項(xiàng)目是用戶真實(shí)喜歡的,并且該項(xiàng)目也被預(yù)測(cè)為用戶喜歡的項(xiàng)目,那么該項(xiàng)目被歸類為真正類項(xiàng)目(True Postive,TP);若一個(gè)項(xiàng)目是用戶真實(shí)喜歡的,但是預(yù)測(cè)結(jié)果表明該項(xiàng)目是用戶不喜歡的項(xiàng)目,那么該項(xiàng)目被歸類為假負(fù)類項(xiàng)目(False Negative,FN);若一個(gè)項(xiàng)目是用戶真實(shí)不喜歡的,但是預(yù)測(cè)結(jié)果表明該項(xiàng)目是用戶喜歡的項(xiàng)目,則把該項(xiàng)目歸類為假正類項(xiàng)目(False Postive,FP);若一個(gè)項(xiàng)目用戶實(shí)際不喜歡,并且預(yù)測(cè)結(jié)果表明該項(xiàng)目是用戶不喜歡的,則將該項(xiàng)目歸類為真負(fù)類項(xiàng)目(True Negative,TN)。
表3 混淆矩陣
真正類率(True Postive Rate,TPR)定義為真實(shí)是正類的項(xiàng)目中預(yù)測(cè)為正類的比例,假正類率(False Postive Rate,FPR)定義為真實(shí)是負(fù)類的項(xiàng)目中預(yù)測(cè)為正類的比例。TPR、FPR相應(yīng)計(jì)算方法如下:
(10)
(11)
以FPR作為橫軸、TPR作為縱軸的二維空間即定義為ROC空間。當(dāng)閾值在某一區(qū)間內(nèi)取值時(shí),根據(jù)項(xiàng)目的預(yù)測(cè)評(píng)分及式(10)、(11)計(jì)算可得出若干(FPR,TPR)點(diǎn),將這些點(diǎn)的連線即定義為ROC曲線。當(dāng)ROC曲線越接近左上方時(shí),即曲線下方的面積AUC(Area Under ROC Curve)越大時(shí),該推薦系統(tǒng)性能越好。
本文分別將傳統(tǒng)的協(xié)同過(guò)濾方法(Traditional Collaborative Filtering,TCF)、基于缺省值填充的協(xié)同過(guò)濾方法(Collaborative Filtering Based on Default Filling,CFBDF)、基于均值填充的協(xié)同過(guò)濾方法(Collaborative Filtering Based on Average Filling,CFBAF)與本文方法(Collaborative Filtering Based on User and Item Semantic Filling,CFBUISF)進(jìn)行平均絕對(duì)誤差(MAE)和ROC曲線對(duì)比。
3.3.1 平均絕對(duì)誤差對(duì)比分析
本節(jié)實(shí)驗(yàn)旨在對(duì)比分析本文方法和其余3種方法在選取不同近鄰用戶數(shù)目時(shí)MAE值的變化情況,實(shí)驗(yàn)設(shè)置近鄰用戶數(shù)初始值為2,每次以2為間隔進(jìn)行遞增,直至近鄰用戶數(shù)為24,總計(jì)運(yùn)行12次,MAE值如圖2所示。
圖2 預(yù)測(cè)精度對(duì)比
圖2表明,隨著近鄰用戶數(shù)的增加,MAE值先減小后穩(wěn)定。這表明在一定范圍內(nèi),隨著近鄰用戶數(shù)的增加,用戶評(píng)分預(yù)測(cè)的精準(zhǔn)性進(jìn)一步提高,直到近鄰用戶數(shù)增加到一定程度,對(duì)推薦的準(zhǔn)確性影響趨于穩(wěn)定。在不同的近鄰用戶數(shù)下,文中方法對(duì)應(yīng)的MAE值均低于其余3種協(xié)同過(guò)濾推薦方法。
3.3.2 ROC曲線對(duì)比分析
本節(jié)實(shí)驗(yàn)旨在對(duì)比分析本文方法和其余3種方法在不同閾值下對(duì)應(yīng)的ROC曲線。由于本文實(shí)驗(yàn)數(shù)據(jù)中的評(píng)分區(qū)間為[1,5],因此設(shè)定閾值初始值為5,每次以0.01為間隔進(jìn)行遞減,直至閾值為1,分別利用文中方法和其余3種方法循環(huán)計(jì)算(FPR,TPR)點(diǎn)500次,將各自計(jì)算所得坐標(biāo)點(diǎn)在ROC空間中標(biāo)注并通過(guò)平滑曲線連接,即可得ROC曲線如圖3所示。
圖3 ROC曲線對(duì)比
圖3表明,本文方法和其余3種方法計(jì)算所得ROC曲線均在ROC空間對(duì)角線左上方(其中對(duì)角線表示隨機(jī)判斷項(xiàng)目為喜歡或非喜歡兩種類別的ROC曲線),說(shuō)明本文方法和其余3種協(xié)同過(guò)濾方法均具有一定的推薦意義。另外,本文方法對(duì)應(yīng)的ROC曲線較其余3種方法對(duì)應(yīng)的ROC曲線更靠近ROC空間左上角,即AUC值更大。
綜合圖2和圖3可以得出,對(duì)于推薦結(jié)果的準(zhǔn)確性,CFBUISF>CFBAF>CFBDF>TCF。分析其原因?yàn)門CF由于數(shù)據(jù)稀疏性導(dǎo)致無(wú)法準(zhǔn)確尋找近鄰用戶,從而影響推薦精度。CFBDF利用缺省值0對(duì)矩陣進(jìn)行填充,解決了評(píng)分矩陣的稀疏性問(wèn)題,因此推薦精度大于TCF。但是相對(duì)使用0值進(jìn)行填充,利用評(píng)分均值對(duì)矩陣填充更具有實(shí)際意義,因此CFBAF的推薦精度大于CFBDF。無(wú)論是利用缺省值0還是評(píng)分均值,其都是對(duì)所有用戶一概而論,使用同一數(shù)據(jù)填充評(píng)分矩陣,并沒(méi)有考慮到個(gè)體差異,也就是沒(méi)有考慮用戶和項(xiàng)目的語(yǔ)義特征,使得推薦結(jié)果產(chǎn)生偏差。CFBUISF充分利用用戶屬性及項(xiàng)目特征,通過(guò)用戶語(yǔ)義相似性和項(xiàng)目語(yǔ)義相似性填充用戶-項(xiàng)目評(píng)分矩陣,可以較為精確的尋找近鄰用戶,最終使得推薦結(jié)果更為準(zhǔn)確。
針對(duì)實(shí)際場(chǎng)景中用戶僅對(duì)極少數(shù)項(xiàng)目評(píng)分而造成評(píng)分矩陣的稀疏性問(wèn)題,研究者們提出了多種改進(jìn)方法,其中包括對(duì)矩陣進(jìn)行降維處理和利用預(yù)測(cè)評(píng)分對(duì)矩陣進(jìn)行填充。本文利用用戶和項(xiàng)目間的語(yǔ)義相似性預(yù)測(cè)項(xiàng)目評(píng)分,加權(quán)兩者獲得最終評(píng)分,使用最終預(yù)測(cè)評(píng)分填充用戶-項(xiàng)目評(píng)分矩陣。實(shí)驗(yàn)表明,本文方法能有效提升推薦精度,但是由于前期需要計(jì)算用戶和項(xiàng)目語(yǔ)義相似性,導(dǎo)致推薦過(guò)程耗時(shí)較長(zhǎng),這個(gè)問(wèn)題可以通過(guò)矩陣降維技術(shù)和矩陣填充技術(shù)相結(jié)合來(lái)解決。在互聯(lián)網(wǎng)的快速發(fā)展下,人工智能、數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)等技術(shù)越來(lái)越成熟,將這些技術(shù)與推薦技術(shù)結(jié)合,可以使推薦更加智能化、個(gè)性化。另外,協(xié)同過(guò)濾技術(shù)還面臨一些新的問(wèn)題及挑戰(zhàn),例如安全問(wèn)題、隱私保護(hù)問(wèn)題等,均為下一步工作需要研究的問(wèn)題。