摘要
当前的互联网中,大数据个性化推荐正炙手可热,各类与之相关的产品层出不穷,本文针对这一热点,综述了大数据个性化推荐的相关内容。
关键词:信息超载 大数据 推荐算法
0 引言
近年来随着互联网的发展,特别是智能手机的普及和4g网络出现带来的移动互联网,使得网络数据呈爆炸式的增长,有关数据表明,过去3年人类的信息数据总量比以往4万年的数据量还要多,整个社会进入了大数据时代。在这样一个时代,我们一方面享受着数据信息给生活带来的便利,另一方面又承受着被那些迎接不暇、质量参差不齐的数据信息带来的痛苦。基于此,本文主要介绍一种在当前互联网中应用非常广泛的信息过滤技术——大数据个性化推荐。
1 为什么需要个性化推荐
互联网的出现和普及给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但随着网络的迅速发展而带来的网上信息量的大幅增长,使得用户在面对大量信息时,从中获得对自己真正有用的那部分信息变得越来越困难,对信息的使用效率反而降低了,这一问题被称为信息超载。这是现代互联网服务中的主要挑战,为了应对这些问题,在互联网发展的过程中,计算机科学界和计算机工业界曾提出过一些有效的解决方案,其中比较让大众所熟知的,一个是雅虎提出的分类目录,另一个是谷歌提出的搜索引擎。
分类目录是将网站按照不同类别进行分类,如新闻、影视、游戏等等。通过这种方式,用户可以根据自己的需求,按照分类很方便地寻找到自己所需的网站。雅虎也正是凭借分类目录起家,吸引了大量用户,从而成为了当年的互联网巨头之一。随着互联网规模的不断扩大,用户需求的不断细分,由于普通分类目录网站也只能覆盖少量的热门网站,用户急切地需要新的解决方案。在此情况下,搜索引擎应运而生。
搜索引擎是让用户通过搜索关键词找到自己需要的信息。用户可以直接在搜索框中输入所需内容的关键词,然后点击按钮发送到搜索引擎系统,系统收到请求后将相关结果返回给用户。谷歌以它简单,干净的页面设计和最相关的搜寻结果赢得了因特网使用者的认同,也正是凭着搜索引擎这一解决方案而后成为了一个互联网巨头。
和分类目录、搜索引擎类似,个性化推荐系统也是一种帮助用户快速发现有用信息的工具。不同的是,个性化推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为,给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。搜索引擎满足了用户有明确目的时的主动查找需求,而个性化推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。从某种意义上说,个性化推荐系统和搜索引擎对于用户来说是两个互补的工具。
此外,在电子商务中,个性化推荐系统有一个特点是可以很好地解决物品的长尾效应问题。对于传统零售店来说,按照二八原则,80%的销售额来自于20%的热门品牌。互联网条件下,由于货架成本极端低廉,电子商务网站往往能出售比传统零售店更多的商品。虽然这些商品绝大多数都不热门,但与传统零售业相比,这些不热门的商品数量极其庞大,因此这些长尾商品的总销售额将是一个不可小觑的数字,也许会超过热门商品(即主流商品)带来的销售额。主流商品往往代表了用户绝大多数的需求,而长尾商品往往代表了用户的个性化需求,虽然这些数量可能在整个销售量中只占20%,但是因为现在互联网用户量巨大,这部分需求也是至关重要的。因此,如果要通过发掘长尾提高销售额,就必须充分研究用户的兴趣,而这正是个性化推荐系统主要解决的问题。个性化推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。
2 大数据个性化推荐技术
大数据个性化推荐系统主要包含两类技术,一类是以分布式存储、分布式计算为核心的大数据处理技术,一类是推荐算法。
2.1大数据处理技术
建立一种高并发、可扩展、能处理海量数据的大数据个性化推荐系统架构是非常关键的,它能为大数据集的处理提供强有力的支持。 Hadoop 的分布式文件系统(Hadoop distributed file system,HDFS)架构是其中的典型。与传统的文件系统不同,数据文件并非存储在本地单一节点上,而是通过网络存储在多台节点上。并且文件的位置索引管理一般都由一台或几台中心节点负责。客户端从集群中读写数据时,首先通过中心节点获取文件的位置,然后与集群中的节点通信,客户端通过网络从节点读取数据到本地或把数据从本地写入节点。在这个过程中由 HDFS 来管理数据冗余存储、大文件的切分、中间网络通信、数据出错恢复等,客户端根据 HDFS 提供的接口进行调用即可,非常方便。
Hadoop中的MapReduce 作为推荐算法并行化的依托平台,既是一种分布式的计算框架,也是一种新型的分布式并行计算编程模型,应用于大规模数据的并行处理,是一种常见的开源计算框架。MapReduce算法的核心思想是“分而治之”,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。它把数据处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。
对于一些只要求数据离线处理的系统来说,使用MapReduce可以很好的满足,但个性化推荐系统通常有实时流数据处理的需要。目前工业界用的比较多的有纯流处理框架Storm和同时支持离线与实时数据的Spark、Flink框架。
Storm是一个分布式的,可靠的,容错的数据流处理工具。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。对于一个Storm集群,一个连续运行的主节点组织若干节点工作。
在Storm集群中,有两类节点:主节点master node和工作节点worker nodes。主节点运行着一个叫做Nimbus的守护进程。这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。Supervisor守护进程作为拓扑的一部分运行在工作节点上。一个Storm拓扑结构在不同的机器上运行着众多的工作节点。
Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。它兼容了 Hadoop并开启了内存计算的先河,通过不同的组件实现含流处理能力的批处理框架。Spark可看作是 Hadoop Mapreduce的一个替代品,主要侧重于通过完善的内存计算和处理优化机制加快批处理工作负载的运行速度,将 Hadoop集群的应用在内存中的运行速度提升100倍,在磁盘上提升10倍。 Spark利用生态系统中的Streaming实现流处理的。Spark框架的分布式内存数据处理能力在集群中所有主机上进行,体系框架包括三个主要组件,数据存储、API、管理框架。对于任何一种类型的数据, Spark都将其存储在不同分区上的RDD之中,实现了数据集结构的永恒不变,RDD支持变换( Transformation和行动( Action)两种类型的操作。
Flink是由Apache软件基金会开发的,基于JAVA语言的,面向数据流处理和批量处理的分布式的开源计算框架。Flink将所有任务(批处理数据视作具备有限边界的数据流)当作流来处理, 这与Spark相反正好相反,支持批量和基于流的数据分析,是以流处理为先的Kappa结构。Flink的架构与应用场景同Storm相似,其提供的DataStream API用于无尽数据流的处理,Flink以流的形式从持久存储中读取有边界的数据集实现批处理模型,适合处理含有少量批处理任务的极高流处理需求的组织。
除了以上技术外,大数据个性化推荐系统通常还会涉及到诸如分布式日志收集工具Flume,支持高吞吐量的消息队列管理工具Kafka,数据仓库Hive,非关系型数据库HBase,大数据信息检索ES等等技术。
2.2 推荐算法
一个大数据个性化推荐系统的好坏,最相关的便是其采用的推荐算法了,它是整个系统的灵魂。通常,系统的推荐算法需要多个算法相结合的使用,不同的推荐算法有着不同的应用场景。下面是几种常用的推荐算法。
2.2.1 基于关联规则的推荐
关联规则是形如X→Y 的蕴涵式,其中X 和Y 分别称为关联规则的先导(antecedent 或left-hand-side, LHS)和后继(consequent 或right-hand-side, RHS) 。基于关联规则的推荐就是发现不同商品之间的隐性关联性,从而产生推荐。关联规则的最典型例子就是购物车分析,例如,当用户在网上购物时,首先会将自己挑选的商品放在购物篮中,最后一起结账,而关联规则经常使用的就是分析购物篮中的商品数据,根据购物篮的结账单来分析用户的兴趣爱好或者是商品的关联性。举例来说,许多顾客买了笔记本电脑后还会买一个迷你小音箱,根据关联规则分析出笔记本电脑和迷你小音箱之间有联系,因此,当顾客挑选了笔记本电脑时,就会主动向其推荐迷你小音箱。即使在实体超市中,也可以通过关联规则分析不同顾客的购买习惯,进而发现不同商品之间的联系,这样的话,超市就可以把具有关联性的商品摆放在一起,从而达到促销的目的。
2.2.2 基于内容的推荐
基于内容的推荐技术(content-based recommendation)是根据用户过去的浏览记录来向用户推荐用户没有接触过的推荐项,系统无需获取用户对物品的评价意见,而仅仅通过分析用户历史记录中所选择的物品的内容来进行新物品的推荐,例如电影推荐系统MovieLens 是一个基于内容的推荐系统。基于内容的推荐是根据内容之间的相似性来产生推荐,将待推荐商品和用户过去购买过的商品属性进行比较,若两类商品较为相似,则将待推荐的商品推荐给用户,当用户的相关数据非常完整实时,也可以产生非常准确的推荐,但基于内容的推荐技术也有很大的局限性,其只能向用户推荐与其历史兴趣相似的物品,推荐的结果容易出现过度特殊化的现象,另外,当一个新的用户刚进入推荐系统时,由于其没有任何历史记录,则系统无法做出合理的推荐,这也是其他类型推荐系统所面临的挑战。
基于内容的推荐的优点如下:
(1)简单、有效,推荐结果直观,容易理解,不需要领域知识。
(2)不需要用户的历史数据,如对对象的评价等。
(3)没有关于新推荐对象出现的冷启动问题。
(4)没有稀疏问题。
(5)比较成熟的分类学习方法能够为该方法提供支持,如数据挖掘、聚类分析等。
基于内容的推荐的缺点如下:
(1)该方法的广泛应用受到了推荐对象特征提取能力的限制较为严重。因为多媒体资源 没有有效的特征提取方法,比如图像、视频、音乐等。既使文本资源,其特征提取方法也只能反映资源的一部分内容,例如,难以提取网页内容的质量,这些特征可能影响到用户的满意度。
(2)很难出现新的推荐结果。推荐对象的内容特征和用户的兴趣偏好匹配才能获得推荐,用户将仅限于获得跟以前类似的推荐结果,很难为用户发现新的感兴趣的信息。
(3)存在新用户出现时的冷启动问题。当新用户出现时,系统较难获得该用户的兴趣偏好,就不能和推荐对象的内容特征进行匹配,该用户将较难获得满意的推荐结果。
(4)对推荐对象内容分类方法需要的数据量较大。目前,尽管分类方法很多,但构造分类器时需要的数据量巨大,给分类带来一定困难。
(5)不同语言的描述的用户模型和推荐对象模型无法兼容也是基于内容推荐系统面临的又一个大的问题。
2.2.3 基于协同过滤的推荐
协同过滤推荐(collaborative filtering recommendation)是推荐策略中最成功的策略,它于20世纪90年代开始研究并促进了整个推荐系统研究的繁荣。大量论文和研究都属于该类别。比如Grundy书籍推荐系统、Tapestry邮件处理系统,Grouplens、Ringo等推荐系统都属于该类推荐。协同过滤推荐的基本思想借鉴了日常在选购商品、选择用餐饭店、选择看哪部电影等等的方法。如果自己身边的很多朋友都选购某种商品,那么自己就会很大概率的选择该商品。或者用户喜欢某类商品,当看到和这类商品相似商品并且其他用户对此类商品评价很高时,则购买的概率就会很大。协同推荐的用户模型为用户-项目评价矩阵,用户对项目的评分。
协同过滤推荐一般分为三类:基于用户的协同推荐(Userbased Collaborative
Filtering)、基于项目的协同推荐(Item-Based Collaborative Filtering)和基于模型的协同推荐(Model-Based Collaborative Filtering)。
协同过滤的优点:
(1)通常来讲,一些不能够转化为文本结构的产品,比如工艺品、数码产品等都不能够用基于内容的系统来进行分析和搜索,但是可以运用协同推荐系统来解决。
(2)可以推荐新事物。就基于内容的推荐来说,很难让用户获得新的推荐内容,比如在进行电影的推荐中,由于用户在之前只观看了恐怖片,进而系统的推荐内容就主要以恐怖片为主。而用户的爱好和观看的想法会经常变化,这样就很难满足其变化的需求。协同过滤协同所推荐的内容是综合了其他人的爱好而进行的推荐,不仅有恐怖片,还有科幻片、动作片等等。这样一旦用户的兴趣发生变化时,就有更多的新东西呈现出来。
(3)协同过滤的最大特点就是能够自我更新,由于用户数量的不断扩大,获得的信息也就越来越多,推荐的准确性就会提高。
协同过滤的缺点:
(1)存在冷启动的问题。一旦新的产品或者用户出现,因为没有前期的记录进行支持,所以推荐系统就无法对其进行推荐。
(2)存在时间效应问题。用户兴趣是随着时间不断变化的,既然要对用户进行现在的行为进行推荐就要对用户的最近记录进行关注,因为用户的最近记录与目前的兴趣具有一定的关联性。
(3)算法可扩展性问题。即数据过大就会出现算法效率下降的情况。当然,这是很多推荐算法以及数据挖掘算法都面临的问题。
3 总结
大数据个性化推荐作为一种信息过滤技术,因互联网的发展需要而生。与分类目录、搜索引擎一道,成为解决互联网的信息超载问题的强大工具。从工程技术的角度来说,大数据个性化推荐主要涉及到两类技术,一类是大数据处理技术,另一类是推荐算法。大数据处理技术以分布式存储、分布式计算为核心,工具极其丰富。推荐算法作为个性化推荐系统的灵魂,涉及的知识多,也是考验一个系统优劣的关键。不同的推荐算法有着不同的适用场景,一种算法通常不能解决所有问题,通常需要根据具体情况进行选取。虽然当前的互联网中,大数据个性化推荐的使用已变得炙手可热,但不可否认,很多产品的推荐效果还远远没有达到我们所期望的那样。大数据个性化推荐未来的路还很长,需要许许多多的科学家,工程师一起参与进来,为互联网的发展贡献力量。
参考文献
[1]蒋凡. 推荐系统[M]. 北京: 人民邮电出版社,2013: 5-8.
[2]项亮. 推荐系统实践[M]. 北京: 人民邮电出版社,2012: 7-15.
[3]陈虹君.基于Hadoop 平台的Spark 框架研究[J].电脑知识与技术,2014(35):8407⁃8408.
[4] 严江泉. 推荐算法研究与应用[J]. 南京:南京邮电大学,2015.
[5]唐真. 基于hadoop 的推荐系统设计与实现[D]. 成都: 电子科技大学, 2013.