何進(jìn)成,王 浩,孫 剛,劉其剛
(阜陽師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院,安徽 阜陽 236037)
隨著信息技術(shù)的高速發(fā)展,互聯(lián)網(wǎng)上的信息資源不斷擴(kuò)充,文本、圖片、視頻等媒體資源數(shù)量迅速增長,推薦系統(tǒng)可以向不同用戶推送用戶可能喜歡的視頻或商品。推薦系統(tǒng)包括基于內(nèi)容的推薦。協(xié)同過濾算法的推薦和混合推薦[1]。協(xié)同過濾(Collaboration Filtering)算法[2]是推薦系統(tǒng)中常用的算法[3]。針對傳統(tǒng)協(xié)同過濾算法存在的推薦精確率不高的問題,國內(nèi)外學(xué)者基于該算法做過相關(guān)的研究和改進(jìn),ZARZOUR等[4]在協(xié)同過濾算法中引入場景相似度的概念,對相似度的計(jì)算步驟進(jìn)行了改進(jìn),該算法解決了矩陣稀疏性問題,提高了算法的精度。AHLEM等[5]提出的模型分為兩個(gè)階段,前一個(gè)階段根據(jù)用戶的交互行為進(jìn)行用戶相似性計(jì)算,后一個(gè)階段根據(jù)用戶的專業(yè)水平向用戶推薦所需要的服務(wù),該模型有效地提高了算法的精度。WU等[6]提出的一種新的相似度計(jì)算方式,利用兩個(gè)用戶對相同物品的評價(jià)比值作為相似度的計(jì)算依據(jù),使得新的算法模型能更好提升算法的精確性。李熠晨等[7]根據(jù)用戶之間的共同評分?jǐn)?shù)量和預(yù)測誤差進(jìn)行計(jì)算,從而提高推薦算法性能。姚亦飛等[8]提出學(xué)習(xí)推薦算法,結(jié)合學(xué)習(xí)者復(fù)習(xí)策略設(shè)計(jì)和調(diào)整學(xué)習(xí)序列,有助于學(xué)習(xí)者掌握學(xué)習(xí)重點(diǎn)和難點(diǎn)。劉國麗等[9]通過聯(lián)合專家用戶和屬性相似用戶共同為目標(biāo)用戶產(chǎn)生推薦,有效地解決了冷啟動問題。
協(xié)同過濾算法對用戶和項(xiàng)目的關(guān)系進(jìn)行建模,通過計(jì)算用戶之間的相似度或項(xiàng)目之間的相似度來為用戶進(jìn)行個(gè)性化推薦[10]。用戶相似度計(jì)算的方法有余弦相似度[11]、Jaccard系數(shù)、Pearson相關(guān)系數(shù)[12]等。通過相似度找出與目標(biāo)用戶最相似的k個(gè)用戶,使用k個(gè)近鄰用戶對當(dāng)前用戶尚未評分的項(xiàng)目來預(yù)測目標(biāo)用戶對某個(gè)項(xiàng)目的評分。但是,這種計(jì)算方式存在兩個(gè)問題:第一,只通過相似度來衡量存在一定的局限性,在衡量用戶之間的關(guān)系時(shí),除了相似度還可以融合用戶之間的信任度,故本文算法在此基礎(chǔ)上增加信任度機(jī)制;第二,對于熱門商品,如《新華字典》這類幾乎人人都有的商品不需要向所有用戶都推薦,可以減少推薦頻率,故本文算法增加了對熱門商品的懲罰機(jī)制。因此,本文主要工作如下:1)在用戶相似度的基礎(chǔ)上增加用戶信任度,解決真實(shí)場景下的用戶信任不對等問題;2)在協(xié)同過濾的基礎(chǔ)上,增加對熱門項(xiàng)目進(jìn)行懲罰措施,弱化對熱門項(xiàng)目的推薦,突出推薦系統(tǒng)的個(gè)性化推薦功能;3)在真實(shí)的數(shù)據(jù)集MovieLens上進(jìn)行相關(guān)實(shí)驗(yàn),其相關(guān)評價(jià)指標(biāo)均比傳統(tǒng)的協(xié)同過濾算法有所提高。
協(xié)同過濾算法基于k近鄰模型,利用相似度計(jì)算用戶或項(xiàng)目的k近鄰集合,再根據(jù)需要推薦集合中前k個(gè)元素。在使用k近鄰模型進(jìn)行推薦時(shí),k值的選取需要在合適的范圍,k過大或過小都會對推薦性能有所影響。協(xié)同過濾算法分為基于用戶的協(xié)同過濾(UserCF)和基于物品的協(xié)同過濾(ItemCF)兩類。基于用戶的協(xié)同過濾算法流程如下:對于給定的用戶集U和項(xiàng)目集I,矩陣R為一個(gè)|U|×|I|的評分矩陣,矩陣中的每一個(gè)元素r∈R,表示用戶u對項(xiàng)目i的評分,矩陣的每一行是某個(gè)用戶u對所有項(xiàng)目i的評分向量,矩陣的每一列表示某個(gè)項(xiàng)目i被所有用戶u的評分向量[13]。在真實(shí)的數(shù)據(jù)集中,很多用戶只對部分項(xiàng)目進(jìn)行過評分,即矩陣R是一個(gè)稀疏矩陣,用戶對已知項(xiàng)目的評分?jǐn)?shù)量遠(yuǎn)小于矩陣中的未知項(xiàng)目評分?jǐn)?shù)量,即矩陣的稀疏性問題。為了解決矩陣的稀疏性問題,可以構(gòu)建user-item倒排表,由此得到物品與用戶的交互信息,通過倒排表計(jì)算出相似度矩陣,進(jìn)而計(jì)算出用戶之間的相似度,根據(jù)相似度和相似用戶對item的評分來估算出目標(biāo)user對目標(biāo)item的評分,根據(jù)評分的大小,為用戶推薦前k個(gè)項(xiàng)目。
1.2.1 余弦相似度
余弦相似度的計(jì)算方式如下:
(1)
其中,m表示用戶u和用戶v之間的相似度,N表示用戶u和用戶v有過共同評分的項(xiàng)目集合,r表示用戶u對項(xiàng)目i的評分,y表示用戶v對項(xiàng)目i的評分。
1.2.2 Pearson相關(guān)系數(shù)
Pearson相關(guān)系數(shù)的計(jì)算方法是對余弦相似度的一種改進(jìn)計(jì)算方法[14],其計(jì)算公式如下:
(2)
其中,m表示用戶u和用戶v之間的相似度,N表示用戶u和用戶v有過共同評分的項(xiàng)目集合,r表示用戶u對項(xiàng)目i的評分,y表示用戶v對項(xiàng)目i的評分,h表示用戶u所有評分項(xiàng)目的平均值,g表示用戶v所有評分項(xiàng)目的平均值。
協(xié)同過濾算法在計(jì)算得出相似度后,根據(jù)用戶之間的相似度和最近鄰的k個(gè)相似用戶的評分,計(jì)算出目標(biāo)用戶對未評價(jià)過的商品的預(yù)測評分,計(jì)算公式如下:
(3)
其中,Y表示用戶u對項(xiàng)目i的預(yù)測評分,K表示與用戶u相似度排名較高的前k個(gè)用戶,U表示對項(xiàng)目i有過評分交互的用戶集合,m表示用戶u和用戶v的相似度,r表示用戶v對項(xiàng)目i的評分。
本文算法(TrustUserCF-Based)流程如下:
步驟1 讀取MovieLens數(shù)據(jù)集中電影評分文件,依次讀取到UserId、ItemId、rating各字段的值;
步驟2 對原始數(shù)據(jù)集進(jìn)行劃分,劃分75%的訓(xùn)練集和25%的測試集;
步驟3 使用訓(xùn)練集數(shù)據(jù),構(gòu)造user-item的評分矩陣,使用該評分矩陣,計(jì)算用戶之間的相似度;
步驟4 對熱門項(xiàng)目添加懲罰機(jī)制,減少熱門項(xiàng)目的推薦;
步驟5 計(jì)算用戶u對用戶v的信任度;
步驟6 根據(jù)上述步驟3到步驟6的計(jì)算結(jié)果,計(jì)算用戶之間的相似信任值S;
步驟7 根據(jù)步驟6的相似信任值結(jié)果,計(jì)算目標(biāo)用戶對item的評分;
步驟8 根據(jù)近鄰值k進(jìn)行item的推薦;
步驟9 對推薦的結(jié)果進(jìn)行評估,計(jì)算出算法的各項(xiàng)評價(jià)指標(biāo)。
傳統(tǒng)的基于用戶的協(xié)同過濾算法利用用戶的相似度來計(jì)算目標(biāo)用戶對項(xiàng)目的預(yù)測評分。傳統(tǒng)的基于用戶的協(xié)同過濾算法認(rèn)為,用戶u和用戶v之間只需要相似度來衡量相互之間的關(guān)系,用戶u和用戶v之間的信任度是對等的[15]。而在現(xiàn)實(shí)生活中,用戶u和用戶v之間的信任是有所差異的,如用戶u因?yàn)橛休^多的人生閱歷而被更多的人信任,而用戶v的人生經(jīng)歷較少,所以兩者之間的信任度是有所差異的,即在真實(shí)的數(shù)據(jù)集中用戶u和用戶v之間的信任度是不對等的。故本文在用戶相似度的基礎(chǔ)上添加用戶信任度值來綜合衡量用戶之間的關(guān)系。信任度的計(jì)算公式如下:
(4)
其中,t表示用戶u對用戶v的信任度,N表示用戶u有過評分的項(xiàng)目集合,M表示用戶v有過評分的項(xiàng)目集合。
從上述計(jì)算公式可以看出,信任度考慮了用戶u和用戶v共同評分的項(xiàng)目在用戶u的評分項(xiàng)目中的占比,以及用戶u和用戶v共同評分的項(xiàng)目在兩個(gè)用戶評分過的項(xiàng)目中的占比。當(dāng)用戶u和用戶v共同交互項(xiàng)目越多,u對v的信任度越高,并且用戶u對用戶v的信任度與用戶v對用戶u的信任度是不同的。
在計(jì)算出用戶之間信任度后,再結(jié)合用戶之間的相似度,可計(jì)算出用戶u和用戶v的相似信任值S,其計(jì)算公式如下:
S=m×t,
(5)
其中,S為用戶u對用戶v的相似信任值,m為用戶u和用戶v的相似度,t為用戶u對用戶v的信任度。
當(dāng)某個(gè)商品非常熱門時(shí),很多用戶都對該商品有過評分,如《新華字典》這類商品,在計(jì)算時(shí)該類熱門商品權(quán)重會較大,在推薦時(shí)需要考慮對該類商品進(jìn)行一定的懲罰措施,懲罰計(jì)算公式如下:
(6)
其中,m表示用戶u和用戶v的相似度,U表示對項(xiàng)目i有過評分的用戶集合,N表示用戶u有過評分的項(xiàng)目集合,M表示用戶v有過評分的項(xiàng)目集合。
在計(jì)算出用戶之間的信任相似值后,可計(jì)算目標(biāo)用戶對item的評分預(yù)測,其計(jì)算公式如下:
(7)
其中,Y表示用戶u對項(xiàng)目i的預(yù)測得分,h表示用戶u所有項(xiàng)目評分的平均值,U表示項(xiàng)目i有過評分的用戶集合,K表示與用戶u相似信任值最接近的k個(gè)用戶,S表示用戶u對用戶v的相似信任值,r表示用戶v對項(xiàng)目i的評分,g表示用戶v對所有項(xiàng)目評分的平均值。
本實(shí)驗(yàn)采用的是Movielens數(shù)據(jù)集,該數(shù)據(jù)集是由943名用戶對1 682部電影的100 000個(gè)電影評分?jǐn)?shù)據(jù)組成[16],其中評分范圍為1分至5分,分值越高表示用戶對電影的喜愛程度越高。數(shù)據(jù)主要由用戶編號(userId)、電影編號(itemId)、電影評分(rating)字段組成。實(shí)驗(yàn)中,將數(shù)據(jù)集隨機(jī)劃分成訓(xùn)練集和測試集,分別用來完成訓(xùn)練和測試任務(wù)。
本實(shí)驗(yàn)采用精確率(Precision)、覆蓋率(Coverage)、F1值(F1-score)來評價(jià)算法推薦性能。
3.2.1 精確率
精確率為預(yù)測結(jié)果中符合實(shí)際值的比例,通過如下公式計(jì)算,Precision 的值越高,表明算法的性能越好[17]。
(8)
其中,P表示精確率,T表示實(shí)際為正樣本,預(yù)測結(jié)果也為正樣本,F表示實(shí)際為負(fù)樣本,預(yù)測結(jié)果為正樣本。
3.2.2 覆蓋率
覆蓋率為推薦成功的項(xiàng)目占總項(xiàng)目的比例,可預(yù)測項(xiàng)目對目標(biāo)用戶是否有效,其計(jì)算公式如下:
(9)
其中,C表示覆蓋率,n表示用戶u所推薦成功的項(xiàng)目數(shù)目,N為所有項(xiàng)目數(shù)量。
3.2.3 F1值
F1值為精確率和召回率的調(diào)和均值[18],其計(jì)算公式如下:
(10)
其中,F1表示F1值,P表示算法的精確率,R表示算法的召回率。
與本文算法(TrustUserCF-Based)對比的算法分別為傳統(tǒng)的基于用戶的協(xié)同過濾(UserCF)、基于物品的系統(tǒng)過濾(ItemCF)、融合懲罰熱門項(xiàng)目的用戶協(xié)同過濾算法(CF-P)和融合信任度的用戶協(xié)同過濾算法(CF-T)。
為了直觀展示本文算法的各項(xiàng)指標(biāo),在實(shí)驗(yàn)中通過選取不同的k近鄰值進(jìn)行實(shí)驗(yàn),其實(shí)驗(yàn)結(jié)果精確率、覆蓋率和F1值通過折線圖的方式展現(xiàn)(圖1、圖2、圖3)。
圖1 不同算法在k值為10至150之間的精確率
圖2 不同算法在k值為30至150之間的覆蓋率
圖3 不同算法在k值為10至150之間的F1值
由圖1可知,k值在10至150范圍時(shí),本文算法(TrustUserCF-Based)精確率均優(yōu)于比較的基于用戶的協(xié)同過濾算法(UserCF)和基于物品的協(xié)同過濾算法(ItemCF)。k值為70時(shí),本文算法的精確率比協(xié)同過濾算法(UserCF)提升16%,比只融合熱門懲罰的用戶協(xié)同過濾算法(CF-P)提升13%,比只融合信任度的用戶協(xié)同過濾算法(CF-T)提升9%。
由圖2可知,k值位于30至150的范圍時(shí),本文算法(TrustUserCF-Based)覆蓋率優(yōu)于比較算法UserCF和ItemCF,在k值為30時(shí),其覆蓋率比UserCF算法提升10%,比ItemCF算法提升17%,比CF-P算法提升10%,比CF-T算法提升3%。隨著k值的提高,覆蓋率呈下降趨勢,原因是隨著k值的上升,推薦了更多相似信任值較低的用戶,導(dǎo)致了整體預(yù)測正確的項(xiàng)目個(gè)數(shù)有所減少。
由圖3可知,k值位于10至150的范圍時(shí),本文算法TrustUserCF-Based的F1值優(yōu)于比較算法UserCF和ItemCF。k值為100時(shí),本文算法比傳統(tǒng)的UserCF算法提升6%,比ItemCF算法提升10%,比CF-P算法提升5.6%,比CF-T算法提升2%。k值位于10至150的區(qū)間時(shí),F1值呈現(xiàn)先遞增后遞減的趨勢,所以在項(xiàng)目中可以選擇適中的k值以保證推薦系統(tǒng)的性能。
本文算法與對比算法的精確率、覆蓋率和F1值的實(shí)驗(yàn)結(jié)果如表1所示。由表1可以看出,本文算法的精確率、覆蓋率和F1值相較于傳統(tǒng)的協(xié)同過濾算法在三項(xiàng)指標(biāo)上均有所提高。
表1 本文算法與對比算法的實(shí)驗(yàn)結(jié)果
通過對上述實(shí)驗(yàn)結(jié)果的分析可知,傳統(tǒng)的協(xié)同過濾算法在沒有考慮對熱門項(xiàng)目添加懲罰機(jī)制時(shí),會影響到推薦的結(jié)果。同時(shí),在沒有考慮用戶之間不對等的信任度時(shí),也會對實(shí)驗(yàn)的結(jié)果產(chǎn)生影響。并且從實(shí)驗(yàn)結(jié)果來看,在UserCF上單獨(dú)添加熱門懲罰和用戶信任度時(shí),用戶信任度對推薦的評價(jià)指標(biāo)影響更大,只添加熱門懲罰的算法比傳統(tǒng)的協(xié)同過濾算法的精確率、覆蓋率和F1值能提升2%~4%,只添加用戶信任度的算法比傳統(tǒng)的協(xié)同過濾算法的精確率、覆蓋率和F1值能提升5%~7%,故可看出,用戶信任度比熱門懲罰對算法的性能影響更大。
推薦系統(tǒng)是針對解決當(dāng)前信息過載問題常用的處理方式,傳統(tǒng)的協(xié)同過濾算法由于在評分預(yù)測時(shí)只根據(jù)user-item的評分矩陣計(jì)算用戶之間的相似度,而導(dǎo)致算法精確率不高。針對此弊端,本文提出的融合信任度的協(xié)同過濾算法(TrustUserCF-Based)不僅考慮了用戶之間的相似度,同時(shí)考慮用戶之間不對等的信任度,在真實(shí)數(shù)據(jù)集MovieLens上的實(shí)驗(yàn)表明,本文算法的TrustUserCF-Based算法對推薦系統(tǒng)性能的提升有積極的作用,在電商和短視頻推薦等常用的推薦場景下均有一定的適用性。在今后的工作中,將繼續(xù)研究推薦系統(tǒng)中用戶和項(xiàng)目的交互問題,挖掘交互過程中更多的有效信息,挖掘用戶、項(xiàng)目、交互記錄和用戶的自身屬性中的隱式反饋信息,將user和item之間的交互通過圖的連通性來進(jìn)行建模。