徐婭楠 連家豪 馮嘉楠 方美玉
摘 要: 目前眾多外賣軟件普及,改變了人們的日常飲食習慣。但是現有訂餐軟件多數是針對個人用戶開發的,企業或多人團體訂餐極不方便。針對上述問題,使用開源SSM框架,基于協同過濾推薦的數據挖掘算法設計了團隊訂餐系統,專門針對多人用戶實現團隊訂餐功能。
關鍵詞: 團隊訂餐; 協同過濾; 數據挖掘; SSM
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2019)03-32-04
Design and realization of team's meal ordering system with
collaborative filtering algorithm
Xu Yanan, Lian Jiahao, Feng Jianan, Fang Meiyu
(School of Science and Technology, Zhejiang International Studies Uiversity, Hangzhou, Zhejiang 310012, China)
Abstract: At present, pervasive take-out APPs have changed people's daily eating ways. But most of them are developed for individual users and are extremely inconvenient for groups or business teams to order meal at the same time. Focusing on the problem, a team's meal ordering system is designed with the data mining algorithm of collaborative filtering recommendation and open source SSM framework. Its team's meal ordering function is specially realized for group users.
Key words: team's meal ordering; collaborative filtering; data mining; SSM
0 引言
在線外賣軟件如國內的美團、餓了嗎、百度外賣等和國外的Gesoo、RICEPO、GrubHub等極大改變了傳統電話訂餐的外賣餐飲方式。但是無論是國內的還是國外的這些外賣軟件,他們大多數是針對個人用戶訂餐而設計的,目前尚未在各大應用商店中發現有針對類似于團隊這樣的多人訂餐功能的外賣app。與此同時在技術上,開源的SSM輕量級框架在Web開發上被廣泛應用。在這樣的背景下,應用SSM框架,我們結合協同過濾推薦算法開發了具有團隊訂餐功能的訂餐網站。
1 團隊訂餐系統的架構與設計
1.1 開發技術概述
本網站數據庫采用Oracle公司的關系型數據庫MySql;Web服務器使用Apache Tomcat 8.0;網頁前端排版利用開源的bootstrap前端框架和layer web彈層組件,后端功能實現基于Spring+SpringMVC+Mybatis(SSM)框架。SSM是一個MVC模式的框架,對比傳統JavaEE的EJB(Enterprise Java Bean)更加輕量[1]。此外,網站采用協同過濾推薦算法,向用戶推薦符合口味喜好的商品。
1.2 總體功能
網站的功能模塊主要包括商家后臺模塊、用戶前臺模塊、協同過濾推薦工具和團隊訂單打包工具等功能模塊,如圖1所示。商家后臺模塊包括分類管理、商品管理、個人訂單管理、團隊訂單管理等功能;用戶前臺模塊包括用戶登錄注冊、商品瀏覽、在線購物等功能,其中,在線購物分為個人訂餐功能和團隊訂餐功能。
1.3 數據庫設計
基于上述系統總體功能的設計,考慮到協同過濾算法推薦工具和團隊訂單打包工具的功能實現,網站數據庫包括用戶表、訂單表、商品表、評分表等。具體字段設計見圖2。
2 典型算法設計與實現
2.1 協同過濾算法設計與實現
網站的用戶瀏覽模塊采用協同過濾推薦算法。協同過濾(Collaborative Filtering,CF)算法是最基本的推薦算法之一,其核心思想是:利用用戶已有的全部過去行為或者喜好,來預測當前用戶最有可能感興趣的東西,并將其推薦給用戶[2]。
本網站的協同過濾推薦工具(Collaborative filtering recommendation tools,簡稱CFRtools)采用基于用戶的協同過濾算法,其基本原理是:過去喜好相似的用戶將來的喜好相似度高的可能性很大[3]。因此,先根據評分記錄,篩選其他用戶,再向用戶推薦。
CFRtools算法工具實現步驟如下:
⑴ 篩選用戶年齡信息和購買評分記錄(如圖3)
⑵ 計算用戶年齡相似度
不同年齡層的人,在喜好方面存在一定的差距。年齡差越小、年齡差占年齡的比例越小,相似度越高[4]。因此,CFRtools算法工具首先在所有用戶中根據年齡相似度計算公式,計算篩選出與用戶年齡相近的用戶。年齡相似度計算公式如下:
⑴
其中Uxa和Uya分別表示用戶x和用戶y的年齡。當年齡相似度Sima(Ux,Uy)>3/4時,表明用戶x和用戶y在年齡上相似。以圖3提供的數據為基礎篩選與用戶A年齡相似的其他用戶,根據公式⑴計算篩選,與用戶A年齡相似的用戶有用戶C、用戶E、用戶F、用戶H、用戶I。
⑶ 計算用戶口味喜好相似度
接著在第二步計算篩選出的用戶年齡相似度結果上,根據用戶的購買評分記錄,利用皮爾遜相關系數計算兩個用戶之間的相似度。皮爾遜相關系數(Pearson product-moment correlation coefficient,又稱PPMCC或PCCs)用于度量兩個變量之間的線性相關程度[5],其值介于-1到1之間。相關系數越大,說明兩個變量之間的相關度越高。皮爾遜相關系數計算公式如下:
⑵
公式⑵中,參與計算的數據為用戶x和用戶y都有購買評分記錄的商品。當0.6 ⑷ 商品推薦 通過上述計算結果可知,用戶C購買過而用戶A沒有購買的食物并且評分高于3.0的酸湯肥牛撈飯推薦給用戶A。 2.2 團隊訂餐關鍵算法設計與實現 項目的核心功能是團隊訂餐功能。團隊訂餐功能的實現見圖4。首先由團隊leader創建團隊訂單,團隊訂單存在后,團隊其他成員即可向團隊訂單中添加自己的訂單信息。完成后,由leader統一支付打包完成的訂單。團隊訂單形成過程的算法如下(涉及的類如圖5所示)。 4 結束語 基于協同過濾的團隊訂餐系統,采用SSM框架技術進行開發,提高系統的可維護性。通過團隊訂餐算法實現多人訂餐功能,并且利用協同過濾算法,對用戶年齡和歷史購買評分記錄進行數據挖掘,從而篩選出符合用戶口味喜好的食品。但是,由于協同過濾算法本身存在冷啟動、矩陣稀疏等問題,還需要對其進行更深度的優化。 參考文獻(References): [1] 鄒紅霆.基于SSM框架的Web系統研究與應用[J].湖南理工 學院學報(自科版),2017.30(1):39-43 [2] 楊安駒.協同過濾推薦算法的研究與應用[D].揚州大學, 2015. [3] 周澤宇,王春玲.基于協同過濾的個性化選課推薦與評論系 統[J].信息記錄材料,2018.19(10):156-159 [4] 鄭志蘊,賈春園,王振飛等.基于微博的用戶相似度計算研究[J]. 計算機科學,2017.44(2):262-266 [5] 申利民,楊益良,陳真.考慮相似比率的Web服務QoS協同預 測[J].計算機集成制造系統,2016.22(1):144-154