


摘要:在協同過濾推薦算法中融入時間因素對其進行改進,為了驗證改進后的算法能夠把推薦的準確度給提高,使用Python編程語言,在電影數據集Movielens中的ml-lm數據集下進行實驗,對比傳統與改進算法之間的MAE值。文章介紹了實驗的目的、評價指標、理論知識、過程和結果。通過實驗的結果可以明顯看出這種改進后的算法能夠提高推薦的準確度。
關鍵詞:協同過濾;推薦算法;改進;MAE;實驗
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)35-0064-03
1概述
當用戶面對海量的商品不知道該如何選擇的時候,推薦系統能夠很直接地把用戶和商品給聯系起來,把那些用戶有意向購買的商品挖掘出來,對用戶進行推薦[1]。在一個推薦系統中,最重要的就是推薦算法,其直接影響著對用戶推薦的結果[2]。協同過濾推薦算法是一種用得非常多的推薦算法,其思想是先找出用戶或者物品以往的數據信息,根據這些數據信息把與之相似的用戶或者物品給找到,通過計算他們的相似度,來確定用戶是否真的對此類東西有興趣,就能夠對他們做出推薦[3]。但是隨著時間的推移用戶的一些行為和習慣都會發生變化,所以在協同過濾推薦算法中融入時間因素對其進行改進[4]。為了驗證這種改進的推薦算法能否提高推薦的準確度,在實驗中與傳統算法的準確度進行了比較,為提高推薦系統的推薦質量尋找新的方法。
2實驗目的
比較傳統的協同過濾算法與融入時間因素后的改進的協同過濾算法的推薦準確度,為提高推薦系統的推薦質量尋找新的方法。
3實驗評價指標
為了比較算法的準確度,實驗中采用平均絕對誤差(MAE)作為準確度的評價指標 [5],公式為:
[MAE=imi=1m|yi-y'i|]
公式里,[yi]是實驗選取的測試集里的真實的值,[y'i]是預測的值,[m]是實驗中選取的樣本的數量。實驗結果中MAE越是小,就意味著其所預測的準確度就越是高。
4實驗理論知識
4.1算法介紹
協同過濾推薦算法是一種用得非常多的推薦算法。有基于用戶的協同過濾(UserCF)算法和基于物品的協同過濾(ItemCF)算法[6]。
在實際的推薦過程中,時間的變化是不能夠忽視的因素,隨著時間的變化,用戶的購買行為和用戶的購買習慣會發生一些變化[7]。把時間因素融入協同過濾算法中可以反映用戶最近的購買行為和習慣[8],將算法進行改進后它的工作流程如圖1所示:
4.2改進UserCF算法
在對UserCF算法改進中,主要在計算相似度時對算法進行了改進,UserCF算法中計算相似度的公式為:
[Wuv=N(u)∩N(v)N(u)∪N(v)]
在公式里面,[N(u)]與[N(v)]是用戶[u]與[v]有行為的物品集。
改進后,增加時間衰減函數并懲罰熱門商品[9]后,用戶[u]與[v]的相似度公式為:
[Wuv=i∈N(u)∩N(v)1lg (1+N(i)f(|tui-tvi|)N(u)∪N(v)]
改進后構造出新的算法TF-UserCF算法。
4.3改進ItemCF算法
在對ItemCF算法改進中,主要在計算相似度時對算法進行了改進,ItemCF算法中計算相似度的公式為:
[Wuv=N(i)∩N(j)N(i)∪N(j)]
在公式里面,[N(i)]與[N(j)]是跟物品[i]與[j]產生交互的用戶的集合。
改進后,增加時間衰減函數并降低活躍用戶的權重[10],物品[i]與[j]的相似度公式為:
[Wij=u∈N(i)∩N(j)1lg (1+N(u)f(|tui-tuj|)N(i)∪N(j)]
改進后構造出新的算法TF-ItemCF算法。
5實驗過程
5.1實驗環境準備
在計算機的選擇方面,使用聯想臺式機,具體配置為:Intel Core i5-3470 3.20GHz的CPU,8GB內存,64位Windows 10的操作系統。
在軟件方面,使用的編程語言是python編程語言,數據庫為MySQL數據庫,在PyCharm中開發實現。
5.2實驗數據準備
在這次的實驗里面,以電影數據集Movielens中的ml-lm數據集來分析實驗。分析該數據集,在PyCharm中運行Python代碼查看數據集中的ratings.dat文件,結果如圖2所示:
由圖2可知,數據集中用戶數量為6040個,電影的數量為3952部,總共的評分記錄為1000209條,評分范圍是1~5分。
在PyCharm中運行Python代碼查看數據集中的movies.dat文件,結果如圖3所示。
由圖3可知,數據集中總共有18種類型的電影,各類型分布不均,最多的Drama占到25%,最少的Film-Noir只占到0.7%。
在實驗開始前,要將數據集提前進行相應的處理,把數據集都拆分成80%的訓練數據和20%的測試數據,拆分數據集代碼為:
5.3實驗步驟
做兩組實驗,比較傳統算法與改進算法的MAE值。
第一組實驗比較UserCF算法與改進后的TF-UserCF算法的MAE值。
首先在傳統UserCF算法中增加時間衰減函數,構造出計算用戶相似度的UserSimilarityBest函數,代碼為:
然后把鄰居的個數K值從5開始每次增加5,直到UserCF算法與改進后的TF-UserCF算法的MAE值趨于平穩,最終K值增加到40。比較這兩種算法的MAE值,如圖6所示:
第二組實驗比較ItemCF算法與改進后的TF-ItemCF算法的MAE值。
首先在傳統ItemCF算法中增加時間衰減函數,構造出計算物品相似度的ItemSimilarityBest函數,代碼為:
然后把鄰居的個數K值從5開始每次增加5,直到ItemCF算法與改進后的TF-ItemCF算法的MAE值趨于平穩,最終K值增加到40。比較這兩種算法的MAE值,如圖8所示:
5.4實驗結果分析
通過上述兩組實驗可以看出,無論是傳統的UserCF算法還是傳統的ItemCF算法,改進后的算法在相同的K值下MAE值都比傳統的要低。在對傳統協同過濾算法中加入的時間因素進行了改進之后,可以提升算法的準確度。
6結束語
在傳統的協同過濾推薦算法中加入了時間因素并對其加以改進,使用電影數據集Movielens中的ml-lm數據集進行實驗來對比改進后算法和傳統算法的準確度。通過實驗研究,可以發現這種改進后的算法可以提高推薦的準確度。
在本次實驗中只使用了一種數據集來做實驗,在以后的實驗研究中,為了使實驗的結果更加準確,將嘗試使用更多的數據集來做實驗。
參考文獻:
[1] 高長元,黃凱,王京,等.基于商品屬性值和用戶特征的協同過濾推薦算法[J].計算機工程與科學,2017,39(12):2333-2339.
[2] 陶志勇,崔新新.一種融合用戶與項目屬性的協同過濾算法的設計與實現[J].計算機應用與軟件,2019,36(2):12-18,102.
[3] 張小雷,孫剛,彭余輝.融合時間因素的協同過濾圖書推薦算法[J].阜陽職業技術學院學報,2021,32(2):51-54.
[4] 張小雷.基于協同過濾和隱語義模型的圖書推薦算法研究與實現[D]. 阜陽:阜陽師范大學,2021.
[5] 紀佳琪,姜學東.深度協同過濾推薦模型研究[J].計算機應用與軟件,2020,37(7):240-245.
[6] 劉景昊.基于協同過濾的推薦系統算法研究[J].中國電子商務,2013(6):157.
[7] 劉恒友.基于時間效應的推薦算法研究[D].哈爾濱:哈爾濱工業大學,2013.
[8] 高陽團.推薦系統開發實戰[M].北京:電子工業出版社,2019.
[9] 彭余輝,張小雷,孫剛.基于內容和協同過濾加權融合的音樂推薦算法[J].安慶師范大學學報(自然科學版),2021,27(2):44-48,53.
[10] 蘭艷,曹芳芳.面向電影推薦的時間加權協同過濾算法的研究[J].計算機科學,2017,44(4):295-301,322.
【通聯編輯:王力】