李 浩,梁京章,潘 瑩
(1.廣西大學(xué) 電氣工程學(xué)院,廣西 南寧 530004;2.廣西大學(xué) 信息網(wǎng)絡(luò)中心,廣西 南寧 530004)
在當(dāng)今數(shù)據(jù)化時(shí)代,海量信息在不斷產(chǎn)生和傳播的同時(shí),也使人們面臨著嚴(yán)重的“信息過(guò)載[1]”問(wèn)題。如在電子商務(wù)領(lǐng)域,在面對(duì)海量商品的情況下,一方面商家希望能將自己的物品及時(shí)推薦給需要的用戶(hù),另一方面用戶(hù)希望能夠準(zhǔn)確快速地找到自己感興趣的商品。推薦系統(tǒng)的出現(xiàn)為解決這一問(wèn)題提供了方法。在各種推薦技術(shù)中,協(xié)同過(guò)濾推薦算法是最成功的網(wǎng)絡(luò)個(gè)性化推薦算法[2]。協(xié)同過(guò)濾算法中應(yīng)用最廣的是基于記憶的協(xié)同過(guò)濾推薦算法?;谟洃浀膮f(xié)同過(guò)濾推薦算法的思想是對(duì)用戶(hù)-物品評(píng)分矩陣進(jìn)行相似度計(jì)算,通過(guò)找到相似的用戶(hù)或者物品來(lái)產(chǎn)生推薦結(jié)果[3],其算法中最重要的部分便是相似度的計(jì)算。
傳統(tǒng)推薦算法中的相似度計(jì)算方法主要有余弦相似度、皮爾遜相似度、歐氏距離[4-5]等幾種,但由于用戶(hù)-物品評(píng)分矩陣存在數(shù)據(jù)稀疏等問(wèn)題[6],導(dǎo)致以上相似度計(jì)算方法存在較大的偏差,無(wú)法準(zhǔn)確找出相似用戶(hù)或物品,從而導(dǎo)致推薦效果變差,影響用戶(hù)的體驗(yàn)。
對(duì)于相似度計(jì)算方法的改進(jìn),無(wú)數(shù)學(xué)者做了眾多嘗試。例如,文獻(xiàn)[7-8]對(duì)多種傳統(tǒng)相似度計(jì)算方法使用線性組合的方法來(lái)提高推薦精度;文獻(xiàn)[9]結(jié)合時(shí)間衰減效應(yīng),著眼于改進(jìn)少數(shù)人的相似度計(jì)算方式,提高了推薦精度;文獻(xiàn)[10]將物品進(jìn)行分類(lèi)后再進(jìn)行相似度計(jì)算,在相似度計(jì)算時(shí)充分考慮物品的類(lèi)別信息;文獻(xiàn)[11-12]分別對(duì)時(shí)間因素進(jìn)行了不同的考慮,采用不同的融合方法將時(shí)間因素加入到相似度的計(jì)算過(guò)程中;文獻(xiàn)[13]將用戶(hù)屬性和鄰居信任度加入到相似度的計(jì)算中,更準(zhǔn)確地判斷了用戶(hù)的興趣偏好;文獻(xiàn)[14]設(shè)計(jì)了一種新的推薦模型,并基于Kullback-Leibler (KL) 散度設(shè)計(jì)了一個(gè)項(xiàng)目相似性度量方法,充分考慮了用戶(hù)的興趣偏好,有效提高了推薦精度和推薦效果;文獻(xiàn)[15]利用大數(shù)據(jù)處理框架MapReduce對(duì)用戶(hù)-物品矩陣進(jìn)行細(xì)致聚類(lèi),在簇類(lèi)進(jìn)行多次相似度計(jì)算,提高了推薦精度和推薦效率;文獻(xiàn)[16]將用戶(hù)進(jìn)行物品評(píng)分的軌跡信息加入到相似度計(jì)算中,并結(jié)合多種傳統(tǒng)相似度計(jì)算方法,使得推薦效果更加精確。
上述改進(jìn)的相似度計(jì)算方法都在一定程度上提高了推薦效果,但是大部分算法在進(jìn)行相似度的計(jì)算時(shí)都沒(méi)有考慮到用戶(hù)的屬性,物品的熱門(mén)程度都對(duì)用戶(hù)的選擇存在著影響,而且大部分算法在相似度計(jì)算時(shí)以評(píng)分的高低判定用戶(hù)對(duì)物品的興趣程度,這種判定方法是不夠準(zhǔn)確的,評(píng)分高低應(yīng)代表用戶(hù)對(duì)物品是否滿(mǎn)意,而不是用戶(hù)對(duì)物品是否感興趣。因此,該文提出一種新的融合用戶(hù)的屬性、物品的熱門(mén)程度以及用戶(hù)對(duì)物品的滿(mǎn)意程度的興趣相似度計(jì)算方法,并在評(píng)分預(yù)測(cè)時(shí)加入時(shí)間因素,以提高推薦效果。
在實(shí)際生活中,用戶(hù)在選擇物品時(shí),不僅僅是出自自身的興趣,還會(huì)受到一些社會(huì)因素的影響,如商家采取一些營(yíng)銷(xiāo)手段,使得物品獲得大量人群的關(guān)注,而用戶(hù)在選擇這些物品的時(shí)候,往往是出自好奇,而不是用戶(hù)本身對(duì)這些物品存在興趣。因此,提出熱點(diǎn)影響率的概念。
定義1(熱點(diǎn)影響率):推薦系統(tǒng)中,物品存在熱點(diǎn)的特性,即物品在某個(gè)時(shí)間段可能引起大量用戶(hù)的關(guān)注,熱點(diǎn)的值越大說(shuō)明物品受用戶(hù)的關(guān)注程度越大。在推薦系統(tǒng)中,物品i的熱點(diǎn)計(jì)算方法如式(1)所示:
Hot(i)=count(rating(u,i)>0,u∈U,i∈I)
(1)
其中,count()為統(tǒng)計(jì)計(jì)算方法,rating(u,i)為用戶(hù)u對(duì)物品i的評(píng)分,U為用戶(hù)集合,I為物品集合。
熱點(diǎn)影響率是對(duì)熱點(diǎn)在推薦系統(tǒng)中興趣相似度計(jì)算的影響的一種度量方式,熱點(diǎn)影響率的值在0~1之間,物品i的熱點(diǎn)影響率計(jì)算方法如式(2)所示:
(2)
其中,max()和min()分別為計(jì)算得到的所有物品中熱點(diǎn)的最大值和最小值。
物品越受歡迎,說(shuō)明用戶(hù)對(duì)該物品的評(píng)分行為出自自身興趣的程度越低,因此熱點(diǎn)影響率的值越低。
在推薦系統(tǒng)中,用戶(hù)對(duì)物品的評(píng)分存在高或低兩種可能性,傳統(tǒng)協(xié)同過(guò)濾推薦算法中使用用戶(hù)的評(píng)分值來(lái)度量用戶(hù)對(duì)物品的興趣程度,即低評(píng)分行為看作用戶(hù)對(duì)該物品的興趣程度低,高評(píng)分行為看作用戶(hù)對(duì)該物品的興趣程度高。這種度量方法在某些程度上是不合理的,用戶(hù)對(duì)某一個(gè)物品存在評(píng)分行為,意味著用戶(hù)對(duì)該物品是感興趣的,用戶(hù)對(duì)物品的評(píng)分值低代表該物品在某些屬性未能達(dá)到用戶(hù)期望,評(píng)分值高代表物品超出用戶(hù)的期望 。
定義2(物品屬性滿(mǎn)意度):推薦系統(tǒng)中,物品是存在自身屬性的,如在電影推薦系統(tǒng)中,電影存在不同的類(lèi)型,用戶(hù)對(duì)物品某些屬性的期望為用戶(hù)對(duì)與該物品具有相同屬性的其他物品的平均評(píng)分。用戶(hù)u對(duì)物品i的屬性j滿(mǎn)意度計(jì)算方式如式(3)所示:
(3)
其中,average(u,j)為用戶(hù)對(duì)與物品i具有相同屬性j的物品的平均評(píng)分,即用戶(hù)對(duì)物品i的屬性j的期望。
傳統(tǒng)興趣相似度計(jì)算方法在進(jìn)行相似度計(jì)算時(shí)對(duì)影響用戶(hù)興趣的因素考慮的不夠全面,因此設(shè)計(jì)一種新的用戶(hù)興趣相似度計(jì)算方法。
(1)用戶(hù)自身屬性對(duì)用戶(hù)興趣的影響。
用戶(hù)在進(jìn)行物品選擇時(shí),用戶(hù)自身的屬性對(duì)用戶(hù)的興趣傾向會(huì)有一定的影響,如13歲的用戶(hù)在選擇時(shí)會(huì)和35歲的用戶(hù)有差異,男性和女性在選擇時(shí)也會(huì)出現(xiàn)較大的差異。因此,可以看出用戶(hù)的興趣受到自身屬性的影響。
年齡差距越小對(duì)用戶(hù)興趣的影響越小,根據(jù)文獻(xiàn)[17],將用戶(hù)的年齡差閾值設(shè)置為5,年齡差小于5的用戶(hù)認(rèn)為其在年齡屬性上是相同的。
設(shè)用戶(hù)u的年齡為Au,性別為Gu;用戶(hù)v的年齡為Av,性別為Gv;則年齡對(duì)用戶(hù)興趣相似度的計(jì)算如式(4)所示:
(4)
性別對(duì)用戶(hù)興趣相似度的計(jì)算如式(5)所示:
(5)
其中,0<λ<1。
同時(shí),對(duì)于冷啟動(dòng)用戶(hù),用戶(hù)自身的屬性可以作為最初對(duì)用戶(hù)進(jìn)行推薦的依據(jù),減少冷啟動(dòng)用戶(hù)的影響。
(2)物品熱點(diǎn)影響率對(duì)用戶(hù)興趣的影響。
用戶(hù)在選擇熱點(diǎn)高的物品時(shí),其出發(fā)點(diǎn)可能不是出自本身的興趣,而是受到商家的宣傳營(yíng)銷(xiāo)手段影響,或出于對(duì)熱點(diǎn)的好奇。因此在對(duì)用戶(hù)興趣相似度計(jì)算時(shí),應(yīng)該降低熱點(diǎn)高的物品對(duì)興趣相似度影響的權(quán)重,即熱點(diǎn)高的物品熱點(diǎn)影響率低。
在計(jì)算兩個(gè)用戶(hù)的興趣相似度時(shí),兩個(gè)用戶(hù)之間需要存在對(duì)某些物品有過(guò)共同評(píng)分行為,兩者之間的共同評(píng)分項(xiàng)越多,意味著兩個(gè)用戶(hù)的興趣傾向越相似,用戶(hù)之間的共同評(píng)分項(xiàng)越多且評(píng)分方差越小,則用戶(hù)之間的興趣相似度越大。
設(shè)用戶(hù)u有過(guò)評(píng)分行為的物品集為Iu,用戶(hù)v有過(guò)評(píng)分行為的物品集為Iv;則物品熱點(diǎn)率對(duì)用戶(hù)興趣相似度的計(jì)算如式(6)所示:
(6)
(3)物品屬性滿(mǎn)意度對(duì)用戶(hù)興趣的影響。
用戶(hù)在選擇物品時(shí),都帶有用戶(hù)本身的興趣傾向,用戶(hù)在對(duì)物品打分時(shí),都帶有用戶(hù)本身對(duì)該物品的某些屬性是否滿(mǎn)足自己期望的判斷。例如,喜歡喜劇的用戶(hù)對(duì)一部喜劇電影打了低分,這并不意味著用戶(hù)不喜歡喜劇電影,而是這部喜劇電影可能不夠搞笑,未能滿(mǎn)足用戶(hù)對(duì)喜劇電影的期望。
設(shè)S為用戶(hù)u和用戶(hù)v的共同評(píng)分項(xiàng)中有著同樣屬性的物品集,物品集S越大,意味著兩個(gè)用戶(hù)對(duì)于物品屬性的選擇傾向上越相似,物品集S越大,且用戶(hù)之間的物品屬性滿(mǎn)意度相差越小,用戶(hù)之間的興趣相似度越大。具體計(jì)算方式如式(7)所示:
(7)
其中,Hi為物品i的屬性集。
綜上所述,用戶(hù)的興趣相似度在計(jì)算時(shí)應(yīng)將用戶(hù)本身的屬性、熱點(diǎn)影響率、物品屬性滿(mǎn)意度都考慮在內(nèi),因此,用戶(hù)的興趣相似度計(jì)算公式如式(8)所示:
Sim(u,v)=Sim_age(u,v)×Sim_g(u,v)×
Sim_hot(u,v)×Sim_sat(u,v)
(8)
通過(guò)興趣相似度計(jì)算公式可以計(jì)算出與目標(biāo)用戶(hù)與其他用戶(hù)的興趣相似度,從而找到目標(biāo)用戶(hù)的最相似用戶(hù)集。但如上文所提到的,在計(jì)算兩個(gè)用戶(hù)的興趣相似度時(shí),兩個(gè)用戶(hù)之間需要存在對(duì)某些物品有過(guò)共同評(píng)分的行為,但是用戶(hù)-物品評(píng)分矩陣具有稀疏性的問(wèn)題,某用戶(hù)可能與其他用戶(hù)之間存在較少的共同評(píng)分項(xiàng)或者沒(méi)有共同評(píng)分項(xiàng),當(dāng)用戶(hù)之間沒(méi)有共同評(píng)分項(xiàng)時(shí),用戶(hù)之間的興趣相似度沒(méi)有意義,當(dāng)用戶(hù)之間的共同評(píng)分項(xiàng)較少時(shí),用戶(hù)之間的興趣相似度存在一些不確定性,使得推薦效果較差。因此需要設(shè)置一個(gè)閾值β,使得用戶(hù)u和用戶(hù)v之間的共同評(píng)分項(xiàng)滿(mǎn)足式(9):
(9)
通過(guò)式(8)和式(9)可以找到與目標(biāo)用戶(hù)最相似的用戶(hù)集Q,但由于數(shù)據(jù)的稀疏性,會(huì)出現(xiàn)一部分用戶(hù)存在較多的相似用戶(hù),一部分用戶(hù)的相似用戶(hù)很少甚至沒(méi)有相似用戶(hù)。因此需要設(shè)置相似用戶(hù)數(shù)閾值K,并對(duì)于這一現(xiàn)象分類(lèi)處理:
(1)對(duì)于相似用戶(hù)數(shù)>K的用戶(hù),直接選取相似度排名前K位用戶(hù)作為目標(biāo)用戶(hù)的相似用戶(hù)集。
(2)對(duì)于相似用戶(hù)數(shù)
Sim(u,w)=Sim(u,v)×Sim(v,w)
(10)
(3)對(duì)于相似用戶(hù)數(shù)為0的用戶(hù),應(yīng)在興趣相似度計(jì)算中依次減去物品屬性滿(mǎn)意度,熱點(diǎn)影響率的影響,最終可以同冷啟動(dòng)用戶(hù)相同處理。
用戶(hù)的興趣不是一成不變的,而是隨著時(shí)間的推移逐漸發(fā)生變化,這是人的自然遺忘過(guò)程,符合艾賓浩斯遺忘曲線[16]的規(guī)律。時(shí)間衰減模型的計(jì)算方法如公式(11)所示:
(11)
其中,tnow為當(dāng)前時(shí)間,tui為用戶(hù)u對(duì)物品i評(píng)分的時(shí)間,α為時(shí)間衰減因子。
在對(duì)目標(biāo)用戶(hù)進(jìn)行物品推薦時(shí),需要考慮該物品的屬性用戶(hù)現(xiàn)在是否還存在一定的興趣,用戶(hù)以前感興趣的物品現(xiàn)在不一定還存在興趣,因此時(shí)間因子的影響計(jì)算公式如公式(12)所示:
(12)
其中,x為待推薦物品,T為用戶(hù)u所評(píng)分過(guò)的物品集中與物品x具有相同屬性的物品合集。
最終評(píng)分預(yù)測(cè)公式為:
(13)
推薦算法流程如圖1所示。
圖1 推薦算法流程
推薦算法偽代碼如下:
算法1
輸入:用戶(hù)集合U,物品集合I,共同評(píng)分項(xiàng)閾值β,相似用戶(hù)數(shù)K。
1.begin
2. uSimv(u,v)={}
3. Simlist(u)={} //用戶(hù)u的相似用戶(hù)集
4. for eachuinU:
5. for eachvinU:
6. ifu≠v:
7. for eachiinI::
8. if rating(u,i)>0 & rating(v,i)>0
9. uSimv(u,v).add(i)
11. Simlist(u).add([v,Sim(u,v)])
12. if Len(Simlist(u)) ≥K:
13 . Simlist(u)=Sort( Simlist(u)) // 按相似度大小排序
14. elif Len(Simlist(u))
15. Simlist(u).add ([x,Sim(v,x)])
16.recommendList={}
17.for eachwin Simlist(u):
18. if rating(u,i)=0 & rating(u,i)>0:
19. recommendList.add(Sort(pre(u,i)))
20.end
實(shí)驗(yàn)數(shù)據(jù)使用的是美國(guó)Minnesota大學(xué)創(chuàng)辦的MovieLens數(shù)據(jù)集,數(shù)據(jù)集的具體描述如表1所示。
表1 數(shù)據(jù)集描述
硬件環(huán)境:
(1)Windows10;
(2)CPU:Intel7代6 700k;
(3)內(nèi)存16 G。
軟件環(huán)境:Pycharm。
采用平均絕對(duì)誤差(MAE)和均方根誤差(RMSE[19])對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)測(cè):
(14)
(15)
由于算法設(shè)計(jì)時(shí)間的影響,將數(shù)據(jù)集按時(shí)間排序,并將排序后的數(shù)據(jù)集以8∶2的比例分為訓(xùn)練集和測(cè)試集。為驗(yàn)證提出的相似度計(jì)算方式在提升推薦效果方面的有效性,將該算法與使用傳統(tǒng)相似度計(jì)算的協(xié)同過(guò)濾算法和幾種改進(jìn)相似度計(jì)算方式的協(xié)同過(guò)濾算法在MovieLens數(shù)據(jù)集進(jìn)行對(duì)比實(shí)驗(yàn),具體涉及算法如下:
(1)文中算法 new_CF;
(2)使用余弦相似度的協(xié)同過(guò)濾算法cor_CF;
(3)使用Person相似度的協(xié)同過(guò)濾算法P_CF;
(4)使用Jaccard相似度的協(xié)同過(guò)濾算法J_CF;
(5)文獻(xiàn)[9]中提出的min-CF算法;
(6)文獻(xiàn)[11]融入時(shí)間因子的協(xié)同過(guò)濾算法T_CF;
(7)文獻(xiàn)[19]提出的融合興趣偏好和加權(quán)的Jaccard相似度的ED-JM算法。
實(shí)驗(yàn)一:λ和α對(duì)推薦結(jié)果的影響。
選擇K=30;β=5,N=20進(jìn)行實(shí)驗(yàn),求得λ和α的最佳取值;
逐步遞增λ的值,在不同的α取值下,所獲得最佳實(shí)驗(yàn)結(jié)果如圖2所示。
圖2 不同λ對(duì)應(yīng)的最佳MAE
逐步遞增α的值,在不同的λ取值下,所獲得的最佳實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 不同α對(duì)應(yīng)的最佳MAE
從如圖2和圖3可以看出,λ的最佳取值約為0.7,α的最佳取值約為0.02,當(dāng)λ和α的取值從最佳取值處增大或減小時(shí),都會(huì)引起MAE的劇烈變化。
實(shí)驗(yàn)二:最相似用戶(hù)集數(shù)K對(duì)推薦結(jié)果的影響。
從K=10開(kāi)始取值,每次增加10,直至K=70,實(shí)驗(yàn)結(jié)果如圖4和圖5所示。
圖4 K值對(duì)各算法的MAE的影響
圖5 K值對(duì)各算法的RMSE值的影響
從圖4和圖5可以看出,傳統(tǒng)的推薦算法的誤差最大,這表明只使用傳統(tǒng)相似度計(jì)算方法已經(jīng)無(wú)法滿(mǎn)足推薦精度的需要,改進(jìn)相似度計(jì)算方式是有必要的。隨著K值的增加,除J_CF算法外,其他算法模型的RMSE、MAE的值都在降低,推薦效果逐漸提升,這可能是因?yàn)槌跏茧S著K值的增加,相似用戶(hù)數(shù)增多,那些單獨(dú)近鄰所造成的影響被降低,推薦效果得到提升;在這個(gè)過(guò)程中,相較于傳統(tǒng)相似度計(jì)算方式,在相似度計(jì)算方式上引入其他因素的J_CF、min_CF、T_CF算法均提高了推薦效果;該文提出的相似度計(jì)算方式在對(duì)相似用戶(hù)的選擇上,充分考慮用戶(hù)自身的屬性因素,減少了選取錯(cuò)誤最近鄰情況的發(fā)生,同時(shí)考慮到物品流行度的影響,減少了因熱點(diǎn)問(wèn)題導(dǎo)致選取錯(cuò)誤近鄰的情況;因此各項(xiàng)誤差均處于最低,推薦效果最好,當(dāng)K=40時(shí),該算法的MAE值取得最小,達(dá)到最佳效果。
隨著K值的繼續(xù)增大,所有算法均出現(xiàn)推薦效果減弱,誤差增大的情況,這是因?yàn)橐恍┎恢匾幌嗨频挠脩?hù)被加入最近鄰集合,導(dǎo)致偏差增大,推薦效果減弱,其中文中算法、J_CF、min_CF受K值增大的影響最小。因?yàn)檫@三類(lèi)算法在相似度的計(jì)算方式上考慮的因素較多,不單純依賴(lài)用戶(hù)物品評(píng)分矩陣,因此在相似用戶(hù)的選擇上更加有效可靠,減少了不相似用戶(hù)加入到最近鄰集合中的情況出現(xiàn);文中算法充分考慮了用戶(hù)屬性、物品熱門(mén)程度、時(shí)間因素的影響,對(duì)相似用戶(hù)的選擇上更準(zhǔn)確,推薦效果更好。
從以上可以看出,new_CF相對(duì)于使用傳統(tǒng)相似度計(jì)算方法的協(xié)同過(guò)濾算法在推薦效果上有顯著的提升,且對(duì)比其他幾種改進(jìn)相似度計(jì)算方式的協(xié)同過(guò)濾算法也存在一定的推薦優(yōu)勢(shì),這充分證明提出的改進(jìn)的興趣相似度個(gè)性化推薦算法能有效提高系統(tǒng)的推薦性能。
針對(duì)傳統(tǒng)相似度計(jì)算方法在計(jì)算時(shí)存在一定的失真性,提出融合用戶(hù)的自身屬性、物品的熱點(diǎn)影響率與物品屬性滿(mǎn)意度的新型興趣相似度計(jì)算方法,并融合時(shí)間因子求取最終評(píng)分預(yù)測(cè)。通過(guò)實(shí)驗(yàn)證明,提出的改進(jìn)的興趣相似度個(gè)性化推薦算法在MAE和RMSE上均表現(xiàn)良好,有效提高了推薦效果。下一步將針對(duì)推薦系統(tǒng)中的冷啟動(dòng)和數(shù)據(jù)稀疏性問(wèn)題,挖掘更多的興趣相似度影響因素來(lái)提高推薦效果。