Julia机器学习核心编程:人人可用的高性能科学计算
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 Julia在数据科学中的重要性

在过去的十年中,“大数据”已经成为一个流行词。数据科学也渐渐走进人们的视野中,在数据科学领域进行研究的人被称为数据科学家,他们获取原始数据并对其进行分析,充分挖掘蕴藏在散乱数据中的价值。要做到这一点,数据科学家需要独特的技能组合,即牢固的数学和算法基础,并且对人类行为有良好的理解,从而具有从数据中挖掘出价值,并置于合适位置的能力。

数据科学家掌握的技能各不相同,但一般来说,他们都很擅长编程,并且具有很强的数学背景,尤其是统计学、机器学习和大数据知识,同时深入了解其正在工作的领域。Julia是专门为科学和数值计算而设计的。随着大数据的出现和火爆,需要有一种可以高效处理大量数据的语言。虽然我们有Spark和MapReduce(Hadoop)作为处理引擎,并通过Python、Scala和Java来使用它们,但Julia与Intel的高性能分析工具包是其更好的替代。值得注意的是,Julia擅长并行计算,而且比Spark/Hadoop更容易编写原型。

Julia的一个重要特点就是它解决了双语问题。通常,在使用Python和R时,执行大部分繁重计算工作的代码都是用C/C++编写的,然后在Python或R中调用它们。但在Julia中不需要这样做,因为它的性能可以与C/C++媲美。因此,所有的代码包括任务繁重的计算部分,都可以使用原生的Julia语言来进行编写。

下面简单说说性能基准测试的情况。

上面提到了Julia优秀的运行速度,这个特点也让Julia与传统的动态语言区别开来,速度快是它的特长。那么Julia到底有多快呢?我们在具有1TB、1067MHz DDR3 RAM的Intel(R) Xeon(R) CPU E7-8850 2.00GHz CPU的单核(串行执行)上对Julia与其他语言进行性能基准测试,结果如表1-1所示。

表1-1 性能基准测试结果

这些基准测试是相对C而言的(数值越小越好,此处将C语言的性能数值设为基准参照值,即1.0)。虽然基准测试会有一定的误差,但仍然可以看出Julia的性能非常优秀。

从表1-1可以看出,在基准测试中Julia和Python的性能差异很大。但是在某些项目上二者的性能差异不大,原因是一些可用于Python的数值计算包是用C语言编写的,这里它的表现几乎等同于Julia。

R是专门为统计人员设计的,它有大量免费的统计和数值计算包。R曾经是数据科学家的首选语言(现在首选Python)。但R有一个致命的缺点,就是它是单线程的,比Julia慢得多。

MATLAB不是免费产品,你需要购买付费许可证(学生可以获得折扣),统计学家和学者通常使用它来处理某些特定用例。表1-1所示的这些基准测试项目在MATLAB上运行要慢得多。

Go是从头开始设计的,用于系统编程。Go由谷歌创建,其源代码可以在GitHub上获得,同时谷歌正在不断积极地开发和更新Go语言。Go在表1-1所示的这些基准测试项目中的表现非常出色,但很可惜的是它并非专为数字和科学计算而设计,所以在使用时没有Julia友好。

Java的表现非常优秀,它甚至在一些基准测试项目中击败了Julia。但Java是一种静态语言,我们需要考虑与之相关的开发时间。相比于Java,Julia的设计使其可用于快速原型开发,这些优点使得Julia在众多语言中显得独一无二。