基于协同过滤的房源推荐系统的设计与实现_第1页
基于协同过滤的房源推荐系统的设计与实现_第2页
基于协同过滤的房源推荐系统的设计与实现_第3页
基于协同过滤的房源推荐系统的设计与实现_第4页
基于协同过滤的房源推荐系统的设计与实现_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[4]提出了基于粒子群算法的房产推荐系统,该系统需录入房产信息内容,在指定的格式下,每一条房屋信息的属性都需要在信息录入的初期登记在数据库中。研究内容本文的研究内容主要是提出目前国内房屋租赁市场存在的一些问题,结合互联网信息推荐系统的应用场景,开发一款基于协同过滤的房源推荐系统。通过协同过滤中的ItemCF算法为承租方用户推荐与其喜好类型相似的房源信息。具体从以下三个方面入手:通过系统研究背景以及对推荐算法的现状进行分析,确定系统的开发方向和核心推荐模块的设计。在系统的详细开发上,确定合适的软件结构以及数据库的设计,本系统采用SpringBoot开发框架搭建,前端框架使用Layui,数据库使用MySQL关系型数据库和Redis缓存。系统的详细功能设计,包括用户注册登录、房源信息推荐等。本文以房源推荐系统为研究对象,研究业界上常用的推荐算法,分析该房源推荐系统的设计与开发过程。重点分析了推荐算法的原理和系统功能的实现,并对实现的系统进行了功能测试。本系统选用的开发语言是Java,开发框架是SpringBoot,采用的开发工具是IntelliJIDEA,应用服务器是Tomcat,结合MySQL和Redis数据库进行实现,开发出基于协同过滤的房源推荐系统,帮助承租方和出租方提高操作效率,使工作流程清晰化且提高管理效率。推荐算法研究与分析推荐算法现状目前推荐系统的发展非常迅速,基本上分为几大类:基于流行度的推荐、基于内容的推荐、基于协同过滤的推荐、混合推荐等。基于流行度的推荐实际上就是热门内容的推荐,基于最高评分、最多购买、最多下载、最多观看等维度给用户进行推荐,优点是十分简单直接,对于新用户来说十分友好,因为新用户没有产生过任何历史行为记录,一些具有冷启动缺陷的推荐系统很难对其进行推荐。不过,基于流行度的推荐只能推荐热门的内容,无法提供个性化推荐,因此在推荐系统中一般将其作为替补策略。基于内容的推荐是根据用户对Item进行点赞、收藏、浏览、评论等行为,获得用户的兴趣偏好,根据用户的兴趣偏好为其推荐相似的Item,优点是避免Item冷启动问题,并且只依赖于用户自身的行为,不涉及其他用户的行为,因此能够进行个性化推荐,缺点是推荐范围具有局限性。基于协同过滤的推荐是推荐系统中一种应用十分广泛的技术,行业中已经有了很多应用,其中应用最多的种类是基于用户的CF(User-basedCF)和基于项目的CF(Item-basedCF)。UserCF的原理是找到与当前用户相似的用户群,将这些用户中比较流行但当前用户又没有浏览过的内容推荐给当前用户。它的优势是具有多样性,能够帮助用户找到新类别的有惊喜的内容,缺点是计算复杂度较高。而ItemCF的原理是计算所有Item之间的相似度,找出与当前用户喜欢的Item相似度最高的Item集合推荐给当前用户。它的优点是用户的历史行为作为推荐解释,因此可解释性强,缺点是具有冷启动问题,即一个新用户在没有对Item进行任何操作时无法进行推荐。因为单一推荐算法各有优势和缺陷,所以在实际应用场景中很少直接采用单一算法来做推荐,而是采用混合算法来推荐,其中研究和应用最多的是结合内容推荐和协同过滤推荐的混合推荐。考虑到本系统的数据集较为基础,功能量和用户数都比较少,如果采用基于UserCF的协同过滤推荐算法可能会导致算法占用资源太高、重复推荐等问题,因此决定变换采用基于流行度的推荐和基于ItemCF的协同过滤推荐,以协同过滤推荐为主,流行度推荐为辅,取长补短,为用户提供房源信息的推荐。系统推荐算法分析基于流行度的推荐算法较为简单直接,什么内容吸引用户,就给用户推荐什么内容。它基于用户对项目的操作行为(通常是点击、评论、分享等)来获取项目的热度,进而获取热度高的项目推荐给用户。本系统中,用户的操作行为有两种,一是点击,二是收藏。当房源信息获得用户的一次点击,热度加1分;当房源信息获得用户的一次收藏,热度加2分。基于协同过滤的推荐则根据用户的行为来进行推荐,一是通过给用户推荐和他兴趣编好相似的其他用户喜欢的内容,即UserCF;二是给用户推荐和用户本身喜欢的内容相似的内容,即ItemCF。本系统采用ItemCF算法,Item等价于房源信息,用户喜欢某个房源的行为表现为收藏操作,算法运算过程主要分为两步:计算房源之间的相似度。假设有用户A、B、C、D、E,他们各自的收藏如下:Aa,b,dBb,c,eCc,dDb,c,dEa,d根据他们的收藏列表构建倒排表,例如,房源a被用户A和用户E所收藏。aA,EbA,B,DcB,C,DdA,C,D,EeB得到用户的收藏列表后,将列表中的房源两两加一,最后累加获得共现矩阵,矩阵中记录了同时收藏房源i和房源j的用户数,计算过程如REF_Ref38617382\h图2.1所示。图STYLEREF1\s2.SEQ图\*ARABIC\s11共现矩阵计算过程假设有房源i和房源j,它们之间的相似度取决于它们同时被很多的用户所收藏,同时收藏它们的用户数越多,相似度越高。设N(i)为收藏房源i的用户数,N(j)为收藏房源j的用户数,|N(i)∩N(j)|表示同时收藏房源i和房源j的用户数,则房源之间的相似度Wij可以通过以下公式计算得出:对共现矩阵进行遍历并去重,导入上面的公式就可以计算出房源之间的相似度。根据房源之间的相似度和用户的历史行为为用户生成推荐列表。有了房源信息之间的相似度,就可以找到与当前用户收藏列表中的房源信息相似度高的其他房源信息,推荐给当前用户。本章小结本章主要分析了推荐算法的现状和一些基本定义,并分析了本系统推荐算法的原理和设计思路。

