鐘耀億,丁曉劍,楊 帆
(南京財(cái)經(jīng)大學(xué) 信息工程學(xué)院,南京 210046)
互聯(lián)網(wǎng)的迅速發(fā)展使得網(wǎng)絡(luò)上每天都產(chǎn)生數(shù)量驚人的信息,其在為用戶提供豐富的信息化服務(wù)的同時,也讓用戶越發(fā)難以搜索到滿足其個人偏好的有效信息,進(jìn)而讓用戶迷失在信息的海洋中,這就是互聯(lián)網(wǎng)時代的“信息過載”問題,推薦系統(tǒng)技術(shù)的出現(xiàn)在一定程度上緩解了互聯(lián)網(wǎng)數(shù)據(jù)爆炸式增長帶給人們的信息過載問題[1-3],如今,推薦系統(tǒng)擁有廣泛的實(shí)際應(yīng)用場景,如商品推薦,影視推薦,新聞推薦,社交推薦等.
基于項(xiàng)目的協(xié)同過濾算法因簡單易行,目前是推薦系統(tǒng)廣泛使用的一種技術(shù),其基于“物以類聚”的核心思想,根據(jù)用戶對項(xiàng)目的評價信息來計(jì)算項(xiàng)目相似性,再利用相似性信息進(jìn)行后續(xù)的推薦步驟,但是其在實(shí)際應(yīng)用中表現(xiàn)出了一些缺陷,首先是該算法非常依賴用戶評分矩陣的質(zhì)量,只有高密度的評分矩陣才能保證項(xiàng)目相似度計(jì)算的準(zhǔn)確度,然而用戶評分矩陣往往是稀疏的,因此計(jì)算出的項(xiàng)目相似度就會不準(zhǔn)確[4,5],同時,基于項(xiàng)目的協(xié)同過濾算法也并未深入考慮用戶的主觀偏好情況,其往往會向單個用戶推薦大眾喜好的流行項(xiàng)目[6,7],因此推薦的個性化程度不高,不能很好地滿足用戶需求.
本文針對基于項(xiàng)目的協(xié)同過濾算法相似度計(jì)算不準(zhǔn)確和推薦缺乏個性化這兩個問題進(jìn)一步地做了改進(jìn)工作,考慮到傳統(tǒng)基于項(xiàng)目的協(xié)同過濾算法只利用用戶評分?jǐn)?shù)據(jù)計(jì)算相似度,比較單一,因此在原有基于評分的項(xiàng)目相似度計(jì)算方法基礎(chǔ)上,額外增加了兩個維度的項(xiàng)目相似度計(jì)算,可以更全面地評估項(xiàng)目間的相似度,此外考慮到用戶主觀偏好挖掘?qū)ν扑]算法的重要性,本文使用支持向量機(jī)構(gòu)建用戶標(biāo)簽偏好預(yù)測模型,并用于評分預(yù)測公式的修正,可以提供更準(zhǔn)確的評分預(yù)測.
以下是基于項(xiàng)目的協(xié)同過濾算法的主要流程[8]:
1)評分矩陣構(gòu)建
基于項(xiàng)目的協(xié)同過濾推薦需要利用用戶對項(xiàng)目的評價數(shù)據(jù).用戶評價數(shù)據(jù)可以表示為一個評分矩陣RM×N,其中M表示用戶的數(shù)量,N表示項(xiàng)目的數(shù)量,Ri,j表示用戶i對項(xiàng)目j的數(shù)值化評分.
2)項(xiàng)目相似性計(jì)算
項(xiàng)目相似性主要根據(jù)評分矩陣來計(jì)算,常用的相似性計(jì)算方法有皮爾遜相關(guān)系數(shù),余弦相似度,Jaccard相似度,這3 種計(jì)算方式分別如式(1)~式(3)所示:
其中,Ru,i和Ru,j分別表示用戶u對項(xiàng)目i和項(xiàng)目j的評分,Ui,j表示對項(xiàng)目i和項(xiàng)目j都評分過的用戶集合,和分別表示項(xiàng)目i和項(xiàng)目j的平均評分,Ri和Rj分別表示項(xiàng)目i和項(xiàng)目j的用戶評分向量,和分別表示項(xiàng)目i和項(xiàng)目j評分向量的模,Ui和Uj分別表示對項(xiàng)目i和項(xiàng)目j有過評價的用戶集合.根據(jù)項(xiàng)目間的相似度值,就可以得到項(xiàng)目相似性矩陣SN×N,Si,j表示項(xiàng)目i和項(xiàng)目j的相似度.
3)項(xiàng)目鄰居選擇
給定項(xiàng)目i,它的鄰居是指與其相似性最高的k的項(xiàng)目,可以從項(xiàng)目相似性矩陣中得到,k是可選的值,一般根據(jù)實(shí)際情況調(diào)整.
4)項(xiàng)目評分預(yù)測
對用戶未評分的項(xiàng)目,根據(jù)式(4)來預(yù)測評分:
式(4)中,Ni表示項(xiàng)目i的鄰居,Iu表示用戶u已評價的項(xiàng)目集合,Si,j表示項(xiàng)目i和項(xiàng)目j的相似性,Ru,j表示用戶u對項(xiàng)目j的評分,和為項(xiàng)目i和項(xiàng)目j的平均評分.
支持向量機(jī)作為一種新興的機(jī)器學(xué)習(xí)算法,以其自身在二類分類學(xué)習(xí)問題上表現(xiàn)出較好的泛化和推廣性能,近年來得到了人工智能和機(jī)器學(xué)習(xí)領(lǐng)域研究者的廣泛關(guān)注.基于統(tǒng)計(jì)學(xué)習(xí)理論,支持向量機(jī)的主要目標(biāo)是借助于核方法來最小化結(jié)構(gòu)風(fēng)險(xiǎn),并最終得到支持向量[9].
支持向量機(jī)算法的基本理念是,假設(shè)給定一個特征空間上的訓(xùn)練樣本數(shù)據(jù)集{ (x1,y1),(x2,y2),···,(xn,yn)},其中,xi∈Rn,yi∈{+1,-1},i=1,2,···,n.xi為第i個樣本數(shù)據(jù)的特征向量,yi為xi對應(yīng)的類標(biāo)記,當(dāng)yi=+1時,稱xi為正例;而當(dāng)yi=-1時,稱xi為負(fù)例,支持向量機(jī)的目標(biāo)是在特征空間中找到一個最優(yōu)的分離超平面,其能夠盡可能正確地將正負(fù)實(shí)例分到其各自所對應(yīng)的類中去,不僅如此,支持向量機(jī)算法還確保兩種實(shí)例間分類間隔距離的最大化,以此來降低結(jié)構(gòu)化風(fēng)險(xiǎn),獲得較優(yōu)的分類效果.
在本文的研究中,支持向量機(jī)將被用于學(xué)習(xí)并預(yù)測用戶對給定項(xiàng)目標(biāo)簽的偏好,而給定一個項(xiàng)目標(biāo)簽實(shí)例,其到分離超平面的距離將被認(rèn)為是用戶對該項(xiàng)目標(biāo)簽的偏好程度.
傳統(tǒng)基于項(xiàng)目的協(xié)同過濾算法依賴用戶的評分來計(jì)算項(xiàng)目之間的相似度,受到用戶評分矩陣稀疏的影響,相似度計(jì)算的結(jié)果往往不夠準(zhǔn)確,因此推薦效果有很大的局限性.在推薦系統(tǒng)平臺中,除了有用戶的評分?jǐn)?shù)據(jù)可用,有時項(xiàng)目本身也有一些描述性的屬性信息,例如標(biāo)簽信息,那么就可以合理地利用這些信息來進(jìn)一步地挖掘項(xiàng)目之間的聯(lián)系以及用戶對項(xiàng)目的主觀偏好.
標(biāo)簽可以用于概括性地描述項(xiàng)目的內(nèi)在特征,比較常見的根據(jù)標(biāo)簽信息表征項(xiàng)目的方法是采用獨(dú)熱編碼(one-hot encoding)來構(gòu)造項(xiàng)目的標(biāo)簽向量[10],其將所有的項(xiàng)目標(biāo)簽考慮進(jìn)來,如果一個項(xiàng)目有一個給定的標(biāo)簽,則該項(xiàng)目標(biāo)簽向量中相對應(yīng)的值將為1,否則為0,之后可以基于余弦相似度公式,使用標(biāo)簽向量計(jì)算項(xiàng)目之間的相似度,該方法具有簡單易行的優(yōu)點(diǎn),但由于忽略了標(biāo)簽之間的關(guān)系,只對兩個標(biāo)簽向量中相對應(yīng)的標(biāo)簽進(jìn)行了比較,因此損失了一些有價值的信息.
在電影推薦中,一部電影通常有多個標(biāo)簽,有些標(biāo)簽經(jīng)常同時出現(xiàn)在一部電影中,這說明標(biāo)簽之間存在一定的關(guān)聯(lián),假如電影1 有動作標(biāo)簽,電影2 有冒險(xiǎn)標(biāo)簽,并且假設(shè)動作標(biāo)簽和冒險(xiǎn)標(biāo)簽經(jīng)常同時出現(xiàn),如果用標(biāo)簽向量的方式表征電影,并用余弦相似度計(jì)算電影1和電影2在標(biāo)簽之間的相似度,那么將得到值為零的相似度,這意味著系統(tǒng)會認(rèn)為這兩部電影在用戶看來是完全不同的,不幸的是,對于一個喜歡動作和冒險(xiǎn)電影的用戶來說,如果用戶曾經(jīng)對電影 1 打過評分,但由于電影 1和電影2的相似度為零,那么電影2 就沒有機(jī)會被推薦給那個用戶,但是如果換種方式使用項(xiàng)目標(biāo)簽數(shù)據(jù),具體來說,可以統(tǒng)計(jì)所有不同標(biāo)簽的共現(xiàn)次數(shù),那么就可以計(jì)算出標(biāo)簽之間的相關(guān)性,這樣就可以用標(biāo)簽相關(guān)性代替標(biāo)簽向量來計(jì)算項(xiàng)目之間的標(biāo)簽相似度了,在前面提到的情況中,可以利用動作標(biāo)簽和冒險(xiǎn)標(biāo)簽之間的相關(guān)性來計(jì)算兩部電影的相似度,這樣得到的電影相似度就不會為零,而用戶可能得到滿意的推薦.
本文根據(jù)不同標(biāo)簽的共現(xiàn)次數(shù)來計(jì)算標(biāo)簽間的相關(guān)性,具體如式(5)所示,其中COR(Ti,Tj)代表標(biāo)簽Ti和標(biāo)簽Tj的相關(guān)度,k為數(shù)據(jù)集中的項(xiàng)目數(shù)目,mn為訓(xùn)練集中的第n個 項(xiàng)目,I(TiandT j)和I(Ti)是指示函數(shù),前者判斷當(dāng)前項(xiàng)目是否同時含有標(biāo)簽Ti和標(biāo)簽Tj,后者判斷當(dāng)前項(xiàng)目是否含有標(biāo)簽Ti,若為真則函數(shù)值為1,否則為0.
如式(6)所示,可以計(jì)算出項(xiàng)目間基于標(biāo)簽的相似性,其中,Ttmi和Ttmj分別表示項(xiàng)目mi的第tmi個標(biāo)簽和項(xiàng)目mj的第tmj個標(biāo)簽,kmi和kmj分別表示項(xiàng)目mi和項(xiàng)目mj的標(biāo)簽數(shù).式(6)通過式(5)對兩個項(xiàng)目中的各個標(biāo)簽對計(jì)算相關(guān)度,之后再求出兩個項(xiàng)目中所有標(biāo)簽對間相關(guān)度的均值得出兩個項(xiàng)目的標(biāo)簽相似性.
如前文所述,基于項(xiàng)目的協(xié)同過濾算法僅利用用戶矩陣來進(jìn)行推薦,兩個項(xiàng)目的相似性很大程度取決于有多少用戶共同評價過,這就使傳統(tǒng)的協(xié)同過濾算法偏向于給單個用戶推薦大眾流行的項(xiàng)目,但并未探究用戶對特定項(xiàng)目標(biāo)簽的主觀偏好,因此給品味獨(dú)特的用戶的推薦就不夠個性化,考慮到傳統(tǒng)算法的這一不足,本文使用支持向量機(jī)構(gòu)建一種可以預(yù)測單個用戶對項(xiàng)目標(biāo)簽偏好的模型,以提高推薦的個性化程度和準(zhǔn)確度.
由于要訓(xùn)練預(yù)測模型,因此要根據(jù)用戶歷史評分構(gòu)建數(shù)據(jù)集,設(shè)用戶ui的歷史評價項(xiàng)目集合為M={m1,m2,···,mK},項(xiàng)目集中任意一個項(xiàng)目mk包含標(biāo)簽的集合為T={t1,t2,···,tl},l表示項(xiàng)目mk包含的標(biāo)簽總數(shù),用戶ui對項(xiàng)目mk的評分為Ri,k,首先需要確定用戶對項(xiàng)目的偏好程度,可以依據(jù)評分設(shè)定一個用戶偏好閾值?,若Ri,k≥?,則認(rèn)為用戶ui對項(xiàng)目mk有正向偏好,若Ri,k<?,則認(rèn)為用戶ui對項(xiàng)目mk有負(fù)向偏好,其次,需要將用戶對項(xiàng)目的偏好映射到用戶對標(biāo)簽的偏好上,本文的做法是構(gòu)建項(xiàng)目mk的標(biāo)簽特征向量xk={xk1,xk2,···,xkL},將其對應(yīng)的用戶偏好記為yk,L表示所有標(biāo)簽的總數(shù),xki表示項(xiàng)目mk屬于標(biāo)簽ti的程度,具體計(jì)算如式(7)所示,項(xiàng)目標(biāo)簽特征向量記錄項(xiàng)目屬于各個標(biāo)簽的程度,若用戶對項(xiàng)目mk有正向偏好,則將用戶對該標(biāo)簽特征向量的偏好yk設(shè)為1,否則將yk設(shè)為-1.
項(xiàng)目標(biāo)簽特征向量包含了所有標(biāo)簽的權(quán)值,這么做的原因和3.1 節(jié)中所述例子類似,即若僅考慮用戶已評價過的標(biāo)簽,則學(xué)習(xí)到的預(yù)測模型只會在這個用戶歷史評價標(biāo)簽范圍內(nèi)做出有效預(yù)測,對一個不在該范圍內(nèi)但和用戶歷史評價標(biāo)簽高度相關(guān)的標(biāo)簽就會一直預(yù)測為負(fù)向偏好,這顯然是不合理的.
對任意一個用戶ui,其標(biāo)簽偏好數(shù)據(jù)集為{(x1,y1),(x2,y2),···,(xK,yK)},其中,K為用戶已評價項(xiàng)目的總數(shù),這樣就可以對每個用戶訓(xùn)練一個標(biāo)簽偏好預(yù)測模型,預(yù)測模型的獲得需要求解如式(8)所示的優(yōu)化問題[11]:
式(8)中,ω ·xi+b為需要求解的預(yù)測模型,在實(shí)際情況中,一些樣本數(shù)據(jù)往往是非線性可分的,支持向量機(jī)通常會先使用一些映射函數(shù)將樣本的特征從低維空間映射到高維空間中,然后再進(jìn)行后續(xù)的優(yōu)化步驟,最終的預(yù)測模型可由式(9)表示.
式(9)中,xj是支持向量,μ為支持向量的個數(shù),αj是支持向量xj所對應(yīng)的拉格朗日乘子,經(jīng)映射函數(shù)映射后的點(diǎn)積運(yùn)算k(x,xj)=φ(x)·φ(xj)被稱為核函數(shù).
在預(yù)測階段,將項(xiàng)目的標(biāo)簽特征向量輸入到預(yù)測模型f(x)中,若所得結(jié)果為正數(shù),則說明用戶可能會對該項(xiàng)目的標(biāo)簽感興趣,否則就表示用戶可能不感興趣,同時結(jié)果的大小也反映了用戶對項(xiàng)目標(biāo)簽正偏好或負(fù)偏好的程度.
目前有些研究工作考慮了項(xiàng)目各種屬性間的相似度,并將其與評分相似度相結(jié)合,在一定程度上進(jìn)一步提高項(xiàng)目相似度計(jì)算的準(zhǔn)確度[12,13],然而項(xiàng)目屬性信息只能從項(xiàng)目的角度單方面地描述項(xiàng)目的特征,在電影推薦中,常識思維認(rèn)為動畫標(biāo)簽的電影是面向低齡用戶的,但是對為有些動畫標(biāo)簽電影打過較高評分的用戶群體的特征進(jìn)行分析,就會發(fā)現(xiàn)這些用戶不一定是低齡用戶,那么這些動畫電影也不一定是面向低齡用戶的,其就不應(yīng)被和面向低齡用戶動畫電影等同看待,更進(jìn)一步說,雖然兩個項(xiàng)目具有相同的屬性信息,但用戶對它們的偏好也有可能是不同的,具有相同屬性信息的項(xiàng)目可能會受到不同用戶群體的偏好,而具有不同屬性信息的項(xiàng)目也可能會受到同一用戶群體的偏好,由此可以看出,分析項(xiàng)目的受眾特征信息可以比直接分析項(xiàng)目自身屬性信息能更準(zhǔn)確地判斷項(xiàng)目會受哪類用戶偏好,所以,不能僅僅根據(jù)項(xiàng)目的屬性信息來評估兩個項(xiàng)目之間的相似性,因?yàn)檫@可能會導(dǎo)致有偏的推薦,此外還應(yīng)該考慮項(xiàng)目的受眾類型是否相似.
有研究工作利用了用戶特征來提高用戶之間相似度計(jì)算的精確度[14,15],但是很少有研究試圖利用用戶特征來提高項(xiàng)目之間相似度計(jì)算的精確度,本文提出利用受眾特征來構(gòu)造項(xiàng)目的擴(kuò)充屬性,進(jìn)而可以從項(xiàng)目受眾類型的角度來豐富項(xiàng)目的屬性,是對僅利用項(xiàng)目自身屬性計(jì)算項(xiàng)目相似度的有效補(bǔ)充,最終可以更全面地比較項(xiàng)目之間的相似度.
在給出項(xiàng)目擴(kuò)充屬性的計(jì)算方式之前,將列舉一個關(guān)于電影推薦的啟發(fā)性例子.
假設(shè)有表1所示用戶電影評分(0 分表示沒有評分)和表2所示用戶特征信息,若表1中所列都不是熱門電影,那么本文推測一部電影的受眾在某些方面是相似的,也就是說如果用戶有共同的品味,那么在其他方面應(yīng)該也有一定的相似性.在這個例子中,從直觀上來看,對電影1、2和5 這3 部電影有正面評價的用戶有兩個方面比較相似,其一是用戶的年齡,其二是用戶的職業(yè);再如電影3和電影4,通過用戶評分和用戶特征信息可以看出電影3 更受女性用戶偏好,電影4 更受男性用戶偏好.
表1 用戶電影評分
表2 用戶特征信息
通過對數(shù)據(jù)集中每個項(xiàng)目的用戶特征信息進(jìn)行統(tǒng)計(jì)分析,就可以得出每個項(xiàng)目的受眾特征,然后利用這些受眾特征構(gòu)造項(xiàng)目的擴(kuò)充屬性來表示該項(xiàng)目的受眾類型,便可以進(jìn)一步從受眾類型的角度進(jìn)行項(xiàng)目相似度計(jì)算.
定義用戶的特征集合為{f1,f2,···,fk},用戶u的特征可以表示為{uf1,uf2,···,ufk},若該用戶具備特征fi,則u fi的值為1,否則為0,定義項(xiàng)目mi的擴(kuò)充屬性集合為Ami={Attr1,Attr2,···,Attrk},項(xiàng)目mi關(guān)于用戶特征fi的擴(kuò)充屬性值,即Attri的大小,可通過式(10)來計(jì)算,式(11)對式(10)的計(jì)算結(jié)果進(jìn)行了歸一化處理:
式(10) 中,Rated表示對項(xiàng)目有過評價的用戶集合,I(ufi==1)是一個指示函數(shù),若用戶u具備特征fi,則函數(shù)值為1,否則為0,Ru為用戶u對該項(xiàng)目的評分.項(xiàng)目的各個擴(kuò)充屬性值表現(xiàn)為對項(xiàng)目有過評分的用戶的特征加權(quán)評分(權(quán)值即前文所提指示函數(shù)的值)與項(xiàng)目歷史評分總和的比值,若一個用戶對一個項(xiàng)目有較高的評分,則該用戶的特征信息對該項(xiàng)目的擴(kuò)充屬性值就會有較高的貢獻(xiàn),最終,項(xiàng)目的擴(kuò)充屬性會記錄對項(xiàng)目有較高評分的用戶群體的特征信息.
項(xiàng)目的擴(kuò)充屬性標(biāo)識項(xiàng)目的受眾類型信息,因此,如果不同項(xiàng)目的受眾類型是相似的,那么這些項(xiàng)目也可以被認(rèn)為是相似的,可用于推薦,因?yàn)樗鼈兪艿搅司哂邢嗨铺卣饔脩羧后w的偏好.
通過項(xiàng)目擴(kuò)充屬性計(jì)算項(xiàng)目相似性的方法如式(12):
式(12)中,Ami,k和Amj,k分別表示項(xiàng)目mi和項(xiàng)目mj的第k個擴(kuò)充屬性值的大小,當(dāng)兩個項(xiàng)目的各個擴(kuò)充屬性值基本相同時,根據(jù)式(12)計(jì)算出的項(xiàng)目相似值就會接近1,也就表明兩個項(xiàng)目具有相似的受眾群體,當(dāng)兩個項(xiàng)目的各個擴(kuò)充屬性值基本不同時,根據(jù)式(12)計(jì)算出的項(xiàng)目相似值就會接近0,表明兩個項(xiàng)目具有不相似的受眾群體.
在基于評分的項(xiàng)目相似度計(jì)算基礎(chǔ)上,本文結(jié)合第3 節(jié)和第4 節(jié)描述的標(biāo)簽相似度和擴(kuò)充屬性相似度提出綜合相似度.綜合相似度考慮項(xiàng)目在3 個維度上的相似性,采用相乘的方式得出,如式(13)所示:
對用戶u未評價過的項(xiàng)目mi,并找出k個與項(xiàng)目mi最相似的項(xiàng)目,再根據(jù)式(14)計(jì)算用戶u對項(xiàng)目mi的預(yù)測評分,式(14)對相似項(xiàng)目集合中的項(xiàng)目計(jì)算出經(jīng)過相似度加權(quán)的評分均值,加上待預(yù)測項(xiàng)目的歷史評分均值,最終得到預(yù)測評分,其中Ni表示項(xiàng)目mi的k近鄰,MU表示用戶u已 經(jīng)評價過的項(xiàng)目集合,Ru,mk表示用戶u對項(xiàng)目mk的評分,和為項(xiàng)目mi和mk的平均分.
雖然式(14)使用了項(xiàng)目綜合相似度來預(yù)測用戶評分,會一定程度提高預(yù)測準(zhǔn)確度,但未能直接表達(dá)出用戶對項(xiàng)目的主觀偏好,因此結(jié)合3.4 節(jié)所述用戶標(biāo)簽偏好預(yù)測模型,提出一種用戶標(biāo)簽偏好修正因子,如式(15)所示,能根據(jù)用戶主觀偏好情況,調(diào)整預(yù)測評分計(jì)算.
式(15)中,fu(x)為用戶u的標(biāo)簽偏好預(yù)測模型,xi為待預(yù)測項(xiàng)目mi的標(biāo)簽特征向量,fu(xi)為用戶u對項(xiàng)目mi的標(biāo)簽偏好度,若其值為正且越大,則說明用戶對項(xiàng)目標(biāo)簽正向偏好程度越大,β值會趨于1,否則 β值趨于0.將式(15)引入到式(14)中即得用戶偏好修正的預(yù)測評分計(jì)算法,如式(16)所示.
式(16)中,最后一個分項(xiàng)即為協(xié)同過濾算法評分預(yù)測公式中根據(jù)待預(yù)測項(xiàng)目與用戶歷史偏好項(xiàng)目的相似性計(jì)算出的預(yù)測偏差,修正因子可以調(diào)節(jié)預(yù)測偏差對最終預(yù)測評分計(jì)算的作用,若用戶偏好該項(xiàng)目的標(biāo)簽,則最終預(yù)測評分就會受到預(yù)測偏差的影響,否則就會削弱預(yù)測偏差帶來的影響,即使待預(yù)測項(xiàng)目與用戶歷史偏好項(xiàng)目的相似度很高,但若偏好預(yù)測模型預(yù)測出用戶的偏好度很低,則預(yù)測評分也不會很高.
輸入:用戶對項(xiàng)目的評分矩陣RM×N,用戶的特征矩陣FM×K,項(xiàng)目類別矩陣GN×L,近鄰數(shù)k,待預(yù)測項(xiàng)目m,待推薦用戶u.
輸出:用戶u對項(xiàng)目m的預(yù)測評分.
步驟1.根據(jù)項(xiàng)目類別信息,根據(jù)式(5)計(jì)算出項(xiàng)目標(biāo)簽的關(guān)聯(lián)度.
步驟2.根據(jù)式(6)計(jì)算出數(shù)據(jù)集中項(xiàng)目間的標(biāo)簽相似度.
步驟3.根據(jù)項(xiàng)目標(biāo)簽信息和評分信息構(gòu)建用戶標(biāo)簽偏好數(shù)據(jù)集,使用支持向量機(jī)對數(shù)據(jù)集中每個用戶訓(xùn)練標(biāo)簽偏好預(yù)測模型.
步驟4.根據(jù)用戶特征,對數(shù)據(jù)集中每個項(xiàng)目按式(10)和式(11)計(jì)算出項(xiàng)目的擴(kuò)充屬性.
步驟5.根據(jù)式(12)計(jì)算出數(shù)據(jù)集中項(xiàng)目間的擴(kuò)充屬性相似性.
步驟6.根據(jù)式(13)計(jì)算出項(xiàng)目間的綜合相似度.
步驟7.對于待預(yù)測項(xiàng)目m,根據(jù)步驟6 得出的項(xiàng)目綜合相似度找出與項(xiàng)目m最相似的k個項(xiàng)目作為鄰居,并在鄰居中去除掉用戶已經(jīng)評價過的項(xiàng)目,通過式(16)計(jì)算出用戶u對項(xiàng)目m的預(yù)測評分.
本文采用在推薦系統(tǒng)研究領(lǐng)域中具有較大知名度的MovieLens-100 k 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)分析[16],該數(shù)據(jù)集包含了由明尼蘇達(dá)大學(xué)GroupLens 研究組從MovieLens電影評分網(wǎng)站上收集的943 個用戶對1652 部電影的100 000 條評分?jǐn)?shù)據(jù)、943 條用戶個人信息以及1652條電影信息.本文使用用戶個人信息中的性別、年齡和職業(yè)信息來構(gòu)造項(xiàng)目的擴(kuò)充屬性,并利用電影信息中的標(biāo)簽信息來計(jì)算項(xiàng)目標(biāo)簽的關(guān)聯(lián)度以及訓(xùn)練用戶標(biāo)簽偏好預(yù)測模型.數(shù)據(jù)集被隨機(jī)地分成80%的訓(xùn)練數(shù)據(jù)集和20%的測試數(shù)據(jù)集.
為了評估算法預(yù)測的用戶評分與實(shí)際用戶評分之間的差異,本文采用了均方根誤差(RMSE)作為算法性能評估的指標(biāo).RMSE的計(jì)算如式(17)所示.
式中,TD為測試數(shù)據(jù)集,Ru,i為測試數(shù)據(jù)集中用戶u對項(xiàng)目i的實(shí)際評分,為算法預(yù)測出的測試數(shù)據(jù)集中用戶u對項(xiàng)目i的評分.
本文根據(jù)用戶歷史評分?jǐn)?shù)據(jù)學(xué)習(xí)并預(yù)測用戶的標(biāo)簽偏好,因此合理的用戶偏好閾值 ?的選擇就很關(guān)鍵,其直接影響到預(yù)測模型的工作性能,因此就幾種閾值?的選擇對算法性能的影響做了實(shí)驗(yàn)驗(yàn)證.由于數(shù)據(jù)集采用了1 分至5 分的評價標(biāo)準(zhǔn),所以采用2 分、3 分和4 分作為用戶正向偏好和負(fù)向偏好的分界閾值進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖1所示.
由圖1實(shí)驗(yàn)結(jié)果可以看出當(dāng) ?取3 時,本文算法的評分預(yù)測性能表現(xiàn)得最好,故后續(xù)實(shí)驗(yàn)取?為3.
圖1 閾值?對算法性能的影響
為了驗(yàn)證用戶標(biāo)簽偏好修正因子 β能夠有效地根據(jù)用戶偏好修正傳統(tǒng)評分預(yù)測公式的計(jì)算結(jié)果,故分別采用式(14)和式(16)作為評分預(yù)測公式進(jìn)行了對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖2所示.
由圖2實(shí)驗(yàn)結(jié)果可以看出,用戶標(biāo)簽偏好修正因子 β確實(shí)能在一定程度上修正預(yù)測評分的誤差,說明了用戶偏好的挖掘?qū)ν扑]算法的重要性.
圖2 用戶標(biāo)簽偏好修正因子β的有效性
本文假設(shè)擴(kuò)充屬性的粒度對項(xiàng)目相似度計(jì)算有一定的影響,即用戶特征劃分地越細(xì),則項(xiàng)目相似度的計(jì)算準(zhǔn)確度就越高.為了驗(yàn)證這一假設(shè),本文根據(jù)用戶的年齡特征和職業(yè)相似性,通過適當(dāng)簡化原始數(shù)據(jù)集中的用戶特征構(gòu)造了一個粒度稍低的用戶特征集用于實(shí)驗(yàn),其中,使用原始數(shù)據(jù)集中用戶特征的算法記為TPIAE-1,使用本文簡化用戶特征的算法記為TP-IAE-2.擴(kuò)充屬性粒度對本文算法性能影響的實(shí)驗(yàn)結(jié)果如圖3所示.
由圖3實(shí)驗(yàn)結(jié)果可以看出,兩種算法預(yù)測誤差率變化趨勢一致,但使用原始用戶特征的TP-IAE-1 算法的預(yù)測誤差率低于使用簡化用戶特征的TP-IAE-2 算法,很顯然,這是因?yàn)樵加脩籼卣骶哂邢鄬Ω叩牧6?因此項(xiàng)目受眾特征更加豐富,可以為項(xiàng)目構(gòu)造更精細(xì)的擴(kuò)充屬性,項(xiàng)目受眾類型相似度計(jì)算也更加準(zhǔn)確.
圖3 擴(kuò)充屬性粒度對本文算法性能的影響
為了驗(yàn)證本文算法對傳統(tǒng)基于項(xiàng)目的協(xié)同過濾算法做出了有效的改進(jìn),以及相較于其他相關(guān)算法的性能改善,故將本文算法TP-IAE和TP-IAE- β (在評分預(yù)測階段,TP-IAE用式(14),TP-IAE- β用式(16)進(jìn)行)與基于項(xiàng)目的協(xié)同過濾算法(IBCF)、文獻(xiàn)[17]提出的基于內(nèi)容和標(biāo)簽權(quán)重的混合推薦算法(TW-ContentItem)、文獻(xiàn)[18]提出的結(jié)合項(xiàng)目屬性偏好的混合協(xié)同過濾算法(HCF)以及文獻(xiàn)[19]提出的基于用戶偏好矩陣填充的改進(jìn)混合推薦算法(UPR)做了對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4所示.
圖4 對比實(shí)驗(yàn)結(jié)果
從圖4中可以看出,本文所提算法和其他4 種對比算法的預(yù)測評分誤差率都隨著鄰居數(shù)目的增加而下降,4 種算法的用戶預(yù)測評分誤差率變化趨勢也基本相同,但在鄰居數(shù)的變化范圍內(nèi),本文算法的預(yù)測評分誤差率相比其他4 種算法降低了2%至13%,顯示出良好的推薦效果.與傳統(tǒng)基于項(xiàng)目協(xié)同過濾方法相比,盡管HCF 算法在預(yù)測效果上有了很大的提高,因?yàn)槠洳辉賰H依賴用戶的評分信息,但是,該方法只是從項(xiàng)目的角度額外地比較項(xiàng)目相似度,而本文算法不僅考慮了項(xiàng)目的標(biāo)簽屬性信息,另外還考慮了項(xiàng)目的受眾特征,用來判斷給定的兩個項(xiàng)目是否會得到同一用戶群體的偏好,可以進(jìn)一步地提高項(xiàng)目相似度計(jì)算的準(zhǔn)確性,與UPR和TW-ContentItem 算法的對比結(jié)果也顯示出本文算法預(yù)測效果的提升,且經(jīng)用戶標(biāo)簽偏好修正因子β對評分預(yù)測公式進(jìn)行修正后,預(yù)測評分的誤差率能夠進(jìn)一步地下降.
本文針對傳統(tǒng)基于項(xiàng)目的協(xié)同過濾算法面臨相似度計(jì)算不準(zhǔn)確和推薦缺乏個性化這兩個問題做了相關(guān)的改進(jìn)工作,提出的方法結(jié)合項(xiàng)目的受眾特征信息和項(xiàng)目的標(biāo)簽信息對傳統(tǒng)基于項(xiàng)目的協(xié)同過濾算法的相似度計(jì)算方式做出了有效改進(jìn),不僅可以避免項(xiàng)目相似度計(jì)算方法過于片面單一,而且可以在評分?jǐn)?shù)據(jù)稀疏的實(shí)際場景下提高項(xiàng)目相似性計(jì)算的準(zhǔn)確度,提出的方法還考慮了用戶的個性化偏好程度,以進(jìn)一步提高推薦效果,實(shí)驗(yàn)結(jié)果表明,本文算法相較傳統(tǒng)基于項(xiàng)目的協(xié)同過濾算法可以顯著地降低預(yù)測評分的誤差率.基于項(xiàng)目的協(xié)同過濾算法的核心是項(xiàng)目相似性計(jì)算,因此下一步的工作是研究從更多的維度來計(jì)算項(xiàng)目的相似性以提高推薦算法的性能.