林帥伽 俞婷 程芳穎
摘要:最近,隨叫隨到的外賣服務在中國非常流行,美團、大眾點評每天的外賣訂單超過3000萬份,美食平均在30分鐘內(nèi)送到食客手中。如何推薦出更符合用戶喜好的餐廳,成為當下商家和用戶較為關(guān)心的話題。針對如何對用戶推薦符合心意的餐廳的問題,文章提出了基于協(xié)同過濾的美食店鋪推薦算法,同時分析了基于用戶的推薦算法、基于餐廳的推薦算法、基于[ SVD]的協(xié)調(diào)過濾算法以及流行度推薦算法這四種推薦算法,解決了推薦餐廳與用戶喜好適配度問題。實驗表明,文章提出的基于協(xié)同過濾的美食店鋪推薦算法,在準確率(Precision)和召回率(Recall)以及[ F1]這三種指標上優(yōu)于其他對比算法。
關(guān)鍵詞:協(xié)同過濾;推薦系統(tǒng);混合算法;美食店鋪;美食推薦
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)30-0051-03
開放科學(資源服務)標識碼(OSID):
1 引言
如今,隨叫隨到的外賣服務非常流行。食客可以瀏覽在線餐廳市場,選擇餐廳并預訂他們喜歡的食物或飲料。但是面對網(wǎng)絡數(shù)據(jù)的爆炸增長,使得用戶難以在海量的數(shù)據(jù)中快速地找到適合自己的美食,具有一定的盲目性。通過對現(xiàn)有美食App的調(diào)查發(fā)現(xiàn),美食數(shù)據(jù)排行過于籠統(tǒng),不能有效地解決用戶的個人喜好等問題。針對以上問題,現(xiàn)階段的市場提供個性化推薦服務、提高檢索效率、優(yōu)化用戶體驗成了廣大食客的訴求。面對這一訴求,根據(jù)數(shù)據(jù)集的用戶和餐廳特征,提出基于協(xié)同過濾[1-3]的美食店鋪推薦系統(tǒng)算法,該算法結(jié)合了基于用戶的推薦算法、基于餐廳的推薦算法、基于[ SVD]的協(xié)同過濾算法以及流行度推薦算法,并使用準確率和召回率以及[ F1]這三種指標與其他算法進行了比較。
2 基于協(xié)同過濾的混合推薦算法
本文構(gòu)建了融合多因素的美食推薦方法,該方法統(tǒng)一對用戶、餐廳簽到記錄、餐廳流行度進行建模,通過餐廳簽到記錄捕獲用戶潛在的偏好,并且結(jié)合流行度模型進行餐廳推薦。本文最后在真實世界的數(shù)據(jù)集上進行了實驗,證明本文提出的方法相比現(xiàn)有的其他方法能夠更加準確地向用戶推薦餐廳。
2.1 基于流行度的協(xié)同過濾算法
所謂“從眾”,是指在群體的影響下,放棄自己的觀點,與他人保持一致的社會心理行為。例如,在網(wǎng)上購物時,用戶會習慣性地查看商品的銷售量。當銷售量越大時,用戶更傾向于購買并給予高分。餐廳的受歡迎程度極大地影響著用戶的決定。換言之,用戶更有可能訪問熱門餐廳。
本文提出基于流行度的推薦算法,該基礎(chǔ)算法是根據(jù)用戶對餐廳點擊的熱度將當下最熱門的內(nèi)容推薦給用戶[4-5],由此對求解基于流行度的推薦算法的算法思路基本如下:
1)用戶-餐廳歷史調(diào)用記錄
通過對歷史數(shù)據(jù)集進行分析,得到了用戶集合和餐廳集合,記用戶集合為[U],[U={u1,u2,u3,…un}]。記餐廳集合為[R],[R=r1,r2,r3,…rm]。記用戶餐廳調(diào)用記錄矩陣[Yn×m],若用戶[ui]訪問過餐廳[rj],那么[yi,j=1],[yi,j∈Yn×m]。
2)計算餐廳之間的相似度
利用余弦算法計算餐廳之間的相似度,公式如下:
sim([rx,ry)=N(rx)∩N(ry)N(rx)N(ry)]? ? ? ? ? ? ? ? (1)
其中,[N(rx)] 表示喜歡餐廳[rx]的用戶數(shù),[N(ry)] 表示喜歡餐廳[ry]的用戶數(shù),[N(rx)∩N(ry)]表示同時喜歡餐廳[rx],[ry]的用戶數(shù)。
3)計算推薦餐廳推薦列表
本方法采用引入流行度來進行餐廳推薦。記某一餐廳為[ra],通過對數(shù)據(jù)集歷史記錄進行分析,得到餐廳[ra]的歷史訪問人數(shù)為num([ra]), 餐廳[ra]的流行度為[pnum(ra)],平均流行度為[pnum(ra)avg],對流行度進行歸一化,得到公式如下:
[weightra=pnum(ra)avgpnum(ra)]? ? ? ? ? ? ? ? ? ? ? (2)
[weightra]表示餐廳[ra]的流行度權(quán)重因子。
利用流行度來改進公式(1),得到如下公式:
sim([rx,ry)=weightra*N(rx)∩N(ry)N(rx)N(ry)]? ? ? ? ? ? (3)
若用戶[ui]訪問過餐廳[rx],那么依據(jù)公式(3)可得到其余餐廳與[rx]的相似程度,利用相似程度完成推薦,得到餐廳推薦列表。
2.2 基于SVD的協(xié)同過濾算法
通過對基于SVD的協(xié)同過濾算法[6]的研究,對矩陣Y進行[SVD]分解,得到如下公式:
[Y=PQT]? ? ? ? ? ? ? ? ? ? ? ? ? (4)
其中[P]為用戶特征矩陣,[Q]為餐廳特征矩陣。其中,[P∈Yf×n]的每一行表示用戶,每一列表示一個特征,它們的值表示用戶與某一特征的相關(guān)性,值越大,表明特征越明顯。[Q∈Yf×m]的每一行表示餐廳,每一列表示餐廳與特征的關(guān)聯(lián)。
經(jīng)過SVD分解,得到每一個用戶對于每一個餐廳的偏好程序,公式如下:
[sui,ry=puiqryT]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5)
本文使用梯度下降算法來進行訓練,公式如下:
[minp,q(ui,ry)∈Y(yi,j-puiqryT)2+λ(||pui||2+||qry||2)]? ? (6)
其中,[λ]為超參數(shù),[λ(||pui||2+||qry||2)]表示計算方差,衡量模型的穩(wěn)定性。方差大的模型會過擬合[6]。
2.3 總體偏好程度
為了提高推薦的準確性,使用線性框架來結(jié)合用戶偏好和流行度影響。本文使用用戶對于餐廳的總體偏好程度[7]來計算餐廳推薦列表,目的就是根據(jù)線性框架來學習用戶對不同餐廳的偏好,從而給出用戶感興趣的餐廳分布[8]。為了提高推薦算法的準確程度,將基于[SVD]與流行度算法相結(jié)合,并引入流行度權(quán)重因子[α],得到最終結(jié)果,公式如下:
[finals=1-α×sui,ry+α×sim(rx,ry)]? ? ? (7)
通過對權(quán)重因子的測試,獲得本推薦算法的最終結(jié)果,從而產(chǎn)生餐廳推薦列表。
3 實驗及評估結(jié)果
3.1 實驗數(shù)據(jù)集
本文數(shù)據(jù)來自于和鯨社區(qū)美食數(shù)據(jù)集①,共4萬家餐廳,54萬用戶,440萬條評論數(shù)據(jù)。首先對數(shù)據(jù)集進行數(shù)據(jù)預處理,刪除低于100條的數(shù)據(jù)記錄數(shù),通過整理最終參與實驗一共4417家餐廳,3291用戶,76208條數(shù)據(jù)。由于用戶評價較為主觀性,采用歸一化處理評價數(shù)據(jù)。
3.2 評估指標
本文使用精確率、召回率和F1指標來衡量算法性能。
精確率。表示符合用戶喜愛的推薦物品數(shù)在用戶總推薦物品數(shù)的比例,定義如下:
[p=n(B)s(B)]
其中[n(B)]為符合用戶B喜愛的推薦餐廳, [m(B)]為用戶B總喜愛的推薦餐廳,[s(B)]為用戶B總推薦餐廳[8]。
召回率。表示符合用戶喜愛的推薦物品數(shù)與用戶總喜愛的推薦物品數(shù)的比例[9],定義如下:
[r=n(B)m(B)]
[F1]指標。代表精確率和召回率的一個綜合考量,兩者一起使用才能評價推薦系統(tǒng)的好壞,定義如下:
[F1= 2prp+r]
3.3 基礎(chǔ)算法對比
將數(shù)據(jù)集分為訓練集和測試集,通過誤差計算,發(fā)現(xiàn)不同參數(shù)對應的誤差值都不同。這些參數(shù)包括鄰居個數(shù),訓練,測試集的劃分比例。為測試其靈敏性,分別對訓練集、測試集進行數(shù)據(jù)測試。
針對基于用戶的推薦算法,本文對不同推薦個數(shù)以及鄰居個數(shù)進行研究,結(jié)果如圖1所示。圖表中數(shù)據(jù)顯示,鄰居個數(shù)的增加,基于用戶的推薦相似度總體趨勢呈下降狀態(tài)。并通過對數(shù)值反復的模擬計算,前期topk=5的曲線趨勢值要處于相對于中間趨勢,但后期隨著鄰居個數(shù)的增加,取topk=5的效果要優(yōu)于其他。
針對基于餐廳的推薦算法對推薦程度的影響,改變topk和鄰居個數(shù)的值通過控制變量法,測得數(shù)據(jù)如圖2。通過圖2可以看出在鄰居個數(shù)位于50左右,基于餐廳推薦算法的相似度達到一個相對峰值,為相對優(yōu)值。
基于上述兩種推薦算法引入第三種基于SVD的推薦算法對實驗的影響程度,根據(jù)數(shù)據(jù)得出上述圖3,發(fā)現(xiàn)基于SVD 推薦總體數(shù)據(jù)區(qū)間位于0.50%~0.90%,整體相似度相對提高,呈上升趨勢,數(shù)據(jù)波動較小,在鄰居個數(shù)處于80左右得到此算法在同一topk下的相對峰值。
在對流行度進行數(shù)據(jù)分析,數(shù)據(jù)波動于0.4%~0.6%這一區(qū)間內(nèi),在topk=2時處于該算法的峰值0.58%。
3.4 混合算法對比
如圖5給出了六種混合推薦算法各項指標下的實驗結(jié)果,其中UCF為基于用戶的協(xié)同過濾、RCF為基于餐館的協(xié)同過濾、SVD為基于SVD的協(xié)同過濾、POP為基于流行度的協(xié)同過濾。
通過對基礎(chǔ)算法的改進與融合,對精確率、召回率、F1的實驗結(jié)果分析,相比于其他混合算法只有某一方面的提升,基于POP與SVD的混合推薦算法無論是在美食餐廳推薦的準確程度、全面度都有了明顯的質(zhì)量提高,在topk=5時達到了實驗的峰值,推薦效果好。
4 結(jié)束語
本文提出了基于SVD和基于流行度(POP)的混合推薦算法,該算法結(jié)合了SVD算法和POP算法的優(yōu)點。實驗表明,該算法在精確率、召回率和F1三個指標上要優(yōu)于其他對比算法。未來,我們計劃將神經(jīng)網(wǎng)絡算法引入到美食推薦中。
注釋:
①https://www.heywhale.com/mw/dataset/5e946de 7e7 ec38002d 02d533/content.
參考文獻:
[1] Bell R M,Koren Y,Volinsky C.The BellKor 2008 solution to the netflix prize[R].2008.
[2] Paterek A.Improving regularized singular value decomposition for collaborative filtering[S.I.].2007.
[3] Lee D D,Seung H S.Learning the parts of objects by non-negative matrix factorization[J].Nature,1999,401(6755):788-791.
[4] 張春麗.基于Hadoop的協(xié)同過濾算法的研究與實現(xiàn)[D].上海:東華大學,2015.
[5] 熊聰聰,鄧瀅,史艷翠,等.基于協(xié)同過濾的美食推薦算法[J].計算機應用研究,2017,34(7):1985-1988.
[6] 陳清浩.基于SVD的協(xié)同過濾推薦算法研究[D].成都:西南交通大學,2015.
[7] 王立才,孟祥武,張玉潔.上下文感知推薦系統(tǒng)[J].軟件學報,2012,23(1):1-20.
[8] 巨星海,周剛.一種基于用戶偏好分析和論壇相似度計算的改進LFM推薦算法[J].信息工程大學學報,2021,22(4):433-437,449.
[9] 張芳.基于項目流行度與用戶信任度的協(xié)同過濾推薦算法研究[D].青島:山東科技大學,2018.
【通聯(lián)編輯:謝媛媛】