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

圖1 不同算法在k值為10至150之間的精確率

圖2 不同算法在k值為30至150之間的覆蓋率

圖3 不同算法在k值為10至150之間的F1值
由圖1可知,k值在10至150范圍時,本文算法(TrustUserCF-Based)精確率均優于比較的基于用戶的協同過濾算法(UserCF)和基于物品的協同過濾算法(ItemCF)。k值為70時,本文算法的精確率比協同過濾算法(UserCF)提升16%,比只融合熱門懲罰的用戶協同過濾算法(CF-P)提升13%,比只融合信任度的用戶協同過濾算法(CF-T)提升9%。
由圖2可知,k值位于30至150的范圍時,本文算法(TrustUserCF-Based)覆蓋率優于比較算法UserCF和ItemCF,在k值為30時,其覆蓋率比UserCF算法提升10%,比ItemCF算法提升17%,比CF-P算法提升10%,比CF-T算法提升3%。隨著k值的提高,覆蓋率呈下降趨勢,原因是隨著k值的上升,推薦了更多相似信任值較低的用戶,導致了整體預測正確的項目個數有所減少。
由圖3可知,k值位于10至150的范圍時,本文算法TrustUserCF-Based的F1值優于比較算法UserCF和ItemCF。k值為100時,本文算法比傳統的UserCF算法提升6%,比ItemCF算法提升10%,比CF-P算法提升5.6%,比CF-T算法提升2%。k值位于10至150的區間時,F1值呈現先遞增后遞減的趨勢,所以在項目中可以選擇適中的k值以保證推薦系統的性能。
本文算法與對比算法的精確率、覆蓋率和F1值的實驗結果如表1所示。由表1可以看出,本文算法的精確率、覆蓋率和F1值相較于傳統的協同過濾算法在三項指標上均有所提高。

表1 本文算法與對比算法的實驗結果
通過對上述實驗結果的分析可知,傳統的協同過濾算法在沒有考慮對熱門項目添加懲罰機制時,會影響到推薦的結果。同時,在沒有考慮用戶之間不對等的信任度時,也會對實驗的結果產生影響。并且從實驗結果來看,在UserCF上單獨添加熱門懲罰和用戶信任度時,用戶信任度對推薦的評價指標影響更大,只添加熱門懲罰的算法比傳統的協同過濾算法的精確率、覆蓋率和F1值能提升2%~4%,只添加用戶信任度的算法比傳統的協同過濾算法的精確率、覆蓋率和F1值能提升5%~7%,故可看出,用戶信任度比熱門懲罰對算法的性能影響更大。
推薦系統是針對解決當前信息過載問題常用的處理方式,傳統的協同過濾算法由于在評分預測時只根據user-item的評分矩陣計算用戶之間的相似度,而導致算法精確率不高。針對此弊端,本文提出的融合信任度的協同過濾算法(TrustUserCF-Based)不僅考慮了用戶之間的相似度,同時考慮用戶之間不對等的信任度,在真實數據集MovieLens上的實驗表明,本文算法的TrustUserCF-Based算法對推薦系統性能的提升有積極的作用,在電商和短視頻推薦等常用的推薦場景下均有一定的適用性。在今后的工作中,將繼續研究推薦系統中用戶和項目的交互問題,挖掘交互過程中更多的有效信息,挖掘用戶、項目、交互記錄和用戶的自身屬性中的隱式反饋信息,將user和item之間的交互通過圖的連通性來進行建模。