第一章 绪论
1.1 研究背景与意义
伴随 Internet(互联网)和 IT(信息技术),特别是 SNS(社交网络)、E-commerce(电子商务)和 LBS(基于位置的服务)的快速发展,以及云物移大智(云计算、物联网、移动互联网、大数据和智慧城市)等新概念和新技术的出现,数据增长的速度飞快。用户获取信息很困难,从而引起“信息过载”问题。有许多网络应用(如门户网站,百度谷歌等搜索引擎),追根究底是帮助用户过滤无用信息。然而,这些所谓的工具,只能满足非个性化的需求,但是对于个性化需求却无法满足。所以,作为“个性化服务”的一个分支——推荐系统,通过分析“用户-项目”之间的二元关系,帮助用户找到感兴趣的项目。目前,推荐系统作出了巨大的进步,在电子商务,信息检索,以及移动应用,电子旅游,网络广告等多种方面应用。
然而,由于数据来源的多样性(互联网日志、传感器采集和移动互联网位置偏好信息等)和数据种类的繁多(结构化、半结构化和非结构化等),推荐系统的数据储存和计算并行化经受了严重的考验。同时,传统推荐系统的算法[5](如:基于协同过滤的推荐算法、基于内容的推荐算法、基于知识的推荐算法和混合推荐算法等)很少关心上下文环境(如时间、地点、心情等),它们往往仅关注“用户-项目”之间的二元关系。但是,只关注“用户-项目”关联关系是不可能生成行之有效的推荐的。在一些特殊情况下,比如,有的人在“心力憔悴”时想被推荐一些愉快的音乐给他,有的人在“郊游”时想要被推荐附近比较好的烧烤、河畔、超市等信息给他, 有的人喜欢在“晚上”读被推荐的“报纸”。
最近,可穿戴设备、传感器设备、智能家居、物联网设备等新应用的出现,为上下文感知推荐系统的研究与设计创作了机会。我们是以智能手环为例,当智能手环监测到身体各项健康指标的时候,会记录这个“健康指标”上下文信息,接下来会为用户推荐健康的饮食和水果等。
……
1.2 国内外研究现状
(1) 协同过滤推荐:协同过滤推荐是源于“集体智慧”的基本思想,利用老用户历史的行为或记录预测当前相似的新用户最可能喜欢哪些商品。如果用户在过去有访问或收藏或购买过相同的商品的偏好,那么在未来也会有类似的偏好。
(2) 基于内容的推荐:基于内容的推荐可以描述如下:推荐系统只需要二类信息就能完成推荐任务——商品特征的描述和用户偏好的记录(比如喜爱的商品的特点)。虽然这种方法需要关于商品和用户喜好的额外信息,但它不需要评分记录和用户群体,即使一个用户也可以生成推荐列表。
(3) 基于知识的推荐:基于知识的推荐是不需要评分数据就可以推荐的,其推荐结果要么是以用户需求与产品之间相似度的形式,要么是根据明确的推荐规则。相比较而言,基于知识推荐的交互性很强,这个基本性质也是其作为会话式系统的原因。基于知识推荐分为二类分别是:基于约束的推荐——会符合推荐规则的所有商品集合中搜索得出要推荐的商品集合;基于实例的推荐——着重于根据相似度衡量标准检索那些与特定用户需求相似的商品。
许多研究者针对传统推荐算法在处理大规模海量数据时遇到的效率瓶颈问题,将其设计的推荐算法部署于Hadoop并行化平台,以期望在保证结果准确的前提下,通过Hadoop提高推荐算法执行的效率。Mahout[28]是Apache Software Foundation旗下的顶级开源项目,它由Lucene衍生而来,同时也是基于Hadoop框架的,主要包含数据挖掘、机器学习、推荐系统等若干算法库。本文试图将Hadoop与Mahout相结合(但是在研究算法理论的时候不会涉及Mahout,只有在实际应用的时候部分使用到,不做为重点内容)以解决海量数据环境下上下文感知推荐算法实施的效率及推荐的精准性问题。
……
第二章 相关技术研究
2.1 Hadoop 系列技术
整个 Hadoop 平台包括 Hadoop 内核、MapReduce、Hadoop 分布式文件系统(HDFS)以及一些相关项目,有Hive和HBase等等。Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS 的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。
HDFS 内部实现算法是很高效的分布式算法,访问数据和数据的存储被分布在服务器集群中,具有可靠性,可以有多个备份,多个备份被分布到多个集群服务器上,是传统存储架构所不能比的。
如图 2.1 所示,HDFS 只有一个 NameNode,可以有多个 DataNode。客户端写入数据的时候,要先经过 NameNode 进行 Metadata,然后再写入;而读取数据的时候,可以直接读取 DataNode。
Flume 是海量日志采集工具,具有高可用的,高可靠的,分布式的等特点。是由Cloudera 公司提供的。当前 Flume 有两个版本:Flume 0.9X 版本的统称为 Flume-og,Flume1.X 版本的统称为 Flume-ng。Flume-ng 改动比较大,不兼容 Flume-og。Flume 的收集数据是通过在日志系统中定制各类数据发送方实现的,而 Flume 可以对数据进行简单处理,并写到各种可定制的数据接受方。
Storm 是由 BackType 开发,由 Twitter 公司将其开源的,具有分布式的、容错的实时计算系统。Storm 被用于“连续计算”(对数据流做连续查询)、“流处理”(实时处理消息并更新数据库)和“分布式 RPC”(以并行的方式运行昂贵的运算)中。GitHub 上的最新版本是 Storm 0.9.3,编程语言是用 Clojure 写的。
……
2.2 推荐系统
推荐系统有 3 个主要的模块:推荐对象模型、用户模型和推荐算法。推荐系统把“用户模型”中个人偏好信息和“推荐对象模型”中的商品特征信息进行匹配,使用“推荐算法”进行计算,找到用户可能感兴趣的推荐对象,最后把结果推荐给用户。
基于内容的推荐可以描述如下:推荐系统只需要二类信息就能完成推荐任务:商品特征的描述和用户偏好的记录(比如喜爱的商品的特点)。虽然这种方法需要关于商品和用户喜好的额外信息,但它不需要评分记录和用户群体,即使一个用户也可以生成推荐列表。
在很多情况下上面二个推荐方法并不是最好的选择。比较经典的是,我们并不会非常频繁地购买房屋、汽车或计算机。所以在这种情况下,纯粹的协同过滤系统会因为评分数据很少而效果不好。另外,时间跨度方面因素也很重要。比如,5 年前对计算机的评分对基于内容推荐来说就不太合适了,对汽车和房屋这类产品也一样,因为用户偏好会随着生活方式或家庭状况的改变而改变。最后,在一些更为复杂的产品领域,比如汽车,用户经常希望明确定义他们的需求,比如“汽车的最高价是 max,颜色应该是灰的”。这样的情况下,协同过滤和基于内容的推荐架构不是很擅长的。
上面提到的问题,基于知识的推荐可以帮我们解决的。基于知识的推荐是不需要评分数据就可以推荐的,其推荐结果要么是以用户需求与产品之间相似度的形式,要么是根据明确的推荐规则。相比较而言,基于知识推荐的交互性很强,这个基本性质也是其作为会话式系统的原因。更为广义上“引导用户在潜在推荐项中找到感兴趣的商品,或者产生这些商品作为输出结果”的系统。
……
第三章 基于 HADOOP 与内容的上下文感知推荐技术 ..................... 24
3.1 问题引出 ........................................................ 24
3.2 基于内容的推荐技术 ............................................... 24
3.2.1 算法建模 ...................................................... 24
3.2.2 用户兴趣向量的表示 ............................................ 24
3.2.3 用户兴趣向量计算 .............................................. 25
3.2.4 利用余弦相似度公式来进行推荐 .................................. 25
3.3 基于内容的推荐整合 HADOOP 和上下文信息 .......................... 25
3.3.1 基于内容的推荐技术整合 Hadoop ................................. 25
3.3.2 基于内容的推荐技术整合上下文信息 .............................. 27
3.4 本章小结 ........................................................ 27
第四章 基于 HADOOP 的离线上下文感知推荐系统设计 ................... 29
4.1 总体架构 ........................................................ 30
4.2 数据采集 SA 架构设计 ............................................ 30
4.2.1 名词解释 ...................................................... 30
4.2.2 SA 数据采集原理 ................................................ 31
4.2.3 埋点规则 ...................................................... 31
4.2.4 URL 解析 ....................................................... 37
4.3 ETL 数据处理设计 ................................................. 39
4.3.1 ETL 处理选型 ................................................... 39
4.3.2 Hive 模型设计 .................................................. 40
4.3.3 Hive 开发 ...................................................... 43
4.3.4 Hive 测试 ...................................................... 45
4.3.5 Hive 调度 ...................................................... 46
4.4 HBASE 数据库设计 ................................................ 47
4.4.1 关系模型(范式) .............................................. 48
4.4.2 NOSQL 数据模型 ................................................. 48
4.4.3 关系型数据库向 NOSQL 数据库转换 ................................ 48
4.4.4 设计 HBase 数据库模型 .......................................... 49
4.5 本章小结 .......................................................... 50
第五章 基于 HADOOP 的实时上下文感知推荐系统设计 .................... 51
5.1 总体架构 .......................................................... 51
5.2 FLUME+KAFKA+STORM+MYSQL 实时系统设计 .............................. 51
5.3 本章小结 .......................................................... 52
……
第六章 实验与分析
6.1 环境部署
公用硬件环境
离线软件环境
本文对基于 Hadoop 的上下文感知推荐系统,利用基于内容的推荐算法和基于上下 文的推荐算法整合后的 MapReduce 化。并且设计了相应的离线推荐系统和实时推荐系统的框架,并重点设计了离线推荐系统。本章对本文进行相应的总结,并今后的工作和研究做了一个展望。
……
结论
本文从绪论出发,从信息过载、个性化服务、大数据、普适计算和推荐系统等角度对上下文感知推荐系统的研究背景和意义做了介绍;以及传统推荐系统和上下文感知推荐系统的国内外研究现状;论述了本文主要研究的内容包括数据采集、数据处理、推荐生成、评价与改进等关键技术。
然后,本文主要介绍了文中使用到相关技术,包括 Hadoop 系列技术(Hadoop,HBase,Hive,Sqoop,Flume,Storm,Kafka 等),推荐系统的定义和常用的主要推荐方法,以及普适计算和上下文感知技术。
接着,本文重点研究了基于 Hadoop 与内容的上下文感知推荐算法。首先说明了基于内容的推荐系统的推荐过程分为 3 步来完成;然后对其中的每一步进行算法的建模;并且详细讲解了用户兴趣向量模型的计算,并应用“贝叶斯公式”来平衡点击分布中因促销因素等而导致的 PV 一段时间内很高,一段时间很低的影响;最后利用余弦相似度公式进行推荐。重点把基于内容的推荐算法、Hadoop 技术和上下文信息整合在一起。为了起到降维的作用,使用基于 MapReduce 的 K-Means 算法进行聚类降维操作;然后利用 Adomavicius et al.提出的多维评分函数,把推荐结果进行上下文信息的过滤等。
最后,简单概括了离线环境搭建和实时环境搭建的步骤。通过电商土特产推荐实例,详细分析离线上下文感知推荐算法的应用。并比较基于内容的推荐和基于内容的上下文感知推荐算法的各项性能指标,并对实验的结果进行分析。
参考文献(略)