基于协同过滤的个性化零食推荐微信公众平台设计与实现
- 文件大小:1263 (KB)
- 文档格式:.docx
文档分类: 计算机与科学
关于本文
- 本文标题:基于协同过滤的个性化零食推荐微信公众平台设计与实现.docx
- 链接地址:https://wk.sbvv.cn/view/21239.html
- 内容摘要:基于协同过滤的个性化零食推荐微信公众平台设计与实现摘要随着社会经济的不断发展和居民消费水平的日益提高,消费者对于零食的需求数量越来越大。但市面上零食的种类很多,用户想要找到一款适合自己口味的零食,需要花费大量的时间和精力。如何快速高效地帮助用户找到自己喜欢的零食是一个问题。由此提出了个性化零食推荐的课题。本课题是设计实现一个基于微信公众平台的零食信息发布系统,每个用户都能将自己喜欢的零食信息发布到系统供其他用户参考,系统会根据用户对零食信息的一些反馈行为,采用协同过滤的算法,为用户个性化推荐零食信息。系统最终经过测试达到了需求标准,并成功的部署在微信公众平台和云服务器上。关键词:微信公众平台;零食推荐;个性化推荐;协同过滤DesignandimplementationofwechatpublicplatformforpeonalizedsnackrecommendationbasedoncollaborativefilteringABSTRACTWiththecontinuousdevelopmentofsocialeconomyandtheincreasingcoumptionlevelofresidentsthedemandfonacksisgrowing。Buttherearemanykindsofsnacksonthemarket。Ittakesalotoftimeandenergyforusetofindasnackthatsuitstheirtaste。Howtohelpusefindtheirfavoritesnacksquicklyandefficientlyisaproblem。Thereforethetopicofpeonalizedsnackrecommendationisputforward。Thistopicistodesignandimplementasnackinformationpublishingsystembasedonwechatpublicplatform。Eachusercanpublishtheirfavoritesnackinformationtothesystemforotherusereference。Accordingtosomefeedbackbehavioofusethesystemwilladoptcollaborativefilteringalgorithmtopeonalizedrecommendsnackinformationforuse。Finallythesystemhasbeentestedtomeettherequirementsandsuccessfullydeployedonwechatpublicplatformandcloudserver。Keywords:WechatpublicplatformSnackrecommendationPeonalizedrecommendationCollaborativefiltering目 录1。绪论11。1背景目的及意义11。2相关工作11。3本文工作21。4论文的框架结构22。需求分析32。1功能性需求分析32。2非功能性需求分析42。3相关技术介绍52。3。1协同过滤算法52。3。2微信公众平台52。3。3Vue。js52。3。4Django52。4本章小结53。推荐算法设计与实现63。1基于内容的推荐算法63。2协同过滤算法63。2。1基于物品的协同过滤算法73。2。2基于用户的协同过滤算法73。3系统推荐算法实现93。4本章小结104。系统分析与设计114。1架构设计114。1。1总体架构114。1。2部署架构114。2功能设计114。2。1零食推荐模块设计124。2。2零食搜索模块设计124。2。3零食管理模块134。2。4用户中心模块设计134。2。5后台管理模块设计134。3数据库设计144。3。1ER模型设计144。3。2表结构设计154。4本章小结185。系统实现与测试195。1系统实现环境要求195。1。1开发环境195。1。2运行环境195。2系统实现195。2。1微信授权模块195。2。2零食推荐模块215。2。3零食搜索模块225。2。4零食管理模块245。2。5用户中心模块265。2。6后台管理模块265。3系统测试275。3。1测试目的275。3。2测试用例275。4本章小结296。总结与展望306。1总结306。2展望30参考文献31致谢32绪论背景目的及意义近年来,中国的零食行业发展速度较快。根据官方数据统计,中国的零食行业总产值从2006年的4240。36亿元到2016年的22156。4亿元,涨幅高达422。51%。有相关部门预测,2020年的零食产业规模可能会达到3万亿元。但目前市面上零食的种类很多,消费者想要找到一款满足自己口味的零食需要花费大量的时间和精力。个性化推荐技术的出现解决了这个问题。个性化推荐技术可以从用户的浏览内容、频率和时间等多个方面因素分析每个用户的具体情况,并为用户提供他们可能感兴趣的内容。本课题基于微信公众平台,开发实现了一个零食发布系统,每个用户都能将零食信息上传到系统供其他用户参考,系统根据用户对零食信息的浏览、收藏、评论等反馈行为,通过个性化推荐算法,为用户推荐可能喜欢的零食信息。本课题将个性化推荐技术应用在零食信息系统中,可以帮助消费者更高效地找到他们可能喜欢的零食,从而增强用户体验。相关工作推荐系统早在90年代就开始被研究,它解决了用户难以在海量的信息中高效地找到所需信息的问题。目前常见的推荐系统有三种,分别是协同过滤推荐、基于内容的推荐和混合推荐。推荐系统在国外,从诞生之时就受到广泛关注,也因此得到了很多成功的研究成果。在1992年,推荐系统第一次被应用在系统中,Goldberg和他的团队将协同过滤算法应用在了邮件管理系统上,从而减轻了工作人员的负担,提高了邮件管理的效率。在1994年,GroupLe提出了基于用户的协同过滤算法,并将该算法其应用在新闻推荐上。该系统会收集每个用户对新闻的评分,并将这些评分储备下来供后期推荐使用。后来,亚马逊第一次将推荐系统成功的应用在电商系统中。当消费者在亚马逊书城下单时,会提示出购买本书籍的用户还购买了其他书籍等信息。国内的推荐系统研究起步较晚,但也有不少研究成果。在2009年7月,北京成立了一家专门研究个性化推荐技术和推荐引擎的公司。在2011年的8月,载言网络科技首次提出了在传统的推荐引擎上添加用户的社交信息和隐形反馈。2011年的9月,百度首页增加了智能推荐功能,可以根据用户行为为用户推荐可能喜欢的网站。个性化推荐的发展过程中面临了各种各样的问题,比如为了解决算法的冷启动和数据稀疏问题,研究者们在原有算法的基础上加入了一些其他参数,对算法进行了改进。有研究者在原有的Peaon相关系数方法上增加惩罚系数机制,改进了Peaon相关系数法,并显著提高了推荐准确性。还有研究者针对评分矩阵稀疏这一问题,提出了根据物品属性和用户特征填充评分矩阵,从而解决了评分矩阵稀疏的问题。个性化推荐系统发展至今已经相对成熟,但个性化推荐系统存在的问题正在被不断研究。目前研究的主流方向有两种,一是在现有的推荐算法基础上优化和改进个性化推荐算法,从而提高个性化推荐算法的准确率。二是如何将个性化推荐算法应用在业务系统中,从而增强用户体验。本文工作本课题将协同过滤技术应用在零食推荐上,基于微信公众平台设计开发一个个性化零食推荐系统。该系统可供用户发布自己喜欢的零食介绍信息,后台再运用个性化推荐技术为用户推荐可能喜欢的零食信息,由此提升用户对平台的体验度。本文的工作主要包括以下两个方面:应用个性化推荐技术。本系统将个性化推荐技术应用在系统上,根据用户对零食信息的浏览、评论、点赞、收藏等反馈信息和反馈对应的权重,计算出用户对零食的评分,再利用协同过滤算法为用户推荐可能喜欢的零食。搭建个性化零食推荐系统,并运行在微信公众平台。系统实现了零食推荐、零食管理、零食搜索、用户中心、后台管理等模块。系统采用了前后端分离的开发方式,方便维护和功能扩展。同时系统部署在服务器上,采用了CDN加速技术,有效提高了静态资源的加载速度,优化用户体验。需求分析功能性需求分析系统主要用例包括微信授权登录、零食信息推荐、零食信息管理、零食信息搜索、个人中心管理、后台信息管理。系统用例图如图21所示。图21系统用例图微信授权登录用户应该可以通过点击微信公众号底部的菜单进行微信自动授权进入到系统中,而不是输入账号密码登录,从而免去繁琐的注册登录步骤。零食信息推荐作为一款零食推荐系统,零食的推荐自然必不可少。系统应该能够利用个性化推荐算法,在首页为不同的用户推荐不同的零食信息。同时系统需要接受用户对零食信息的反馈,所以应该提供零食浏览、零食点赞、零食收藏、零食评论等反馈功能。零食信息管理本系统的零食数据库需要不断的完善扩充,系统应提供给用户可以上传零食信息的入口。用户应该可以在系统上传零食介绍、零食图片等信息。零食信息搜索为了使得用户可以方便地查询到相关的零食信息,系统应提供零食搜索功能,应该可以根据零食关键词查询到相关的零食信息。个人中心管理用户应该可以看到自己的昵称、头像等个人信息,也应该能对其他用户进行关注操作。后台信息管理管理员应该能对系统数据信息进行管理,包括零食信息、用户信息、评论信息、推荐信息、轮播图信息、搜索历史信息等。非功能性需求分析本系统有以下五个方面的非功能性需求:性能需求在90%的情况下,一般时间段响应时间不超过2秒,高峰时间段不超过5秒。第一次进入系统时间不超过5秒。安全需求系统要经过授权认证登录后才能进入,在未登录时严禁使用系统的各个功能。用户在系统内只能访问操作权限内的数据。可维护性需求系统要保证模块化开发,各个模块独立,要易于扩展,编写代码整洁,变量或函数命名规范,关键地方要加注释。可用性需求在90%的系统故障中,系统最多只需要60秒重启,若系统出现严重故障要在24小时内恢复正常。易用性需求要求界面美观,操作简单,用户能方便地使用系统的各个功能,无复杂操作。技术需求分析协同过滤算法协同过滤算法主要分为两个类型,分别是基于物品的协同过滤算法即ItemCF,和基于用户的协同过滤即UserCF。ItemCF算法较为简单,自诞生至今一直被广泛的使用。UserCF算法的推荐效果更显著,能帮助用户发现以前未涉及到的领域,有着悠久的历史[10]。协同过滤算法认为兴趣和爱好相似的两个用户可能会喜欢相似的物品,或者两个用户可能会对相似的物品表现出相似的兴趣爱好[7]。其基本思想是根据相似用户的评分或者用户对相似项目的评分进行个性化推荐。微信公众平台微信公众平台是微信官方推出的一款用户服务平台,主要面向个人、组织和企业[6]。微信公众平台又叫做公众号,它支持多种形式的媒体资源信息[1]。微信公众平台可以进行二次开发,开发者可以将前端页面链接到公众号底部菜单,用户通过点击菜单进入到应用页面。微信公众平台官方还提供了第三方的api,通过对接开发服务器,可以实现开发服务器与微信公众平台的交互,从而使用微信公众平台丰富的功能。Vue。jsVue是一个目前比较流行的前端框架。Vue的最大特点在于数据驱动视图,开发者只需要通过操作视图绑定的数据,视图就能自动刷新,而不必再获取视图的dom元素更新数据,极大地方便了应用开发。并且Vue有着搭建速度快、学习成本低、使用简单等特点,适合用于应用开发。DjangoDjango是一个web后台开发框架,基于Python开发。使用Django框架可以帮助开发者快速构建web系统框架[3]。Django还有强大的后台管理功能,只需要通过一些参数化配置,就能实现一个简单的后台管理系统。Django在网上也有大量的学习资源,非常适合开发。本章小结本章主要对系统进行了功能性需求分析、非功能性需求分析,并对系统开发中可能会用到的技术进行了技术需求分析。推荐算法设计与实现协同过滤算法协同过滤算法是根据用户的行为信息进行推荐的。协同过滤算法认为,两个用户或者物品没有直接的联系,内容属性完全不一样,但只要发生过相同的行为,就具有相似性。例如一个用户是年轻女性,而另一个用户是一名老年男性,两个用户信息有着较大差异,但由于他们浏览过相同的东西,就认为他们具有较高的相似度。协同过滤算法分为基于物品的协同过滤算法(ItemCF)和基于用户的协同过滤算法(UserCF)。基于物品的协同过滤算法基于物品的协同过滤算法是为用户推荐他们之间喜欢相似的商品。基于物品的协同过滤算法根据用户对物品的行为信息来计算两个物品是否相似,其核心是目标物品的相似物品,将相似物品推荐给喜欢目标物品的用户。基于物品的系统过滤最大特点是推荐结果可解释。由图32可以看出,用户A、用户C、用户D都喜欢物品a,并且他们又都喜欢物品d,可以认为物品a和物品d相似,所以就能将物品d推荐给同样喜欢物品a的用户B。给用户B推荐物品d的原因可以解释为喜欢物品a的用户还喜欢物品d。图31基于物品的协同过滤基于物品的协同过滤算法是根据用户项目评分矩阵,用相似度计算公式计算出物品的相似性,找到与目标物品相似的k个物品,然后根据用户对物品的历史行为和物品相似度,然后计算用户对物品的兴趣度,再从近邻物品中选取N个用户相似度最高的物品,并形成推荐结果。基于用户的协同过滤算法基于用户的协同过滤算法的基本原理是先将用户的行为信息转换为对物品的评价,再将根据对物品的评价计算出用户的相似性,再把相似用户喜欢的物品推荐给目标用户。由图33可以看出,用户A和用户C共同喜欢物品a和物品c,可以认为用户A和用户C相似,用户C即为用户A的临近邻居,所以可以将用户C喜欢的物品d推荐给用户A。图32基于用户的协同过滤在基于用户的协同过滤中,计算用户的相似度非常关键,相似度的计算对推荐结果的准确度有着重要的影响[6]。常见的计算公式有欧几里得距离公式、余弦相似度公式、Peon相关系数等。欧几里得距离公式欧几里得距离公式用于计算空间内两点之间的实际距离。将用户u1(r11r12…r1m)和用户u2(r21r22…r2m)看作空间内的两个点,则他们之间的相似度可以通过欧几里得距离公式来计算,两点之间的距离越短越相似。公式如下:余弦相似度公式余弦相似度的计算方法是获取空间内两个向量的坐标,再利用空间余弦距离公式求得两个向量之间的距离,依此来衡量两个用户直接的相似度。假设控件内有两个向量点X和Y分别代表两个用户,那么利用公式计算两个用户的相似度如下:Peon相关系数皮尔逊相关系的优点是可以根据结果判断人们之间的兴趣爱好的相似程度,他的缺点是在数据不是很规范的情况下往往会把结果趋向于好的结果。相似度的计算公式如下,其中X和Y分别代表两个变量。零食推荐算法实现本文采用的是基于用户的协同过滤算法。零食推荐系统的构建主要经过四个步骤:计算零食评分,建立用户模型,寻找最近邻居,产生推荐零食。计算零食评分计算零食评分是将用户的反馈行为根据权重转换成用户对零食的评分,影响推荐效果的最主要的因素就是用户对物品的评分。零食推荐系统的反馈行为主要包括浏览反馈、评论反馈、喜欢反馈、收藏反馈,定义对应的权值分别是1、2、3、4。规定零食评分的满分值是10,则将用户的行为转换为评分值就是1到10,若用户对某个零食没有反馈记录就为0分,根据此规则计算出用户对每个零食的评分值。最后将生成的零食评分数据保存在数据表中,如图33所示。其中user_id、snack_id、score字段对应的分别是用户id、零食id和零食评分。图33零食评分数据建立用户模型建立用户模型需要生成一个用户零食评分矩阵R。用户零食评分矩阵如图34所示。其中user_id是用户id,snack_id是零食id,user_id与snack_id相交的值是对零食的评分。图34用户零食评分矩阵寻找最近邻居首先使用余弦相似度公式,计算出当前用户同其他用户直接的相似性,得到与目标用户最相似的用户集合。余弦相似度计算核心代码如图35所示。其中传入list1和list2的是两个用户对所有零食的评分列表,返回的是两个用户之间的相似度。图35余弦相似度计算核心代码再通过两两计算用户相似度,得到用户相似度列表,根据相似度从高到低排序,选取K个最相似用户,即临近邻居用户。其中ratingValues是零食评分矩阵,useimMatrix是用户相似度列表,userMostSimDict是最相似的K个用户结果字典。计算最相似K个用户的代码如图36所示。图36计算最相似K个用户代码产生推荐零食根据上一步得到的K个临近邻居用户相似度集合,采用加权平均的方法,计算出零食的推荐评分列表,再对推荐评分值按从高到低排序,生成最终的推荐零食并插入到推荐数据表。产生推荐零食代码如图37所示。图37产生推荐零食代码本章小结本章介绍了ItemCF和UserCF的基本原理,并基于此系统设计实现了UserCF算法并应用在该系统的零食推荐中。系统分析与设计架构设计总体架构本系统采用的是BS架构,其中的B是指Browser即微信公众平台,S是指Server服务器即部署服务器。BS架构的系统,用户端不需要安装专门的软件,不仅方便了用户,还减少了系统维护的工作量。BS架构的系统还具有开发管理方便,运行速度快,显示效果良好等特点。部署架构本系统的部署采用了UWSGI、Nginx、CDN等技术。UWSGI是一个用于部署web程序的服务器软件,它集成了WSGI、UWSGI、HTTP等多个互联网数据传输协议,一般用于部署Python开发的Web应用程序。Nginx是一款具有高性能的HTTP和反向代理的web服务器,同时也提供了IMAPPOP3SMTP服务,它具有占用内存小、并发能力强等特点,常用与web应用部署。CDN又叫做内容分发网络,它通过全国各个地区的服务器节点缓存web服务器上的静态资源,通过CDN控制中心,在用户请求静态资源时,就近选择节点返回资源内容,从而使得静态资源的加载速度更快,优化了用户体验。功能设计系统的功能模块图如图41所示。图41系统功能模块层次直方图零食推荐模块零食推荐模块包括零食个性化推荐,热门推荐,最新推荐,关注用户推荐。零食搜索模块零食搜索模块包括字符串匹配搜索,历史搜索,热门搜索。零食管理模块零食管理模块包括零食发布,零食编辑,零食点赞收藏,零食评论。用户中心模块用户中心模块包括粉丝与关注管理,个人资料管理。后台管理模块后台管理模块包括零食管理,用户管理,评论管理,推荐管理,轮播图管理,搜索历史管理。零食推荐模块设计本模块功能为零食推荐,按照来源可分为个性化零食推荐、热门零食推荐、最新零食推荐和关注用户零食推荐。个性化零食推荐是由基于用户的协同过滤算法计算出来的零食信息推荐,推荐信息与用户的个人行为记录有关,按照推荐度排列展示。热门零食推荐是根据零食信息的浏览人数、点赞人数、评论人数和收藏人数进行加权平均计算,按计算出的零食热度从高到低排列展示。最新零食推荐是根据用户发布零食信息的时间来展示零食推荐,优先展示发布时间较新的零食。关注用户零食推荐是查询用户关注的其他用户发布的零食信息,并按时间顺序倒排展示,推荐给用户。在系统首页分栏展示这四种推荐的零食图片、介绍信息、热度信息等,当用户点击任意零食后进入零食的详情信息界面。详情信息界面包括零食的详情介绍图、推荐信息、热度信息(浏览、评论、点赞、收藏次数)、其他用户的评论信息等。零食搜索模块设计本模块功能为零食搜索,包括字符匹配搜索,历史搜索和热门搜索。字符匹配搜索是通过用户在输入框输入零食介绍信息的关键词、标签或发布用户,系统查询出与输入的字符串相匹配的零食列表返回给用户。历史搜索是记录用户每次的搜索关键词,并展示在搜索输入框下方,用户可点击历史关键词再次搜索。热门搜索是根据每个用户的搜索关键词,后台统计计算每个关键词搜索的频次,取搜索频次最多的前20个关键词作为热门搜索关键词,并展示在搜索输入框下方,用户可点击热门关键词搜索零食。零食管理模块设计本模块功能为零食管理,包括零食发布,零食编辑,零食点赞收藏,零食评论。零食发布是用户在进入发布页面后,可编写零食介绍信息,上传零食图片,添加零食标签,然后发布到系统中,就能被系统推荐给其他用户浏览。零食编辑是用户可对之前发布过的零食修改介绍信息、修改上传图片、修改标签,并再次提交。也可对之前发布过的零食进行删除,被删除的零食将不会再在系统内展示。零食点赞收藏是用户可以对自己喜欢的零食点赞和收藏,被点赞的零食将会增加热度,提高推荐权重。被收藏的零食会在我的收藏栏目下展示,方便用户下次浏览,被收藏的零食也会提升热度。零食评论是用户可在零食详情页进行评论发布,与其他用户一起交流。用户中心模块设计本模块功能为用户个人中心,包括粉丝与关注管理,个人资料管理。粉丝与关注管理是用户可在个人中心查看关注的用户列表和粉丝列表,对已关注的用户可以取消关注,也可对未关注的用户进行关注,用户可在零食详情页上方的发布用户信息处或其他用户的首页关注其他用户。关注其他用户后可在首页的关注板块下看到关注用户近期发布的零食信息。个人资料管理是用户在第一次进入系统时,会调用微信授权获取用户的微信头像,微信昵称和微信性别,记录在系统数据库中,并在用户个人中心展示。后台管理模块设计本模块功能为后台管理,包括零食管理,用户管理,评论管理,推荐管理,轮播图管理,搜索历史管理。零食管理是管理员可在后台查看系统内所有的零食信息,包括零食介绍内容、零食图片、零食发布用。。。
- 版权声明:知知范文网 本站所有内容的版权归相应内容作者或权利人所有,本站不对涉及的版权问题负法律责任。
- 内容来源:本站所有内容均有网络公开等合法途径整理而来,该资料仅作为交流学习使用,并无任何商业目的,任何访问,浏览本站,购买或者未购买的人,就代表已阅读,理解本条声明
- 免责声明:内容所标价格,是对本站搜集、整理资料以及本站运营必须费用支付的适当补偿,资料索取者尊重版权方的知识产权,谢谢!