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