?

基于用戶的協同過濾推薦算法的改進

2018-09-20 11:19陳塏冰吳明芬
數碼設計 2018年4期
關鍵詞:準確率協同算法

陳塏冰,吳明芬*

(五邑大學計算機學院,廣東江門,529020)

引言

隨著互聯網的快速發展,人們每天都和巨量的數據打交道。如何讓用戶快速找到自己想要的信息,在此背景下,推薦系統應運而生,推薦系統是根據用戶的歷史行為,例如購買過哪些商品來學習該用戶的興趣和愛好,然后根據興趣和愛好給用戶推薦相應的商品。推薦系統(Recommender System),作為一種有效的信息過濾系統,它能夠幫助用戶在大量數據中準確地找到其感興趣的信息,成為研究者們廣泛關注的對象[1]。

目前推薦系統分為以下幾類:基于內容(Content-based)的推薦系統、協同過濾(Collaborative filtering)系統以及混合(Hybrid)推薦系統[2]?!皡f同過濾”一詞最早由 Goldberg中提出[2]。目前協同過濾算法的使用非常廣泛,其分為基于用戶的協同過濾算法和基于項目的協同過濾算法。陳思思通過把協同過濾推薦算法應用于高校圖書館,根據讀者的歷史借閱記錄學習讀者的興趣愛好,從而為讀者提供個性化的服務[3]。文獻[4]把基于用戶的協同過濾推薦算法運用于 MOOC(Massive Open Online Course)在線課堂,根據用戶歷史行為和注冊信息為其推薦合適的資源。任磊提出一種有合評分時間特性的推薦系統,從評分時間角度對推薦算法的相似度計算和評分預測過程進行改進[5]?;谟脩舻膮f同過濾算法雖然考慮了用戶(項目)間的關系,但是卻忽略了用戶之間可能存在潛在的關系,導致推薦算法準確率不高,本文提出一種改進的用戶協同過濾算法,該算法充分利用了用戶地理位置這一屬性。改進的用戶協同過濾算法具體工作原理:首先根據用戶所購買的商品求出用戶之間的相似度,接著根據用戶的地理位置計算用戶位置之間的相似度,然后把二者加權求和,實試有有表明,改進后的用戶協同過濾推薦算法提高了推薦的準確率。

1 基于用戶的協同過濾算法

基于用戶的協同過濾推薦算法首先通過用戶購買記錄來組成用戶-商品表,根據用戶-商品表來計算用戶之間的相似度,在兩個用戶購買的商品記錄中,若他們所購買相同的商品記錄數量越大,則他們的相似度越高,根據相似度從高到低選出相似度最大的N個用戶作為該用戶的鄰居,在給該用戶推薦商品時,通過鄰居用戶購買記錄給其推薦商品,這些商品存在在鄰居購買記錄中并且該用戶尚未購買過。計算相似度選用的是Jaccard算法。 Jaccard相似度公式如下:

其中代表用戶A所購買的商品的數量,代表用戶B所購買的商品的數量,表示用戶A和B的相似度,分子表示用戶A和用戶B購買的商品中相同商品的數量,分母表示用戶A與用戶B非重復購買商品的數量。

基于用戶的協同過濾推薦算法分為三個部分:第一部分相似度的計算、第二部分選取商品的鄰居商品、第三部分產生推薦。算法的具體步驟如下:

第一步:相似度計算

(1)找出所有購買過商品的用戶id,并放入到一個用戶id的集合中

(2)從用戶id集合中取出一個用戶A的id,在用戶-商品表中找出用戶 A所有購買商品的id,并放入集合itemList中。

(3)執行步驟2,取出除用戶A以外的另一個用戶B的id和得到其購買商品id 的集合。

(4)運用Jaccard算法對兩個商品集合進行相似度的計算。

(5)循環執行步驟 2,3,4,遍歷完用戶 id集合中除了用戶A的所有用戶,計算出其他用戶和用戶A的相似度。

第二步:選取鄰居商品

(6)對用戶A和其他用戶的相似度按照降序的順序排序。

(7)選擇相似度最大的N個用戶id作為用戶A的鄰居用戶,并寫入數據庫。

(8)重復執行步驟2~7,計算其他用戶之間的相似度和找出他們的鄰居用戶。

第三步:產生推薦

(9)通過輸入的用戶id找出該用戶的鄰居用戶,放入NeighborList集合中。

(10)在NeighborList中取出一個鄰居用戶id。

(11)根據鄰居用戶id在用戶-商品表中找出該用戶所有購買過的商品id,并放入shopList集合中。

(12)在shopList集合中遍歷所有的商品id并查看該商品id是否存在用戶A所購買商品id的集合中,存在則跳過否則把該商品id放入 recommendList中。

(13)重復執行10~12,把用戶A所有鄰居用戶購買過的商品但是用戶 A并沒有購買過的商品放入到recommendList中。

2 改進的用戶協同過濾算法

用戶協同過濾算法根據用戶所購買的商品可以計算出用戶之間的相似性,相似性越大說明兩用戶之間的興趣和愛好越相同,但是該算法只是通過用戶(商品)之間這一單一維度來計算用戶相似性。為了克服以上問題,本文提出了一種改進的用戶協同過濾算法,該算法對上面算法的第一部分求用戶相似度時進行改進,在計算用戶之間的相似度時分為兩步,第一步是根據用戶-商品協同過濾算法來計算相似度,第二步是根據用戶地理位置來求用戶之間相似度,然后二者線性相加。其公式為:

