APP下载

基于协同过滤算法的食堂菜品智能推荐程序

2020-03-02肖力郎黄庆凤邹俊轩刘之畅姜涛雷晨捷

科技创新导报 2020年22期
关键词:协同过滤微信小程序

肖力郎 黄庆凤 邹俊轩 刘之畅 姜涛 雷晨捷

摘  要:传统的菜品评测软件存在着功能冗余,安装繁琐等降低用户黏性的固有缺点,而微信小程序这一新的开发方式,给了我们解决该问题的新途径。本文以学校食堂菜品推荐为背景设计了新的菜品推荐评测微信小程序。该程序选择基于用户相似度的协同过滤算法,针对每位用户进行智能推荐,具有用户目标明确、程序轻量化、推荐个性化的特点。

关键词:微信小程序  智能推荐  协同过滤  饮食推荐

中图分类号:TP39                               文献标识码:A                   文章编号:1674-098X(2020)08(a)-0251-03

Abstract: Traditional dish evaluation software has inherent disadvantages such as redundant functions and cumbersome installation to reduce user stickiness, while WeChat applets, a new development method, give us a new way to solve this problem. We design a new WeChat program for the food evaluation based on the background of school canteen food recommendation. This program selects a collaborative filtering algorithm based on user similarity, and makes intelligent recommendations for each user. This program has the characteristics of clear user target, lightweight and personalized recommendation.

Key Words: WeChat applets; Intelligent recommendation; Collaborative filtering; Dietary recommendation

華中科技大学占地面积广大,拥有食堂多达34所,师生分布在学校东西中三个区域内。当同学老师及访客由于某些原因去往不熟悉的食堂,或者对常去的食堂产生厌倦时,即出现了了解新食堂及其菜品的需求。如果专门为此设计应用软件又难免存在下载安装过程繁琐导致用户吸引力降低的问题。

为解决该问题,我们设计了基于微信小程序[1]的食堂菜品推荐程序。本文将论述该程序的主要功能模块,实现智能推荐的主要算法,数据库的搭建等并根据实际情况反馈对该设计的优缺点进行了讨论。

1  实现功能

本设计主要实现以下功能以解决相关诉求。

1.1 主页面智能推荐

根据用户所在区域,智能推荐食堂与菜品。

针对的是想要尝试新食堂但又没有具体想法的用户。

1.2 用户手动选择食堂,智能推荐菜品

针对有心中有大概想法但又无法做出具体选择的用户。

1.3 用户留言点评菜肴

让同学通过评论与打分的方式给出评测,程序进行智能分析并进一步修正数据库以便做出更优的推荐。

2  推荐算法选择

当前经典的推荐算法包括topN算法、矩阵算法、内容关联算法、协同过滤算法、神经网络矩阵分解法、用户行为轨迹分析法等。此外还存在着混合推荐算法。由于本次设计中评价对象相对较少,我们采用了基于用户相似度的协同过滤算法。

2.1 主流协同过滤推荐算法的分析

目前主流的协同过滤推荐算法分为基于用户的协同过滤推荐算法及基于项目的协同过滤推荐算法。基于用户的协同过滤推荐算法依赖于用户对项目的评价矩阵,进而产生用户的推荐集合,对评价的数目有很高的要求,即需要大量评价数据,否则会对推荐的准确性产生很大的影响。基于项目的协同过滤推荐算法对用户已评分的项目的相似项目的评价进行预测,进而减轻了系统对原始评分数据的依赖。但该算法推荐集覆盖率低,用户满意度较低。

2.2 选择基于用户相似度的协同过滤推荐算法的理由

传统协同过滤推荐算法在实际运用中逐渐表现出一些问题[2]:传统算法没有利用到社交网络中大量存在的用户交互信息。这反映在食堂推荐程序中则为将同一菜品的评价视为平行关系,忽略了用户之间的互动,即参与评价的用户之间的相关性。而基于用户相似度的协同过滤推荐算法(如图1)综合利用用户注册信息,对主体的评价信息及用户互动信息,提高推荐质量和准确度,进而提升用户满意度。

2.3 步骤说明

根据前述说明,用户信息可以分为用户属性和用户互动信息。用户属性即用户的基本注册信息,用户互动信息即用户对其他菜品的浏览信息,或者是反映浏览同一菜品的用户之间的相关性的信息。对两类信息分配合理的权重,进行线性拟合得到用户间的相似度,进而生成推荐集信息。

(1)用户相似度计算。采用欧几里得距离,计算用户的相似度。应用中希望相似度与返回值正相关,并且值在0到1之间,故我们取函数值加1取倒数的形式计算相似度[3]。

(2)寻找相似用户。我们希望寻找与目标用户相似的用户,采用的方法是:根据用户间的相似系数,对相似用户进行排序,并且选择相似用户的前n名。

(3)生成推荐集。根据上述求得的相似用户的加权平均,并且排除目标用户已经浏览过的菜品,即得到对目标用户的推荐菜品。

