APP下载

基于旅游用户数据和评论的推荐系统的设计

2019-12-19周家昊李民

软件 2019年11期
关键词:推荐算法数据挖掘

周家昊 李民

摘  要: 随着国民生活水平的提高,旅游业蓬勃发展,旅游业与互联网的结合促进了在线旅游业的形成,也就是当代所说的“智慧旅游”。用户可以通过互联网了解各种各样的旅游信息,但是,日趋严重的过载旅游数据现象让旅游商们难以准确的挖掘出符合用户兴趣的个性化旅游信息,推荐出一个智慧的旅游路线更是如同大海捞针,而旅游推荐系统是解决这一问题的关键技术。本文基于个性化推荐算法的研究,将用户信息,用户评论,用户行为,用户历史订单,用户未来订单等多项数据作为算法的训练测试集,对功能性需求进行分析,开发了基于用户数据的推荐系统。

关键词: 旅游数据;推荐算法;数据挖掘

【Abstract】: With the improvement of the living standards of the people and the booming tourism industry, the combination of tourism and the Internet has promoted the formation of online tourism, which is also known as “smart tourism”. Users can learn a variety of travel information through the Internet. However, the increasingly serious phenomenon of overloaded travel data makes it difficult for travellers to accurately mine personalized travel information that suits their interests. It is more like recommending a smart travel route. A needle in a haystack, and a travel recommendation system is the key technology to solve this problem. Based on the research of personalized recommendation algorithm, this paper uses user data, user comments, user behavior, user history orders, user future orders and other data as the training test set of the algorithm, analyzes the functional requirements, and studies the system summary design.

【Key words】: Travel data; Recommendation algorithm; Data mining

0  引言

伴随着旅游产业收入快速增长,行业互联网化逐渐加深,在线旅游市场也快速增长。据Analysys监测数据,2008-2017年,中国在线旅游交易规模逐年递增,2017年交易规模达8923.3亿元;2018年前三季度中国在线旅游交易规模为7342.62亿元,逼近中国2016年全年在线度假旅游交易规模。此外,2018年全年中国在线旅游交易规模将达9900万亿元,万亿规模指日可待。从2009-2018年在线旅行预订用户规模变化情况看,用户规模逐年递增,通过线上渠道进行旅游预订的用户数量越来越多;截至2018年6月,在线旅行预订用户规模达到3.93亿,较2017年末增长1707万人,增长率为4.50%;约一半的网民会通过在线业务进行旅行预订。

旅游推荐系统利用数据挖掘技术实现一个模拟用户与旅行社交流的平台,通过获取并分析用户的旅游需求、偏好等信息,主动为用户推荐尽可能符合其需求的旅游信息或产品(包括單个旅游产品,如景点、酒店等;旅行包以及旅游线路),为用户制定各套更加智慧的,符合兴趣的旅游方案和产品。

对于旅游路线的推荐技术研究,在国内外已有一些基于旅游资讯,结合景点信息进行推荐。张晗等[1]人使用MD_Apriori算法对已有数据信息进行挖掘,设计出旅游服务智能推荐系统。王显飞等[2]人以会话的形式与用户进行交互,在不断的交流中提取出用户的兴趣点,结合用户的兴趣设计出基于约束的旅游推荐系统。朱全[3]设计的利用加权关联规则进行数据挖掘的智慧旅游推荐系统。吕红亮等[4]人提出基于PageRank的一种改进算法来提供个性化旅游路线推荐服务,是以用户,景点,线路三者为顶点,相互关联为边来表达用户与物品间的偏好关系,计算出其顶点相对推荐用户顶点的相关度,并对其进行排名,最后将名次靠前的旅游路线推荐给目标用户。国外学者Krumm[5]于2004年提出利用地理信息系统对旅游信息进行分析和推荐的系统服务,运用最短径算法向用户推荐个性化旅游路线。HUANG.Y和Bian.L[6]在2009年,提议使用异构在线信息分析来推荐目标用户的旅行路线,该研究主要使用贝叶斯网络技术,还涉及旅游和旅游兴趣的信息指标。Chodhury等[7]人于2010年以Web Albums为数据支撑,对Web Albums进行分析,提取相关信息数据,系统根据提取出的信息自动向用户推荐旅游线路。当前的各种研究对旅游路线推荐系统的发展作出了很大的贡献,但是依然有一些问题或者某些领域上的困难需要我们去攻克,例如将用户个人信息作为兴趣点的一个参考因素,以及对于新的旅游路线的出现等冷启动问题。

