IDC将大数据技术定义为:“为更经济地从高频率的、大容量的、不同结构和类型的数据中获取价值而设计的新一代架构和技术。” 大数据的关键在于种类繁多、数量庞大、使用传统的数据分析工具无法在可容忍的时间内处理相应的数据。大数据分析主要涉及两个不同的领域:一是如何将海量的数据存储起来,二是如何在短时间内处理大量不同类型的数据,即解决大数据存储与大数据处理等问题
大数据概览
大数据的主要特征
大量化(Volume)指数据的数量巨大。日新月异的信息存储技术使得存储大量数据的成本越来越低,特别是分布式存储技术的日益成熟,逐渐使得存储 PB、EB 甚至 ZB 级别的数据成为可能多样性(Variety)指数据的种类繁多。只需要连上互联网,就可以随时随地查看并获取想要的数据,但与此同时也面临了一系列的挑战。互联网上的数据虽多,但大部分数据的呈现形式为非结构化或半结构化的。如何将不同的数据结构归结到统一的结构中是一个重要的问题
快速化(Velocity)是指目前大数据时代,数据越来越实时化,数据的产生与处理速度逐渐能够满足人们 的需求价值密度低(Value)是大数据中最为关键的一点, 虽然真实世界中的数据量极大,但真正有价值的内容 却较少。以监控视频为例,虽然监控视频的内容极其之大,但实际有价值的部分可能不过几分钟。如何利用云计算等技术从大量的数据中提取出最为关键、最有价值的部分,并将信息转换成知识是值得研究的内容
大数据的生命周期
传统的数据分析处理流程中,数据的来源是多种多样的(数据库、社交媒体等),但由于数据价值密度低的特点,通常获取到的数据并不能直接使用进行分析,还需要进行一些列预处理。例如,将无用或者重复的数据过滤并去除,将大量的数据分类并进行管理,根据业务需要对相同类型的数据进行聚合,将非结构化或半结构化的数据结构化并存储到数据库中,或者将原结构化的数据从原有表现形式统一成另一种表示形式,从而使数据井井有条以便于数据分析工作的开展。完成数据整合后,就可以使用统计建模方法建立模型,用数据集进行训练,估计出模型参数。模型建立完成后,在模型投入使用之前还需要对其进行数据检验。最后,训练好的模型要接受新数据的检验, 这一阶段也叫模型评估,它可以用于决策、推荐,也可以通过新收集的数据重新估计参数更新模型
通过数据建模进行统计分析具有重要商业意义:用户行为数据是大数据中一种较为常见的类型,通过大数据技术可以对用户行为数据(例如商品购买记录, 网页访问记录等等)进行分析,从而挖掘出用户与商品之间的关联性,并以此推荐出用户喜爱的商品
大数据处理流程
大数据技术的主要流程可以分为
数据生成和获取 大数据来源多种多样,可以来自物联网、互联网、各类传感器等,同时数据的方式也是多种多样的(数字、文字、声音、图片、视频等),归纳起来其主要来源于三个方面
- 自然界的大数据 机器与机器交互产生的数据,主要通过各类传感器采集
- 生命和生物的大数据 主要是研究基因组学、蛋白组学、代谢组学等生物学数据
- 社交大数据 主要来源于人类社会活动,而互联网通常为其载体
目前大数据的主要研究对象集中在社交数据和自然数据,同时生命和生物的大数据对医学方面的贡献也不容小视
数据预处理 现实中收集到的真实数据通常都是不完整的脏数据,没有办法直接进行数据挖掘和处理,为了提高数据的质量,需要对采集到的原始数据进行预处理。数据预处理的内容主要有
- 数据审核 主要审核数据的准确性、适用性、及时性、一致性
- 数据筛选 对审核过程中发现的错误进行纠正的过程,通常包括剔除不符合要求的数据、筛选出符合条件的数据两方面内容
- 数据排序 按照一定的顺序把数据进行排列,以便于研究者进一步观察和分析
数据预处理的主要方法
- 数据清理 主要目的是格式标准化、清除异常数据、纠正错误
- 数据集成 将多个数据源中的数据结合起来统一存储
- 数据变换 利用规范化、平滑聚集、数据概化等方式将数据转变成有利于数据挖掘的形式
- 数据规约 可以得到规约表,节省挖掘分析时间且仍然能保持数据的完整性
数据存储 传统的数据存储方式可以分为块存储、文件存储、对象存储,大数据的存储方式可以分为
- 分布式系统 主要包含分布式文件系统HDFS--具有高度容错性,适用于批量处理并且能够提供高吞吐量的数据访问、分布式键值系统--可以用于存储关系比较简单的半结构化数据,其存储和管理的是对象而不是数据块
- NoSQL数据库 由于关系数据库已经无法满足大量数据的管理需求,NoSQL可以存储超大规模的数据,具有较好的横向扩展能力
- 云数据库 基于云计算技术发展的一种共享基础架构的方法,是部署和虚拟化在云计算环境中的数据库
大数据存储技术路线包括
- 分布式架构 包括Hadoop、MapReduce等,随着相关技术的不断进步,其应用场景也将逐步扩大
- 大数据一体机 专门用于大数据分析处理而设计的软硬件结合的产品,具有良好的稳定性和纵向扩展性
- MPP混合架构 重点面向行业大数据,通过列存储、粗粒度索引等多项大数据处理技术,再结合MPP架构高效的分布式计算模式,完成对分析类应用的支撑,具有高性能和高扩展性的特点
数据分析挖掘 从海量数据中提取出隐含其中的、具有潜在价值的信息,是统计学、人工智能、数据库技术的综合运用
大数据的计算分析框架主要包括
- 批处理框架
- 流处理框架
- 交互式计算框架
- 混合处理框架
- 图数据处理框架
数据结果应用 大数据已被广泛认为是创造新价值的利器,具有无可估量的资源价值,推动各个领域的快速发展,例如医疗、教育、商业、工业、农业、智能电网、工业互联网、排水系统、智能交通等工业等领域
- 医疗方面 通过采集和分析医疗机构产生的实验室记录、用药记录、手术记录、住院记录、急诊记录等各类大数据,总结出其隐含价值并应用在未来的医疗研究中
- 商业领域 股票、保险、银行等行业仍离不开大数据的应用。通过大数据技术可以利用股票走势数据、保险报销人群数据、银行汇率数据等得到一些预测数据,帮助更好的决策
大数据系统
大数据中蕴含的巨大价值成为人们存储和处理大数据的驱动力,大数据时代数据处理的理念:要全体不要抽样、要效率不要绝对精确、要相关不要因果。目前,对大数据处理形式主要是对静态数据的批量处理、对在线数据的实时处理、对图数据的综合处理以及结合批处理和流处理两种架构的混合处理模式,其中,在线数据的实时处理又包括对流式数据的处理和实时交互计算两种。以下介绍各种数据形式的特征和各自典型应用及相应的代表性系统
批处理系统 利用批量数据挖掘合适的模式,得出具体的含义,制定明智的决定,最终做出有效的措施实现业务目标是大数据批处理的首要任务。大数据的批量处理系统适合于先存储后计算,实时性要求不高,同时数据的准确性和全面性更为重要的场景
批量数据的3个特征:数据体量巨大、数据精确度高、数据价值密度低--需要通过合理的算法才能从批量的数据中抽取有用的价值。批处理往往比较耗时,而且不提供用户与系统的交互手段,所以当发现处理结果和预期或与以往的结果有很大差别时,适合相对成熟的作业
典型应用 物联网、云计算、互联网以及车联网等无一不是大数据的重要来源,当前批量数据处理可以解决前述领域的诸多决策问题并发现新的洞察。批处理系统适用于较多的应用场景
- 社交网络 Facebook、新浪微博、微信等以人为核心的社交网络产生了大量的文本、图片、音视频等不同形式的数据,对这些数据的批量处理可以对社交网络进行分析,发现人与人之间隐含的关系或者他们中存在的社区,推荐朋友或者相关主体,提升用户体验
- 电子商务 电商系统中产生的购买历史记录、商品评论、商品网页的访问次数和驻留时间等数据,通过批量分析这些数据,每个商铺可以精准地选择其热卖商品,从而提升商品销量;也可以通过分析消费者行为,为客户推荐相关商品,以提升优质客户数量
- 搜索引擎 Google等大型互联网搜索引擎与Yahoo!的专门广告分析系统,通过对广告相关数据的批量处理来改善广告的投放效果以提高用户的点击量
- 能源 例如:对来自海洋深处地震时产生的数据进行批量的排序和整理,可能发现海底石油的储量
- 医疗保健 通过对患者以往的生活方式与医疗记录进行批量处理分析,提供语义分析服务,对病人的健康提供医生、护士及其他相关人士的回答,协助医生更好地为患者进行诊断
典型代表性系统
- Hadoop Apache Hadoop是分布式数据处理中最著名的一款软件框架。由HDFS负责静态数据的存储,基于MapReduce编程范式,将计算逻辑分配到各数据节点进行数据计算和价值发现。Hadoop生态圈日渐丰富,包括MapReduce、分布式存储(HDFS)、Hive、HBase等
- MapReduce 是一种基于分治法实现的编程模型,广泛应用于大规模数据处理中(日志分析、海量数据排序等)。分治法将复杂问题分成多个类型的子问题,直到子问题的规模小到能直接得出结果,再聚合中间数据所得的最终结果就是原问题的解
Hadoop MapReduce采用了主从式结构,集群中存在两种类型的节点,主节点(Master Node)与工作节 点(WorkerNode),其作业运行机制如图所示。Master是整个集群中唯一的管理者,主要工作有任务调度,状态监控等。Worker 则负责计算工作与任务状态回复。在 Map 阶段,主节点将输入数据分割,并将原 问题分成多个类似的子问题,然后将分割好的数据与 任务交给工作节点进行计算。在 Reduce 阶段,主节 点将工作节点计算好的中间结果收集起来并聚合成 最终的结果
这种编程模型广受欢迎并迅速得到应用在技术上有3方面的原因:MapReduce采用无共享大规模集群系统,集群具有良好的性价比和可伸缩性;MapReduce模型简单、易于使用,它不仅用于处理大规模数据,而且能将很多繁琐的细节隐藏起来(比如,自动并行化、负载均衡和灾备管理等),极大地简化了程序员的开发工作。并且大量数据处理问题,包括很多机器学习和数据挖掘算法,都可以使用MapReduce实现;虽然基本的MapReduce模型只提供一个过程性的编程接口,但在海量数据环境、需要保证可伸缩性的前提下,通过使用合适的查询优化和索引技术,MapReduce仍能够提供很好的数据处理性能
- HDFS 是Hadoop项目的一个子项目,是Hadoop应用下的分布式文件系统,它提供了文件系统实现的各类接口,使文件系统易于操作。它是基于流式的数据访问模式和处理超大文件的需求而开发,可以运行在廉价的机器上。主要特点如下
- 处理超大文件 通常是GB级甚至是TB级文件,HDFS目前以及可以用来管理TB级的数据
- 流式地访问数据 HDFS设计理念“一次写入、多次读取”,意味着当一个数据集生成之后,就会被切分成小文件块,并复制多份分发到不同的存储节点中,然后响应各种数据分析任务请求
- 能运行在低廉的机器集群上 Hadoop对机器的硬件要求不高,但廉价的机器通常节点故障的发生概率非常高,意味着Hadoop设计时需要充分考虑数据的可靠性和安全性
HDFS虽然有许多优势,但也存在一些缺点
- 高延迟的数据访问 HDFS是为高吞吐量而设计的,因此需要一些高延迟作为补偿代价
- 无法高效处理小文件 在Hadoop中,需要用到NodeName来管理文件系统的元数据(描述数据的数据),以响应客户端的请求并返回文件位置,因此文件数量的多少,决定着NameNode存储多少。意味着有许多小文件存储时,NameNode的工作压力就会很大,检索元数据的处理时间会显得过长
HDFS 采用的是主从式架构。一个集群中存在一个NameNode,和多个DataNode,如下图所示。NameNode作为一个中心服务器,负责管理整个集群文件的读写等操作,存储着各个数据节点的信息,同时也负责处理用户的请求,进行数据节点的调度。作为整个集群的管理者,NameNode的主要任务是对元数据的管理,而不作为存储数据的节点,这样减少了自身的负载。这种结构极大地简化了系统架构, 但与此同时也带来了单点故障等问题。HDFS系统架构如下
流处理系统 Google于2010年推出了Dremel,引领业界向实时数据处理迈进。实时数据处理是针对批量数据处理的性能问题提出的,可分为流式数据处理和交互式数据处理两种。在大数据背景下,流失数据处理源于服务器日志的实时采集,交互式数据处理的目标是将PB级数据的处理时间缩短到秒级
流式数据的特征 流式数据是一个无穷的数据序列,序列中的每一个元素来源各异,格式复杂,序列往往包含时序特性,或其他的有序标签(如IP报文中的序号)。流式数据在不同的场景下往往体现出不同的特征,如流速大小、元素特性数量、数据格式等,但大部分流式数据都含有共同的特征,根据这些共性便可用来设计通用的流式数据处理系统
- 流式数据的元组通常带有时间标签或其余含序属性
- 数据流中的数据格式可以是结构化的、半结构化的甚至是无结构化的
典型应用 流式计算的应用场景较多,典型的有两类
- 数据采集应用
- 金融银行业的应用
典型代表性系统
- Storm 最早由 BackType 公司 (现已被 Twitter 公司收购)开发的分布式实时计算系统。Storm 为分布式实时计算供了一组通用原语,其用法与 Hadoop 极其类似,也被称为实时计算版的 Hadoop。它也可被用于 “流处理”中,实现实时处理消息并更新数据库。同时 Storm 可以采用任意编程语言编写
Storm作为一套分布式、可靠、可容错的用于处理流式数据的系统。其流式处理作业被分发至不同类型的组件,每个组件负责一项简单的、特定的处理任务。Storm集群的输入流名为Spout的组件负责,Spout将数据传递给Blot组件,后者将以指定的方式处理这些数据,如持久化或者处理并转发给另外的Bolt。Storm集群可以看成一条由Bolt组件组成的链(成为一个Topology),每个Bolt对Spout产生出来的数据做某种方式的处理。Storm的Topology图如下
Storm可用来实时处理新数据和更新数据库,兼具容错性和扩展性,也可用于连续计算,对数据流做连续查询,在计算时将结果以流的形式输出给用户,还可以用于分布式RPC,以并行的当时运行复杂运算。Storm的主要特定:简单的编程模型、容错性、水平扩展、快速可靠的消息处理。一个
Strom集群分为三类节点
- Nimbus节点 负责提交任务,分发执行代码,为每个工作结点指派任务和监控失败的任务
- Zookeeper节点 负责Storm集群的协同操作
- Supervisor节点 负责启动多个Worker进程,执行Topology的一部分,这个过程是通过Zookeeper节点与Nimbus节点通信完成的。因为Storm将所有的集群状态保持在Zookeeper或本地磁盘上,Supervisor节点是无状态的
Storm系统架构如下图所示
- Samza 许多流式数据处理系统都使用了Kafka作为底层的消息处理模块。Kafka的工作过程分为4个步骤:生产者将消息发往中介(broker),消息被抽象为Key-Value对,Broker将消息按Topic划分,消费者向Broker拉取感兴趣的Topic。2013年Linkedin基于Kafka和Yarn开发了自己的流式处理框架--Samza。Samza与Kafka的关系可类比MapReduce和HDFS的关系,Samza系统由3个层次组成,包括流式数据层(Kafka)、执行层(Yarn)、处理层(Samza API),其主要特性包括:高容错、高可靠、可扩展
交互式计算框架
交互式数据处理的特征 数据处理灵活、直观、便于控制。系统与操作人员以人机对话的方式一问一答,存储在系统中的数据文件能够被及时处理修改,同时处理结果可以立即被使用。交互式数据处理具备的这些特性能够保证输入的信息得到及时处理,使交互方式继续进行下去
典型应用
- 在信息处理系统领域中,主要体现了人机间的交互。传统的交互式数据处理系统主要以关系型数据库管理系统(DBMS)为主,面向两类应用:联机事务处理(OLTP)--基于关系数据库管理系统,广泛用于政府、医疗以及对操作序列有严格要求的工业控制领域;联机分析处理(OLAP)--基于数据仓库系统(data warehouse)广泛用于数据分析、商业智能(BI)等,代表性的处理是数据钻取,如在BI中,可以对于数据进行切片和多粒度的聚合,从而通过多位分析技术实现数据的钻取。目前,基于开源体系架构下的数据仓库系统发展非常迅速,以Hive、Pig等为代表的分布式数据仓库能够支持上千台服务器的规模
- 在互联网领域中,主要体现了人际间的交互,搜索引擎、电子邮件、即时通讯工具、社交网络、微博等互联网交互式数据平台,各种交互式问答平台:百度知道、新浪爱问、Yahoo!的知识堂等。目前各大平台主要使用NoSQL类型的关系数据库系统来处理交互式的数据,如HBase--采用多维有序表的列存储方式、MongoDB--采用JSON格式的数据嵌套存储方式
典型代表性处理系统
- Spark Apache Spark是一个基于内存计算的可扩展性的开源集群系统。针对MapReduce的不足,即打俩个的网络传输和磁盘I/O使得效率低效,Spark使用内存进行数据计算以便快速处理查询,实时返回分析结果。Spark提供比Hadoop更高层的API,同样算法在Spark中的运行速度比Hadoop快10~100倍;在技术层面兼容Hadoop存储层API,可访问HDFS、HBase、SequenceFile等,Spark-Shell可以开启交互式Spark命令环境,能够提供交互式查询
Spark的计算架构具有3个特点:Spark拥有轻量级的集群计算框架、Spark包含大数据领域的数据流计算和交互式计算、Spark有很好的容错机制
- Dremel 由Google研发的交互式数据分析系统,专注于只读嵌套数据的分析。Dremel可以组建成规模上千的服务器集群,处理PB级数据,可以与传统数据分析互殴商业智能工具在速度和精度上相媲美
混合处理框架 结合批处理和流处理两种架构的混合架构。在处理数据时,分别将数据送入批处理层和实时处理层,这样可以使得得到的结果更加快速且精确,对不同业务需求进行了良好的平衡
典型代表性系统
- Lambda 主要思想就是将大数据系统构建为多个层次,Batch Layer、Serving Layer、Speed Layer。架构图如下所示
图数据处理框架 图由于自身的结构特征,可以很好地表示事物之间的关系,在近几年已经成为各学科研究的热点。图中点和边的强关联性,需要图数据处理系统对图数据进行一系列的操作,包括图数据的存储、图查询、最短路径查询、关键字查询、图模式挖掘以及图数据的分类、聚类等
图数据的特征 图数据中主要包括图中的节点以及连接节点的边,通常具有3个特征
- 节点之间的关联性 图中边的数量是节点数量的指数倍,节点和关系信息同等重要,图结构的差异也是由于对边做了限制,在图中,顶点和边实例化构成各种类型的图,如标签图、属性图、语义图以及特征图等
- 图数据的种类繁多 在许多领域中,使用图来表示该领域的数据,如生物、化学、计算机视觉、模式识别、信息检索、社会网络、知识发现、动态网络交通、语义网、情报分析等。每个领域对图数据的处理需求不同,因此,没有通用的图数据处理系统满足所有领域的需求
- 图数据计算的强耦合性 在图中,数据之间是相互关联的,因此,对图数据的计算也是相互关联的,这种数据耦合的特性对图的规模日益增大
典型应用 图能很好地表示各实体之间的关系,因此,在各个领域得到了广泛的应用,如在计算领域、自然科学领域以及交通领域
- 互联网领域的应用 以Web2.0技术为基础的社交网络(Facebook、人人网)、微博(Twitter、新浪微博、腾讯微博)等新型服务中建立了大量的在线社会网络关系,用图表示人与人之间的关系
- 自然科学领域的应用 图可以用来在化学分子式中查找分子,在蛋白质网络中查找化合物,在DNA中查找特定序列
- 交通领域的应用 图可以用来在动态网络教徒中查找最短路径、在邮政快递领域进行邮路规划等
典型代表性图数据处理系统 目前主要的图数据有GraphLab、Giraph(基于Pregel克隆)、 Neo4j、HyperGraphDB、InfiniteGraph、Cassovary、 Trinity及Grappa等。主要介绍以下三种图数据库系统
- Pregel Google提出的基于BSP(Bulk synchronous parallel)模型的分布式图计算框架,主要用于图遍历(BFS)、最短路径(SSSP)、PageRank计算等。BSP模型是并行计算模型中的经典模型,采用的是"计算-通信-同步"的模式。它将计算分成一系列超步(superstep)的迭代。从纵向上看,它是一个串行模式,而从横向上看,它是一个并行的模式,每两个超步之间设置一个栅栏,即整体同步点,确定所有并行的计算都完成后再启动下一轮超步。Pregel架构有3个主要特征:采用主/从结构来实现整体功能,一个节点为Master,负责对整个图结构的任务进行切分,根据节点的ID进行散列计算分配到Slave机器,Slave机器进行独立的超步计算,并将结构返回给Master;有很好的容错机制;使用GFS或BigTable作为持久性的存储
- Neo4j 是一个高性能、完全兼容ACID特性的、鲁棒的图数据库,它基于Java语言开发,包括社区版和企业版,适用于社会网络和动态网络等场景。具有以下5个特性:支持数据库的所有特性、高可用性、可扩展性、灵活性、高速遍历
- Trinity 是微软推出的一款建立在分布式云存储上的计算平台,可以提供高度并行查询处理、事物记录、一致性控制等功能,主要使用内存存储,磁盘仅作为备份存储,具有以下4个特点:数据模型是超图、并发性、具有数据库的一些特点、支持批处理
大数据领域各类处理系统层出不穷,各有特色,总体有3个发展趋势
- 数据处理引擎专用化
- 数据处理平台多样化
- 数据计算实时化
大数据分析
要挖掘大数据的价值必然要对大数据进行内容上的分析与计算,深度学习和知识计算是大数据分析的基础,而可视化既是数据分析份关键技术也是数据分析结果呈现的关键技术,以下是对它们的简单介绍
深度学习 利用层次化的架构学习出对象在不同层次上的表达,这种层次化的表达可以帮助解决更加抽象的问题,在层次化中,高层的概念通常是通过低层的概念来定义的,深度学习通常使用人工神经网络,常见的具有多个隐层的多层感知机(MLP)就是典型的深度架构。深度学习的起源要追溯到神经网络,20世纪80年代,向后传播(BP)算法的提出使得人们开始尝试训练深层次的神经网络。然而,BP算法在训练深层网络的时候表现不够好,以至于深层感知机的效果还不如浅层感知机。于是很多人放弃使用神经网络,转而使用凸的更容易得到全局最优解的浅层模型,提出诸如支持向量机、boosting等浅层方法,以致于此前大部分的机器学习技术都使用浅层架构。2006年,Hinton等人使用无监督的逐层贪婪的预训练(greedy layer-wise pre-trian)方法成功减轻了深度模型优化困难的问题,从而掀起深度学习的浪潮。
近几年,深度学习在语音、图像以及自然语言理解等应用领域取得一系列重大进展。从2009年开始,巍然研究院的Dahl等人率先在语音处理中使用深度神经网络(DNN),将语音识别的错误率显著降低,从而使得语音处理成为成功应用深度学习的第一领域;在图像领域,Hinton等人使用深层次的卷积神经网络(CNN)在ImageNet评测上取得巨大突破,将错误率从26%降低到15%,重要的是,这个模型中并没有任何手工构造特征的过程,网络的输入就是图像的原始像素值。Google Brain项目中,Le等人尝试使用完全无标注的图像训练得到人脸特征检测器,使用这些学习到的特征可以在图像分类中取得非常好的效果;Google的深度学习系统(DistBelief)在获取数百万YouTube视频数据后,能够精准地识别出这些视频中的关键元素--猫;在自然语言领域,Bengio等人使用神经网络并结合分布式表达式(distributed representation)的思想训练语言模型并取得很好的效果,不过当时还没有使用到更深层次的模型;2008年,Collobert等人训练了包含一个卷积层的深度神经网络,利用学习得到的中间表达式同时解决多个NLP问题;在国内,2011年科大讯飞首次将DNN技术运用到语音云平台,并提供给开发者使用,并在讯飞语音输入法和讯飞口讯等产品中得到应用;百度成立IDL(深度学习研究院),专门研究深度学习算法,目前已有多项深度学习技术在百度产品上线。深度学习对百度影响深远,在语音识别、OCR识别、人脸识别、图像搜索等应用上取得突出效果;此外,国内搜狗、云之声等纷纷开始在产品中使用深度学习技术
知识计算 基于大数据的知识计算是大数据分析的基础,知识计算是国内外工业界开发和学术界研究的一个热点,要对数据进行高端分析,就需要从大数据中先抽取出有价值的知识,并把它构建成可支持查询、分析和计算知识库。目前,世界各国各个组织建立的知识库多达50余种,相关的应用系统更是达到上百种。其中,代表性的知识库或应用系统有KnowItAll、TextRunner、Nell、Probase、Satori、Prospera、Sofie及一些基于维基百科等在线百科知识构建的知识库,如DBpedia、Yago、Omega和WikiTaxonomy;此外,一些商业网站、公司和政府也发布了类似的知识搜索和计算平台,如Evi公司的TrueKnowledge知识搜索平台、美国官方政府网站Data.gov、Wolfram的知识计算平台wolframalpha、Google的知识图谱Knowledge Graph、Facebook推出的类似的实体搜索服务 Graph Search等;在国内,中文知识图谱的构建与知识计算也有大量的研究和开发工作,代表性的有中国科学院计算技术研究所的OpenKN、上海交大最早构建的中文知识图谱平台zhishi.me,百度推出了中文知识图谱搜索,搜狗推出的知立方平台、复旦大学GDM实验室推出的中文知识图谱展示平台等
支持知识计算的基础是构建知识库,这包括3个部分,即知识库的构建、多源知识的融合与知识库的更新,知识库的构建就是要构建几个基本的构成要素,包括抽取概念、实例、属性和关系。从构建方式上,可以分为:手工构建--依靠专家编写一定的规则,从不同的来源收集相关的知识信息,构建知识的体系结构,典型的例子是知网、同义词词林、概念层次网络和中文概念词典、OpenCyc等;自动构建--基于知识工程、机器学习,人工智能等理论自动从互联网上采集并抽取概念、实例、属性和关系,著名的例子是Probase、Tago等。手工构建知识库,需要构建者对知识的领域有一定的了解,才能编写出合适的规则,开发过程中也需要投入大量的人力物力;相反自动构建的方法依靠自动的学习经过标注的语料来获取规则,如属性抽取规则、关系抽取规则等,在一定程度上可以减少人工构建的工作量。自动构建知识库的方法主要分为有监督的构建方法和半监督的构建方法两种
多源知识的融合是为了解决知识的复用问题,如前文所述,构建一个知识库的代价是非常大的,为了避免从头开始,需要考虑知识复用和共享,这就需要对多个来源的知识进行融合,即需要对概念、实例、属性和关系的冲突、重复冗余、不一致进行数据的清理工作,包括对概念、实例进行映射、消歧,对关系进行合并等,其中概念间关系或分类体系的融合是很关键的一部分,按融合方式分为手工融合和自动融合。对于规模较少的知识库,手动融合是可行的,但这是一种非常耗时且容易出错的融合方式。而建立在机器学习、人工智能和本体工程等算法上的融合方式具有更好的扩展性,相关工作包括Yago、Probase等
大数据时代数据的不断发展与变化带给知识库构建一个巨大的挑战是知识库的更新问题,知识库的更新分为两个层面:新知识加入;已有知识更新。目前专门针对开放网络知识库的更新工作较少,很多都是从数据库的更新角度展开的,如对数据库数据的增加、删除和修改工作的介绍。虽然对开放网络知识库的更新,与数据库的更新有很多相似之处,但是其本身对更新的实时性要求较高。目前这方面的工作,从更新方式来讲分为两类:基于知识库构建人员的更新;基于知识库存储的时空信息的更新
社会计算 以Faceboo、Twitter、新浪微博、微信等为代表的在线社交网络和社会媒体正深刻改变着人们传播信息和获取信息的方式,人和人之间结成的关系网络承载这网络信息的传播,人的互联成为信息互联的载体和信息传播的媒介,社会媒体的强交互性、时效性等特点使其在信息产生、消费和传播过程中发挥着越来越重要的作用。当前在线社会计算无论是学术圈和工业界都备受重视,大家关注的问题包括对在线社会网络结构、信息传播以及信息内容的分析、建模与挖掘等一系列问题
- 在线社会网络的结构分析
在线社会网络在微观层面上具有随机化无序的现象,在宏观层面上往往呈现出规则化、有序的现象,为了理清网络具有的这种看似矛盾的不同尺度的结构特征,探索和分析连接微观和宏观网络中观结构(也称为社区结构)成为本领域一个重要的研究方向。一般意义上讲,社区结构是指网络节点按照连接关系的紧密程度不同而自然分成若干个内部连接紧密、社区结构发现和社区结构演化性分析等基本问题。社区定义或度量大体上分为4类:基于节点的社区定义、基于节点组(社区)的社区定义、基于网络整体的社区定义、基于层次结构的社区定义
- 在线社会网络的信息传播模型
在信息传播模型的研究中,最广泛深入研究的是传染病模型,除了传染病模型,随机游走模型也是信息传播的基本模型之一,作为最基本的动力学过程之一,随机游走与网络上的许多其他动力学过程(反应-扩散过程、社团挖掘、路由选择、目标搜索)紧密相关。今年,研究人员开始注意到信息传播和传染病传播具有显著不同的特性,包括信息传播的记忆性、社会增强效应、不同传播者的角色不同、消息内容的影响等。Romero等人提出Stickniss和Persistence两个重要概念,分析不同领域内Hashtag在Twitter上的传播过程。Wu等人分析名人、机构、草根等不同群体之间的消息流向,并分析了不同类型的消息被转发的情况及其生命周期
- 社会媒体中信息检索与数据挖掘
社会媒体的出现对信息检索与数据挖掘的研究提出了新的挑战,不同于传统的Web数据,社会媒体中的数据呈现出一些新的特征:信息碎片化现象明显,文本内容特征越发稀疏;信息互联被人的互联所取代,社会媒体用户形成的社会关系网络的搜索和挖掘过程中的重要组成部分;社会媒体的易参与性使得人人具有媒体的特征,呈现出自媒体现象,个人影响力、情感与倾向性掺杂其中。针对这些特点研究人员在传统信息检索与数据挖掘计算基础上提出了一些列的新模型
鉴于用户所创造的信息往往具有很强的时效性,Yang等人提出一种时间序列聚类的方法,从Twitter数据中挖掘热门话题发展趋势的规律;用户的评价和评论中包含了大众的观点和态度,所以Bollen等人通过对Twitter中用户的信息进行情感分析,将大众情绪的变化表示为7种不同的情绪时间序列,进而发现这些序列能够预测股票市场的走势;社会媒体的检索与挖掘研究在国内也收到越来越多的重视,包括北京大学、清华大学、哈工大等大学和研究机构已经取得了一定的进展,设计的研究内容包括社会化标签系统中的标签学习和排序、信息抽取和分类、社会化多媒体检索、协作搜索和推荐等等
可视化 对抽象数据使用计算机支持的、交互的、可视化的表示形式以增强认知能力。大数据可视化不同于传统的信息可视化,面临最大的一个挑战就是规模,如何提出新的可视化方法能够帮助人们分析大规模、高维度、多来源、动态演化的信息,并辅助做出实时的决策,成为该领域最大的挑战。为解决这个问题,我们可以依赖的主要手段是两种,数据转换和视觉转换。现有研究工作主要聚焦在4个方面:通过对信息流进行压缩或者删除数据中的冗余信息对数据进行简化;通过设计多尺度、多层次的方法实现信息在不同解析度上的展示,从而使用户可自主控制展示解析度;利用创新的方法把数据存储在外存,并让用户可以通过交互手段方便地获取相关数据,这类算法成为核外算法(out-of-core algorithm);提出新的视觉隐喻方法以全新的方式展示数据
大数据处理和分析的终极目标是借助对数据的理解辅助人们在各类应用中作出合理的决策。在次过程中,深度学习、知识计算、社会计算和可视化起到了相辅相成的作用
小结
互联网、物联网、云计算技术的快速发展,各类应用的层出不穷引发了数据规模的爆炸式增长,使数据渗透到各个行业和各个领域,成为重要的生产因素。大数据时代依然来临,Google、 Facebook、LinkedIn为代表的互联网企业近几年推出了各种大数据处理系统,深度学习、知识计算、可视化等大数据分析技术迅速发展,已被应用于不同的行业和领域。本文根据大数据处理形式不同,分别介绍批处理、流式处理、交互式处理及图数据四种不同数据形式的特征及大数据分析系统
参 考 文 献
[1] 《大数据系统和分析技术综述》
[2] 《大数据分析的硬件与系统支持综述》
[3] 《大数据综述》
*更多内容欢迎关注微信公众号 `云时代的运维开发`*
评论留言