随着Web2.0、信息技术的发展与网络媒介例如平板电脑以及智能手机的普及,人们已经从一个信息匮乏的时代迈向了信息呈爆炸式增长的时代,每天都会有铺天盖地的信息涌现在网络、手机上。显然,我们已经进入了大数据时代。与信息匮乏的时代相比,虽然选择多了,但是如何从信息的海洋中迅速定位有价值和感兴趣的信息,对于信息消费者是一个不小的挑战;同时对于信息生产者,如何把信息推送给合适的消费者,扩大信息辐射面,也是一件不简单的事情。为了解决信息过载给信息生产者和信息消费者带来的困扰,个性化推荐系统应运而生。
推荐系统通过分析用户的历史行为数据建立起用户对信息偏好模型,从而将用户与信息联系起来。推荐系统能够主动将信息推送给对其感兴趣的用户,这样用户也能从推荐系统中得到感兴趣的信息,从而使信息消费者能够从信息的海洋中迅速获取感兴趣的信息。
本课题的主要研究内容是实现一个支持多维度、灵活可扩展的推荐引擎框架。根据推荐引擎的原理,推荐引擎包括推荐算法、相似度计算、推荐过滤三个核心组件。本文的推荐算法选择在工业界和学术界广泛使用的协同过滤推荐算法;相似度计算主要包括杰卡德相似度、余弦相似度、欧几里德距离相似度、皮尔逊相似度四种算法,以适用于不同的应用场景;推荐过滤主要实现了用户行为过滤、物品平均分过滤、地理位置过滤三种过滤方式以提高推荐系统在不同场景下的准确性。本课题的多维度主要体现在简单的<用户,物品,评分>数据模型基础之上,引入了时间序列与地理位置两个上下文维度,时间序列主要通过时间衰减函数来平衡时间对相似度计算与兴趣度计算的影响;而地理位置主要通过计算物品之间的距离来实现推荐结果过滤。
推荐引擎框架的实现基于简单易用的Hadoop Map Reduce分布式编程框架,底层文件存储为Hadoop分布式文件系统。
本框架现已应用于航班预定系统,根据用户的历史预定酒店信息给其推荐感兴趣的酒店。为了适应该系统的需求,增加了推荐结果解析,并将结果保存在数据库中,以更友好的形式与航班预定系统集成。