1  个性化推荐算法介绍

1.1  基于内容的推荐算法

基于内容的推荐根据用户过去喜欢的物品,为用户推荐和这些物品内容相似的其它物品。该方法在文本类推荐领域(如新闻、文档、网页、书籍等)得到了广泛应用。在本文中通过对用户历史订单评论文本数据的提取,对未来订单的预测。

1.2  基于协同过滤的推荐算法

协同过滤推荐是构建推荐系统最常用的一项技术,它可以直接通过用户过去的行为(如用户对订单的评分)来预测用户的偏好,它默认用户未来的兴趣爱好是和过去的兴趣爱好一致的,这项技术不需要其他任何领域知识作为参考。现有的协同过滤可分为基于模型(Model based)与基于记忆(Memory based)两种。其中,基于模型的协同过滤的目标就是从可观测评分数据中找到一些潜在的影响因子,利用数据挖掘与机器学习技术从训练数据中找到模式(patterns),利用产生的这些模式去计算用户对商品的评分。

基于记忆的协同过滤又可分为基于用户与基于物品两种:

第一种是基于用户(User-based)的协同过滤是推荐系统中最古老的算法[8]。其主要思想就是找到与目标用户偏好相似的邻近用户,并利用其邻近用户对目标物品的评分来预测目标用户对目标物品的评分。其具体步骤如下:

(3)推荐阶段:在预测目标用户对所有未评分物品的评分后,也可采取Top-K方法,将评分值最高的K个物品推荐给目标用户。

2  系统需求分析

2.1  应用场景介绍

(1)推荐结果的展示

前端的页面将会展示多种基于各种算法下对旅游用户数据的挖掘结果,这些挖掘结果将以订单服务的形式供用户浏览以及查询,此类典型的页面场景即“猜你喜欢”、“您是不是在找”。

(2)业务员用户的后台管理

业务员主要分析每一个用户的历史行为数据以及个人信息,包括点击、浏览、搜索、评论、交易等,挖掘用户的兴趣偏好数据,包括偏好列表、物品类别、物品标签等。另外,利用分类和聚类等机器学习方法对用户群体进行细分,以进行更精准的推荐,最终得到每个用户全方位的精准画像。使用多种推荐算法,得到待推荐的物品列表,使用机器学习的方法进行重新排序,得到最终的推荐物品集合,快速响应用户复杂行为操作,综合各种维度的分析挖掘结果呈现给用户。

(3)管理员用户的用户管理

管理员用户可以对任务和权限进行分配,普通用户只能进行浏览推荐内容,而业务员可以执行算法部分。

2.2  系统实现目标

系统实现的目标有:

(1)旅游用户可以查询推荐结果。

(2)系统业务员可以执行数据爬取、协同过滤、主客观分析、情感分析等综合算法模块,将相关结果导入数据库中并查看各阶段的执行进度。

(3)管理员可以对用户信息进行编辑、查看、增加以及删除。

2.3  系统性能需求

缓解评分矩阵稀疏性问题。虽然目前旅游业迅猛发展,产生了很大的在线旅游数据,但是这些数据集中表现为用户的信息数据以及浏览数据,因为某项旅游服务难以有大量的订单,或者说用户在享受完某项特定订单服务之后没有产生评论,也就是文本数据的缺失,因此本系统可以引導和收集用户的文本数据,并有效的缓解数据稀疏所带来的预测模型难以建立问题。

改善新的旅游订单服务和新的用户冷启动问题。在服务-用户两个端都可能出现新的单位,由此产生的历史数据的缺失,本系统会优化改善冷启动问题。

基于兴趣的时效性推荐。虽说人的兴趣在短期类不会发生改变,但是“说走就走的旅行”反应了用户在一定时间内的未来可能性订单是紧紧依附的它时下所产生的旅游数据的,如果系统的响应时间比较长,就会给用户造成不好的体验,因此要在短时间内抓住用户的胃口,也就是保证在推荐上的时效性。

3  系统概要设计与实现

