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