1.5 数据科学和大数据技术
在大数据爆发式增长的时代,在理论层面,对数据利用的理论体系正逐步形成,因而数据科学的诞生成为必然;在实践层面,随着数据科学的理论架构逐步成熟,相应的对数据的加工提炼及挖掘技术也伴随而生。数据科学理论可以指导人们对大数据的利用,数据技术和工具成为挖掘数据的有力工具。
1.5.1 数据科学
目前大数据的工程技术研究已走在科学研究的前面。美国政府 6 个部门启动的大数据研究计划中,国家科学基金会的研究内容提到要“形成一个包括数学、统计基础和计算机算法的独特学科”。图灵奖得主吉姆.格雷描绘了数据密集型科研第四范式的愿景,将大数据科研从第三范式(计算机模拟)中分离出来单独作为一种科研范式,是因为其研究方式不同于基于数学模型的传统研究方式。大数据研究能成为一门科学的前提是,在一个领域发现的数据的相互关系和规律具有可推广到其他领域的普适性。提炼“大数据”的共性还需要一段时间的实践积累才会逐步清晰、明朗。将大量多元异构、交互性和时效性强,并包含大量噪声的数据作为研究对象的专门学科,依然具备了鲜明的学科特征。
数据科学的目标,同时也是人类的一个目标:获得洞察力和理解能力。数据科学是统计学、软件工程和领域专业知识的组合。数据科学是以数据为中心的科学。可以理解为从现实世界到数据世界的投影。通过对数据的分析,来解释、预测、洞见和决策为现实世界服务。数据科学是大数据时代面临的新问题、新挑战、新机遇和新方法的一套知识体系。
数据科学的特征表现在以下几个方面。
● 由原来的被动式变为主动式。
● 由数值报表的传统角色转变为支持决策的角色。
● 传统的技术方法转为现代的技术方法。
● 成为大数据时代需要的、独立的一整套科学体系。
统计学、机器学习、可视化和领域知识与经验构成了数据科学的4个方面。
数据科学以统计学、机器学习、数据可视化及其他领域知识为理论基础,其主要研究内容包括数据科学基础理论、数据预处理、数据计算和数据管理。
1.5.2 大数据技术与工具
大数据技术与工具包括:大数据采集及预处理、大数据分析、大数据可视化、Hadoop平台、HDFS和Common概论、MapReduce概论、NoSQL技术、R与Python等。借助这些大数据的平台和工具,分析、研究大量的数据过程中的模式、相关性和其他有用的信息,可以帮助企业更好地适应变化,并做出更明智的决策。图1-12所示为大数据分析所采用的技术平台、方法和语言。此处不一一列举,仅就数据可视化技术、Hadoop平台、R语言和Python语言谈一下大数据技术及工具。
图1-12 大数据分析的技能图谱
1.数据可视化技术
数据可视化旨在借助于图形化手段,清晰、有效地传达与沟通信息。为了有效地传达思想观念,美学形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的数据集的深入洞察。然而,设计人员往往并不能很好地把握设计与功能之间的平衡,从而创造出华而不实的数据可视化形式,无法达到其主要目的,也就是传达与沟通信息。
数据可视化与信息图形、信息可视化、科学可视化及统计图形密切相关。当前,在研究、教学和开发领域,数据可视化是一个极为活跃而又关键的方面。“数据可视化”这条术语实现了成熟的科学可视化领域与较年轻的信息可视化领域的统一。
(1)科学可视化
科学可视化(Scientific Visualization)是科学中的一个跨学科研究与应用领域,主要关注的是三维现象的可视化,如建筑学、气象学、医学或生物学方面的各种系统。重点在于对体、面及光源等的逼真渲染,甚至还包括某种动态成分。此类数字型表现形式或数据集可能会是液体流型(fluid flow)或分子动力学之类的计算机模拟的输出,或者经验数据(如利用地理学、气象学或天体物理学设备所获得的记录)。就医学数据(CT、MRI和PET等)而言,常常听说的一条术语就是“医学可视化”。图1-13所示为人类的颅骨CT片。
图1-13 人类的颅骨CT片
科学可视化本身并不是最终目的,而是许多科学技术工作的一个构成要素。这些工作之中通常会包括对于科学技术数据和模型的解释、操作与处理。科学工作者对数据加以可视化,旨在寻找其中的种种模式、特点、关系及异常情况;换句话说,也就是为了帮助理解。因此,应当把可视化看作是任务驱动型,而不是数据驱动型。
(2)信息可视化
信息可视化(Information Visualization)是一个跨学科领域,旨在研究大规模非数值型信息资源的视觉呈现(如软件系统中众多的文件或者一行行的程序代码)。通过利用图形图像方面的技术与方法,帮助人们理解和分析数据。与科学可视化相比,信息可视化则侧重于抽象数据集,如非结构化文本或者高维空间当中的点(这些点并不具有固有的二维或三维几何结构)。图1-14所示为云标签分析出的文本。
图1-14 云标签
(3)可视化分析
就目标和技术方法而言,信息可视化与可视化分析之间存在着一些重叠。当前,关于科学可视化、信息可视化及可视化分析之间的边界问题,还没有达成明确清晰的共识。不过,大体上来说,这三个领域之间存在着以下几点区别。
① 科学可视化处理的是那些具有天然几何结构的数据(如MRI数据、气流等)。②信息可视化处理的是抽象数据结构,如树状结构或图形。③可视化分析尤其关注的是意会和推理。
任何事物都是一类信息,如表格、图形、地图,甚至包括文本在内,无论其是静态的还是动态的,都将为人们提供某种方式或手段,从而让人们能够洞察其中的缘由,找出问题的答案,发现形形色色的关系,或许还能让人们理解在其他形式的情况下不易发觉的事情。不过,如今在科学技术研究领域,信息可视化这条术语则一般适用于大规模非数字型信息资源的可视化表达。有关可视化的内容将在后续章节中进一步讨论。
2.Hadoop软件框架
Hadoop 是一个能够对大量数据进行分布式处理的软件框架。Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的结点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理来加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点。
1)高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
2)高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的结点中。
3)高效性。Hadoop能够在结点之间动态地移动数据,并保证各个结点的动态平衡,因此处理速度非常快。
4)高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。图1-15所示为Hadoop构架。
图1-15 Hadoop构架
3.R与Python语言
做数据分析、科学计算等离不开编程语言的使用,目前该领域的主流编程语言是R语言、Python语言等。
(1)R语言
R语言是统计领域广泛使用的、诞生于1980年左右的S语言的一个分支。可以认为R语言是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。后来Auckland大学的Robert Gentleman和Ross Ihaka及其他志愿人员开发了一个R系统。R语言是基于S语言的一个项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改地在R语言环境下运行。R语言是一个免费的软件,针对不同的操作系统都是可以免费下载和使用的。
R语言有一套完整的数据处理、计算和制图开发工具。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言,可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。
R语言的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使用户能灵活机动地进行数据分析,甚至创造出符合需要的新的统计计算方法。R语言的功能如下。
● R语言内含多种统计学及数字分析功能。因为S语言的关系,R比其他统计学或数学专用的编程语言有更强的物件导向(面向对象程序设计)功能。
● R语言的另一强项是绘图功能。
● R语言可用作矩阵计算,其分析速度可高过商业软件MATLAB。
R语言入门难,入门后相对容易,而Python语言入门相对容易,接下来对其做简要介绍。
(2)Python语言
Python语言是一种面向对象的、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明。第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。
它能够很轻松地把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用Python语言快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分用更合适的语言改写。比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C++重写。
Python语言的特点通过表1-7列举出来。
表1-7 Python语言的特点
Python易学、易读、易维护,处理速度也比R语言要快,无须把数据库切割。相对于传统的Java,C语言、R和Python具有强大的数据处理和分析能力,是大数据时代的主流语言工具。
总之,大数据的开发工具和平台不止以上这几种,相信在不久的将来,随着人们对大数据的利用程度的深入,将会涌现出更好的开发工具和语言,对数据的挖掘和利用的程度和效率也会更高、更好。