系统分析系统可行性分析在系统的设计和开发之前进行可行性分析是十分必要的,通过可行性分析我们能够明确系统开发时可能会出现的问题,同时确定这些问题是否能够解决,以及对于用户是否难以操作等。本系统从技术、经济和操作三个方面进行了可行性分析。技术可行性本系统由Java语言进行开发;开发工具使用JetBrains公司出品的IntelliJIDEA,IntelliJIDEA对Java生态的支持范围十分之广,具有好用的快捷键和代码模板;数据库采用MySQL,它具有体积小、速度快、免费的特点;前端框架采用门槛较低、结构较为清晰、页面效果较好的Layui框架。以上技术和工具均是当前成熟好用的技术方案,所以技术上可行。经济可行性在房屋租赁市场中,房屋中介需要向寻租者收取一定比例的中介费,这无疑增加了寻租者的额外负担。而采用自动化、全天化的房源推荐系统,寻租者不仅可以省去中介费用,同时大大减少了找房的时间成本和沟通成本。在当今的互联网时代,计算机、手机等电子产品几乎人手一部,硬件方面是基本满足的,而基于硬件的软件开发也可以做到接近零成本。出租方也能借助该系统充分展现自己的房屋特色,找到合适的房客。系统为寻租方和出租方带来了很大的便捷,所以在经济上可行。操作可行性现如今许许多多的人基于都能用个人电脑上网,就算没有电脑或者不方便使用笨重的电脑,也可以使用手机上网,所以硬件条件是可以满足的。本系统为B/S架构,只要使用浏览器便可随时使用,且界面美观、操作简单、非常容易上手,所以,在操作上可行。系统需求分析需求概述随着城市流动人口的增加,房屋租赁市场蓬勃发展。与此同时,传统的房屋中介不仅加重了房屋承租者的负担,承租、出租双方的交易过程也变得十分繁琐。因此,承租、出租双方迫切需要一种低成本、便捷的房源推荐平台,以取代传统中介机构的各种弊端。本项目实现了一个基于协同过滤的房源推荐系统,通过算法为用户进行房源信息的推荐。推荐系统在一方面减轻了寻租方的时间、交通成本,另一方面也为出租方提供了一个范围更广的销售渠道。具体来说,对于承租方用户,当账号未登录时可以查看按热度排行的房源信息,当账号登录时,系统会根据用户的历史行为通过算法进行个性化推荐,将用户想看的内容尽可能的呈现出来,减少了用户在寻找信息所花费的时间,提升了用户体验;对于出租方用户,只需注册好账号就可以在系统中发布自己想要出租的房屋信息,还可以查看自己的房屋信息的点击量和收藏量,帮助出租方调整房屋的信息发布,尽快达到将房屋租出去的目标。推荐模块需求分析本系统变换采用基于流行度的推荐算法和基于ItemCF的协同过滤推荐算法。基于流行度的推荐:当用户是游客或者新用户时,系统对当前房源信息的热度进行计算并排序,返回按热度从高到低排列的房源信息。基于ItemCF的协同过滤推荐:当用户对房源信息进行了点击、收藏,系统根据当前用户历史行为里的房源信息返回与之相似度高的其他房源信息。总的来说,本系统推荐模块核心是基于ItemCF的协同过滤推荐,而基于流行度的推荐则作为协同过滤的补充,这样能够解决协同过滤的冷启动问题。系统功能需求分析登录、注册模块:游客只能浏览按热度排行的房源信息,无法进行其他操作。用户可以注册账号,登录系统之后就可以体验系统的各种功能。查看房源信息模块:未登录系统的游客只能查看按热度排列的房源信息。新用户进入系统后,看到的房源信息与游客相同。新用户遇到中意的房源,可以点击收藏将其添加进自己的收藏列表,之后系统将会分析用户的收藏列表,将相似度高的其他房源信息推荐给用户。用户的收藏行为影响系统的推荐结果。另外设置一个按钮,当用户不满意当前推荐的信息时,点击可以更换下一批。发布房源信息模块:出租方用户注册登录系统后可以把自己名下空闲的想要出租的房源发布出去,填写房源的基本信息、上传房源的宣传图片,等待承租方的联系。此外还可以查看自己已发布的房源信息的点击量和收藏量等。修改个人信息模块:已注册的用户登录系统后可以随时修改自己的头像、登录密码和密保手机号码。本章小结本章介绍了系统的可行性分析,主要从技术、经济、操作三方面展开了介绍,并从功能方面对系统的需求进行了分析。系统设计与实现系统设计框架目前基于B/S模式的信息管理系统大多采用MVC架构设计,即模型(Model)、视图(View)、控制器(Controller)三层架构。模型通常负责访问数据库,对数据进行增删改查等操作,是应用程序中与数据进行交互的部分。视图依据模型数据创建,负责显示模型数据。控制器负责处理用户的请求,通常从视图中获取用户的请求参数,调用模型操作数据,最终将结果返回给用户。MVC模式就像一台电脑,模型好比是硬盘里的文件,视图好比是显示器,控制器好比是CPU。每一层各司其职,缺一不可,大大简化了应用程序的开发。图STYLEREF1\s4.SEQ图\*ARABIC\s11MVC架构示意图本系统以MVC模式进行开发,系统架构如REF_Ref38229535\h图4.2所示。图STYLEREF1\s4.SEQ图\*ARABIC\s12系统开发架构系统推荐模块的设计当游客进入系统时,推荐模块对当前房源信息的热度进行计算、排序,返回按热度从高到低排列的房源信息;当新用户进入系统时,推荐模块首先返回热门的房源信息,此时对于新用户的推荐和对于游客的推荐是一致的,当新用户对房源信息进行了收藏,推荐模块才会调用协同过滤方法分析用户的收藏列表,为用户推荐相似度高的其他房源。推荐模块运行流程如REF_Ref38229578\h图4.3所示。图STYLEREF1\s4.SEQ图\*ARABIC\s13推荐模块运行流程系统功能模块设计登录、注册模块:前台网站首页设置一个房源信息的浏览入口,未登录的游客可以预览按热度排行的房源信息,并可以点击某个房源的预览信息查看详细信息,除此之外无法进行其他操作。游客的点击也会增加房源的点击量。游客进行注册、登录之后就可以体验网站的各项功能,包括收藏、推荐等。用户注册流程如REF_Ref38229596\h图4.4所示,用户登录流程如REF_Ref38229609\h图4.5所示。图STYLEREF1\s4.SEQ图\*ARABIC\s14用户注册流程图图STYLEREF1\s4.SEQ图\*ARABIC\s15用户登录流程图查看房源信息模块:该模块以卡片形式展现系统推荐的N个房源信息,游客可点击查看详情,用户可收藏。具体流程如REF_Ref38229620\h图4.6所示。图STYLEREF1\s4.SEQ图\*ARABIC\s16查看房源信息流程图发布房源信息模块:出租方用户登录系统后,可以将自己名下空闲的想要出租的房源发布到系统中,填写好房源的信息就可以提交了。房源的详细信息包括房屋图片、地址、房东联系方式以及房屋的简介等。房源信息发布成功后,出租方可以修改、删除已发布的房源信息,还可以查看点击量和被收藏量。具体流程如REF_Ref38229629\h图4.7所示。图STYLEREF1\s4.SEQ图\*ARABIC\s17发布房源信息流程图修改个人信息模块:用户登录系统后可以修改头像、登录密码和密保手机号码。具体流程如REF_Ref38229638\h图4.8所示。图STYLEREF1\s4.SEQ图\*ARABIC\s18修改个人信息流程图系统数据库设计E-R模型本系统数据库表主要有房源信息表、房源热度表、用户信息表、用户收藏表,E-R图如REF_Ref38229650\h图4.9所示。图STYLEREF1\s4.SEQ图\*ARABIC\s19系统E-R图数据库表用户信息表用户信息表存储用户的相关信息,表结构如下:字段名字段描述数据类型允许空值键型id用户idint否主键username用户名varchar否password用户密码varchar否phone手机号码char否avatar_path头像地址varchar否create_time创建时间datetime否房源信息表房源信息表存储房源的相关信息,表结构如下:字段名字段描述数据类型允许空值键型id房源idint否主键thumbnail缩略图地址varchar否images详情图片地址varchar否address房源地址varchar否introduction简介varchar是房源热度表房源热度表存储房源信息的热度,表结构如下:字段名字段描述数据类型允许空值键型house_id房源idint否主键、外键click_count点击量int否mark_count收藏量int否用户收藏表用户收藏表存储用户的收藏信息,表结构如下:字段名字段描述数据类型允许空值键型id收藏idint否主键user_id用户idint否外键house_idmark_time房源id收藏时间intdatetime否否外键系统实现推荐模块的实现推荐模块主要包含流行度计算函数以及ItemCF算法计算函数。流行度计算函数较为简单,通过每个房源信息的点击量和收藏量,按照点击加1分、收藏加2分,计算当前各个房源信息的热度,按降序排列。ItemCF算法计算函数传入当前用户的id,遍历所有用户的收藏列表,根据第二部分的模型构建共现矩阵,并按照相似度计算公式计算出各个房源信息之间的相似度,以相似度从高到低的顺序进行排列,最终返回排好序的房源信息集合。系统功能的实现系统功能围绕用户的操作来实现,主要分为游客浏览、注册成功后的承租方用户登录系统进行操作和出租方用户登录系统进行操作三个部分。游客功能实现:打开网站来到主页,以游客身份点击主页上的“查看房源”链接,将会跳转到房源信息页面。房源信息以热度排行,点击量和收藏量越大越靠前。游客在浏览的过程中只能点击房源信息查看详情,无法进行其他操作。若要进行其他操作,可以点击顶部栏的登录链接进行登录。承租方用户功能实现:用户注册时可以选择用户类型,选择承租方,正确输入用户名、密码、确认密码、密保手机号码后提交,输入错误会弹出提示,并且无法提交。注册成功后进行登录,填写用户名、密码后点击“登录”按钮,若错误会弹出提示。用户可以选择“记住我”,在成功登录后系统会记住账户信息,下次便可直接登录。若用户忘记密码可以点击“忘记密码”链接,进行密保手机验证,验证通过则可以重置密码。成功登录系统后房源信息将会由系统进行个性化推荐,用户可以点击房源信息查看详情,也可以点击收藏将其添加进自己的收藏列表。此外,顶部状态栏显示头像和用户名信息,鼠标移动或触屏至该位置,将会弹出下拉框,可以在下拉框选择相应的操作修改头像、修改密码、修改手机号码和退出系统。出租方用户功能实现:用户注册时可以选择用户类型,选择出租方,正确输入用户名、密码、确认密码、密保手机号码后提交,输入错误会弹出提示,并且无法提交。注册成功后进行登录,填写用户名、密码后点击“登录”按钮,若错误会弹出提示。用户可以选择“记住我”,在成功登录后系统会记住账户信息,下次便可直接登录。若用户忘记密码可以点击“忘记密码”链接,进行密保手机验证,验证通过则可以重置密码。成功登录系统后用户可以发布自己想要出租的房屋信息,包括房屋图片、地址、租金、面积大小、房东联系方式以及房屋的简介。用户还可以修改、删除已发布的房源信息,查看被收藏量。此外,顶部状态栏显示头像和用户名信息,鼠标移动或触屏至该位置,将会弹出下拉框,可以在下拉框选择相应的操作修改头像、修改密码、修改手机号码和退出系统。系统测试系统测试的目的是尽早发现系统中隐藏的错误和缺陷,尽可能避免出现BUG,从而保证系统的正确性、完整性、安全性。功能测试本系统主要对每个功能模块进行了单元测试和黑盒测试。单元测试是为了保证数据的增删改查不会出现错误、功能能够正常运行。黑盒测试是不考虑程序内部的结构和性能,只检查程序的运行结果是否符合预期。在本系统开发阶段,每个功能模块在编写完毕后通过单元测试保证了数据的正确操作以及功能的正常运行。当一个功能模块初步开发完成后,通过模拟真实场景检测功能是否达到了预期的效果。经过测试,本系统的各个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论