王維 高伊騰 周國棟 李云云 唐寧 孫媛媛



摘 要:?針對用戶從海量圖書中選擇喜歡圖書較難的問題,提出一種基于圖書屬性分組的改進協同過濾算法。該算法首先根據用戶喜歡的圖書類型去選擇相似用戶,縮小數據集,再根據基于用戶的協同過濾算法尋找最近鄰居集合,然后根據項目推薦值的方法向用戶推薦感興趣的圖書序列。實驗結果表明:在同一數據量下,該算法在推薦數據量以及覆蓋率方面均優于同類算法。
關鍵詞:?協同過濾; 用戶分組; 用戶相似度
中圖分類號: TG 4? ? ? 文獻標志碼: A
A Book Recommendation Algorithm Based on Improved Collaborative Filtering
WANG Wei, GAO Yiteng, ZHOU Guodong, LI Yunyun, TANG Ning, SUN Yuanyuan
(Department of Computer Science, Xianyang Normal University, Xianyang, Shanxi? 712000, China)
Abstract:
In order to solve the problem that users are difficult to select their favorite books from a large number of books, a collaborative filtering algorithm based on book attribute grouping is proposed. The method first selects similar users according to the type of books users like, then reduces the data set, and then finds the nearest neighbor set according to the collaborative filtering algorithm based on users. Then according to the project recommended value method to recommend the user interested in the sequence of books. The experimental results show that the proposed algorithm is superior to the same algorithm in the recommended data volume and the accuracy under the same data volume. The algorithm improves the user satisfaction.
Key words:
collaborative filtering; user packet; user similarity
0 引言
互聯網規模的迅速發展帶來了信息超載問題,由于信息量過大,使得人們在網上搜索信息時降低了信息的使用率,圖書信息也是如此。網絡上的圖書資源越來越豐富,為了充分利用信息資源,解決用戶復雜的需求和龐大圖書信息之間的矛盾,協同過濾算法因此產生。
目前,協同過濾算法包括基于物品的協同過濾算法和基于用戶的協同過濾算法[1]。基于物品的協同過濾算法是根據商品屬性進行推薦的,不過它需要透徹的內容分析,只能推薦內容相似的物品,并且存在用戶冷啟動問題[2],不能給用戶帶來驚喜?;谟脩舻膮f同過濾算法在所有用戶中找出與目標用戶相似的用戶,然后根據這些用戶對項目的不同評分,產生相似用戶,繼而通過相似用戶集合給目標用戶推薦書籍,雖然協同過濾推薦算法在信息過濾方面體現出了極大的優勢,但由于用戶對項目的評分較少,數據冷啟動問題嚴重,并且隨著信息量的不斷增加,這種方法耗時耗力??傮w來講,算法在不同領域中的應用存在以下3種問題:① 冷啟動問題;② 最初評價問題;③ 稀疏性問題。
為解決這些問題,文獻[3]中通過利用用戶注冊信息或者選擇適當物品以啟動用戶興趣來解決。針對物品冷啟動問題,可以通過利用物品的內容信息來計算物品間的相似度,進而對新物品產生關聯。對于新系統,則可以通過對物品進行多維度的特征標記來計算更為準確的物品相似度以減少系統冷啟動的影響。文獻[4]中提出了一種遞歸預測算法,該算法讓那些最近鄰的用戶加入到預測處理中。即使他們沒有對給定的項目進行評分,但對項目評分值不明確的用戶,可以預測它的遞歸,整合到預測過程中。此方法用另一種方式緩解了矩陣稀疏對推薦質量的影響,提供了推薦精度。文獻[5]中分析了基于項目評分預測的協同過濾推薦算法存在的問題,繼而采用了修正的條件概率方法計算項目之間的相似性,使得數據稀疏性對計算結果的負面影響變小。
本文算法通過分析項目屬性從而對數據集縮小,得到粒度較粗但相似度較高的用戶集合,以及使用皮爾遜相關系數計算用戶相似度,之后采用本文提出的圖書推薦值計算方法對用戶進行推薦,最終的實驗測試結果符合預期效果。
1 改進型協同過濾的圖書推薦算法
1.1 簡述
基于用戶的協同過濾算法的主要步驟是尋找各用戶的鄰居用戶,并根據鄰居用戶對目標用戶未評分項目的評分進行預測,鄰居是和目標用戶相似度最高的k個用戶,k的具體數目由系統的特性決定,實際中往往會通過實驗來確定。在確定鄰居用戶后,需要根據鄰居已評分且目標用戶未評分的項目的評分值進行評分預測。
本文改進型協同過濾推薦算法通過獲取目標用戶所喜歡圖書的所屬類別,然后在所有用戶數據集中大致尋找出和目標用戶喜歡同種類書籍的用戶群體,這樣極大的增加了用戶群體中包含較多與目標用戶相似度高的概率,可以方便快速解決數據稀疏性問題。將這些用戶構造成一個用戶集合,采用皮爾遜相關系數計算方法,依次計算目標用戶與該集合中每一個用戶的相似度,使用圖書推薦值公式計算用戶集合內每一本圖書的圖書推薦值,最后通過實驗分析確定一個合適的參量rc,將加權推薦值大于等于rc的圖書推薦給目標用戶。
1.2 用戶集合的獲取
由于圖書推薦中圖書的數量和用戶很多,但用戶選擇的圖書數量卻很少,如果直接使用協同過濾算法將面臨嚴重的數據稀疏性問題。因此本文首先根據目標用戶所選擇圖書的類別,確定對目標用戶進行推薦的用戶集合,縮小了使用協同過濾的數據集,并在一定程度上緩解了數據稀疏性問題,具體執行過程如下:
(1) 統計目標用戶所加入的圖書種類;
(2) 在所有用戶集合尋找與目標用戶加入相同圖書種類的用戶。
1.3 計算用戶相似度
用戶相似度的度量方法是算法的核心,常使用的方法包括皮爾遜相關系數、夾角余弦相似度和Jaccard系數等[6]。本文采用皮爾遜相關系數作為用戶相似度的測量,如式(1)所示。
其中,sim(i,j)表示用戶i與用戶j的相似度,Ri與Rj分別表示用戶i和j收藏的每一個項目的評分,Ri與Rj分別表示用戶i,j的收藏項目評分的平均值。
1.4 計算圖書推薦值
通過皮爾遜相關系數計算出的用戶相似度,能夠找出與目標用戶相似的用戶,為了向目標用戶推薦系統預測的項目,采用圖書推薦值的計算方法,如式(2)所示。
r為圖書推薦值,scoreu∈jk為用戶j收藏的每本圖書的評分,n為與目標用戶相似的用戶集合的數量。
1.5 獲取推薦結果
為了篩選出準確度較高的圖書,設置一個參數——項目推薦臨界值rc,將圖書推薦值大于rc的圖書推薦給用戶,其中參數rc的取值通過實驗測試得來,最終得到向目標用戶推薦的項目集合。
1.6 算法整體執行步驟
Step1.獲取目標用戶的用戶集合資源:查找與目標用戶所收藏圖書種類相同的用戶,構成用戶集合資源。
Step2.分別計算目標用戶與用戶集合中每一個用戶的相關系數。在用戶集合資源中,使用皮爾遜相關系數計算用戶的相似性,得到的結果保存在二維數組中。
Step3.計算每一本圖書的圖書推薦值。使用用戶相似度數據及每本圖書對應的評分,帶入圖書推薦值計算公式中,將每一本圖書的圖書推薦值再次保存在二維數組中。
Step4.獲取推薦結果。使用步驟3中的數據,將圖書推薦值大于rc的圖書推薦給用戶。
2 數據測試及結果分析
2.1 數據源的獲取
由于目前在電商網站上獲取用戶個人信息比較困難,為了收集數據順利進行數據分析,我們采用了目前大多數數據分析人員普遍采用的方法——數據仿真模擬,創建nUsers表,包含用戶的姓名、性別、年級、學院、專業、書名、評分、書類等七個字段列。數據模擬采用以下3種方式:
(1) 從校圖書館獲取2015級、2016級、2017級學生的姓名、性別、年級、學院、專業,仿真模擬的各年級的學生人數、學院、專業,數據量依據實際各學院對應的學生人數、性別所占比例、專業人數等同比例縮小。
其中學院及其包含的專業有:計算機學院(所屬專業有:計科、軟件、物聯),資歷學院(所屬專業有:地理科學、歷史學),建筑學院(所屬專業有:建筑學、城鄉規劃、城市規劃),經管學院(所屬專業有:經濟學、財務管理、經管學)。
(2) 書籍名稱以及書籍類別通過當當圖書網站來爬取。
(3) 利用隨機方法生成書籍的評分。
采用以上3種數據獲取方式,能夠最大限度的模擬和描述真實電商網絡的應用情景,盡管實際電商網絡應用場景比實驗描述的要復雜,但以上實驗數據的獲取基本接近實際電商網絡的基本情況,因此使用仿真模擬的數據同樣能夠反映出算法的特點。通過算法之間的比較可以體現算法的各種數據特征,進而通過分析結果來證明算法的可用性,本文選取基于用戶的協同過濾圖書推薦算法與本文的改進型協同過濾圖書推薦算法進行比較。
2.2 推薦系統中的評價指標
(1) 精確度如式(3)。
C,+表示積極、成功的互動,C表示所有互動,生成的候選集中積極、成功的互動數量占總互動的比重稱作推薦的準確度[7]。P值范圍是[0,1],當P值越大時,精確度越高,推薦的結果效果越好。
(2) 覆蓋率如式(4)。
其中,集合N是指為目標用戶分組后所得到的用戶集合,n(N)是用戶數量;集合M是用戶集合N中相關系數大于等于0.8的用戶集合,n(M)是用戶集合M的數量,相關系數大于等于0.8的用戶數量占總用戶集合的比重稱作覆蓋率[7]。K值范圍是[0,1],當K值越大,分組用戶集合中的高度相關的用戶所占的比重越大,尋找的用戶集合稀疏性越低。
(3) 成功率如式(5)。
成功率是候選集中成功互動的數量占總互動數量的比重[7]。SR值范圍是[0,1],當SR值越大,推薦的圖書質量越高。
2.3 實驗內容與實驗結果
2.3.1 rc參數選取
一般來講rc越高,被推薦的圖書越精確,但與此同時,圖書數量會變少,為了解決推薦準確度與推薦數量的不平衡問題,我們提出rc*n計算公式,其中n為向目標用戶推薦的圖書數量,n是向所有目標用戶推薦的圖書數量的平均值。
實驗一:下列折線圖中橫坐標代表用戶數量,縱坐標為rc*n。實驗開始之前,有目的的尋找6個目標用戶,目標用戶需要滿足得到的用戶集合數量分別是10,20,30,40,50,60。采用二分法來獲取本次實驗數據集的rc值:實驗開始時,我們找出較準確的rc值介于5和11之間。
采用二分法比較rc=5,rc=8,rc=11,觀察圖1,可知rc*n依次大小為rc=8>rc=5>rc=11;
再次查找rc=5,rc=6.5,rc=8;觀察圖2,可知rc*n依次大小為rc=8>rc=6.5>rc=5;
再次查找rc=8,rc=7.25,rc=6.5;觀察圖3,可知rc*n依次大小為rc=6.5>rc=7.25>rc=8;
再次查找rc=8,rc=7.625,rc=7.25;觀察圖4,可知rc*n依次大小為rc=7.25>rc=7.625>rc=8;
當繼續二分時,繪制出來的折線圖變化趨勢以及折線間的緊密程度變化不大,因此取rc=7.625。
實驗1圖示中隨著用戶集合數量的增加,rc*n折線圖呈現不規則的下降與升高,屬于實驗測試時的正常現象。實驗表明當rc=7.625時,可以保持rc*n呈較高水平,即目標用戶推薦的圖書準確率高且圖書數量不會因為高準確率而降低。
2.3.2 算法的覆蓋率比較
實驗二:使用覆蓋率作為度量標準,一反面可以反映出數據集中相似度較高的用戶所占總集合的比重,另一方面間接性體現出數據集中的數據稀疏性。我們選取6組目標用戶,每一組有兩個目標用戶,并且使得每組中兩個目標用戶中用戶集合的數量相等,這兩個目標用戶分別采用改進型協同過濾圖書推薦算法與基于用戶的協同過濾算法。測試內容為:目標用戶覆蓋率隨用戶集合數量的變化。如圖5,其中橫軸代表用戶集合的數量,縱軸代表目標用戶覆蓋率,如圖5所示。
實驗2表明,隨著用戶數量的遞增,覆蓋率的值趨于平緩,總體上改進型協同過濾圖書推薦算法優于基于用戶的協同過濾算法。
4 總結
本文提出了改進型協同過濾圖書推薦算法,首先在所有用戶中以較短的時間篩選出合適的用戶集合與目標用戶進行相似度計算,其次采用圖書推薦值的計算方法,其數值可以反映出目標圖書借閱次數即受歡迎程度。在研究數據稀疏時,算法采用了分組的思想,即將相似度高的用戶分為一組,從中找到合適的推薦項目。下一步將研究關聯規則算法下的紙質圖書推薦、新圖書的推薦等問題。
參考文獻
[1]?羅文.協同過濾算法綜述[J].科技傳播,2015,7(7):115.
[2] Francesco Ricci, Lior Rokach, Bracha Shapira, et al. Recommender systems handbook[M]. Berlin:Springer,2011:461-462.
[3] 王春才,邢暉,李英韜.個性化推薦系統冷啟動問題研究[J].現代計算機(專業版),2015 (29):36-38.
[4] ZHANG J Y,PEARL P.A recursive prediction algorithm for collaborative filtering recommender systems[C]//Proceedings of the 2007 ACM Conference on Recommender Systems. ACM,2007:57-64.
[5] 周軍鋒,湯顯,郭景峰.一種優化的協同過濾推薦算法[J].計算機研究與發展,2004,41(10):1842-1847.
[6] 覃玉冰,鄧春林,楊柳.基于皮爾遜相關系數的網絡輿情評估指標體系構建研究[J].情報探索,2018(10):15-19.
[7] 榮輝桂,火生旭,胡春華,等.基于用戶相似度的協同過濾推薦算法[J].通信學報,2014(2):16-24.
(收稿日期: 2019.07.04)