崔國琪 李林



摘要:為提高推薦算法挖掘數據長尾信息的能力,降低推薦結果流行度,使推薦結果更多樣,在傳統協同過濾推薦算法基礎上,分別將熱門項目與活躍用戶的懲罰因子引入相似性計算中,依據準確度、覆蓋率、流行度等評價標準,在上海某電商平臺銷售數據集上進行比較,并通過多組實驗驗證不同參數對推薦算法的影響。結果顯示,加入懲罰因子后基于用戶的協同過濾推薦算法在N值取10、K值取3時,流行度為3.97,比傳統方法降低了7.31%:加入懲罰因子后基于項目的協同過濾推薦算法在N值取10、K值取3時,準確率為7.65%,比傳統方法提高了5.25%。由此證明加入懲罰因子的協同過濾推薦算法在保持算法準確率的同時,可在一定程度上降低推薦結果流行度。
關鍵詞:推薦算法;協同過濾;懲罰因子;長尾效應;電商
DOI: 10. 11907/rjdk.192435
開放科學(資源服務)標識碼(OSID):
中圖分類號:TP312
文獻標識碼:A
文章編號:1672-7800( 2020)001-0103-05
0 引言
隨著互聯網、移動技術的快速發展,全球數據量呈指數型爆炸增長,用戶獲取的信息資源越來越豐富,但隨之而來的“信息超載”問題使獲取有效信息的難度越來越大[1]。為解決該問題,IBM、Google、Yahoo等多家公司陸續推出了個性化電子商務原型系統TELLIM。個性化推薦系統通過分析用戶個體行為和偏好,“一對一”地提供其感興趣的信息,并根據新錄入的行為變化自動調整推薦內容。該方式不需要用戶較大的參與成本,推薦內容也更準確[2]。協同過濾推薦算法是當前應用最為廣泛的個性化推薦技術,其基本思想是根據其他用戶偏好的項目進行推薦,首先找到一組與目標用戶偏好一致或相近的鄰居用戶,然后分析鄰居用戶偏好,將鄰居用戶喜愛的項目推薦給目標用戶[3]。目前,協同過濾推薦算法主要有基于內容的推薦[4-5]、基于鄰域的推薦[6-7]、基于矩陣分解的SVD++算法[8]等。
為有效提高協同過濾推薦算法準確率,眾多學者針對相似度計算進行了大量研究。李容等[9]提出利用用戶共同項目數與用戶平均評分修正因子改進傳統相似度,同時改進協同過濾算法,并將其應用于電影推薦;王志虎等[10]提出基于用戶歷史行為的協同過濾推薦算法,根據用戶歷史行為預測用戶對每一個項目的偏好程度,大幅降低了推薦誤差;王余斌等[11]將改進的用戶偏好與信任度引入傳統協同過濾算法中,提出了基于用戶評論評分與信任度的協同過濾算法;王永貴等[12]通過矩陣分解實現對原始數據的降維及數據填充,并引入時間衰減函數預處理用戶評分,提出一種改進的協同過濾算法,可在多維度下反映用戶興趣變化;胡朝舉等[13]通過對用戶進行模糊C均值聚類操作,將用戶分為用戶簇,使用加權的歐氏距離計算相似度,提高了推薦精度,減少了評分誤差。
現有算法在計算用戶相似性時,沒有考慮熱門項目對相似性的影響,即大部分用戶對熱門項目有反饋,導致算法推薦結果越來越傾向于熱門項目;另一方面,在計算項目相似性時,由于活躍用戶對多個項目均有反饋,算法推薦結果更易受到活躍用戶的影響。
針對以上問題,本文通過加入懲罰因子以降低熱門項目和活躍用戶相似性權重,在利用傳統余弦相似度計算相似性的基礎上改進相似性計算方法,并將改進的協同過濾算法在上海某電商公司購物評分數據集中進行實證研究,驗證其可行性。
1 協同過濾推薦算法
1.1 傳統協同過濾推薦算法
目前應用最廣泛的協同過濾推薦算法主要包括基于用戶的協同過濾算法與基于項目的協同過濾算法[14]。協同過濾推薦算法通過分析數據,生成當前用戶最近鄰居集合,將該集合最感興趣的前N個項目推薦給當前用戶,即Top N推薦,協同過濾推薦算法推薦過程主要分為3個步驟[15]。
(1)將數據表述為矩陣。根據用戶對項目的評價建立m*n階user-item評價矩陣R=(rij),m表示用戶總數,n表示項目總數,rij表示第i個用戶對第j個項目的評價,在本文使用的數據集中,rijE[0,5],0表示用戶對該項目的興趣最低,5表示最高。
(2)發現最近鄰居。發現最近鄰居指通過計算用戶或項目相似度,建立當前用戶最近鄰居集,根據最近鄰居集對項目進行興趣排序,實現當前用戶推薦。它可表述為針對目標用戶ut,根據相似度排列順序建立一個鄰居集N={ u1,U2,…,un},設目標用戶UT和ui的相似度為sim( UT,u;),相似度逐個遞減,即sim(uT,UI)> sirTi( UT,U2)>…>sim (UT,un)。最近鄰居集建立得準確與否,是協同過濾算法實現的關鍵。
基于用戶的協同過濾算法通過計算用戶相似度建立最近鄰居集,本文通過余弦相似度計算目標用戶(記為u)和鄰居用戶(記為v)之間的相似度,計算公式[16]為:
1.2 改進的協同過濾推薦算法
(1)基于用戶的改進算法(UserCF-IIF)。用戶相似度計算是基于用戶對某個項目共同的反饋行為,但對熱門項目來說,有太多用戶對其作出反饋,這種反饋不能體現用戶之間的差異性。所以加入懲罰因子lflog(l+IN(i)l以降低熱門項目對用戶相似度的影響,即冷門項目更能體現用戶相似性,由式(1)得到:
(2)基于項目的改進算法(ItemCF-IUF)。兩個項目相似度的出現是因為這兩個項目同時出現在用戶反饋列表中,即用戶反饋行為對項目相似度的計算作出了貢獻,但活躍用戶反饋行為更多,對相似度影響更大。所以加入懲罰因子lflog(I+IN(u)l以降低活躍用戶對項目相似度的影響,即不活躍用戶更能體現項目相似性,由式(2)得到:
1.3 改進算法實現
(1)UserCF-IIF算法。
#一*一coding:utf-8一*一
import math
import operator
def UserSimilarity( train):
#為項目一用戶矩陣生成反向表
item_users= dict()
foru, items in train.items():
fori in items.keys():
ifi not in item_users:
item_users[i]= set()
item_users[i] .add(u)
#計算用戶之間有共同正反饋的項目
C= dict()
N= dict()
for i, users in item_users.items():
foru in users:
N.setdefault(u,O)
N[u]+=1
C.setdefault(u,{})
forv in users:
ifu==v:
continue
C[u] .setdefault(v,O)
C[u][v]+=l/math.log( l+len( users))
( 2)ItemCF-IUF算法。
#一*一coding:utf-8一*一
import math
import operator
def ItemSimilarity( train):
#計算項目之間對其有共同正反饋的用戶
C= dict()
N= dict()
for u,items in train.items():
fori in items:
N.setdefault(i.O)
N[i]+=1
C.setdefault(i,{})
forj in items:
ifi-=j:
continue
C[i] .setdefault(j,O)
C[i][j]+=1,math.log( l+len( items)*1.0)
2 實驗結果與分析
2.1 數據集選擇
本文選取的數據集是上海某電商公司2018年6月至2018年12月的銷售明細,原始數據集包括用戶信息、商品信息、用戶購買記錄和評分記錄。本文實驗提取了用戶購買記錄和評分記錄,其中包括2 929位用戶、11 537件商品、310 040條購買評分記錄(0-5分),用戶評分記錄最少為10條,數據稀疏度為99.08%,隨機抽取其中的80%為訓練集,其余20%為測試集。其用戶活躍度與項目流行度分布均符合長尾效應[17]。
2.2 評價標準
本文推薦算法應用在數據集上的目的是向用戶推薦其購買可能性最大的項目,而不是預測用戶對項目可能的評分[18],故使用Top N推薦。Top N推薦指算法為用戶提供個性化推薦列表,不采用RMAE、MAE等基于回歸模型的評價指標,其推薦預測準確率通常使用準確率( Preci-sion)、召回率(Recall)、覆蓋率(Coverage)及流行度(Popu-larity)度量19]。準確率指推薦給用戶的項目屬于測試集的比例,表示預測為正的樣本中有多少是真正的正樣本,則推薦結果準確率定義為:
其中R(u)表示提供訓練集給用戶u提供的推薦項目列表,T(u)表示用戶u在測試集中作出反饋的項目列表。
召回率指測試集中有多少項目在用戶的推薦列表中,表示樣本正例有多少被預測正確,推薦結果召回率定義為:
覆蓋率( Coverage)指推薦列表包含的所有推薦項目占項目總和的比例。設系統的用戶集合為U,項目總和為I,推薦系統向用戶提供的推薦項目列表為R(u),則推薦系統覆蓋率計算公式為:
項目流行度指有多少用戶對該項目作出反饋,項目流行度越高,代表該項目越熱門[20]。設項目i流行度為P(i),推薦項目列表R(u)長度為N,推薦系統平均流行度可由式(9)計算得到。
2.3實驗結果與分析
本文在協同過濾推薦算法中加入懲罰因子,在電商銷售數據集上驗證其可行性,以期提升相似度算法準確性,增強算法挖掘長尾數據的能力。在保證推薦算法準確率的前提下,盡可能加強算法對冷門項目推薦的權重。
本文采用的對比算法為兩種協同過濾推薦算法:基于用戶的協同過濾算法與基于項目的協同過濾算法,記為UserCF和ItemCF。加入懲罰因子的改進算法分別記為UserCF-IIF和ItemCF-IUF。實驗推薦列表長度N取10,相似用戶列表長度K取1-12不同值,推薦算法結果如圖3所示。
其中橫坐標為相似用戶列表長度,從圖3可以看到,隨著K值的增加,各算法準確率逐步下降并趨近穩定,基于用戶的改進算法較原算法準確率略低,基于項目的改進算法較原算法準確率稍有提高。由于數據稀疏性較高,各算法均在K取值為1時準確度最高,隨著相似用戶列表的增多,準確率也隨之降低。
如圖4、圖5所示,隨著K值的增加,各算法召回率、覆蓋率逐漸上升并趨近穩定,基于用戶的改進算法與基于項目的改進算法召回率、覆蓋率均高于原算法。
在圖6中,隨著K值的增加,各算法流行度逐漸下降并趨近穩定,基于用戶的改進算法流行度較原算法明顯下降,但基于項目的改進算法流行度與原算法接近一致。
本文也進行了一次實驗,其中相似用戶列表長度不變,取K值為3,推薦列表長度N取10-100,N值以10為間隔,實驗結果各指標變化基本不變,故實驗結果未列出。
綜合比較各評價標準,基于用戶的改進算法較原算法準確率雖略有降低,但其召回率、覆蓋率和流行度均優于原算法;基于項目的改進算法在準確率、召回率和覆蓋率上均優于原算法,流行度與原算法無明顯差異;基于項目的推薦算法在準確率上均高于基于用戶的推薦算法,這主要是由于采用的電商平臺數據集中,用戶興趣愛好一般比較固定,推薦算法往往圍繞用戶興趣愛好推薦相關領域物品,但兩種算法并無優劣之分。
3 結語
協同過濾推薦算法準確率是評價推薦算法優劣的重要指標,但挖掘數據中的長尾信息,將冷門項目更多地推薦給用戶,使長尾曲線變得更加扁平,對用戶選擇與項目效益均具有重要意義。本文在傳統協同過濾推薦算法基礎上,分別將熱門項目與活躍用戶的懲罰因子引入相似性計算中,并在電商平臺數據集上驗證算法可行性。試驗結果表明,本文算法在保持準確率的同時,有效挖掘了數據中的長尾信息,提高了冷門項目權重,向用戶提供的推薦列表召回率與覆蓋率均有提高,更能體現個性化推薦算法的多樣性。下一步將針對數據稀疏性和冷啟動問題,引入更多影響相似度的參數,進一步提高算法準確率。在算法方面,引入的參數越多,其算法復雜度也隨之越高,如何更好地調整參數、優化算法也是待研究內容。
參考文獻:
[1]SAYAKHOT P,CAROLAN-OLAH M.Sources of information on ges-tational diabetes mellitus. satisfactionWith diagnostic process and in-formation provision [J]. BMC Pregnancy and Childhirth. 2016, 16(1):287.
[2] YANG J M, LI K F.An inference-based collaborative filtering ap-proach[C].Third IEEE International Symposium on Dependable, Au-tonomic and SecureComputing, 2007: 84-94.
[3] 冷亞軍.協同過濾技術及其在推薦系統中的應用研究[D].合肥:合肥工業大學,2013.
[4]WU M L,CHANC C H,LIU R Z.Integrating content based filteringwith collahorative filtering using co-clustering with augmented matri-ces[ Jl. Expert Systems with Applications, 2014 .41(6):2754-2761.
[5]楊武,唐瑞,盧玲.基于內容的推薦與協同過濾融合的新聞推薦方法[J].計算機應用,2016,36(2):414-418.
[6]L1 D S,CHEN C,LU Q,et al.An algorithm for efficient privacy-pre-serving item-based collaborative filtering[J].Future Ceneration Com-puter Systems, 2016.55: 311-320.
[7] 葉西寧,王猛.音樂個性化推薦算法TFPMF的研究[J].系統仿真學報,2019,31(7):1397-1407.
[8]KOREN Y.Factorization meets the neighborhood:a multifaceted col-lahorative filtering model[C].Proceedings of the 14th ACM SICKDDInternational Conference on Knowledge Discovery and Data Mining,2008:426-434.
[9] 李容,李明奇,郭文強.基于改進相似度的協同過濾算法研究[J].計算機科學,2016,43( 12):206-208, 240.
[10]王志虎,黃曼瑩.基于用戶歷史行為的協同過濾推薦算法[J].微電子學與計算機,2017, 34(5):132-136.
[11]王余斌,王成良,文俊浩.基于用戶評論評分與信任度的協同過濾算法[J].計算機應用研究,2018,35(5):1368-1371+1402.
[12]王永貴,宋真真,肖成龍.基于改進聚類和矩陣分解的協同過濾推薦算法[J].計算機應用,2018 .38(4):1001-1006.
[13] 胡朝舉,孫克逆.基于用戶模糊聚類的個性化推薦研究[J].軟件導刊,2018, 17(2):31-34.
[14] 王惠敏,聶規劃.融合用戶和項目相關信息的協同過濾算法研究[J].武漢理工大學學報,2007(7):160-163.
[15] 張獻忠.基于商品流行度和用戶活躍度的推薦算法研究[J].電腦知識與技術,2014,10( 32):7641-7643+7649.
[16] 榮輝桂,火生旭,胡春華,等.基于用戶相似度的協同過濾推薦算法[J].通信學報,2014, 35(2):16-24.
[17]PELTIER S,MOREAU F. Internet and the' long tail versus superstar effect' debate: evidence from the French hook market [J]. Applie-dEconomics Letters, 2012. 19(8):711-715.
[18] LINDEN G. What is good recommendation algorithm[ EB/OLl. http:,,cacm.acm.org/blogs/blogcacm/22925 -what-is-a-good-recommenda-tion-algorithm/fulltext.
[19] 郝立燕,王靖.基于項目流行度的協同過濾TopN推薦算法[J].計算機工程與設計,2013,34( 10):3497-3501.
[20]STECK H. Item popularity and recommendation accuracy ICl. TheFifth ACM Conference on Recommender systems, 2011: 125-132.
(責任編輯:江艷)
作者簡介:崔國琪(1994-),男,上海理工大學管理學院碩士研究生,研究方向為數據挖掘;李林(1966-),女,博士,上海理工大學管理學院副教授、碩士生導師,研究方向為工業工程質量管理、服務管理。