首页 首页 大数据 大数据入门 查看内容

R,Python 和 Julia 是机器学习和数据科学中三个最重要的语言

木马童年 2019-2-13 18:39 57 0

1. 我认为 R,Python 和 Julia 是机器学习和数据科学中三个最重要的语言。任何人如果想在这个领域有所发展,长远来说这三种语言都需要掌握。2. 我自己学习数据科学的主要语言当然是 Python,不光是因为用 Python 的 ...

1. 我认为 R,Python 和 Julia 是机器学习和数据科学中三个最重要的语言。任何人如果想在这个领域有所发展,长远来说这三种语言都需要掌握。

2. 我自己学习数据科学的主要语言当然是 Python,不光是因为用 Python 的人多,也因为我自己比较熟悉这种语言。早在2001年的时候,我就在一家小书店里买到了一本叫做 Learning Python 的书,当时应该是第二版,讲的还是 1.x 的 Python。从那时候起,我断断续续对语言本身下过一些功夫,也在好几件事情里用了 Python,现在回想起来,这些事情全是跟数据处理有关。所以来来回回,对 Python 的数据处理能力多少有些了解。学一个新的领域,入门的时候应当尽量降低不必要的障碍,数据科学和机器学习里要学习的东西太多了,没必要在语言上自找麻烦。既然可以用一个熟悉的语言,当然乐得如此。


数据科学中的 R、Python 和 Julia

Learning Python

3. 但 Python 其实并不是数据科学的“原生语言”,R 才是。R 语言和它的前身 S 语言,本来就是统计学家发明和使用的语言。S 的发明人叫 John Chambers,跟思科的前 CEO 钱伯斯同名同姓,但一点关系都没有。S 从根子上就是为数据科学设计出来的语言,Chambers 在发明 S 语言之前,在这个领域研究了30多年,并且由于 S 语言的成就获得了 1998 年度的 ACM 软件系统奖。当然,老先生现在也已经转到了 R 语言的阵营当中。这里的关键在于,R 是数据科学的母语,R 中包含了最丰富、最深刻、最专业的数据科学思想,是整个数据科学一个重要的原创思想宝库。包括 Python 在内,很多其他语言试图在数据科学领域内拓展的时候,都需要去借(chao)鉴(xi)R 语言。比如 Python 处理表数据的王牌库 pandas,其主要思想就是来自 R 的。尽管现在 R 的风头被 Python 盖过,但是 R 语言中的宝藏太多、积累太厚,想在这个领域深造的人,迟早要进入 R 社区来看一看,学一学。


数据科学中的 R、Python 和 Julia

John M. Chambers,S 语言的发明者

4. Python 是怎样起来的?其实就在短短的三年前,Python 相对于 R、Matlab 甚至 Scala ,都看不出有什么明显优势。当时 Numpy,Scipy,pandas,matplotlib 和 Sklearn 实际上都已经很成熟,但别的语言也各有绝活,Python 并没有占多少便宜。真正令 Python 在数据科学领域脱颖而出的事件还没发生。这个事件是什么呢?有人可能认为是 2015 年 9 月的 TensorFlow 发布,但我不这么认为。TensorFlow 虽然是个重要的事件,但当时它对于深度学习社区之外的人,并没有多大的影响。真正导致 Python 崛起的,其实还是 Alpha Go 这一公关事件。由于 Alpha Go 的胜利,引发全民关注 AI 的热潮,本来并不是很旺盛的 AI 投资也瞬间爆燃,相关工作薪资节节攀升。这样一来,大批本来在数据科学圈子外面的程序员、学生和科研人员就激动了,纷纷加入这个领域。而他们进入数据科学领域的时候,想法估计会跟我差不多。Python 是较高级流行语言中最适合数据科学的,是数据科学语言中最流行的,所以 Python 成了新人的当然之选。大量新人的涌入,才是 Python 后来居上的关键原因。

5. 在 TIOBE 的编程语言流行度排行榜上,Python 排名第五。排在它前面的是 Java,C,C++ 和 C#,清一色的 C family 语言。这四种语言中只要有一种适合于数据科学,估计也就没 Python 什么事了。但是很可惜,这四种语言都是编译型的系统和应用开发语言,不适合作为数据科学家的推荐工作语言。所以虽然 Java 也有 Apache Mahout 这样优秀的机器学习库,但是始终很难进入数据科学的主流。

6. 编译型系统开发语言为什么不适用于机器学习呢?我认为主要有两个原因。比较浅表的原因是系统级语言的抽象层次较低,细节过多,用它来表达机器学习的概念、关系和运算,代码看上去和写起来都不够优雅,会夹杂大量系统层面的细节。但更深层的原因是编译型语言与数据科学语言之间的“哲学冲突” 。用 Java 和 C++ 等编译语言开发系统,无论你迭代速度多快,从根本上还是构建性的,像盖楼,是实现某个你自己主动设计出来的系统,所以要先想清楚,再写代码,编译构建系统,然后看看是不是达成目标。而数据科学或者机器学习的工作则是探索性的,像迷宫寻宝,是摸索某项客观存在的外在的规律,所以需要频繁的试错,快速的反馈,快速的改变方向。比如 Kaggle 的竞赛,优胜者往往要提交几百次才能取得满意的结果。在这样的工作模式中,编译型语言就显得太过麻烦了。


