叢洪杰,龔 安,李華昱,帥訓波
(1.中國石油大學(華東) 計算機與通信工程學院,山東 青島 266580; 2.中國石油勘探開發(fā)研究院 計算機應用技術研究所,北京 100083)
互聯(lián)網和移動互聯(lián)網的蓬勃發(fā)展,帶來了信息快速增長,在海量數(shù)據中獲取對自己有價值的信息更加困難,個性化推薦算法成為解決這一問題最有效的技術之一[1]。在個性化推薦算法中,協(xié)同過濾推薦在工業(yè)界和學術界都取得了很大的成功[2]。
隨著大數(shù)據時代的來臨,協(xié)同過濾的弊端也越發(fā)突出,包括數(shù)據稀疏性、冷啟動、可擴展性差、小規(guī)模數(shù)據離線處理算法無法應用到大規(guī)模數(shù)據處理等[3]。針對這些問題,學者們提出了許多解決辦法。鄧愛林等[4]為減小數(shù)據稀疏性帶來的推薦精度低的問題,提出了一種基于項目評分預測填充空缺值的方法,然后采用一種新穎的相似性度量獲得目標用戶更加準確的最近鄰居,使得推薦質量有所提升。Melville P等[5]在緩解評分數(shù)據的稀疏性方面,則采用基于內容的方法預填充用戶評分矩陣中的未評分項,從而提高推薦精度。
韋素云等[6]考慮了項目類別和興趣度等因素,提出一種改進的協(xié)同過濾推薦算法。該算法首先計算項目之間的類別距,然后結合項目類別信息,考慮不同項目之間的相關程度,構造出項目類別相似性矩陣,衡量項目間相似性的標準采用改進的條件概率的方法。孟祥武等[7]提出大數(shù)據時代的推薦系統(tǒng),充分利用豐富的用戶反饋、社會化網絡等信息進一步提高推薦系統(tǒng)的性能和用戶滿意度。國琳等[8]提出通過構建和分析用戶興趣分布曲線以發(fā)現(xiàn)興趣領域專家,并甄別狀態(tài)不正常的偽專家。
王立才等[9]提出上下文感知的推薦系統(tǒng),利用上下文信息,改善推薦系統(tǒng)的推薦精確度和用戶滿意度,從面向過程的角度論述了上下文感知推薦系統(tǒng)的研究進展和難點。劉平峰等[10]提出用戶興趣圖譜,建立興趣領域本體,集成興趣圖譜的動態(tài)性,實現(xiàn)用戶興趣匹配與定位,進而提高推薦系統(tǒng)的精度。Pessemier T D等[11]提出個性化的混合推薦模型,該模型更多考慮了用戶的偏好、約束限制和用戶反饋等因素,使得推薦個人旅行線路更加符合用戶興趣。Oh J等[12]提出一種個性化流行趨勢匹配算法,計算目標用戶的個性化趨勢,匹配用戶興趣偏好,提升預測評分,產生更加精準的推薦列表。
以上所述研究雖然對推薦算法做出了改進,并且取得了不錯的效果,但對于項目類別和用戶興趣沒有加以充分挖掘利用。對此,文中算法引入用戶興趣分布預測填充評分矩陣空缺值,緩解數(shù)據稀疏性,改進相似性度量方法計算項目相似性,以減小預測評分的誤差。
基于項目的協(xié)同過濾算法中,計算項目的相似性是關鍵步驟。項目類別數(shù)據和用戶評分數(shù)據為文中推薦算法的基礎數(shù)據,由此可構建項目類別分布矩陣、用戶興趣分布矩陣和用戶評分矩陣。
(1)項目類別分布矩陣。
項目類別分布矩陣由n×k的矩陣C(n,k)表示,如表1所示,其中n為項目的個數(shù),k為項目類別的個數(shù)。
(2)用戶興趣分布矩陣。
用戶興趣分布矩陣由m×k矩陣D(m,k)表示,見表2,其中m為用戶的數(shù)目,k為用戶興趣種類數(shù)。
表1 項目類別分布矩陣C(n,k)
表2 用戶興趣分布矩陣D(m,k)
(3)用戶評分矩陣。
用戶評分矩陣由m×n的矩陣R(m,n)表示,見表3,其中用戶數(shù)目用m表示,項目數(shù)目用n表示,Ri,j表示用戶i對項目j的評分。
表3 用戶評分矩陣R(m,n)
傳統(tǒng)的基于鄰域的協(xié)同過濾算法,度量用戶或項目間的相似性是關鍵的一步。以下是計算項目之間相似性主要采用的三種方法:
(1)余弦相似性(cosine similarity):把項目看作m維用戶的空間向量。設向量i和向量j分別代表用戶對項目i和項目j的評分,則項目i和項目j之間的相似性sim(i,j)定義如下:
(1)
其中,Ru,i、Ru,j分別為用戶u對項目i和項目j的評分;U表示用戶對項目i和項目j都有評分的用戶集合。
(2)皮爾森系數(shù)(Pearson correlation)。
(2)
(3)修正余弦相似性(adjusted cosine similarity)。
(3)
用戶規(guī)模和項目數(shù)目的增加,使得評分矩陣的數(shù)據稀疏性逐漸增加,從而導致預測評分精度低。目前解決辦法就是對用戶未評分項進行預填充,固定缺省值是最簡單且常用的方法之一,該方法可以有效地提高系統(tǒng)的推薦精度。但實際生活中評分矩陣中的缺省值顯然不可能都一樣,因此填充固定缺省值的方法沒有從根本上解決數(shù)據稀疏性問題。文中以用戶興趣分布評分矩陣求相似用戶,對空缺值進行預測填充,減小用戶評分數(shù)據的稀疏性。
傳統(tǒng)的修正余弦相似性的度量方法是對用戶的評分去中心化,通過減去用戶的平均評分,改善了用戶評分尺度不同的問題。評分尺度問題主要由用戶評分的標準不同而導致,比如評分區(qū)間為1~5分時,用戶對于項目評分A可能是3分以上喜歡,而B則4分以上才為喜歡。但是上述方法僅僅考慮了用戶評分尺度問題,對于項目的類別用戶的評分標準也是有所不同的,比如用戶對動作類或科幻類的電影更加偏好,那么用戶會普遍給這一類別的電影更高的評分。文中提出對項目進行分類,計算用戶在項目的每種類別中的評分標準,以此來改進計算項目相似性的過程,以尋找更加準確的K近鄰。
基于項目的協(xié)同過濾,主要由計算項目的相似鄰居,預測目標用戶對項目的評分和生成推薦列表等過程組成,其中計算項目的相似鄰居需要用戶對項目i、j同時具有評分。求用戶對項目i和對項目j分別有評分的并集公式表示為:
U=Ui∪Uj
(4)
其中,U表示所有用戶的集合;Ui和Uj分別表示對項目i和項目j有過評分的用戶集合。
對用戶集合中分別對項目i、j未評分的項進行填充預測評分,定義P{pu,i,pu,j,…}。
預測填充策略,本階段采用用戶興趣分布矩陣作為求最近鄰居的輸入數(shù)據,通過基于用戶的協(xié)同過濾算法進行預測評分。
(5)
其中,Pu,i為預測評分;simD(u,v)為用戶u和用戶v通過用戶興趣分布矩陣求得的相似度;rv,i為相似用戶對項目i的評分。
sim(i,j)=
(6)
(7)
輸入:用戶的項目評分矩陣R,項目類別信息,項目集合Items,目標用戶集合U,項目鄰居數(shù)目K,推薦列表長度N
輸出:目標用戶u對項目的預測評分,且生成目標用戶u的推薦列表
(1)根據數(shù)據集中項目分類信息構建項目類別分布矩陣C(n,k);
(2)根據項目分類信息和用戶項目評分矩陣R,計算用戶興趣分布矩陣D(m,k);
(4)求用戶對項目i和項目j分別有評分的用戶的并集;
(5)對并集中用戶對項目i或項目j未評分項,采用用戶興趣分布的協(xié)同過濾算法進行預填充值;
(6)構建用戶項目評分矩陣,求得項目i和項目j有著共同評分的用戶集U;
(7)利用基于項目分類的修正余弦相似性來計算項目之間的相似度,生成相似度最大的k個項目鄰居;
(8)通過求得的相似鄰居和相似度值來預測目標用戶對項目的評分;
(9)通過對預測評分的排序,推薦top N項目給目標用戶。
實驗采用平均絕對誤差(mean absolute error,MAE)來評價算法的推薦精度[13]。假定目標用戶的預測評分集為P{p1,p2,…,pn},與其對應測試集中的真實評分集為Q{q1,q2,…,qn},則MAE表示為:
(8)
首先對數(shù)據進行預處理,構建用戶的興趣分布數(shù)據以及項目分類數(shù)據,然后使用Java編程語言對推薦算法進行實現(xiàn),分別對傳統(tǒng)的余弦相似性、修正余弦、改進的修正余弦進行實現(xiàn),對目標用戶和電影進行預測評分,評估推薦精度;最后對比文中算法與其他兩種算法的推薦精度。
為了驗證算法的有效性,在使用相同數(shù)據集規(guī)模及驗證方法上,對傳統(tǒng)協(xié)同過濾算法中使用的余弦相似性、修正余弦相似性的相似性度量方法與文中提出的改進修正余弦相似性進行實驗對比。最近鄰居的規(guī)模從10到100遞增,實驗結果如圖1所示。
圖1 推薦算法的MAE值比對
從圖1可以看出,文中提出的方法隨著最近鄰居的增加MAE值逐漸減小,且低于傳統(tǒng)協(xié)同過濾方法。因為文中方法考慮了項目的類別以及對于用戶興趣分布的因素,在此基礎上計算的用戶的最近鄰居相似度更加符合現(xiàn)實,更加準確,而通過更加準確的最近鄰居用戶群體,可以獲得更加符合目標用戶的預測評分。所以該算法可以有效提升推薦質量,為用戶提供滿意的個性化推薦列表。
針對協(xié)同過濾算法所面臨的數(shù)據稀疏性、推薦精度低等[14]問題,采用了基于用戶興趣分布方法初步填充評分矩陣中的未評分項;在計算項目相似性階段,提出一種基于項目分類改進修正余弦相似性度量方法,即由用戶平均評分去中心化的方法改為對用戶興趣類別平均分去中心化,求出最近鄰居并生成推薦列表。實驗結果表明,該方法具有較小的MAE,在一定程度上提高了推薦質量。