基于协同过滤的团队订餐系统设计与实现

2019-05-13 10:24徐娅楠连家豪冯嘉楠方美玉
计算机时代 2019年3期
关键词:协同过滤数据挖掘

徐娅楠 连家豪 冯嘉楠 方美玉

摘 要: 目前众多外卖软件普及,改变了人们的日常饮食习惯。但是现有订餐软件多数是针对个人用户开发的,企业或多人团体订餐极不方便。针对上述问题,使用开源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

猜你喜欢
协同过滤数据挖掘
探讨人工智能与数据挖掘发展趋势
基于并行计算的大数据挖掘在电网中的应用
改进的协同过滤推荐算法
基于链式存储结构的协同过滤推荐算法设计与实现
基于相似传播和情景聚类的网络协同过滤推荐算法研究
基于协同过滤算法的个性化图书推荐系统研究
混合推荐算法在电影推荐中的研究与评述
一种基于Hadoop的大数据挖掘云服务及应用
数据挖掘的分析与探索
基于GPGPU的离散数据挖掘研究