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