基于协同过滤算法的旅游推荐系统的设计

2022-11-10 00:20陈勇CHENYong
价值工程 2022年30期
关键词:景区协同旅游

陈勇CHEN Yong

(陕西理工大学数学与计算机科学学院,汉中 723000)

0 引言

随着互联网技术的飞速发展和信息资源的日益丰富,信息量的增长速度远远超过了我们所能处理的速度。如何在如此庞大的信息量中找出我们感兴趣的信息是非常困难的。推荐系统的研究和发展已经成为电子商务行业中不可缺少的方法。它能够通过对用户的历史行为数据进行分析找到用户比较感兴趣的商品或项目,达到对用户实现个性化的推荐的目的。其中,使用协同过滤算法是推荐系统中应用最成功、应用最广泛的技术之一。它的主要特点是不依赖于产品的内容,而是完全取决于一类用户所表达的喜好。通常协同过滤算法可以分为基于内存的协同过滤算法和基于模型的协同过滤算法两大类。基于内存的协同过滤算法是使用整个用户商品数据库来计算用户和商品之间的相关性,并为用户推荐类似的商品,如Slope one算法、矩阵分解等。基于模型的协同过滤算法通过研究用户的历史数据对描述性模型进行优化,然后将其应用于预测评分,如神经网络分类、贝叶斯网络等。

目前旅游行业信息化程度越来越高,各个旅游景点的相关信息在各类系统中存储的数据量越来越大,用户查找自己感兴趣的旅游景区信息越来越困难。目前在旅游行业使用推荐系统进行各种信息的推荐方法还没有广泛使用,旅游景区网站或主流的旅游网只提供旅游景点信息发布、查询以及实现了在线旅游景点门票的购买服务等,而对旅游景区景点、促销等服务的推荐工作还没有广泛的应用,为此本文将推荐算法应用于旅游景区的推荐服务中。通过计算目标用户和别的用户的相似度,选择相似度大于设定阈值的用户为目标用户的邻居,以缩小邻居的搜索范围,然后利用邻居对目标项的得分来预测目标用户的目标项。最后,在预测出目标用户对所有未评级景区的得分后,可以采用Top-K方法将得分值最高的K个景区推荐给目标用户。该算法能较准确地预测出用户对旅游景点的评分。

1 协同过滤算法的概念

协同过滤算法是推荐算法中比较经典常用的一种,它主要包括基于内存的协同过滤和基于模型的协同过滤两种算法。前者主要根据用户的历史数据进行相关的推荐,它使用领域的方法又可以分为基于用户的协同过滤算法和基于项目的协同过滤算法。

1.1 基于内存的协同过滤算法

基于内存的协同过滤算法一般采用最近邻方法,该算法首先利用用户的历史偏好信息来计算出用户之间的距离,其次利用目标用户的邻居用户对产品的评价的加权值来预测目标用户对特定产品的偏好。推荐系统根据偏好程度推荐目标用户。该方法包括基于用户的协同过滤算法和基于项目的协同过滤算法。基于用户的方法根据用户之间的评分行为的相似性来预测用户的评分。这两种方法的原理是不同的,因此在不同的应用场景下,它们的表现也不同。

1.1.1 基于用户的协同过滤算法

基于用户的协同过滤(User-based CF)主要思想是以往具有相似评分的用户应该具有相似的兴趣,这样就可以根据相似用户评分数据估算目标用户对某一项目的未评分数据值,原理示例如图1所示。在图1中,箭头指向用户指向该项目表示用户喜欢引用该项目,并且该项目指向用户代表以向目标用户推荐该项目。对于这三个用户,用户A和用户C喜欢A项和C项在一起,而用户B的偏好与其他两个用户相交不大,因此我们可以得到用户A和用户C的兴趣偏好相似,因此根据推荐原则,用户C喜欢但用户A没有评分的D项可以推荐给用户A。

1.1.2 基于项目的协同过滤算法

而基于项目的协同过滤算法(Item-basing CF)根据项目考虑问题,但算法本身并不是根据项目本身的特性来判断项目之间的相似性,而是通过用户行为来判断项目之间的相似性。如图2所示,用户A和用户C首选的项目中的公共项目是项目A和项目D。根据算法本身的原理,可以得到A项与D项相似,因此与A项相似的D项可以在用户B喜欢A项时相对推荐。

1.2 基于模型的协同过滤算法

基于模型的协同过滤算法和基于内存的协同过滤算法有着本质区别。前者倾向于在寻找关联的协作邻居用户之前建立模型(建立用户浏览、点击、购买等信息的综合用户偏好模型),将模型与协作邻居用户进行比较,预测用户的偏好,将项目集合划分为多个模块,根据用户的模型,对协作邻居用户的模块单元进行分类,筛选出与用户模型最匹配的模块集,并向用户推荐内容。它使用机器学习和数据挖掘技术从训练数据中确定模型,并使用模型来预测未知的商品得分。常见的模型有聚类模型、贝叶斯模型、矩阵分解等。