3  基于用户的协同过滤算法实现过程

算法总体流程框图如图2所示[4-5]。

在本软件中算法的核心实现思路为首先分析数据, 建立用户-菜品评分矩阵模型, 接着通过计算用户对菜品浏览频率之间的相似性, 寻找目标用户的最近邻居, 最后根据最近邻居的评分向目标用户产生推荐菜品。

3.1 评分矩阵的建立

根据用户浏览菜品的次数, 建立用户-菜品标准化浏览频率矩阵,用户-菜品浏览频率矩阵是一个矩阵,表示用户数,表示菜品数,表示第个用户对第    个菜品课程的浏览频率。

3.2 相似度计算

用户与用户之间的相似度可表示为:

本程序还通过随机推荐方法以修正没有其他用户浏览过当前用户未浏览菜品的问题

3.3 推荐列表的产生

我们从矩阵中找到与目标用户最相似的个用户,并去除用户已经浏览过的菜品,用集合表示, 对每门候选菜品,用户对它的感兴趣的程度用以下公式计算:

其中代表了前名相似用户的推荐权重。

4  推荐系统的具体构建

4.1 程序的运行流程

程序通过获取用户的反馈来不断更新数据库,从而达到优化推荐的目的。根据这一思路设计出的程序运行模式如图3所示。

4.2 主要环节设计

(1)数据库设计。我们设计了一个数据库来存储菜品的各项信息,各项菜品的基础信息由人工采集录入作为基础信息,评价与分数可以由用户反馈进行修改最终得到实际评价[6],同时我们还设计了用户提交窗口,由用户帮助我们完善数据库。

数据库由以下三张表组成:

·Canteen:canteenName(食堂名称),geo(地理位置),canteenPicture(食堂图片)

·Dish: _id(菜品编号),canteenName(食堂名称),dishName(菜品名称),windowName(窗口名称),windowPicture(窗口图片),price(价格),unit(单位),dishPicture(菜品图片),timeFor(出现时间),rate(评价)

·DishProperty: dishid(菜品id),openid,statue(评分),comment(评论)

由上述内容可知,菜品通过canteenName来表示归属的食堂,windowName来表示所在窗口,通过timeFor来界定该菜品在三餐中的出现时间。DishProperty则用于存储菜品的评价类的属性诸如评分与评论内容等。

(2)具体功能实现。

显示菜品功能:使用wxml和wxss显示数据库Dish中的菜品信息在同名js文件中读取数据库信息,对dishname等变量进行赋值,再通过wxml显示在界面上。

搜索菜品功能:当有输入时,点击搜索按钮跳转至搜索結果页,再在结果页用正则表达式搜索后用wxml显示搜索结果。

云函数搜索:使用微信给出的云开发api,选择正则表达式的大小写不敏感的匹配模式,在dish数据库中搜索目标菜名。

用户上传功能:使用api获取用户设备照片文件,和用户填写菜品信息一起上传至服务器上传文件和添加数据是通过2个api实现,上传图片为uploadFile,上传到云数据路径。添加数据则使用collection.add添加用户上传数据至dishUserUpload数据库。

智能推荐功能:使用前述的欧几里得距离的变形计算用户间的相似度,推荐相似度最高的用户所浏览的目标用户未浏览的菜品。

5  结语

选择微信小程序的主要优点在于其轻量快捷,无需繁琐的下载安装过程,降低了使用门槛。同时,微信小程序本身也提供了基本的服务框架,方便开发。我们在设计中采用新潮的智能推荐算法进行用户的个性化推荐,有效解决了本校师生就餐选择难的问题,并为师生跨校区就餐提供了指导。另外,开放式的评论系统也有助于学校官方了解相关情况,及时做出相应调整。

本程序依然存在一些不足,诸如:用户的自发更新缺乏动力,数据扩大后程序响应缓慢,缺乏审核渠道,缺乏有效推广渠道等。这也是未来准备继续改善的地方。

参考文献

[1] 孙旻.广播微信小程序的设计与实现[J].广播电视信息,2019(9):69-73.

[2] 蒲鲜霖.智能推荐系统中协同过滤算法综述[J].中国新通信,2018,20(23):31-32.

[3] 周鲲.基于用户相似度的协同过滤推荐算法研究[D].成都:西南交通大学,2016.

[4] 宋勇建,宋金玲,张正阳,等.基于项目评分预测与用户多相似度的协同过滤推荐算法[J].现代化农业,2019(3):60-62.

[5] 陈思,田敬阳.基于协同过滤算法的旅游景点推荐模型研究[J].现代电子技术,2020,43(11):132-135.

[6] 刘禹.基于微信小程序的图书荐选程序设计及实现[J].长春工程学院学报:自然科学版,2019,20(2):59-62.

猜你喜欢

协同过滤微信小程序
当图书馆遇上微信小程序
改进的协同过滤推荐算法