周喜平 杜航勤
摘要:在推薦算法中,協(xié)同過(guò)濾算法主要通過(guò)分析用戶對(duì)景點(diǎn)的歷史評(píng)價(jià)數(shù)據(jù),找出與當(dāng)前用戶偏好相似的其他用戶,從而推薦用戶喜歡的物品。針對(duì)如何推薦出用戶附近的最優(yōu)景點(diǎn),文章提出基于Redis的GEO算法與協(xié)同過(guò)濾算法的附近景點(diǎn)優(yōu)化推薦算法,加入兩種因數(shù)并分配權(quán)重,從而提高該算法的準(zhǔn)確率和召回率。優(yōu)化后的協(xié)同過(guò)濾算法不僅可適用于各種類型的景點(diǎn)推薦,而且能夠幫助用戶快速找到附近感興趣的景點(diǎn),提高用戶的滿意度。
關(guān)鍵詞:協(xié)同過(guò)濾算法;Redis Geo算法;附近景點(diǎn)推薦;準(zhǔn)確率;召回率
中圖分類號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)36-0013-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)
0 引言
在旅游規(guī)劃中,了解并探索附近的景點(diǎn)是一項(xiàng)重要而令人興奮的任務(wù)?;趨f(xié)同過(guò)濾算法的附近景點(diǎn)推薦系統(tǒng)將為用戶提供個(gè)性化、準(zhǔn)確且多樣化的推薦,幫助他們發(fā)現(xiàn)和體驗(yàn)更多有趣的地方。
除了個(gè)性化的推薦,基于協(xié)同過(guò)濾算法的附近景點(diǎn)推薦系統(tǒng),首先利用Redis的GEO算法[1]根據(jù)用戶所在的地理位置計(jì)算出與景點(diǎn)的距離并篩選出用戶周圍的景點(diǎn)數(shù)據(jù),再根據(jù)基于物品的協(xié)同過(guò)濾算法對(duì)景點(diǎn)數(shù)據(jù)進(jìn)行計(jì)算,根據(jù)不同景點(diǎn)的相似性來(lái)推測(cè)出用戶潛在的風(fēng)景愛(ài)好從而生成推薦列表。本文提出加入兩種景點(diǎn)因素并分配這兩種因素的權(quán)重來(lái)優(yōu)化協(xié)同過(guò)濾的推薦算法,這種系統(tǒng)具備靈活性和實(shí)時(shí)性,確保用戶在旅行過(guò)程中不會(huì)錯(cuò)失任何適合他們口味的景點(diǎn)。
基于物品的協(xié)同過(guò)濾算法[2],首先通過(guò)分析用戶的歷史記錄確定用戶喜歡景點(diǎn)的類型與評(píng)分來(lái)收集用戶及景點(diǎn)的信息。其次再使用數(shù)據(jù)預(yù)處理技術(shù)對(duì)收集到的用戶與景點(diǎn)數(shù)據(jù)進(jìn)行清洗和轉(zhuǎn)換,主要是對(duì)原始數(shù)據(jù)去噪和歸一化處理。再進(jìn)行數(shù)據(jù)的劃分與特征的提取,之后可以使用余弦相似度(Cosine Similarity)或者皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)來(lái)進(jìn)行相似度的計(jì)算,從而選出和目標(biāo)景點(diǎn)相似度最高的K個(gè)近鄰景點(diǎn),封裝成推薦景點(diǎn)數(shù)據(jù),最后把選出的景點(diǎn)數(shù)據(jù)推薦給用戶。
總體而言,基于協(xié)同過(guò)濾算法的附近景點(diǎn)優(yōu)化推薦系統(tǒng)為旅行者帶來(lái)了便利和樂(lè)趣。通過(guò)結(jié)合個(gè)人興趣和其他用戶的喜好,該系統(tǒng)可以為每位用戶提供獨(dú)特且符合期望的推薦[3],使旅行變得更加豐富、有趣且令人難忘。無(wú)論是做出決策還是發(fā)掘新的亮點(diǎn),這個(gè)推薦系統(tǒng)都將成為旅游規(guī)劃中不可或缺的利器。
1 基與物品的協(xié)同過(guò)濾推薦算法與優(yōu)化
1.1基于物品間的協(xié)同過(guò)濾算法
1)物品相似度計(jì)算
物品之間的相似度計(jì)算可以使用余弦相似度(Cosine Similarity)[4]或者皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)[5]來(lái)計(jì)算,根據(jù)不同的情況來(lái)分別使用這兩個(gè)方法來(lái)計(jì)算相似度。
余弦相似度算法公式:
[sim(a1,a2) = 1M(P1,n×P2,n)1MP21,n×1MP22,n]? ? ? ? ?⑴
皮爾遜相似度算法公式:
[sim(a1,a2)=1M(P1,n-P1)×(P2,n-P2)1M(P1,n-P1)2×1M(P2,n-P2)2]? ? ? ? ? ? ? ?⑵
[sim(a1,a2)]代表物品a1和物品a2的相似度值;[P1,n]是物品1對(duì)景點(diǎn)n的潛在評(píng)分;景點(diǎn)n∈M,M為物品1與物品2 的共同評(píng)分的景點(diǎn);[P1]是物品1被評(píng)分的平均值。
2)推薦生成
根據(jù)用戶歷史數(shù)據(jù)里面的景點(diǎn)數(shù)據(jù)篩選出用戶的偏好,與用戶所在的地理位置附近的景點(diǎn)數(shù)據(jù)進(jìn)行對(duì)比與排序。例如圖1中,根據(jù)用戶的歷史數(shù)據(jù)與附近景點(diǎn)數(shù)據(jù)形成歷史數(shù)據(jù)集與附近景點(diǎn)數(shù)據(jù)集,歷史數(shù)據(jù)1對(duì)附近景點(diǎn)1、3有共同點(diǎn),歷史數(shù)據(jù)2對(duì)附近景點(diǎn)2有共同點(diǎn),歷史數(shù)據(jù)3對(duì)附近景點(diǎn)1、3、4有共同點(diǎn),可以推出歷史數(shù)據(jù)1與附近景點(diǎn)4有共同點(diǎn)所在。
1.2 基于物品協(xié)同過(guò)濾算法的優(yōu)化
為了提高協(xié)同過(guò)濾算法的推薦效果,本文除了引入景點(diǎn)評(píng)分因素,還引入景點(diǎn)評(píng)論數(shù)量因素與景點(diǎn)地理位置因素。在景點(diǎn)間的相似度計(jì)算上,除了考慮到每個(gè)用戶對(duì)景點(diǎn)評(píng)分的相似度,還需要考慮用戶與景點(diǎn)在評(píng)論數(shù)量上和地理位置上的相似度。如何解決這一問(wèn)題,需要獲取此景點(diǎn)的評(píng)論數(shù)量,并進(jìn)行計(jì)算用戶歷史景點(diǎn)的位置信息(經(jīng)緯度)與用戶的地理位置的距離,以此來(lái)獲取相關(guān)因數(shù)的數(shù)據(jù)值,最后進(jìn)行相似度計(jì)算。在推薦景點(diǎn)選取的過(guò)程中,基于其他景點(diǎn)的評(píng)分?jǐn)?shù)據(jù),預(yù)測(cè)目標(biāo)用戶在特定時(shí)間與位置下對(duì)未評(píng)價(jià)的景點(diǎn)的評(píng)分,則需要使用加權(quán)平均預(yù)測(cè)[6]。
加權(quán)平均預(yù)測(cè)中需要賦予評(píng)論數(shù)量與地理位置的權(quán)重[7]。對(duì)用戶歷史記錄中每個(gè)景點(diǎn)的評(píng)論數(shù)量數(shù)據(jù)進(jìn)行加權(quán)就和,權(quán)值為各個(gè)景點(diǎn)與其他景點(diǎn)的相似度,然后對(duì)所有景點(diǎn)相似度的和,從而計(jì)算出用戶對(duì)其他景點(diǎn)的潛在喜歡的可能性。
加權(quán)平均預(yù)測(cè)公式為:
[Wa,i=1M(a)Hi,n×Sa,n1M(a)Hi,n]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?⑶
[Wa,i]為用戶a對(duì)商品i的潛在喜歡評(píng)分;[M(a)]為用戶歷史記錄中的景點(diǎn)數(shù)據(jù)集,景點(diǎn)n∈M(a);[Hi,n]為景點(diǎn)i與景點(diǎn)n的相似度;[Sa,n]為用戶a對(duì)景點(diǎn)n的評(píng)分。
加入評(píng)論數(shù)量和景點(diǎn)與用戶的距離因素的權(quán)重,評(píng)論數(shù)量權(quán)重值為景點(diǎn)i與景點(diǎn)n各個(gè)評(píng)論數(shù)量之間的相似度[Ei,n],景點(diǎn)與用戶的距離權(quán)重值為景點(diǎn)i與景點(diǎn)n在距離上的相似度[Gi,n],并且這三個(gè)因數(shù)的權(quán)重比x、y、z之和必須等于1。重新得出新的加權(quán)平均公式:
[Qi,n=xEi,n+yGi,n+zHi,n]? ? ? ? ? ? ? ? ? ? ? ? ? ?⑷
[1=x+y+z]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?⑸
[Wa,i=1M(a)(Qi,n×Sa,n)1M(a)Qi,n]? ? ? ? ? ? ? ? ? ? ? ? ? ? ⑹
上式中,經(jīng)過(guò)優(yōu)化的物品協(xié)同過(guò)濾算法的實(shí)現(xiàn),是在經(jīng)過(guò)景點(diǎn)相似度計(jì)算之后的加權(quán)平均預(yù)測(cè)公式中加入評(píng)論數(shù)量和景點(diǎn)與用戶的距離因素,形成新的加權(quán)平均預(yù)測(cè)公式。根據(jù)新的公式進(jìn)行計(jì)算,得出用戶對(duì)某一景點(diǎn)的潛在喜歡程度,從而篩選出相似的景點(diǎn),得到最優(yōu)結(jié)果集并進(jìn)行推薦,實(shí)現(xiàn)最優(yōu)的附近景點(diǎn)推薦,提高用戶的滿意程度。
2 實(shí)驗(yàn)結(jié)果與分析
2.1 數(shù)據(jù)集
本文的數(shù)據(jù)來(lái)自全國(guó)旅游景點(diǎn)數(shù)據(jù)集,其中全國(guó)旅游景點(diǎn)數(shù)據(jù)集包含了5萬(wàn)個(gè)景點(diǎn)數(shù)據(jù)。將數(shù)據(jù)集分為訓(xùn)練集與測(cè)試集,然后再分為歷史數(shù)據(jù)集與附近景點(diǎn)數(shù)據(jù)集。數(shù)據(jù)集中主要包含以下屬性:用戶,景點(diǎn),城市,評(píng)論數(shù)量,景點(diǎn)評(píng)分。
2.2 評(píng)估指標(biāo)
本文使用準(zhǔn)確率、召回率和F1值[8]來(lái)評(píng)估算法的性能。準(zhǔn)確率代表推薦物品中準(zhǔn)確推薦的比例,召回率則代表真實(shí)物品中被推薦出來(lái)的比例。F1值是準(zhǔn)確率和召回率的加權(quán)平均。計(jì)算出每個(gè)景點(diǎn)的F1值,生成全部景點(diǎn)數(shù)據(jù)集的F1值表。F1的指數(shù)越高,代表推薦效果更好。
1)準(zhǔn)確率:表示用戶喜歡的景點(diǎn)在用戶總推薦的景點(diǎn)數(shù)據(jù)中所占的比例,公式如下:
[Ti,n=iM|m(n)?r(n)|iM|c(n)|]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?;⑹
2)召回率:表示用戶喜歡的推薦景點(diǎn)數(shù)與用戶總喜歡的推薦景點(diǎn)數(shù)的比例,公式如下:
[Gi,n=iM|m(n)?r(n)|iM|m(n)|]? ? ? ? ? ? ? ? ? ? ? ? ? ? ?⑺
3)F1值的計(jì)算公式為:
[F1=Ti,n×Gi,n×2Ti,n+Gi,n]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?⑻
上式中:[Ti,n]代表i個(gè)景點(diǎn)對(duì)用戶n的準(zhǔn)確率;[Gi,n]代表景點(diǎn)i對(duì)用戶n的召回率;m(n)為用戶喜歡推薦的景點(diǎn);r(n)為用戶總喜歡的推薦景點(diǎn);c(n)為用戶總的推薦景點(diǎn)。
2.3 實(shí)驗(yàn)的結(jié)論與分析
本文中使用傳統(tǒng)的基于物品的協(xié)同過(guò)濾算法,與本文加入因素的改進(jìn)的協(xié)同過(guò)濾算法來(lái)進(jìn)行比較。對(duì)比數(shù)據(jù)與結(jié)果如下:
根據(jù)表1、表2繪制出兩種算法的對(duì)比折線圖更直觀地展示出對(duì)比的結(jié)果。
通過(guò)觀察圖3~圖5中整體的趨勢(shì)可以看出算法的準(zhǔn)確率,召回率,F(xiàn)1值都呈上升趨勢(shì),但相比較于傳統(tǒng)的協(xié)同過(guò)濾算法,本文提出的算法更優(yōu)于傳統(tǒng)的協(xié)同過(guò)濾算法。根據(jù)對(duì)比結(jié)果表明,協(xié)同過(guò)濾算法不能只對(duì)用戶、景點(diǎn)、評(píng)分這三點(diǎn)來(lái)作為推薦的主要重點(diǎn),引入不同的特征點(diǎn),把問(wèn)題具體化,更能計(jì)算出最優(yōu)的推薦結(jié)果[9]。
3 結(jié)束語(yǔ)
本文首先提出使用Redis的GEO算法來(lái)實(shí)現(xiàn)對(duì)用戶地理位置景點(diǎn)的距離計(jì)算與數(shù)據(jù)的篩選。其次除評(píng)分因數(shù)外,再加入景點(diǎn)評(píng)論數(shù)量因數(shù)和景點(diǎn)與用戶的距離因數(shù)改進(jìn)基于物品的協(xié)同過(guò)濾算法,得出更適合用戶喜歡的附近景點(diǎn)的推薦。改進(jìn)的算法不僅考慮到景點(diǎn)與景點(diǎn)之間的相似度,也對(duì)用戶喜好與景點(diǎn)特征的相似度進(jìn)行考慮,從而得出的推薦結(jié)果更能符合用戶的喜好。通過(guò)進(jìn)行實(shí)驗(yàn)傳統(tǒng)的協(xié)同過(guò)濾算法與本文算法來(lái)進(jìn)行對(duì)比,結(jié)果顯示此方法提高了精確率與召回率從而提高F1值,使得推薦效果達(dá)到更好。
參考文獻(xiàn):
[1] 周徐虎,李世港,羅儀,等.基于對(duì)稱映射搜索策略的自適應(yīng)金鷹算法及應(yīng)用[J/OL].電子科技:1-10[2023-06-23].https://doi.org/10.16180/j.cnki.issn1007-7820.2024.08.002.
[2] 張盼盼,劉凱凱.基于協(xié)同過(guò)濾算法的圖書推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2023(8):144-146.
[3] 陳勇.基于協(xié)同過(guò)濾算法的旅游推薦系統(tǒng)的設(shè)計(jì)[J].價(jià)值工程,2022,41(30):160-162.
[4] 許馨,郭家赫,喬宇,等.一種基于遺忘機(jī)制與余弦相似度的智能推薦算法[J].軟件工程,2023,26(10):15-18.
[5] 程娟娟.高??蒲信c教學(xué)關(guān)系實(shí)證研究——基于皮爾遜相關(guān)系數(shù)的分析[J].中國(guó)高校科技,2022(10):46-52.
[6] 胡紅萍,喬世昌,孔慧華,等.基于加權(quán)平均樽海鞘群算法和BP神經(jīng)網(wǎng)絡(luò)的COVID-19預(yù)測(cè)[J].新疆大學(xué)學(xué)報(bào)(自然科學(xué)版)(中英文),2022,39(1):19-25.
[7] 王睿,姜學(xué)軍.基于改進(jìn)協(xié)同過(guò)濾的圖書推薦算法研究[J].信息技術(shù)與信息化,2023(4):149-152.
[8] 王照國(guó),張紅云,苗奪謙.基于F1值的非極大值抑制閾值自動(dòng)選取方法[J].智能系統(tǒng)學(xué)報(bào),2020,15(5):1006-1012.
[9] 齊晶,劉瀛,劉艷霞,等.基于標(biāo)簽的協(xié)同過(guò)濾推薦方法研究[J].北京聯(lián)合大學(xué)學(xué)報(bào),2021,35(2):47-52.
【通聯(lián)編輯:謝媛媛】