sim_new(A,B)表示改進后用戶之間的相似度,sim(A,B)表示上文敘述的用戶協同過濾算法的相似度,

sim_loc(A,B)表示用戶位置相似度。表示基于用戶協同過濾算法相似度的權重,表示基于用戶位置相似度的權重。表示的是用戶A與用戶B地理位置信息第i位字符的相似度。

改進的用戶協同過濾推薦算法充分利用了用戶地理位置這一屬性,該算法也是由三個部分:第一部分是相似度的計算,第二部分選取用戶的鄰居用戶,第三部分產生推薦。其中對第二部分進行改進,在求相似度時考慮了用戶地理位置這一因素,具體過程:a.是通過用戶購買歷史記錄來計算用戶之間的相似度;b.是通過用戶的地理位置信息來計算用戶自身屬性的相似度;c.是對前面兩步a和b的有有進行加權得到用戶之間最終的相似度。其a中的相似度的計算和基與用戶的協同過濾推薦算法的相似度計算一致。改進求相似度的具體操作步驟如下:

第一步:通過用戶購買歷史記錄來計算相似度

(1)找出所有購買過商品的用戶id,并放入到一個用戶id的集合中

(2)從用戶id集合中取出一個用戶A的id,在用戶-商品表中找出用戶 A所有購買商品的 id,并放入集合itemList中。

(3)執行步驟2,取出除用戶A以外的另一個用戶B的id和得到其購買商品id 的集合。

(4)運用Jaccard算法對兩個商品集合進行相似度的計算。

(5)循環執行步驟2,3,4遍歷完用戶id集合中除了用戶A的所有用戶,計算出其他用戶和用戶A的相似度。

第二步:通過用戶的地理位置信息來計算用戶自身屬性的相似度

(6)在用戶-位置表中找出用戶A與用戶B的地理位置n位長的字符串。

(7)對用戶A和用戶B的地理位置字符串從第一個位置開始逐個位置進行匹配,若相同,則地理位置相似度加上1/n,否則跳出循環比較,并返回最終相似度。

(8)重復執行步驟6,7計算出用戶A和其他用戶之間的地理位置相似度。

第三步:加權求和計算最終相似度

(9)對步驟一和步驟二的有有進行加權得到用戶之間最終的相似度

求用戶的鄰居用戶和產生推薦和改進前的基于用戶的協同過濾算法一致在此不做過多的敘述。

3 實試有有及分析

3.1 實驗設計

本文采用的是天池大數據平臺的Ali_Mobile_Rec數據集 (https://tianchi.aliyun.com/datalab/dataSet.htm?

spm=5176.100073.888.16.7f4272cbynGnvG&id=4),該數據集是淘寶平臺上用戶一個月的行為的軌跡,采用前24天數據作為訓練數據,后6天數據作為測試數據。數據中包含用戶id,商品id,商品類別,用戶行為,用戶地理位置和時間等字段。經過預處理后得到4574位用戶,截取用戶位置字符串前4位字符為用戶地理位置信息,在實試過程中根據經試值設置使用Myeclipse+Mysql平臺進行實試。

3.2 評判指標

本文性能主要采用準確率(Precision)來衡量改進前的算法和改進后的算法。推薦準確率表示算法推薦成功的比率[6]。其的公式為:

其中test表示測試數據中用戶購買的商品,recommeder表示推薦給用戶的商品。

3.3 結果分析

由表1和圖1,圖2可以看出,在鄰居數和推薦數一致的情況下,改進后的推薦算法明顯比傳統用戶協同過濾算法準確率高,說明基于用戶協同過濾的改進算法是有效的,同時還可以看出推薦算法的準確率隨著鄰居數和推進數的應化而應化。當鄰居數不應時,推薦的準確率隨著推薦數的增加而提高,推薦數為20時,準確率達到最高。

表1 準確率對比Tab.1 Precision comparison

Fig 1 The accuracy of user collaborative filtering algorithm圖4 用戶協同過濾算法準確率

Fig 2.The accuracy of user collaborative filtering algorithm after improved圖5 改進的用戶協同過濾算法的準確率

4 有束語

用戶協同過濾推薦算法是根據用戶-項目(商品)的行為來計算用戶之間的相似度,項目是連接用戶之間的橋梁。本文在此基礎上對傳統的用戶協同過濾算法進行了改進,在計算用戶相似度時,把用戶的位置信息考慮進去,用戶相似度由用戶-項目矩陣表和用戶位置信息來一起決定,通過實試證明該改進的算法提高了準確率,同時也說明了用戶的偏好具區域性[7],該改進的算法具有一定的實際意義。當然,改進后的算法仍然存在一定的不足,例如目前該算法還沒能考慮到用戶購買商品的時間,對位置信息的算法相對較簡單。在今后的工作中仍需進一步改進。

猜你喜歡
準確率協同算法
輸入受限下多無人機三維協同路徑跟蹤控制
家校社協同育人 共贏美好未來
哪種算法簡便
乳腺超聲檢查診斷乳腺腫瘤的特異度及準確率分析
不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
2015—2017 年寧夏各天氣預報參考產品質量檢驗分析
頸椎病患者使用X線平片和CT影像診斷的臨床準確率比照觀察
Travellng thg World Full—time for Rree
“四化”協同才有出路
進位加法的兩種算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合