基于协同过滤的房源推荐系统的设计与实现毕业论文.docx
《基于协同过滤的房源推荐系统的设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《基于协同过滤的房源推荐系统的设计与实现毕业论文.docx(19页珍藏版)》请在冰豆网上搜索。
![基于协同过滤的房源推荐系统的设计与实现毕业论文.docx](https://file1.bdocx.com/fileroot1/2023-1/23/3005a0ef-f312-4a22-8e65-53ee1541fafb/3005a0ef-f312-4a22-8e65-53ee1541fafb1.gif)
基于协同过滤的房源推荐系统的设计与实现毕业论文
---文档均为word文档,下载后可直接编辑使用亦可打印---
摘要
本论文通过对当前房屋租赁市场存在的痛点问题进行分析,结合互联网信息系统的考察,以自主开发一个B/S架构的房源推荐系统为例,对开发过程的一些技术问题提出一些实用性的建议及实现。
论文首先从房屋租赁市场的发展现况与互联网信息系统发展前景进行分析,提出了将两者结合起来,通过实现一个算法推荐系统改善房屋租赁市场现状的设想。
在此基础上,本论文介绍了房源推荐系统的开发过程以及其中的技术问题,以B/S模式进行系统的开发,以Java作为开发语言,以IntelliJIDEA作为开发工具,采用SpringBoot开发框架,借助业界现有的推荐算法,由需求分析,功能设计,数据组织,代码组织等各个方面对房源推荐系统的开发过程做出一定的实践,在实现的同时,总结经验,并将前期的整体设计,中期的具体实现过程,后续的软件测试的具体思路呈现在论文中。
关键词:
房屋租赁推荐系统JavaSpringBoot协同过滤
ABSTRACT
Thispaperanalyzesthepainpointsexistinginthecurrenthousingrentalmarket,combinedwiththeinvestigationoftheInternetinformationsystem,andtakesanindependentdevelopmentofaB/Sarchitecturehouserecommendationsystemasanexampletoproposesomepracticalproblemsinthedevelopmentprocess.Proposalandrealization.ThethesisfirstanalyzesthedevelopmentstatusofthehousingrentalmarketandthedevelopmentprospectsoftheInternetinformationsystem,andputsforwardtheideaofcombiningthetwoandimprovingthestatusofthehousingrentalmarketbyimplementinganalgorithmrecommendationsystem.
Onthisbasis,thispaperintroducesthedevelopmentprocessofthehouserecommendationsystemanditstechnicalproblems.ThesystemisdevelopedinB/Smode,Javaisusedasthedevelopmentlanguage,IntelliJIDEAisusedasthedevelopmenttool,andtheSpringBootdevelopmentframeworkisadopted.Withthehelpoftheexistingrecommendationalgorithmsintheindustry,weneedtomakecertainpracticesinthedevelopmentprocessofthehouserecommendationsystemfromtheaspectsofdemandanalysis,functionaldesign,dataorganization,codeorganization,etc.Theoveralldesign,thespecificimplementationprocessinthemediumterm,andthespecificideasforsubsequentsoftwaretestingarepresentedinthepaper.
Keywords:
HousingRentalRecommendationAlgorithmJavaSpringBootCollaborativefiltering
1.绪论
1.1.研究背景
在中国共产党的领导下,中国的市场经济发展迅速,城市化进程不断加速。
与此同时,越来越多的农村剩余劳动力涌入城市,加大了人口流动,使得城市流动人口数量不断增长。
然而这些外来务工人员或者城市低收入者没有能力购买价格高企的商品房。
因此,房屋租赁市场对于买卖双方都有着很大的需求。
无论是租房还是出租,都具有重大的现实意义。
然而现实中房屋租赁市场规模大且信息复杂,买卖双方经常发生纠纷。
由于信息的不对等,在房屋租赁市场中,求租方往往是弱势的一方,一些求租者需要花费高昂的交易费通过中介公司寻求房源。
一些黑心的中介公司出于利益不会客观地为客户推荐房源,中介费也在一定程度上加重了求租者的负担。
另外,由于语言表述的局限性,承租方很难将自己心中的理想房屋形容出来,中介也很难满足承租方的全部需求,这种信息的不对称对于房屋租赁是个很大的问题。
这些问题都急需一个减轻承、出租双方沟通成本,使满足各类需求的房源真实地展现给所需用户的平台。
当今时代,互联网应用越来越广泛,计算机算法发展迅猛,极大地方便了人们的工作生活。
其中基于算法的推荐系统无处不在,例如国民购物网站淘宝网、以推荐算法著称的新闻应用今日头条,用户在使用过程中能够不断获得自己想要的内容,并且呈现的内容会随着浏览量的增多而越来越接近自己的需求,信息也越来越对称,逐渐受到用户的青睐,这背后的推荐系统功不可没。
1.2.研究目的和意义
1.2.1.研究目的
通过对房屋租赁市场存在的问题以及承租、出租双方的需求进行研究和分析,开发一款房源推荐系统,降低承租、出租双方的沟通成本,在一定程度上改善房屋租赁市场的痛点问题。
本课题结合国内房屋租赁市场存在的问题以及互联网信息推荐系统的发展方向,设计了一个基于协同过滤的房源推荐系统,借助业界现有的协同过滤推荐算法,以Java为开发语言、以SpringBoot为开发框架、IntelliJIDEA为开发工具,数据库采用MySQL数据库和Redis缓存,通过后台数据库的建立和前台界面的设计与功能实现等几个阶段来完成房源推荐系统的开发。
1.2.2.研究意义
衣食住行是人们最基本的生活需求。
如今,随着房价的不断上涨,租房成为外来务工人员以及刚进入社会工作的年轻人解决居住问题的主要方式,每一年都有许许多多的人需要租房,促进了房屋租赁市场的发展。
因此,我国的房屋租赁市场需求巨大,发展前景广阔,但仍然存在零散、不规范等弊端。
此时,设计实现一款房源推荐系统具有重要的实践价值,也可以为社会发展提供一些技术帮助。
本系统通过推荐算法为承租方个性化推荐房源,给生活中的难题带来技术上的解决方案,为智能化生活场景提供一定的参考价值。
1.3.研究现状
随着机器学习技术的逐渐成熟以及人工智能的发展,推荐系统目前是一块很大的研究领域,许多电商应用、新闻应用和短视频应用都开始使用推荐系统为用户推荐内容。
当前,诸如阿里巴巴和字节跳动等国内知名的互联网公司正在广泛使用推荐系统,
而像搜房网、58同城,这些房地产服务网络平台通常以信息检索为主,网站以统一格式发布房源数据,用户再通过条件过滤来检索网站上的房源数据。
目前对于推荐房产信息的研究并不是很多,文献[2]提出了混合业界常用的推荐算法,并建立双方互相评分的概念模型,通过承租方和出租方互相打分作为系统推荐的依据。
文献[3]提出了统计、分析用户访问网站时的操作行为,从中发现用户访问网站的规律和用户习惯进而对用户进行个性化推荐。
文献[4]提出了基于粒子群算法的房产推荐系统,该系统需录入房产信息内容,在指定的格式下,每一条房屋信息的属性都需要在信息录入的初期登记在数据库中。
1.4.研究内容
本文的研究内容主要是提出目前国内房屋租赁市场存在的一些问题,结合互联网信息推荐系统的应用场景,开发一款基于协同过滤的房源推荐系统。
通过协同过滤中的ItemCF算法为承租方用户推荐与其喜好类型相似的房源信息。
具体从以下三个方面入手:
(1)通过系统研究背景以及对推荐算法的现状进行分析,确定系统的开发方向和核心推荐模块的设计。
(2)在系统的详细开发上,确定合适的软件结构以及数据库的设计,本系统采用SpringBoot开发框架搭建,前端框架使用Layui,数据库使用MySQL关系型数据库和Redis缓存。
(3)系统的详细功能设计,包括用户注册登录、房源信息推荐等。
本文以房源推荐系统为研究对象,研究业界上常用的推荐算法,分析该房源推荐系统的设计与开发过程。
重点分析了推荐算法的原理和系统功能的实现,并对实现的系统进行了功能测试。
本系统选用的开发语言是Java,开发框架是SpringBoot,采用的开发工具是IntelliJIDEA,应用服务器是Tomcat,结合MySQL和Redis数据库进行实现,开发出基于协同过滤的房源推荐系统,帮助承租方和出租方提高操作效率,使工作流程清晰化且提高管理效率。
2.推荐算法研究与分析
2.1.推荐算法现状
目前推荐系统的发展非常迅速,基本上分为几大类:
基于流行度的推荐、基于内容的推荐、基于协同过滤的推荐、混合推荐等。
(1)基于流行度的推荐实际上就是热门内容的推荐,基于最高评分、最多购买、最多下载、最多观看等维度给用户进行推荐,优点是十分简单直接,对于新用户来说十分友好,因为新用户没有产生过任何历史行为记录,一些具有冷启动缺陷的推荐系统很难对其进行推荐。
不过,基于流行度的推荐只能推荐热门的内容,无法提供个性化推荐,因此在推荐系统中一般将其作为替补策略。
(2)基于内容的推荐是根据用户对Item进行点赞、收藏、浏览、评论等行为,获得用户的兴趣偏好,根据用户的兴趣偏好为其推荐相似的Item,优点是避免Item冷启动问题,并且只依赖于用户自身的行为,不涉及其他用户的行为,因此能够进行个性化推荐,缺点是推荐范围具有局限性。
(3)基于协同过滤的推荐是推荐系统中一种应用十分广泛的技术,行业中已经有了很多应用,其中应用最多的种类是基于用户的CF(User-basedCF)和基于项目的CF(Item-basedCF)。
UserCF的原理是找到与当前用户相似的用户群,将这些用户中比较流行但当前用户又没有浏览过的内容推荐给当前用户。
它的优势是具有多样性,能够帮助用户找到新类别的有惊喜的内容,缺点是计算复杂度较高。
而ItemCF的原理是计算所有Item之间的相似度,找出与当前用户喜欢的Item相似度最高的Item集合推荐给当前用户。
它的优点是用户的历史行为作为推荐解释,因此可解释性强,缺点是具有冷启动问题,即一个新用户在没有对Item进行任何操作时无法进行推荐。
(4)因为单一推荐算法各有优势和缺陷,所以在实际应用场景中很少直接采用单一算法来做推荐,而是采用混合算法来推荐,其中研究和应用最多的是结合内容推荐和协同过滤推荐的混合推荐。
考虑到本系统的数据集较为基础,功能量和用户数都比较少,如果采用基于UserCF的协同过滤推荐算法可能会导致算法占用资源太高、重复推荐等问题,因此决定变换采用基于流行度的推荐和基于ItemCF的协同过滤推荐,以协同过滤推荐为主,流行度推荐为辅,取长补短,为用户提供房源信息的推荐。
2.2.系统推荐算法分析
基于流行度的推荐算法较为简单直接,什么内容吸引用户,就给用户推荐什么内容。
它基于用户对项目的操作行为(通常是点击、评论、分享等)来获取项目的热度,进而获取热度高的项目推荐给用户。
本系统中,用户的操作行为有两种,一是点击,二是收藏。
当房源信息获得用户的一次点击,热度加1分;当房源信息获得用户的一次收藏,热度加2分。
基于协同过滤的推荐则根据用户的行为来进行推荐,一是通过给用户推荐和他兴趣编好相似的其他用户喜欢的内容,即UserCF;二是给用户推荐和用户本身喜欢的内容相似的内容,即ItemCF。
本系统采用ItemCF算法,Item等价于房源信息,用户喜欢某个房源的行为表现为收藏操作,算法运算过程主要分为两步:
(1)计算房源之间的相似度。
假设有用户A、B、C、D、E,他们各自的收藏如下:
A
a,b,d
B
b,c,e
C
c,d
D
b,c,d
E
a,d
根据他们的收藏列表构建倒排表,例如,房源a被用户A和用户E所收藏。
a
A,E
b
A,B,D
c
B,C,D
d
A,C,D,E
e
B
得到用户的收藏列表后,将列表中的房源两两加一,最后累加获得共现矩阵,矩阵中记录了同时收藏房源i和房源j的用户数,计算过程如图2.1所示。
图2.1共现矩阵计算过程
假设有房源i和房源j,它们之间的相似度取决于它们同时被很多的用户所收藏,同时收藏它们的用户数越多,相似度越高。
设N(i)为收藏房源i的用户数,N(j)为收藏房源j的用户数,|N(i)∩N(j)|表示同时收藏房源i和房源j的用户数,则房源之间的相似度Wij可以通过以下公式计算得出:
对共现矩阵进行遍历并去重,导入上面的公式就可以计算出房源之间的相似度。
(2)根据房源之间的相似度和用户的历史行为为用户生成推荐列表。
有了房源信息之间的相似度,就可以找到与当前用户收藏列表中的房源信息相似度高的其他房源信息,推荐给当前用户。
2.3.本章小结
本章主要分析了推荐算法的现状和一些基本定义,并分析了本系统推荐算法的原理和设计思路。
3.系统分析
3.1.系统可行性分析
在系统的设计和开发之前进行可行性分析是十分必要的,通过可行性分析我们能够明确系统开发时可能会出现的问题,同时确定这些问题是否能够解决,以及对于用户是否难以操作等。
本系统从技术、经济和操作三个方面进行了可行性分析。
3.1.1.技术可行性
本系统由Java语言进行开发;开发工具使用JetBrains公司出品的IntelliJIDEA,IntelliJIDEA对Java生态的支持范围十分之广,具有好用的快捷键和代码模板;数据库采用MySQL,它具有体积小、速度快、免费的特点;前端框架采用门槛较低、结构较为清晰、页面效果较好的Layui框架。
以上技术和工具均是当前成熟好用的技术方案,所以技术上可行。
3.1.2.经济可行性
在房屋租赁市场中,房屋中介需要向寻租者收取一定比例的中介费,这无疑增加了寻租者的额外负担。
而采用自动化、全天化的房源推荐系统,寻租者不仅可以省去中介费用,同时大大减少了找房的时间成本和沟通成本。
在当今的互联网时代,计算机、手机等电子产品几乎人手一部,硬件方面是基本满足的,而基于硬件的软件开发也可以做到接近零成本。
出租方也能借助该系统充分展现自己的房屋特色,找到合适的房客。
系统为寻租方和出租方带来了很大的便捷,所以在经济上可行。
3.1.3.操作可行性
现如今许许多多的人基于都能用个人电脑上网,就算没有电脑或者不方便使用笨重的电脑,也可以使用手机上网,所以硬件条件是可以满足的。
本系统为B/S架构,只要使用浏览器便可随时使用,且界面美观、操作简单、非常容易上手,所以,在操作上可行。
3.2.系统需求分析
3.2.1.需求概述
随着城市流动人口的增加,房屋租赁市场蓬勃发展。
与此同时,传统的房屋中介不仅加重了房屋承租者的负担,承租、出租双方的交易过程也变得十分繁琐。
因此,承租、出租双方迫切需要一种低成本、便捷的房源推荐平台,以取代传统中介机构的各种弊端。
本项目实现了一个基于协同过滤的房源推荐系统,通过算法为用户进行房源信息的推荐。
推荐系统在一方面减轻了寻租方的时间、交通成本,另一方面也为出租方提供了一个范围更广的销售渠道。
具体来说,对于承租方用户,当账号未登录时可以查看按热度排行的房源信息,当账号登录时,系统会根据用户的历史行为通过算法进行个性化推荐,将用户想看的内容尽可能的呈现出来,减少了用户在寻找信息所花费的时间,提升了用户体验;对于出租方用户,只需注册好账号就可以在系统中发布自己想要出租的房屋信息,还可以查看自己的房屋信息的点击量和收藏量,帮助出租方调整房屋的信息发布,尽快达到将房屋租出去的目标。
3.2.2.推荐模块需求分析
本系统变换采用基于流行度的推荐算法和基于ItemCF的协同过滤推荐算法。
(1)基于流行度的推荐:
当用户是游客或者新用户时,系统对当前房源信息的热度进行计算并排序,返回按热度从高到低排列的房源信息。
(2)基于ItemCF的协同过滤推荐:
当用户对房源信息进行了点击、收藏,系统根据当前用户历史行为里的房源信息返回与之相似度高的其他房源信息。
总的来说,本系统推荐模块核心是基于ItemCF的协同过滤推荐,而基于流行度的推荐则作为协同过滤的补充,这样能够解决协同过滤的冷启动问题。
3.2.3.系统功能需求分析
(1)登录、注册模块:
游客只能浏览按热度排行的房源信息,无法进行其他操作。
用户可以注册账号,登录系统之后就可以体验系统的各种功能。
(2)查看房源信息模块:
未登录系统的游客只能查看按热度排列的房源信息。
新用户进入系统后,看到的房源信息与游客相同。
新用户遇到中意的房源,可以点击收藏将其添加进自己的收藏列表,之后系统将会分析用户的收藏列表,将相似度高的其他房源信息推荐给用户。
用户的收藏行为影响系统的推荐结果。
另外设置一个按钮,当用户不满意当前推荐的信息时,点击可以更换下一批。
(3)发布房源信息模块:
出租方用户注册登录系统后可以把自己名下空闲的想要出租的房源发布出去,填写房源的基本信息、上传房源的宣传图片,等待承租方的联系。
此外还可以查看自己已发布的房源信息的点击量和收藏量等。
(4)修改个人信息模块:
已注册的用户登录系统后可以随时修改自己的头像、登录密码和密保手机号码。
3.3.本章小结
本章介绍了系统的可行性分析,主要从技术、经济、操作三方面展开了介绍,并从功能方面对系统的需求进行了分析。
4.系统设计与实现
4.1.系统设计框架
目前基于B/S模式的信息管理系统大多采用MVC架构设计,即模型(Model)、视图(View)、控制器(Controller)三层架构。
(1)模型通常负责访问数据库,对数据进行增删改查等操作,是应用程序中与数据进行交互的部分。
(2)视图依据模型数据创建,负责显示模型数据。
(3)控制器负责处理用户的请求,通常从视图中获取用户的请求参数,调用模型操作数据,最终将结果返回给用户。
MVC模式就像一台电脑,模型好比是硬盘里的文件,视图好比是显示器,控制器好比是CPU。
每一层各司其职,缺一不可,大大简化了应用程序的开发。
图4.1MVC架构示意图
本系统以MVC模式进行开发,系统架构如图4.2所示。
图4.2系统开发架构
4.2.系统推荐模块的设计
当游客进入系统时,推荐模块对当前房源信息的热度进行计算、排序,返回按热度从高到低排列的房源信息;当新用户进入系统时,推荐模块首先返回热门的房源信息,此时对于新用户的推荐和对于游客的推荐是一致的,当新用户对房源信息进行了收藏,推荐模块才会调用协同过滤方法分析用户的收藏列表,为用户推荐相似度高的其他房源。
推荐模块运行流程如图4.3所示。
图4.3推荐模块运行流程
4.3.系统功能模块设计
(1)登录、注册模块:
前台网站首页设置一个房源信息的浏览入口,未登录的游客可以预览按热度排行的房源信息,并可以点击某个房源的预览信息查看详细信息,除此之外无法进行其他操作。
游客的点击也会增加房源的点击量。
游客进行注册、登录之后就可以体验网站的各项功能,包括收藏、推荐等。
用户注册流程如图4.4所示,用户登录流程如图4.5所示。
图4.4用户注册流程图
图4.5用户登录流程图
(2)查看房源信息模块:
该模块以卡片形式展现系统推荐的N个房源信息,游客可点击查看详情,用户可收藏。
具体流程如图4.6所示。
图4.6查看房源信息流程图
(3)发布房源信息模块:
出租方用户登录系统后,可以将自己名下空闲的想要出租的房源发布到系统中,填写好房源的信息就可以提交了。
房源的详细信息包括房屋图片、地址、房东联系方式以及房屋的简介等。
房源信息发布成功后,出租方可以修改、删除已发布的房源信息,还可以查看点击量和被收藏量。
具体流程如图4.7所示。
图4.7发布房源信息流程图
(4)修改个人信息模块:
用户登录系统后可以修改头像、登录密码和密保手机号码。
具体流程如图4.8所示。
图4.8修改个人信息流程图
4.4.系统数据库设计
4.4.1.E-R模型
本系统数据库表主要有房源信息表、房源热度表、用户信息表、用户收藏表,E-R图如图4.9所示。
图4.9系统E-R图
4.4.2.数据库表
(1)用户信息表
用户信息表存储用户的相关信息,表结构如下:
字段名
字段描述
数据类型
允许空值
键型
id
用户id
int
否
主键
username
用户名
varchar
否
password
用户密码
varchar
否
phone
手机号码
char
否
avatar_path
头像地址
varchar
否
create_time
创建时间
datetime
否
(2)房源信息表
房源信息表存储房源的相关信息,表结构如下:
字段名
字段描述
数据类型
允许空值
键型
id
房源id
int
否
主键
thumbnail
缩略图地址
varchar
否
images
详情图片地址
varchar
否
address
房源地址
varchar
否
introduction
简介
varchar
是
(3)房源热度表
房源热度表存储房源信息的热度,表结构如下:
字段名
字段描述
数据类型
允许空值
键型
house_id
房源id
int
否
主键、外键
click_count
点击量
int
否
mark_count
收藏量
int
否
(4)用户收藏表
用户收藏表存储用户的收藏信息,表结构如下:
字段名
字段描述
数据类型
允许空值
键型
id
收藏id
int
否
主键
user_id
用户id
int
否
外键
house_id
mark_time
房源id
收藏时间
int
datetime
否
否
外键
4.5.系统实现
4.5.1.推荐模块的实现
推荐模块主要包含流行度计算函数以及ItemCF算法计算函数。
流行度计算函数较为简单,通过每个房源信息的点击量和收藏量,按照点击加1分、收藏加2分,计算当前各个房源信息的热度,按降序排列。
ItemCF算法计算函数传入当前用户的id,遍历所有用户的收藏列表,根据第二部分的模型构建共现矩阵,并按照相似度计算公式计算出各个房源信息之间的相似度,以相似度从高到低的顺序进行排列,最终返回排好序的房源信息集合。
4.5.2.系统功能的实现
系统功能围绕用户的操作来实现,