張紫嫣 周 馳
1(同濟(jì)大學(xué)醫(yī)學(xué)院 上海 200092) 2(浙江大學(xué)軟件學(xué)院 浙江 杭州 310027)
近幾年來(lái),隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,用戶數(shù)量急劇增加的同時(shí)數(shù)據(jù)信息也大量增多,出現(xiàn)了信息過(guò)載、信息迷失等現(xiàn)象,推薦系統(tǒng)應(yīng)運(yùn)而生。為使人們能夠更加有效地利用資源,接收更符合用戶需要的信息,主要采用個(gè)性化推薦系統(tǒng)方法解決此類問(wèn)題。最常見的方法有協(xié)同過(guò)濾算法[1]、基于內(nèi)容的推薦算法[2]、二部圖網(wǎng)絡(luò)結(jié)構(gòu)推薦算法[3]、混合推薦算法[4]。
最近鄰協(xié)同過(guò)濾技術(shù)[5]是當(dāng)前應(yīng)用最為廣泛的個(gè)性化推薦算法之一,但其存在難以處理稀疏數(shù)據(jù)、算法較低的可擴(kuò)展性、推薦結(jié)果的難解釋性等缺點(diǎn)。針對(duì)以上問(wèn)題,國(guó)內(nèi)外學(xué)者們進(jìn)行了各種深入的探討和研究,提出了不同的解決方案。早在1994年,基于用戶的協(xié)同過(guò)濾算法[6]就被應(yīng)用在了新聞過(guò)濾中。2003年,亞馬遜公司提出了基于Item的協(xié)同過(guò)濾方法[7]。文俊浩等[8]提出了一種基于標(biāo)簽主題的協(xié)同過(guò)濾算法,從語(yǔ)義層面上計(jì)算了用戶對(duì)項(xiàng)目的偏好概率。林建輝等[9]利用有向網(wǎng)絡(luò)圖構(gòu)建出用戶之間的信任關(guān)系,提出一種融合信任用戶的協(xié)同過(guò)濾推薦算法。趙紅等[10]通過(guò)融合初始資源配置以及協(xié)同過(guò)濾,形成了更為有效的組合推薦算法。李龍生等[11]將用戶行為和物品標(biāo)簽與協(xié)同過(guò)濾相結(jié)合,更好地解決了物品冷啟動(dòng)問(wèn)題。廖志芳等[12]采用了隨機(jī)森林來(lái)處理用戶的屬性特征,從而構(gòu)建出一種新的混合相似度計(jì)算模型。衛(wèi)澤等[13]將用戶評(píng)分一致頻次與評(píng)分項(xiàng)目數(shù)之比作為懲罰函數(shù)引入到相似度的計(jì)算中,從而提高了推薦質(zhì)量。李雪等[14]提出了一種系統(tǒng)主題生成算法,將主題相似度引入到相似度的計(jì)算中。但是,如何在海量的數(shù)據(jù)資源中將信息準(zhǔn)確地推薦給用戶,依舊是我們目前所面臨的一個(gè)難題。
由于用戶對(duì)類別的偏好會(huì)導(dǎo)致一定的喜好傾向,所以結(jié)合用戶類別偏好的相似度計(jì)算會(huì)比原來(lái)的相似度計(jì)算更接近真實(shí)情況。比如某用戶喜歡運(yùn)動(dòng)品牌李寧,則他的鞋架上該品牌的鞋子可能會(huì)明顯多于其余品牌,有相同類別喜好的用戶的相似度也會(huì)較高。針對(duì)此種情況,本文提出一種結(jié)合類別偏好的協(xié)同過(guò)濾算法,通過(guò)計(jì)算用戶對(duì)不同類別的偏好程度來(lái)得到用戶之間的相似度,并結(jié)合原有的用戶相似度來(lái)獲得推薦結(jié)果,同時(shí)還需要對(duì)過(guò)于熱門的類別進(jìn)行懲罰,避免熱門類別的影響,從而提高推薦效果。
傳統(tǒng)的協(xié)同過(guò)濾算法包括基于用戶的協(xié)同過(guò)濾和基于項(xiàng)目的協(xié)同過(guò)濾。二者除了相似度計(jì)算有所差異之外,本質(zhì)上都是基于鄰域的協(xié)同過(guò)濾。下面以基于用戶的協(xié)同過(guò)濾為例:
步驟1計(jì)算用戶相似度。計(jì)算用戶相似度是協(xié)同過(guò)濾算法的核心部分,有多種不同的方法,如余弦相似度、Pearson相關(guān)系數(shù)、Jaccard相似性度量等。
步驟2根據(jù)步驟1中的相似度計(jì)算方法得到用戶相似度,進(jìn)而得到用戶的近鄰集合,近鄰集合的大小通??梢栽O(shè)置為K,而K的取值一定程度上影響了推薦效果。
(1)
式中:rvi表示用戶v對(duì)項(xiàng)目i的真實(shí)評(píng)分;sim(u,v)表示用戶u與用戶v的相似度。
傳統(tǒng)的協(xié)同過(guò)濾算法在計(jì)算用戶相似度時(shí),往往會(huì)受限于數(shù)據(jù)稀疏的問(wèn)題,其中的原因是兩個(gè)用戶之間共同喜愛的項(xiàng)目很少甚至沒(méi)有,這導(dǎo)致了計(jì)算用戶相似度的時(shí)候會(huì)與真實(shí)的情況存在偏差,從而影響了推薦系統(tǒng)的效果。
本文通過(guò)將協(xié)同過(guò)濾與用戶的類別偏好相結(jié)合,來(lái)計(jì)算用戶之間的綜合相似度,進(jìn)而從近鄰用戶得到推薦結(jié)果,來(lái)提高推薦的效果。
協(xié)同過(guò)濾算法中經(jīng)常使用余弦相似度來(lái)計(jì)算用戶相似性。余弦相似度計(jì)算方式如下:
(2)
式中:N(u)、N(v)分別為用戶u和用戶v有正反饋的項(xiàng)目集合。
某用戶對(duì)某一類別的偏好一定程度上會(huì)影響用戶對(duì)item的評(píng)價(jià)結(jié)果,可以通過(guò)F(u,t)來(lái)表示用戶u對(duì)類別t的偏好程度。
(3)
式中:Item(u)為用戶u有正反饋的item集合;I()為指示函數(shù),用于判斷項(xiàng)目i是否為類別t的項(xiàng)目。
(4)
式中:Tag2Item(t)表示類別t所包含的所有item集合。
Ct為對(duì)熱門tag的懲罰系數(shù):
(5)
這里還額外引入了平滑項(xiàng),避免出現(xiàn)分子為0的情況。
不同的用戶有不同的類別偏好,通過(guò)計(jì)算用戶的類別偏好,從而可以依據(jù)余弦相似度或其他相似度度量方法來(lái)得到用戶之間的類別偏好維度上的相似度Simtag。
在得到用戶的類別偏好后,同樣可以用余弦相似度來(lái)計(jì)算在類別偏好維度上的用戶相似度Simtag。在原有的余弦相似度的基礎(chǔ)上結(jié)合類別偏好的相似度,得到用戶綜合相似度Sim():
Sim(u,v)=α×Simcos(u,v)+(1-α)×
Simtag(u,v)
(6)
式中:α為權(quán)重因子,用來(lái)平衡綜合相似度中兩種不同的用戶相似度。
本實(shí)驗(yàn)采用Movielens-100k數(shù)據(jù)集,這是推薦系統(tǒng)的一個(gè)經(jīng)典數(shù)據(jù)集。該數(shù)據(jù)集包含了943名用戶、涵蓋了19個(gè)類別的1 682部電影以及100 000條評(píng)分記錄。其中:將80%的數(shù)據(jù)劃分為訓(xùn)練集, 剩余20%的數(shù)據(jù)劃分為測(cè)試集。
本文采用精度(Precision)和召回率(Recall)來(lái)評(píng)價(jià)算法的推薦效果。
(1) 精度:指在推薦結(jié)果中,用戶真正喜歡的項(xiàng)目數(shù)所占的比例。
(7)
(2) 召回率:指在個(gè)性化推薦算法產(chǎn)生的推薦結(jié)果中,用戶喜歡的項(xiàng)目數(shù)占用戶真實(shí)喜歡項(xiàng)目總數(shù)的比例[15]。
(8)
式中:TP為真正例;TN為真負(fù)例;FP為假正例。
實(shí)驗(yàn)發(fā)現(xiàn),選取的α因子約為0.8時(shí),推薦效果最好,所以以下實(shí)驗(yàn)的α因子均設(shè)置為0.8。
由于不同大小的K值會(huì)影響推薦的效果,所以對(duì)于不同的近鄰個(gè)數(shù)K,我們?nèi)×瞬煌闹祦?lái)驗(yàn)證算法的有效性。圖1為在不同K值下,結(jié)合類別偏好的協(xié)同過(guò)濾算法在測(cè)試集上的精度。
圖1 精度與最近鄰個(gè)數(shù)K的關(guān)系
圖2為不同K值下,結(jié)合類別偏好的協(xié)同過(guò)濾算法在測(cè)試集上的召回率。
圖2 召回率與最近鄰個(gè)數(shù)K的關(guān)系
結(jié)果表明,當(dāng)K在20~80之間時(shí),精度和召回率均表現(xiàn)較好,說(shuō)明K值在這個(gè)范圍內(nèi)的推薦效果較好。而在實(shí)際應(yīng)用中,如果K值過(guò)大,會(huì)導(dǎo)致計(jì)算時(shí)間的大量增加,從而影響用戶的體驗(yàn),所以選取一個(gè)合適的K值在推薦系統(tǒng)中極為重要。因此,本文針對(duì)小K值,選取了3~30之間的多個(gè)K值來(lái)進(jìn)行實(shí)驗(yàn),將算法改進(jìn)前后的精度和召回率進(jìn)行對(duì)比。圖3、圖4是協(xié)同過(guò)濾算法改進(jìn)前后的精度和召回率的對(duì)比。
圖3 算法改進(jìn)前后精度對(duì)比
圖4 算法改進(jìn)前后召回率對(duì)比
實(shí)驗(yàn)結(jié)果表明,在相同K值的情況下,結(jié)合類別偏好的協(xié)同過(guò)濾與傳統(tǒng)的協(xié)同過(guò)濾相比,在精度和召回率這兩個(gè)評(píng)價(jià)指標(biāo)上均有較為明顯的提升,這表明了改進(jìn)后的算法能較好地結(jié)合用戶的類別偏好,使得近鄰計(jì)算更為合理,從而提高推薦效果。
推薦系統(tǒng)是針對(duì)信息過(guò)載現(xiàn)象的一種常見處理手段,而協(xié)同過(guò)濾算法則是其中最為基本的技術(shù)之一。本文提出一種結(jié)合類別偏好的協(xié)同過(guò)濾推薦算法,在原有的計(jì)算用戶相似度的基礎(chǔ)上結(jié)合了用戶的類別偏好相似度,使得算法對(duì)用戶相似度的計(jì)算更為準(zhǔn)確,也更能反映真實(shí)情況。實(shí)驗(yàn)表明,該方法能夠有效地結(jié)合類別偏好,提高推薦效果。