基于协同过滤混合算法的餐饮推荐系统设计与实现
2020-04-05金强山冯光
金强山 冯光
摘 要: 为了改善单一协同过滤算法在餐饮推荐系统中存在的“數据稀疏”问题,采用基于用户的协同过滤算法和基于物品的协同过滤算法相融合的方式,两种算法之间取长补短,设计餐饮推荐系统推荐引擎架构,实现基于协同过滤混合算法的餐饮推荐系统。
关键词: 混合算法; 协同过滤算法; 餐饮推荐系统; 个性化推荐
中图分类号:TP39 文献标识码:A 文章编号:1006-8228(2020)02-74-03
Research on catering recommender system based on hybrid collaborative
filtering algorithm
Jin Qiangshan, Feng Guang
(Department of Information Engineering, Xinjiang Institute of Technology, Aksu, Xijiang 843100, China)
Abstract: In order to improve the data sparsity of the single collaborative filtering algorithm in catering recommender system, the user-based collaborative filtering algorithm is combined with the commodity-based collaborative filtering algorithm, to design the recommendation engine architecture of the catering recommender system, and thereby implement the catering recommender system based on hybrid collaborative filtering algorithm.
Key words: hybrid algorithm; collaborative filtering algorithm; catering recommender system; personalized recommendation
0 引言
随着“互联网+”的快速迅猛发展,信息技术与餐饮行业的结合越来越紧密。如何为客户提供准确的、喜爱的、合口味的个性化餐饮服务成为“互联网+餐饮”行业领域研究的热点。
近年来,在餐饮行业中餐饮推荐系统正在大规模普及应用,它不仅可以满足客户的个性化餐饮需求,而且还建立了长期稳定的客户关系,客户流失率逐渐降低,客户忠诚度逐步提高。餐饮推荐系统的核心是推荐算法,主要的推荐算法有基于协同过滤的算法、基于内容过滤的算法以及基于关联规则过滤的算法等[1]。协同过滤算法具有较高的推荐准确率,但是单一协同过滤推荐算法覆盖范围不同,各自的优势无法互补。本文主要讨论协同过滤混合算法在餐饮推荐系统中的设计与实现。
1 协同过滤混合算法的设计
1.1 协同过滤算法的分类
1992年Goldberg与Nicols提出了协同过滤算法基本概念,起初是用来过滤用户的电子邮件[2]。经过这么多年的发展,协同过滤算法已经成为当今重要的推荐算法之一。具体讲,协同过滤算法(Collaborative Filtering,简称CF)是根据用户对物品的偏好,计算用户与用户、用户与物品之间的相似度,查找与目标用户相似度较高的邻近集,并通过邻近集用户对其他物品的潜在评分产生推荐的物品集合[3]。
协同过滤算法又分为基于用户的协同过滤算法(user-based collaboratIve filtering,简称User CF)、基于物品的协同过滤算法(item-based collaborative filtering,简称Item CF)[4]。
1.2 对比User CF 与Item CF的优缺点,为融合两种算法提供依据
基于用户的协同过滤算法是根据用户对物品的偏好,寻找与目标用户兴趣相似的近邻用户所喜欢的物品,然后推荐给当前用户。基于物品的协同过滤算法是分析现有的用户行为,计算目标物品与已购物品的相似度,为用户提供相似度较高的物品。本文将从以下几个角度对比User CF和Item CF之间的优缺点,为融合两种推荐算法提供依据。
⑴ 针对于推荐热门的物品,基于User CF比Item CF具有更为准确的推荐精度;由于热门物品都是基于其他多个用户对该物品的良好评价,即物品被越多的用户喜欢,那么它被推荐的概率就越高。
⑵ 针对于推荐冷门的物品或最新的物品,基于Item CF比User CF具有更为准确的推荐精度;若用户之前历史记录中使用过的物品,与该冷门物品或最新物品具有很多相似特征,那么基于Item CF算法会最准确的进行推荐。
⑶ 以用户和物品的数量进行对比。当用户的数量远超物品的数量时,且物品的数量及物品间的相似度比较稳定,Item CF比User CF推荐机制的实时性更好;当物品的数量远超用户的数量时,且物品的更新速度快,User CF比Item CF在相似稳定性方面具有一定优势[5]。
⑷ 以推荐的多样性进行对比。当从单个用户的角度对比,给定一个用户,来比较推荐表中物品之间的相似度,User CF比Item CF在推荐多样性方面要表现的更好;当从系统的多样性角度对比,推荐系统给所有用户提供丰富的选择,Item CF的多样性要远远好于User CF。
⑸ 以推荐算法的性能和个性化进行对比。Sarwar[6]和 Karypis [7]等已經证明Item CF比User CF在性能上有所提升;在用户数目较多的情况下,Item CF更能够提供个性化的推荐结果。
由此可见,两种协同过滤算法都具有较高的准确推荐率,但是它们覆盖的范围却不同。因此,让两种协同过滤算法相互融合、优势互补,成为本餐饮推荐系统的核心和关键。
2 基于协同过滤混合算法的餐饮推荐系统设计
2.1 餐饮推荐系统的架构设计
餐饮推荐系统从架构上可分为业务应用层、推荐系统层、核心数据层、算法计算层。系统架构从四个层次完成了用户数据和菜肴基本数据的收集、提取、分析、过滤、排名、个性化推荐等过程,餐饮系统架构图如图1所示。
2.2 推荐引擎设计
推荐引擎是协同过滤算法在本餐饮系统中实现个性化推荐的核心,本餐饮系统的设计采用基于用户和基于物品的协同过滤混合算法,推荐引擎中不仅要分析用户间、物品间的相关性,而且要根据具体情况进行推荐算法的选择,实现高效、准确的个性化推荐服务,推荐引擎架构图如图2所示。
3 关键技术的实现
3.1 计算用户的偏好数据
通过从用户的行为和偏好中发现规律并基于此给予推荐,是协同过滤算法的重要环节,因此,收集用户偏好的数据显得至关重要。用户可以通过购买、评分、评论、标签、收藏夹、转发、点赞等方式,向系统提供自己的偏好信息。根据用户的不同行为,对各种行为进行分类,然后进行加权处理,如购买的权值赋值要高于收藏夹中的权值,体现用户的喜欢程度。
3.2 计算相似的用户
计算相似用户可以基于相似度门槛的邻居计算方法,它以当前的点为中心,对一定范围内的点作为邻居,但是如何把握此范围的限度,需要根据邻居数量进行调整,如果范围过大、用户数量庞大,定会造成相似度用户特征繁杂,使准确的个性化推荐性能降低。
3.3 计算用户与物品之间的相似度
计算用户与物品间的相似度采用皮尔逊相关系数,该系数用于确定两个变量之间的密切程度,取值在[-1,+1]之间,sx, sy分别表示x和y的标准偏差。
[⑴]
3.4 利用Mahout构建推荐系统引擎
Mahout是Apache Software Foundation(ASF)旗下的一个开源项目,实现了机器学习领域经典的算法,为快速实现智能程序提供了便捷[8]。本系统依据前期的架构设计,利用Mahout提供的协同过滤算法构建搜索引擎,提高了开发者开发的效率。
4 餐饮推荐系统核心模块的实现
4.1 用户请求推荐模块
在餐饮推荐系统中,用户根据自己的喜好对相关的菜肴进行搜索,是推荐系统中用户最常用的显性行为之一。根据用户当前搜索菜肴的特征与用户以往喜欢菜肴进行比对,将具有相似特征的菜肴进行推荐。若用户在使用关键字搜索后没有找到最合口味的菜肴,用户请求推荐模块可以为其提供菜肴推荐,提高用户体验,如餐饮推荐系统中常见的热门菜肴、销量hot菜肴等。
4.2 特色菜肴推荐模块
特色菜肴推荐模块主要依靠其他用户对特色菜肴的持久好评和店家对特色菜肴的主动推荐。特色菜肴不依赖于当前用户的历史喜好,而是其他用户对特色菜肴的好评越多,该菜肴被推荐的可能性越大。其次,店家对特色菜肴信心十足,确立几道菜为本店的特色招牌菜,那么可以在特色菜肴推荐模块进行权重调参,可以为用户最大概率的推荐本店的招牌菜。特色菜肴是本推荐系统的重要组成部分,也是用户参考点餐使用最多的推荐模块之一。
4.3 最新菜肴推荐模块
对于最新的菜肴往往具有较少的用户点餐行为记录,但是最新菜肴和用户需要的菜肴之间会具有相似的特征,针对这些具有相似的菜肴进行加权处理,按照权重大小分别进行排序处理,即将用户最想吃、最匹配、最新的菜肴排在第一位,然后根据权重依次排序。由于受用户需求的限制,推荐的最新菜肴不易过多,若是推荐过多会造成用户选择困难,同时也会增大对菜肴基数的需求。
5 结束语
本餐饮推荐系统在设计的过程中,采用了基于用户和基于物品的协同过滤混合算法,最大化地发挥了各算法的优势,使两种协同过滤算法优势互补、相互融合,为推荐系统更加精准的服务提供支持。
参考文献(References):
[1] 陈果,周志锋,杨小波,王成,欧阳纯萍.基于人脸识别的商品推荐系统的设计与实现[J].计算机时代,2018.11:52-55
[2] GOLDBERG D,NICOLS D.Using collaborative filtering to weaver an information tapestry [J].Communications of the ACM,1992.35(12):61-70
[3] 刘辉,郭梦梦,潘伟强.个性化推荐系统综述[J].常州大学学报(自然科学版),2017.29(3):51-59
[4] 刘青文.基于协同过滤的推荐算法研究[D].中国科学技术大学,2013.
[5] 海平,黄凑英.两种协同过滤推荐算法的比较研究[J].贵阳学院学报(自然科学版),2015.10(1):1-4
[6] LINDEN G,SMITH B,YORK J.Recommendation tem-to-item collaborative filtering[J].IEEE Internet Computing,2003.7(1):76-80
[7] SARWAR B,KARYPIS G,KONSTAN J,et al.Item-basee collaborative filtering recommendation algorithms[C]//International World Wide Web Conferences. Hong-kong: ACM,2001:285-295
[8] 许海玲,吴潇,李晓东,阎保平.互联网推荐系统比较研究[J].软件学报,2009.20(2):350-362