陶志勇 崔新新
遼寧工程技術(shù)大學(xué)電子與信息工程學(xué)院 遼寧 沈陽(yáng) 125105)
隨著網(wǎng)絡(luò)的普及,信息量的劇增,推薦系統(tǒng)得到迅速發(fā)展。推薦系統(tǒng)的核心是推薦算法,推薦算法的方式可以分為:社交網(wǎng)絡(luò)的推薦[1]、基于內(nèi)容的推薦[2]、基于協(xié)同過(guò)濾的推薦[3]。其中,協(xié)同過(guò)濾是推薦系統(tǒng)[4-5]中應(yīng)用最早并且最成功的算法之一。盡管協(xié)同過(guò)濾算法應(yīng)用很廣泛,但仍面臨著數(shù)據(jù)稀疏、冷啟動(dòng)、推薦精度低等問(wèn)題。為解決這些問(wèn)題,學(xué)者們提出了隱馬爾科夫[6]、支持向量機(jī)[7]、神經(jīng)網(wǎng)絡(luò)[8-9]等方法,但仍然受數(shù)據(jù)稀疏的影響嚴(yán)重。在傳統(tǒng)的協(xié)同過(guò)濾算法中,數(shù)據(jù)稀疏,反饋?lái)?xiàng)目過(guò)少勢(shì)必會(huì)造成項(xiàng)目間相似度計(jì)算不準(zhǔn)確,進(jìn)一步導(dǎo)致興趣度的估計(jì)值和真實(shí)值存在較大的偏差。因此,合理高效地利用已知數(shù)據(jù)的信息,獲得接近真實(shí)相似度的計(jì)算方法成為學(xué)者們研究的熱點(diǎn)。杜丹琪等[10]利用項(xiàng)目的屬性進(jìn)行聚類,根據(jù)聚類的結(jié)果和同一類別的項(xiàng)目屬性值加權(quán)的方法進(jìn)行評(píng)分預(yù)測(cè)。同時(shí),為解決用戶興趣隨時(shí)間變化的問(wèn)題引入TimeRBM模型再次進(jìn)行評(píng)分預(yù)測(cè),最后采用線性組合的方法對(duì)兩種預(yù)測(cè)結(jié)果進(jìn)行合理取舍。劉靜等[11]提出了一種基于用戶興趣度和項(xiàng)目屬性的推薦算法,算法在計(jì)算相似度過(guò)程中加入基于時(shí)間的用戶興趣度權(quán)重函數(shù),然后再與項(xiàng)目屬性相似度進(jìn)行融合,最后進(jìn)行項(xiàng)目預(yù)測(cè)與推薦。宮志晨等[12]利用多向測(cè)量的方法獲得用戶對(duì)項(xiàng)目的評(píng)分相似性,然后結(jié)合項(xiàng)目屬性挖掘用戶對(duì)項(xiàng)目屬性的偏好,采用加權(quán)的方式獲得最終的用戶間相似度。胡建等[13]采用最大差值評(píng)分解決了個(gè)別項(xiàng)目造成非常相似用戶丟失的問(wèn)題,利用用戶的屬性進(jìn)行量化評(píng)分,然后再對(duì)其評(píng)分進(jìn)行相似度計(jì)算,這樣有利于目標(biāo)用戶獲得較為相似的近鄰用戶。王三虎等[14]將用戶評(píng)分相似度、興趣的傾向相似度、評(píng)分相似度的置信度以及用戶屬性相似度進(jìn)行融合提出了一種融合用戶評(píng)分和屬性相似度的協(xié)同過(guò)濾推薦算法。
以上文獻(xiàn)一定程度上提高了推薦質(zhì)量的問(wèn)題,但并沒(méi)有做到充分利用已有的數(shù)據(jù)信息。因此。本文提出了一種充分融合用戶和項(xiàng)目屬性的協(xié)同過(guò)濾算法。算法的核心思想為:首先利用用戶(項(xiàng)目)屬性修改用戶(項(xiàng)目)相似度計(jì)算方法,確定最相似用戶(項(xiàng)目)集;然后將兩種算法組合加權(quán),再進(jìn)行興趣度估計(jì);最后利用用戶和項(xiàng)目屬性信息挖掘用戶偏好,利用天牛須搜索方法獲得融合用戶偏好的興趣度估計(jì)方法。本文在Movie Lens 100k的數(shù)據(jù)集上進(jìn)行試驗(yàn),實(shí)驗(yàn)表明:本算法緩解了數(shù)據(jù)稀疏性和冷啟動(dòng)對(duì)推薦系統(tǒng)的影響,提高了推薦精度。
傳統(tǒng)的user-based CF算法是使用用戶的歷史信息,獲取用戶間的相似度,然后選擇相似性最高的用戶作為最相似用戶集。興趣度估計(jì)常用的相似性度量方式有Jaccard公式、余弦公式。sim(u,v)表示用戶u和用戶v之間的相似度,則以上相似性的度量公式如下:
(1)
(2)
式中:N(u)表示用戶u有過(guò)正反饋的項(xiàng)目集合;N(v)表示用戶v有過(guò)正反饋的項(xiàng)目集合。由于式(2)過(guò)于粗略,John S.breese提出了修正余弦公式如式(3)所示。本文的用戶相似度計(jì)算就采用式(3)。
(3)
推薦生成的核心是興趣度估計(jì),即利用目標(biāo)用戶的類似用戶來(lái)估量目標(biāo)用戶對(duì)未瀏覽過(guò)項(xiàng)目的興趣度,興趣度估計(jì)方法如下所示:
(4)
式中:s(u,k)表示用戶u的k個(gè)最近鄰,N(i)代表對(duì)項(xiàng)目i有過(guò)行為的用戶集合,rvi代表用戶v對(duì)項(xiàng)目i的興趣度,因?yàn)槭褂玫氖菃我恍袨榈碾[反饋數(shù)據(jù),所以rui=1。
user-based CF的時(shí)效性較強(qiáng),適用于用戶個(gè)性化不太明顯的領(lǐng)域。存在如下缺點(diǎn):(1) 當(dāng)用戶有新行為時(shí),對(duì)推薦的結(jié)果影響不大。(2) 經(jīng)常推薦的是搶手項(xiàng)目,推薦長(zhǎng)尾里的項(xiàng)目能力不足。(3) 當(dāng)新的用戶對(duì)很少的項(xiàng)目產(chǎn)生行為時(shí),不能進(jìn)行個(gè)性化推薦。
傳統(tǒng)的item-based CF是利用項(xiàng)目之間的相似度進(jìn)行推薦的,首先計(jì)算項(xiàng)目間的相似度,相似度的計(jì)算方式和1.1節(jié)用戶相似度計(jì)算方式類似。項(xiàng)目i和項(xiàng)目j的相似性計(jì)算方式如下:
(5)
式中:N(i)為瀏覽過(guò)項(xiàng)目i的用戶集合;N(j)為瀏覽過(guò)項(xiàng)目j的用戶集合;N(g)為瀏覽過(guò)項(xiàng)目i也瀏覽過(guò)項(xiàng)目j的用戶集合。其次得到項(xiàng)目間的相似性后,尋找用戶瀏覽過(guò)項(xiàng)目的最相似項(xiàng)目集,利用該集合估計(jì)用戶對(duì)未瀏覽過(guò)的項(xiàng)目的偏好。興趣度估量計(jì)算方法如下:
(6)
式中:N(u)表示用戶u有過(guò)正反饋的項(xiàng)目集,s(i,k)表示項(xiàng)目i的k最近鄰,rui表示用戶u對(duì)項(xiàng)目i的興趣度。這里和基于用戶的協(xié)同過(guò)濾一樣,rui=1。
item-based CF有較強(qiáng)的新穎性,容易挖掘長(zhǎng)尾里的項(xiàng)目,利于滿足用戶的個(gè)性化需求。用戶有新行為,一定會(huì)導(dǎo)致推薦結(jié)果的實(shí)時(shí)變化,但是也存在一定的缺點(diǎn)。由于item-based CF是通過(guò)項(xiàng)目間的相似性進(jìn)行推薦的,很難探索到用戶潛在喜歡的項(xiàng)目,推薦的項(xiàng)目樣式單一。
融合用戶和項(xiàng)目屬性的協(xié)同過(guò)濾算法,簡(jiǎn)稱UIACF算法,下面詳細(xì)介紹UIACF算法的主要內(nèi)容。
帶有不同屬性的用戶對(duì)項(xiàng)目的需求有所不同,比如用戶的年齡屬性,年輕人和老年人的消費(fèi)觀念差別很大,年輕人更加注重的是購(gòu)物過(guò)程中的享受和愉悅感,而老年人更加注重物美價(jià)廉,所以,用戶屬性影響用戶之間的相似度。因此,本文在傳統(tǒng)的用戶相似度計(jì)算方法中,引入了用戶屬性權(quán)重。根據(jù)MovieLens 100k(http://www.grouplens.org/)[15]數(shù)據(jù)集提供的用戶屬性信息,引入用戶年齡、性別、職業(yè)屬性的權(quán)重。
年齡為yu的用戶u、年齡為yv的用戶v,他們的年齡權(quán)重的計(jì)算方式如下所示:
ageweightu,v=e-|yu-yv|
(7)
MovieLens 100k數(shù)據(jù)集將用戶的職業(yè)按行業(yè)屬性分為21種。用戶u的性別和職業(yè)屬性的集合記為Xu,用戶v的職業(yè)屬性和性別屬性的集合記為Xv,則這兩個(gè)屬性的權(quán)重用式(8)來(lái)計(jì)算:
(8)
引入用戶屬性的相似度計(jì)算方法為:
simim(u,v)= (1-a1-a2)×sim(u,v)+
a1×soweightu,v+a2×ageweightu,v
(9)
式中:ageweightu,v和soweightu,v分別為用戶年齡屬性權(quán)重和性別職業(yè)屬性權(quán)重,a1,a2∈[0,1]為未知參數(shù),實(shí)際應(yīng)用時(shí)可以根據(jù)用戶類別屬性做回歸分析擬合得出。
同理具有相同屬性的項(xiàng)目的相似性也較高,而傳統(tǒng)的項(xiàng)目相似度計(jì)算的過(guò)程中卻忽略了這一點(diǎn),因此引入項(xiàng)目屬性權(quán)重作為衡量項(xiàng)目相似度的一部分,在項(xiàng)目相似度計(jì)算中引入項(xiàng)目屬性權(quán)重。項(xiàng)目i和項(xiàng)目j屬性的集合分別記Ti和Tj,項(xiàng)目屬性權(quán)重計(jì)算方式如下所示:
(10)
最后改進(jìn)的電影相似度計(jì)算公式為:
simim(i,j)=(1-b1)sim(i,j)+b1×typeweighti,j
(11)
式中:typeweighti,j∈[0,1],為電影類型權(quán)重,b1∈[0,1],實(shí)際應(yīng)用時(shí)可以根據(jù)項(xiàng)目類別屬性做回歸分析擬合得出。
2.1節(jié)詳細(xì)介紹了融合用戶屬性的用戶相似性度量方法和融合項(xiàng)目屬性的項(xiàng)目相似性度量方法,改進(jìn)用戶相似度的計(jì)算方法后的興趣度計(jì)算方式如式(12),改進(jìn)項(xiàng)目相似度后的興趣度計(jì)算方式如式(13)。
(12)
(13)
式(12)、式(13)會(huì)得到用戶對(duì)同一種項(xiàng)目的兩種興趣度估計(jì)值,為了得到更加準(zhǔn)確的興趣度,采用加權(quán)的方式,進(jìn)行綜合預(yù)測(cè)。引入控制參數(shù)a,最終的興趣度估計(jì)方式如下:
PUI(u,i)=(1-a)×pI(u,i)+a×pU(u,i)
(14)
式中:a為控制參數(shù),當(dāng)用戶數(shù)量多于項(xiàng)目數(shù)量時(shí),用戶相似度計(jì)算占主導(dǎo)地位,參數(shù)a權(quán)重應(yīng)該偏?。环粗?,項(xiàng)目相似度計(jì)算占主導(dǎo)地位,這時(shí)參數(shù)a應(yīng)該偏大,實(shí)際應(yīng)用時(shí)參數(shù)a可以根據(jù)用戶數(shù)量和項(xiàng)目數(shù)量統(tǒng)計(jì)確定。
兩種算法的結(jié)合不僅彌補(bǔ)了基于用戶的協(xié)同過(guò)濾存在的對(duì)用戶新行為反映不及時(shí)、推薦長(zhǎng)尾項(xiàng)目能力不足的缺點(diǎn),還解決基于項(xiàng)目的協(xié)同過(guò)濾存在的推薦項(xiàng)目多樣性性能差的問(wèn)題。
2016年中國(guó)旅游領(lǐng)域用戶行為畫(huà)像及偏好分析認(rèn)為旅游行業(yè)各領(lǐng)域中男性偏愛(ài)航空服務(wù),女性偏愛(ài)旅游攻略,同時(shí)也反映了用戶的某些屬性對(duì)帶有某些屬性項(xiàng)目的興趣度存在影響。因此本節(jié)首先進(jìn)行了用戶屬性偏好的挖掘,然后利用用戶偏好對(duì)興趣度計(jì)算方式進(jìn)行改進(jìn)。
(1) 用戶年齡和項(xiàng)目類型 根據(jù)數(shù)據(jù)的用戶年齡屬性將用戶的年齡進(jìn)行分段。年齡階段為x的用戶的集合記為Ux,觀看過(guò)t類型項(xiàng)目的用戶的集合記為Iut,x階段的所有用戶觀看過(guò)的t類型項(xiàng)目總和記為sum(u∈Ux,i∈Iut)。x階段的用戶對(duì)t類型項(xiàng)目評(píng)分的平均值為他們對(duì)t類型項(xiàng)目的偏好值,計(jì)算方式如下所示:
(15)
(2) 用戶職業(yè)和項(xiàng)目類型 統(tǒng)計(jì)不同類型項(xiàng)目的瀏覽用戶以及各個(gè)類型中的不同職業(yè)的用戶對(duì)該類型打分的平均值,把這個(gè)平均值定義為不同職業(yè)對(duì)項(xiàng)目類型的偏好值。Uo表示職業(yè)為o用戶的集合,Iut表示用戶u瀏覽過(guò)的項(xiàng)目中類型為t的電影集合。sum(u∈Uo,i∈Iut)表示職業(yè)為o的所有用戶瀏覽過(guò)的項(xiàng)目類型為t的個(gè)數(shù)總和。職業(yè)為o的用戶對(duì)t類型項(xiàng)目偏好值的計(jì)算方式如下:
(16)
(3) 用戶性別和項(xiàng)目類型 統(tǒng)計(jì)不同類型的項(xiàng)目的瀏覽用戶以及各個(gè)類型中的不同性別的用戶對(duì)該類型打分的平均值,把這個(gè)平均值定義為用戶性別對(duì)項(xiàng)目類型的偏好值。性別為g的用戶的集合記為Ug,用戶u瀏覽過(guò)的項(xiàng)目中類型為t的項(xiàng)目集合記為Iut,性別為g的所有用戶瀏覽過(guò)的項(xiàng)目類型為t的個(gè)數(shù)總和記為,則性別為g的用戶對(duì)t類型的項(xiàng)目偏好值計(jì)算公式如下:
(17)
(4) 用戶和項(xiàng)目類型 不同用戶具有不同的偏好,前幾部分是針對(duì)用戶的不同屬性對(duì)項(xiàng)目類型的偏好。統(tǒng)計(jì)用戶對(duì)不同類型電影打分的平均值,用這個(gè)平均值反映用戶的對(duì)不同項(xiàng)目類型的偏好值。Iut表示用戶u瀏覽過(guò)的項(xiàng)目中類型為t的項(xiàng)目集合。表示用戶瀏覽過(guò)項(xiàng)目類型為t的個(gè)數(shù)。則用戶u對(duì)電影類型t的偏好值計(jì)算方式如下:
(18)
通過(guò)上述對(duì)用戶歷史信息的處理,利用用戶屬性對(duì)應(yīng)項(xiàng)目類型的偏好值,調(diào)節(jié)用戶對(duì)項(xiàng)目的興趣度的估計(jì)值。引入用戶年齡與項(xiàng)目類型的權(quán)重因子ωa、用戶職業(yè)與電影類型的權(quán)重因子ωo、用戶性別與項(xiàng)目類型的權(quán)重因子ωg、用戶個(gè)體和項(xiàng)目類型的權(quán)重因子ωu,最終的調(diào)節(jié)方式如下:
PUIA(u,i)= (1-ωa-ωg-ωo-ωu)×PUI(u,i)+
ωa×aweight(x,t)+ωg×gweight(g,t)+
ωo×oweight(o,t)+ωu×uweight(u,t)
(19)
式中:ωa、ωg、ωo、ωu為控制參數(shù),用于調(diào)節(jié)4種屬性偏好在最終的興趣度中所占的比重,使得興趣度更加接近真實(shí)情況。控制參數(shù)的確定是通過(guò)天牛須搜索獲得。天牛須搜索BAS(Beetle Antennae Search)[16-17]是2017年提出的一種高效的智能優(yōu)化算法,類似于遺傳算法、粒子群算法等智能算法。與傳統(tǒng)的智能算法相比,該算法具有不需要函數(shù)的具體形式、不需要梯度信息就可以高效尋優(yōu)的優(yōu)點(diǎn)。其生物原理為:天牛的身體長(zhǎng)有兩只觸角,在覓食時(shí)根據(jù)兩只觸角來(lái)判斷食物氣味的強(qiáng)弱。哪邊接收到的氣味強(qiáng)度大,天牛就會(huì)往哪邊飛。數(shù)學(xué)建模如下:
(1) 創(chuàng)建天牛須朝向的隨機(jī)向量且做歸一化處理。
(20)
式中:rands()為隨機(jī)函數(shù);k表示空間維度。
(2) 創(chuàng)建天牛左右須空間坐標(biāo)。
(21)
式中:xrn和xln分別表示天牛右須、天牛左須在第n次迭代時(shí)的位置坐標(biāo);xn表示天牛在第t次迭代時(shí)的質(zhì)心坐標(biāo);d0表示兩須之間的距離。
(3) 創(chuàng)建適應(yīng)度函數(shù)f(x),并計(jì)算f(xl)和f(xr)。
(4) 迭代更新天牛的位置。
xn+1=xn-δn×b×sign(f(xrn)-f(xln))
(22)
式中:δn表示第n次迭代時(shí)的步長(zhǎng)因子;sign()表示符號(hào)函數(shù)。
本文協(xié)同過(guò)濾的適應(yīng)度函數(shù)為:
(23)
式中:x=[ωa,ωg,ωo,ωu];Nx(i)表示x取值的情況下,對(duì)目標(biāo)用戶ui推薦商品列表。目標(biāo)用戶ui在測(cè)試集上有過(guò)歷史行為的電影的集合,記為T(mén)(i)。
目前推薦系統(tǒng)的推薦方式可以分為評(píng)分預(yù)測(cè)和top-N,評(píng)分預(yù)測(cè)估算的是用戶對(duì)項(xiàng)目發(fā)生行為后對(duì)項(xiàng)目的滿意程度,而top-N估算的是用戶對(duì)項(xiàng)目發(fā)生行為的可能性。在實(shí)際應(yīng)用中,top-N比評(píng)分預(yù)測(cè)更有應(yīng)用價(jià)值。這是因?yàn)榧词褂脩魧?duì)一個(gè)項(xiàng)目發(fā)生行為后的評(píng)分非常高,但是時(shí)間、場(chǎng)合等因素一直對(duì)該項(xiàng)目沒(méi)有發(fā)生過(guò)行為。這時(shí),評(píng)分預(yù)測(cè)沒(méi)有意義。本文的興趣度預(yù)測(cè)采用的top-N推薦,具體的算法步驟如下:
輸入:目標(biāo)用戶u,用戶-項(xiàng)目的評(píng)分矩陣H,最相似用戶集合U*的大小k1,最相似項(xiàng)目集I*的大小k2,推薦個(gè)數(shù)N。
輸出:對(duì)目標(biāo)用戶的N個(gè)推薦結(jié)果。
步驟1根據(jù)式(9)、式(11)分別計(jì)算目標(biāo)用戶(項(xiàng)目)和其他用戶(項(xiàng)目)的相似度,確定最相似用戶集合U*和最相似項(xiàng)目集合I*。
步驟2根據(jù)式(12)、式(13)分別計(jì)算目標(biāo)用戶對(duì)未瀏覽項(xiàng)目的興趣度的估計(jì)值,然后進(jìn)行user-based CF和item-based CF的估計(jì)值的組合,跟據(jù)式(14)計(jì)算興趣度。
步驟3根據(jù)式(15)-式(18)統(tǒng)計(jì)不同用戶的屬性對(duì)應(yīng)的項(xiàng)目類型的偏好值。
步驟4根據(jù)天牛須搜索算法式(20)-式(23)獲得最佳的權(quán)重參數(shù)。然后利用式(19)計(jì)算校正后的興趣度,進(jìn)行排序,推薦興趣度最高的前N個(gè)電影。需要注意的是當(dāng)一個(gè)用戶是新用戶時(shí),他沒(méi)有任何歷史信息,在熱門(mén)的項(xiàng)目中通過(guò)用戶屬性與電影類型的關(guān)系進(jìn)行用戶對(duì)項(xiàng)目的興趣度估計(jì)。假設(shè),一個(gè)新的用戶屬性信息分別為xu、ou、gu。則他對(duì)電影i的興趣度計(jì)算公式如下:
p(u,i)=ageweight(xu,ti)×occupationweight(ou,ti)×
genderweight(gu,ti)
(24)
為了驗(yàn)證算法的性能,在Windows server 2008 64位操作系,16 GB內(nèi)存,Intel?Xeon?CPU E5-2630 v3 @2.40 GHz,python2.7的環(huán)境下對(duì)算法進(jìn)行仿真分析。利用MovieLens 100k數(shù)據(jù)集將該算法分別與user-based CF和item-based CF、PCEDS算法[18]以及Pearson算法做比較,并且對(duì)得到的結(jié)果進(jìn)行分析。
本實(shí)驗(yàn)采用的衡量指標(biāo)為準(zhǔn)確率、召回率。用戶的集合為U,對(duì)目標(biāo)用戶ui推薦N個(gè)商品,記為N(i)。目標(biāo)用戶ui在測(cè)試集上有過(guò)歷史行為的電影的集合,記為T(mén)(i)。計(jì)算方式如下:
(25)
(26)
本文設(shè)計(jì)了6組實(shí)驗(yàn),分別是user-based CF、item-based CF、基于用戶和項(xiàng)目組合的協(xié)同過(guò)濾算法、用戶相似度改進(jìn)后的組合協(xié)同過(guò)濾算法、相似度改進(jìn)后組合的協(xié)同過(guò)濾算法、融合用戶和項(xiàng)目屬性的協(xié)同過(guò)濾算法。6組實(shí)驗(yàn)驗(yàn)證了算法組合、相似度改進(jìn)以及興趣度矯正的有效性。為了方便描述實(shí)驗(yàn)結(jié)果,本文采用表2中的縮寫(xiě)來(lái)表示對(duì)應(yīng)的算法,采用k1表示最相似用戶的個(gè)數(shù),采用k2表示最相似項(xiàng)目的個(gè)數(shù)。
表1 本文算法和擬比較算法
(1) 算法結(jié)合的有效性 該實(shí)驗(yàn)主要是驗(yàn)證兩種算法的組合對(duì)推薦質(zhì)量的影響。本文實(shí)驗(yàn)的推薦個(gè)數(shù)定為10。首先,利用召回率和準(zhǔn)確率作為評(píng)判標(biāo)準(zhǔn)來(lái)測(cè)試使UCF結(jié)果達(dá)到最佳的參數(shù)k1的值,用11個(gè)k1值來(lái)測(cè)試UCF算法的推薦質(zhì)量。得到的實(shí)驗(yàn)結(jié)果如圖1所示。由圖1中可以看出,取值在30附近時(shí),該算法的召回率和準(zhǔn)確率最高。為了便于對(duì)比,UIACF算法實(shí)驗(yàn)的最相似用戶集的大小定為30。
圖1 基于用戶的協(xié)同過(guò)濾
用9個(gè)k2值來(lái)測(cè)試ICF算法,實(shí)驗(yàn)結(jié)果如圖2所示。由圖2可以看出k2取值在500~900范圍內(nèi)時(shí),召回率穩(wěn)定在0.104~0.105之間,準(zhǔn)確率也穩(wěn)定在0.450~0.455不再有大的波動(dòng),召回率和準(zhǔn)確率變化趨勢(shì)相同。同樣,為了方便比較,在UIACF算法中最相似項(xiàng)目集的大小值取為500。
圖2 基于項(xiàng)目的協(xié)同過(guò)濾
將上述兩種算法結(jié)合后,得到結(jié)果如圖3所示。圖3中,由本文的算法結(jié)合方式可知,當(dāng)a=0時(shí),對(duì)應(yīng)點(diǎn)縱坐標(biāo)的值為ICF算法的推薦精度;當(dāng)a=1時(shí),對(duì)應(yīng)點(diǎn)的縱坐標(biāo)的值為UCF算法的推薦精度。而a=0.3時(shí),對(duì)應(yīng)的推薦精度高于這兩種情況的任何一種。說(shuō)明兩種算法的結(jié)合提高了推薦質(zhì)量。由圖1、圖2、圖3可以看出準(zhǔn)確率和召回率的趨勢(shì)相同,在后面的實(shí)驗(yàn)選擇了召回率作為算法的衡量指標(biāo)。
圖3 用戶和項(xiàng)目組合的協(xié)同過(guò)濾
(2) 相似度改進(jìn)的有效性 本實(shí)驗(yàn)主要是驗(yàn)證相似度改進(jìn)的有效性,IUICF的實(shí)驗(yàn)結(jié)果如圖4所示。由圖4可知:b1取值為0.05時(shí)推薦的質(zhì)量最高,b1的取值為0時(shí),相當(dāng)于項(xiàng)目相似度未改進(jìn)前單純的兩種算法結(jié)合的推薦質(zhì)量。項(xiàng)目相似度改進(jìn)后將召回率從0.109 6提高到0.110 7。
圖4 項(xiàng)目相似度參數(shù)測(cè)試圖
UIUICF的實(shí)驗(yàn)結(jié)果如圖5所示。由圖5可以得到該算法在a1=0.04,a2=0.01時(shí)的結(jié)果最佳。當(dāng)a1=a2=0時(shí),相當(dāng)于IUICF的推薦精度。實(shí)驗(yàn)表明,用戶相似度改進(jìn)后,召回率從0.110 7提高到0.112 2。說(shuō)明用戶的性別,年齡和職業(yè)對(duì)用戶的相似度有影響,性別決定總體相似度的1%,年齡和職業(yè)決定總體相似度4%。
圖5 用戶相似度參數(shù)測(cè)試圖
通過(guò)上述實(shí)驗(yàn),可以確定提出的用戶和項(xiàng)目相似性計(jì)算方式的改進(jìn)均可以降低數(shù)據(jù)稀疏對(duì)協(xié)同過(guò)濾算法的影響,提高推薦質(zhì)量。
(3) 興趣度矯正的有效性 本實(shí)驗(yàn)主要是驗(yàn)證用戶偏好矯正興趣度的有效性。利用2.3節(jié)提出的數(shù)據(jù)處理方式,得到用戶屬性對(duì)應(yīng)項(xiàng)目類型偏好值。由于評(píng)分的范圍是1~5,所以偏好值的范圍也為1~5。偏好值為0時(shí),代表該屬性的用戶對(duì)應(yīng)類型的項(xiàng)目沒(méi)有發(fā)生過(guò)行為。
利用式(15)計(jì)算用戶年齡對(duì)應(yīng)電影類型的偏好值。圖6為各年齡段的電影類型偏好分布圖,由圖6可知:各年齡段的用戶存在電影類型的偏好,且各有不同。在圖中的十種電影類型中,青少年更傾向于科幻片,青年更中意犯罪片,中年人喜歡看美劇,老年人更偏愛(ài)推理電影。
圖6 各年齡段的電影類型偏好分布圖
利用式(17)計(jì)算用戶性別對(duì)應(yīng)電影類型的偏好值。圖7為不同性別對(duì)6種電影類型偏好程度圖。圖7表明:男女性別對(duì)電影類型的偏好存在差異。在圖中的6種電影類型中,男性比較偏好科幻片,而女性比較偏好愛(ài)情片。同理,根據(jù)式(16)和式(18)挖掘到用戶的職業(yè)以及用戶個(gè)體對(duì)應(yīng)的電影類型偏好均存在差異。
圖7 用戶性別的電影類型偏好
利用上述獲取得的用戶屬性對(duì)應(yīng)電影類型的偏好值,分別用式(19)進(jìn)行準(zhǔn)確度矯正。利用天牛須搜索算法尋找最優(yōu)的參數(shù),總迭代的次數(shù)為500,迭代大約200次時(shí),實(shí)驗(yàn)結(jié)果收斂。最終的實(shí)驗(yàn)結(jié)果如圖8所示。當(dāng)權(quán)重因子ωa、ωo、ωg、ωu分別取值為0.01、0.01、0.003 061、0.001時(shí),用戶的屬性矯正的興趣度最接近真實(shí)興趣度。本次實(shí)驗(yàn)的結(jié)果驗(yàn)證了實(shí)驗(yàn)最初的假設(shè),表2為實(shí)驗(yàn)結(jié)果對(duì)照表。
表2 實(shí)驗(yàn)結(jié)果對(duì)照表
圖8 協(xié)同過(guò)濾適應(yīng)度曲線
(4) 不同算法之間的對(duì)比 近鄰數(shù)分別取15、20、25、30、35、40、45,對(duì)文獻(xiàn)[20]中的PCEDS算法、Pearson算法、UCF算法、ICF算法以及UIACF算法進(jìn)行比較,實(shí)驗(yàn)結(jié)果如圖9所示。實(shí)驗(yàn)結(jié)果表明:UIACF算法的性能不僅優(yōu)于UCF和ICF,還優(yōu)于PCEDS算法。同時(shí)也說(shuō)明了合理地利用用戶和項(xiàng)目的屬性信息對(duì)推薦系統(tǒng)推薦質(zhì)量的提高有很大的價(jià)值。
圖9 算法對(duì)比圖
傳統(tǒng)的user-based CF和item-based CF以及目前存在的一些算法缺少對(duì)用戶的屬性和項(xiàng)目屬性的充分考慮,從而導(dǎo)致冷啟動(dòng)、數(shù)據(jù)稀疏性、推薦精度低等問(wèn)題。本文在傳統(tǒng)的協(xié)同過(guò)濾基礎(chǔ)上,提出一種融合用戶和項(xiàng)目屬性的協(xié)同過(guò)濾算法。利用兩種算法的結(jié)合、用戶屬性對(duì)應(yīng)的偏好以及天牛須搜索算法來(lái)調(diào)整興趣度的預(yù)測(cè),從而使預(yù)測(cè)的興趣度更接近真實(shí)的興趣度。此外,傳統(tǒng)相似度的度量忽略了用戶屬性和項(xiàng)目屬性對(duì)相似度的影響,本文引入用戶的年齡、職業(yè)權(quán)重以及項(xiàng)目的類型權(quán)重因素。實(shí)驗(yàn)結(jié)果表明,本文提出的算法在召回率上與用戶協(xié)同過(guò)濾相比提高了3.39%,較傳統(tǒng)項(xiàng)目協(xié)同過(guò)濾算法提高8.65%。本算法存在的不足是需要數(shù)據(jù)集帶有用戶和項(xiàng)目的屬性信息,受屬性細(xì)度劃分的影響嚴(yán)重。下一步的工作是在本算法的基礎(chǔ)上研究如何進(jìn)行屬性細(xì)度劃分,進(jìn)一步提高推薦系統(tǒng)的推薦質(zhì)量。