路丹,陈占芳
(长春理工大学计算机科学技术学院,长春130000)
民宿是对闲置住宅的充分利用,它结合了当地的农林牧渔等各种自然生态环境,为游客提供了不同于酒店和宾馆的生态、文化体验。它通过对乡村资源充分利用,促进了当地经济的发展。
以民宿作为住宿场所是一种新型的旅游形式,虽然目前民宿旅游产业不断发展,但是民宿仍然存在以下主要问题:(1)民宿数量的增长。如今的民宿数量众多,民宿的环境和体验却参差不齐,游客经常无法分辨民宿的服务质量,导致游客的体验不佳。(2)民宿种类多样化。随着经济文化的不断发展,大量民宿经营者不断涌入民宿旅游业,民宿的装修风格和住宅类型也在不断增多。民宿种类的多样化也给游客带来了搜索和选择上的不便。
以上问题导致目前很多民宿推荐系统不能根据游客群体的旅游喜好来提供个性化的民宿选择服务。随着人们对民宿的接受程度的提高,具有智能分析技术的民宿推荐系统是未来民宿系统的发展趋势之一。由于民宿自身的建设特点,每位需要住宿的游客都有选择民宿的潜在可能性,协同过滤技术可以辅助游客快速的发现符合自身的民宿,根据自身兴趣自主的选择民宿的种类和类型。因此,本文将协同过滤技术应用于民宿系统中,游客可以通过个性化民宿推荐系统选择品味相符的民宿,系统的管理者通过对游客对民宿的评价等历史数据来完善该系统的内容,使系统的用户手动搜索民宿变为系统主动为用户推荐民宿,从而提高游客的民宿体验。
随着网络时代的到来,如电子商务、网络购物等不断发展,网络持续输出大量的数据,这就为用户对数据的选择带来了困难,用户无法在短时间内选择符合自己需求的数据。而此时个性化推荐技术应运而生,并随着科学技术的进步逐渐深入到人们的日常生活当中。有效地解决了大数据带来的影响。个性化推荐是通过对用户的静态数据和动态数据进行分析处理后,描绘用户画像,以此得出符合用户特征的信息,帮助用户快速发现有用信息,向用户提供个性化的信息服务和决策支持,以解决信息量大的问题。目前个性化推荐技术可以分为基于内容的过滤推荐技术、基于关联规则的过滤推荐技术和基于协同过滤的推荐技术。
由于人们喜欢的东西具有相对的稳定性,所以基于内容的协同过滤在推荐时便利用了这种相对的稳定性,它根据用户过去喜欢的项目,通过对项目的特征分析,比较项目之间的相似性,为用户推荐和他过去喜欢的项目相似的项目。
不同项目之间有潜在的关联性,而基于关联规则的系统过滤推荐技术的推荐思想便是通过对项目的分析,得出项目之间的潜在关联规则,以此提高推荐的质量。
协同过滤推荐技术是推荐系统最常用的推荐方法,它主要通过考虑用户与用户之间或者项目和项目之间相似度,来向用户推荐项目。具有以下的优势:一是推荐对象的范围比较广,对推荐对象无特殊要求,能够过滤难以进行机器自动基于内容分析的信息。如艺术品、音乐等。二是能够基于一些复杂的,难以表达的概念(信息质量、品位)进行过滤。因此协同过滤推荐技术被广泛应用在电商网站中。
目前对协同过滤技术的研究已经取得了阶段性的成果,但仍然存在以下问题:
(1)稀疏性问题(Sparsity):在一个的推荐系统中,在通常情况下一个用户只是对符合自己兴趣的项目评分,而大部分项目仍然没有被评价过。在所有的项目中,被用户评分的项目占总体项目的比重非常小,导致用户—项目评分矩阵中的数据存在稀疏性的问题,严重影响了系统的推荐质量。
(2)冷启动问题(Cold Start):冷启动问题是协同过滤推荐系统的瓶颈,制约着推荐系统的推荐效率。系统运行初期,用户量和项目量都较少,此时系统只能利用用户的注册信息,一般无法获取用户额外信息,如用户的兴趣爱好等个性化的信息。系统中也不存在用户对项目的评分数据,因此一般的推荐方法无法对新用户进行准确的推荐。而只有为新用户进行有效推荐,才能更好地为系统保留客户和挖掘潜在客户。
(3)扩展性问题(Scalability):随着系统用户的不断增多和系统中项目数量的剧增,导致系统的规模不断扩大,无论从算法上还是从硬件上都无法适应。扩展性问题成为制约系统推荐效率的重要因素。
协同过滤技术从算法上可以分为基于用户的协同过滤算法和基于项目的协同过滤算法。
本文在民宿推荐系统的设计中结合了协同过滤推荐算法,为目标游客进行个性化的民宿推荐,在最短的时间内高效率的帮助用户找到需要的民宿。系统中使用了一种基于协同过滤的民宿推荐算法,算法的具体流程如下:
(1)根据数据库中的民宿的信息,构建民宿的特征向量,即民宿模型。
(2)根据用户的登录/注册等基本信息,判断当前用户是否是新用户,若系统中有用户的历史预定或评论打分记录,则不是新用户,否则为新用户。
(3)对于新用户,采用热门排行榜进行推荐,即新用户没有对任何民宿产生过评价或打分的行为,在不确定的情况下,其他人的行为便具有最大的参考价值。我们通过计算民宿的打分得出分数排行榜,选择热门的民宿推荐给目标游客。
(4)对于老用户,系统采用基于项目的协同过滤算法为其进行推荐。
本文通过对民宿信息的分析,构建民宿画像,设计了系统的框架图,如图1所示。
图1 系统框架图
该民宿推荐系统的框架包括三个层次,第一层是用户访问层,第二层是个性化推荐引擎层,第三层是知识存储层,用户通过用户访问层如登录/注册、浏览/评价/反馈等操作向系统发送请求,系统通过对用户静态数据(用户的基本信息,如性别、年龄、职业、住址、消费等级和消费周期等信息)和动态数据(用户的兴趣爱好、历史访问记录和行为类型等信息)进行分析和处理
后,构建出用户的用户画像,个性化推荐引擎将具体的推荐算法和用户画像及其他推荐算法相结合,向用户推荐民宿,同时用户可以通过对系统中的民宿进行预览、评价、打分等操作来影响推荐的结果。而后台则可以通过对用户历史数据的分析来优化系统。知识存储层存放系统所需要的各种表信息等基础数据以及系统分析处理后有利于推荐质量的数据,如民宿画像、用户画像、用户访问日志等数据。
在整个民宿推荐系统中,民宿和用户是两大目标主题,为实现对目标游客的个性化推荐,本系统主要包括的功能模块如图2所示:
图2 系统功能结构图
(1)用户端。用户端包括登录/注册、查看推荐、预定民宿、浏览评分和用户评价。用户通过登录/注册进入系统中,用户进入系统后,系统可以捕获用户的特征信息,并存入信息库中。查看推荐是用户进入系统后查看系统有针对性的为目标用户推荐的民宿。预定民宿可以预定指定的民宿。用户可以通过浏览评分模块对民宿进行浏览和评分。用户评价是用户对民宿进行的文字评价。
(2)后台管理。后台管理也即系统管理,包括访问日志、热门排行榜和分类检索。热门排行榜是系统根据用户对民宿的预定以及评分自动计算出热门的民宿,推荐给目标用户。用户通过分类检索,选择自己感兴趣的民宿类型。访问日志是记录用户的民宿浏览记录,以此得出用户的个性化信息,并存入系统后台的用户兴趣库中。
根据民宿推荐系统具体业务逻辑需求,分析数据库的表结构包括:用户基本信息表(users)、民宿基本信息表(hotels)、打分信息表(rank)、民宿近似度表(hotel⁃Similar)、用户近似度表(userSimilar),表与表之间的关系如图3所示:
图3 数据库表设计
用户的静态数据,如用户的性别、职业、联系电话、年龄、婚姻状况、消费周期和消费等级等存放在用户基本信息表中;民宿信息表中的字段主要包括民宿类型、民宿图片、民宿描述、民宿地址、民宿城市、民宿所含项目等;用户的评分信息,如民宿编号、用户编号、评分时间和分值存放在打分信息表中;民宿相似表和用户相似度表是通过协同过滤推荐算法计算得到的信息,是个性化推荐的直接来源。
为解决民宿系统中不断增多和用户量和剧增的民宿数量,本文设计并实现了基于协同过滤的个性化民宿推荐系统。将协同过滤推荐算法和用户画像相结合,通过个性化推荐提高整个系统中民宿的利用率。实验表明该系统运行具有稳定性,对于将协同过滤推荐算法应用到民宿系统中具有参考意义。