本论文基于用户历史数据及用户评论的推荐系统主要采用MVC模式,结合Struts和Hibernate框架进行开发。

MVC是三个单词首字母缩写,它们是Model(模型)、View(试图)和Controller(控制)。这个模式认为,程序不论简单还是复杂,从结构上看,都可以分为三层。最上面的一层,是直接面向最终用户的“视图层”(View)。它是提供给用户的操作界面,是程序的外壳。最底下的一层是核心的“数据层”(Model),也就是程序需要操作的数据或信息。中间的一层,就是“控制层”(Controller),它负责根据用户从“视图层”输入的指令,选取“数据层”中的数据,然后对其进行相应的操作,产生最终结果。这三层是紧密联系在一起的,但有时相互独立的,每一层内部的比那花不影响其他层。每一层都对外提供接口(Interface),供上一层进行调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护的和升级。在本基于旅游用户历史数据及评论的推荐系统中,采用Struts实现View层和Controller层的交互,Hibernate则用于数据持久化。使用JSP页面来制作前台页面,后台系统代码使用JAVA,使用python脚本来写算法部分代码,而数据库使用My SQL进行信息的存储。另外,服务器采用tomcat。

3.1  功能模块设计

本论文结合用户需求,将基于用户历史数据和用户评论的推荐系统划分为登陆注册模块,查询推荐结果模块,算法执行模块,管理用户模块等。总框架图如图1。

3.2  算法执行模块的实现

在前面章节已经介绍了基于协同过滤推荐算法的原理,主要是根据过往评分记录计算用户与用户之间的相似度和订单与订单间的相似度来预测用户对商品可能的评分。

基于用户的协同过滤相关代码如图2。

4  结语

基于用户旅游数据的推荐系统能够为旅行商开发一个信息化以及智能化的旅游APP,这是智慧旅游的一个重要体现。本论文研究了基于用户信息数据,用户评论,用户历史订单数据等相关数据的挖掘,也运用了情感分析,协同过滤等多种算法,从设计实验的预期效果来看系统基本上实现了预期需求,能够为用户提供相似度较高的旅游服务,但同时也存在不足。例如对于情感表达不明确的评论数据无法进行情感词的抽取,这对数据分析的准确性有一点折扣。总体而言,本系统的设计研究为智慧旅游,从旅行商角度,在给用户提供更加个性化和人性化的旅游线路获取了关键思路了关键思路,另一方面,旅游用户能获取一种接近理想化的旅游   线路。

参考文献

[1]张晗, 潘正运, 张燕玲. 旅游服务智能推荐系统的研究与设计[J]. 微计算机信息, 2006, 22(5-3): 170-171.

[2]王显飞, 陈梅, 李小天. 基于约束的旅游推荐系统的研究与設计[J]. 计算机技术与发展, 2012, 22(2): 141-145.

[3]朱全. 基于加权关联规则挖掘的智慧旅游推荐系统的设计与实现[D]. 湖北: 武汉科技大学, 2004.

[4]吕红亮, 王劲林, 邓峰. 一种个性化旅游推荐算法[J]. 网络新媒体技术, 2015. 5, 1(3).

[5]Krumm J Where will they turn: predicting turn propor-tions at intersections. Pers Ubiquit Comput. 2010, (14): 591-599.

[6]Huang Y, Bian L A Bayesian network and analytic hier-archy process based personalized recommendations for tourist attractions over the Internet. Expert Syst Appl. 2009, (36): 933-943.

[7]Chodhury MD, Feldman M, Amer-Yahia S, Golbandi N, Lempel R, Yu C Automatic construction of travel itineraries using social breadcrumbs. In: Proceedings of HT 2010, pp35-44.

[8]项亮. 推荐系统实践[M]. 北京: 人民邮电出版社, 2012.

[9]Tang J L, Hu X, Liu H. Social recommendation: a review[J]. Social Network Analysis and Mining, 2013, 3(4): 1113-1133.

[10]Jannach D, Zanker M, Felfernig A, et al. Recommender systems: an introduction[M]. Cambridge University Press, 2010.

猜你喜欢

推荐算法数据挖掘
基于并行计算的大数据挖掘在电网中的应用
一种基于Hadoop的大数据挖掘云服务及应用
数据挖掘的分析与探索
基于GPGPU的离散数据挖掘研究