聚类算法模型是通过选取合适的距离计算方法对数据进行聚类,同簇中的数据具有较高的相似度,数据间距离小;不同簇中的数据相似度较低,数据间距离大。现已被广泛应用于多个研究领域。在使用聚类算法的推荐系统中,系统会将相似兴趣的用户或相似特征的物品聚集到同一类簇之中,相似度计算在目标对象最终所属的类簇中进行,同样基于相似度由高到低的规则在所属类簇中选取邻近集合,形成最终的推荐。除了使用聚类模型外,通常还可以使用贝叶斯模型、矩阵分解、回归模型等来快速预测用户在某个项目上对应的评分。

1.3 基于协同过滤的旅游推荐系统

在基于协同过滤的旅游推荐系统中,主要通过计算各个项目之间的相似度,根据用户之间的相似度对项目进行预测。主要利用“用户-项目评分矩阵”进行推荐。旅游推荐系统主要针对用户信息和景区信息进行计算。基于用户信息主要从历史用户数据中寻找与其爱好相似、兴趣相投的用户,找到相似用户集之后,通过分析这些历史用户的历史行为来挖掘他们的其他喜好和行为信息,并根据这些信息来完成对目标用户的喜好和行为预测给出推荐。

2 旅游景点推荐系统设计与实现

2.1 总体架构设计

该系统充分利用景区旅游资源,为游客提供特色旅游服务,是实现个性化信息服务的有效手段。系统采用协同过滤算法为核心部分,根据用户的需求信息和产生的历史记录,向游客推荐符合用户需求的旅游资源信息。采用基于数据库的方式实现以网络技术为核心的B/S模式,设计了业务应用层、模型层和数据采集层三个结构层次。系统结构层次如表1所示。其中业务应用层主要展示系统的推荐结果;模型层要是将使用协同过滤算法应用到推荐系统中对用户的信息数据进行计算,实现对游客进行旅游信息主动推荐功能。该层通过在数据库中提取推荐算法和景区分类所需要的相关数据,执行相应的推荐算法产生出推荐结果。数据采集层通过网络爬虫软件采集旅游景区网站和主流旅游网站上的大量旅游信息数据。或者通过与旅游相关的APP进行连接,实现旅游信息的及时获取。

表1 系统结构层次表

2.2 主要功能

该旅行推荐系统使用Struts来实现视图层和控制器层之间的交互,而Hibernate用于数据持久化。前台页面使用JSP技术来制作,后台系统使用JAVA语言来实现,推荐算法部分用python脚本来实现,服务器采用tomcat,MySQL为数据库。系统由管理员端和客户端两部分构成。其中客户端由游客登录模块、景区评价模块、热门景区推荐模块、推荐模块等模块构成。当用户登录系统时,就会看到热门推荐模块。本模块的结果是从游客评分较高的景点中选出的。由于所有用户登录系统后看到相同的推荐结果,因此不具备个性化推荐功能。个性化推荐是通过计算用户和景区信息的相似度,结合协同过滤算法得到的用户专属推荐列表。每个用户的推荐结果都不一样。管理员端由用户信息管理模块和景点信息管理模块组成。主要负责对用户信息和景点信息进行各种管理。系统的功能模块图如图3所示。

2.3 推荐系统算法的实现

系统中推荐系统算法采用基于用户(User-based)的协同过滤算法。其主要思想是首先在用户集合中寻找与目标用户的爱好相似相近的相邻用户,接着使用目标用户的相邻用户对目标项目的评分来预测目标用户对目标项目的评分。其算法流程图如图4所示。

算法的核心部分执行的具体步骤如下:

①查找相邻用户N:首先计算目标用户与其他用户的相似度,相似度计算方法有很多种,常用的有皮尔逊(Pearson)相关系数,杰卡德(Jaccard)相似度以及余弦相似度几种传统的方法。算法中采用皮尔逊相关系数(Pearson)用来衡量旅游景点、用户之间的线性相关程度,取值范围在1和-1之间。皮尔逊相关系数的计算如公式(1)所示。

其中,Xi表示用户X对景区i的评分,Yi表示用户Y对项目i的评分表示用户X所有评分的平均值表示用户Y所有评分的平均值。

其次从中选择相似度大于预定阈值的用户作为目标用户的相邻用户。

②得分预测:用户u对景区s的预测公式如下:

其中U为目标用户u在景区s上有得分且相似度超过一定阈值的相邻用户集合,v为其中一个邻近用户,rv,s为用户v对景区s的评分,rv为用户v的平均评分。

③推荐阶段:在预测目标用户对所有未评级景区的得分后,可采用Top-K方法将得分值最高的K个景区推荐给相应的用户。

3 总结

目前旅游行业信息化程度越来越高,各个旅游景点的相关信息在各类系统中存储的数据量越来越大,本文将推荐算法应用于旅游景区的推荐系统中,提出了一种基于协同过滤算法的旅游信息推荐系统。该系统给用户提供更加个性化和人性化的旅游线路推荐,同时,也为旅游景区加强景区服务质量,提升旅游景区的品质起到了促进作用。

猜你喜欢
景区协同旅游
云南发布一批公示 10家景区拟确定为国家4A级旅游景区
蜀道难:车与路的协同进化
“摘牌”
“四化”协同才有出路
三医联动 协同创新
协同进化
出国旅游的42个表达
户外旅游十件贴身带