数据科学中的 R、Python 和 Julia

Kaggle 的创始人 Ben Hamner 谈 Kaggle 竞赛获胜者的经验

7. 数据科学和机器学习应用是性能怪兽,数据量上来了,无论多大的计算力,都很难满足它的胃口。吴恩达在他 2011 年录制的经典的机器学习视频课程中说,一般来说人们会用 Matlab 、Python 等高层次语言来找到较佳的模型,然后用 C++ 和 Java 等语言把模型产品化,以追求更高的执行效率。很显然这种方式适合于保质期长的模型,也就是说,一个模型一旦调好,其性能在相当长的一段时间内都能够保持稳定,比如计算机视觉里很多的模型就有这个特点。但随着 AI 和机器学习的应用越来越广泛,我们所用到的很多模型,保质期会越来越短。也就是说,就算你在现阶段找到一个较佳的模型,但过了一段时间,外部条件变化了,这个模型的性能会很快下降。比如用来分析社交平台读者的阅读偏好的模型,用来分析网站用户行为的模型,用来分析服装流行趋势的模型,都是保质期很短的模型。开发这种模型就比较两难,只用 Python,R 等动态语言来开发,周期短、灵活度高,但运行效率较低。而如果用 C++、Java来做产品化,可能产品还没做完,模型保质期就过了。

8. 所以在未来,我们很可能需要一种既像 R、Python 那么高层次,又像 C++、Java 一样快的数据科学语言。这种语言现在已经出现了,就是 Julia。Julia 来自 MIT 的 CSAIL (计算机科学与人工智能实验室)。CSAIL 是2003年由 MIT 计算机科学实验室和 AI 实验室合并而来。不了解这两个实验室,尤其是 MIT AI 实验室辉煌历史的人,请自行搜索。Julia 的语法借鉴了 Matlab,高校里出来的人可能会有宾至如归的感觉,但我觉得如果语法上跟 Python、R 或者 C family 一致的话可能会更有利于广大程序员。不过语法始终是个小问题。关键在于,Julia 利用了 LLVM 的基础设施,实时将代码翻译和优化为高效的机器码,并且执行。因此,Julia 成为了第一种性能全面达到 C 语言级别的高级动态语言。经过了几年的发展,Julia 日臻成熟,预计在今年 6 月份推出 1.0 版本。目前这个语言的社区还是很小,Kaggle 上 Python 的 Kernel 有26,000多个,R 有 12,000 多个,而 Julia 只有100多个,完全不成比例。但是这个事情你不能只看数量。Julia 在高校和科研单位里获得了热烈的欢迎,很多学术大佬现在都在安利 Julia。由于在 AI 和数据科学领域中,高校和科研单位在相当长一段时间里将占据话语权的中心,所以我对 Julia 中长期的发展十分看好。

在不久的将来,多智时代一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏多智时代,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!

机器学习 数据科学 数据处理 深度学习 程序员 编程语言
0
为您推荐
大数据技术怎么学习,在学习大数据之前,需要具备什么基础?

大数据技术怎么学习,在学习大数据之前,需要具备什么

  大数据又称黑暗数据,是指人脑无法处理的海量数据聚合成的信息资产,在民生、IT、…...

大数据现在处于什么阶段,入行大数据,需要学习哪些基础知识?

大数据现在处于什么阶段,入行大数据,需要学习哪些基

大数据的发展历程总体上可以划分为三个重要阶段,萌芽期、成熟期和大规模应用期…...

对于大数据开发的学习,最经典的学习路线是什么?

对于大数据开发的学习,最经典的学习路线是什么?

对于现代社会,大数据开发的重要性不言而喻,通过大量的数据处理、分析获取有价值的信…...

大数据时代,主要需要什么类型的人才?

大数据时代,主要需要什么类型的人才?

什么是大数据,大数据是主要指的是,无法在可承受的时间范围内用常规软件工具进行捕捉…...

数据科学,数据分析和机器学习之间,有什么本质区别?

数据科学,数据分析和机器学习之间,有什么本质区别?

我们都知道机器学习,数据科学和数据分析是未来的发展方向。有些公司不仅利用大数据帮…...

什么样的人才是大数据人才呢?我们应该怎么定义和分类?

什么样的人才是大数据人才呢?我们应该怎么定义和分类

在未来世界,国家之间、区域之间甚至是公司之间的大数据人才的争夺战,将是愈演愈烈的…...