但如果只会操作统计软件而不会用逻辑分析Data 背后的涵义与事实现况相应证的话,那也不过只能做数据处理,替代性很高的工作,而无法深入规划策略的核心。
当然,基本功是最不可忽略的环节,想要成为数据科学家,对于这几个编程语言和工具你应该要有一定的认识:
若要列出所有程式语言,你能忘记其他的没关系,但最不能忘的就是 R。从 1997 年悄悄地出现,最大的优势就是它免费,为昂贵的统计软件像是 Matlab 或 SAS 的另一种选择。
但是在过去几年来,它的身价大翻转,变成了数据科学界眼中的宝。不只是木讷的统计学家熟知它,包括 Wall Street 交易员、生物学家,以及硅谷开发者,他们都相当熟悉 R。多元化的公司像是 Google、Facebook、美国银行以及 New York Times 通通都使用 R,它的商业效用持续提高。
R 的好处在于它简单易上手,透过R,你可以从复杂的数据集中筛选你要的数据,从复杂的模型函数中操作数据,建立井然有序的图表来呈现数字,这些都只需要几行程式码就可以了。打个比方,它就像是好动版本的Excel。
R 最棒的资产就是活跃的动态系统,R 社群持续地增加新的软件包,还有以内建丰富的功能集为特点。目前估计已有超过200 万人使用R,最近的调查显示,R 在数据科学界里,到目前为止最受欢迎的语言,占了回复者的61%(紧追在后的是39% 的Python )。
它也吸引了 Wall Street 的注目。传统而言,证券分析师在Excel 档从白天看到晚上,但现在R 在财务建模的使用率逐渐增加,特别是视觉化工具,美国银行的副总裁Niall O'Conno 说,“R 让我们俗气的表格变得突出”。
在数据建模上,它正在往逐渐成熟的专业语言迈进,虽然 R 仍受限于当公司需要制造大规模的产品时,而有的人说他被其他语言篡夺地位了。
“R 更有用的是在画图,而不是建模。”顶尖数据分析公司Metamarkets 的CEO,Michael Driscoll 表示,“你不会在Google 的网页排名核心或是Facebook 的朋友们推荐演算法时看到R的踪影,工程师会在R 里建立一个原型,然后再到Java 或Python 里写模型语法”。
举一个使用R 很有名的例子,在2010 年时,Paul Butler 用R 来建立Facebook 的世界地图,证明了这个语言有多丰富多强大的视觉化数据能力,虽然他现在比以前更少使用R 了。
“R已经逐渐过时了,在庞大的数据集底下它跑的慢又笨重” Butler 说。
所以接下来他用什么呢?
如果说 R 是神经质又令人喜爱的 Geek,那 Python 就是随和又好相处的女生。
Python 结合了R 的快速、处理复杂数据挖掘的能力以及更务实的语言等各个特质,迅速地成为主流,Python 比起R,学起来更加简单也更直观,而且它的生态系统近几年来不可思议地快速成长,在统计分析上比起R 功能更强。
Butler 说,“过去两年间,从 R 到 Python 地显著改变,就像是一个巨人不断地推动向前进”。
在数据处理范畴内,通常在规模与复杂之间要有个取舍,而 Python 以折衷的姿态出现。 IPython Notebook(记事本)和NumPy 被用来暂时存取较低负担的工作量,然而Python 对于中等规模的数据处理是相当好的工具;Python 拥有丰富的数据族,提供大量的工具包和统计特征。
美国银行用 Python 来建立新产品和在银行的基础建设介面,同时也处理财务数据。“Python 是更广泛又相当有弹性,所以大家会对它趋之若鹜。”O’Donnell 如是说。
然而,虽然它的优点能够弥补 R 的缺点,它仍然不是最高效能的语言,偶尔才能处理庞大规模、核心的基础建设。 Driscoll 是这么认为的。
今日大多数的数据科学都是透过 R、Python、Java、Matlab 及 SAS 为主,但仍然存在着鸿沟要去弥补,而这个时候,新进者 Julia 看到了这个痛点。
Julia 仍太过于神秘而尚未被业界广泛的采用,但是当谈到它的潜力足以抢夺 R 和 Python 的宝座时,数据黑客也难以解释。原因在于Julia 是个高阶、不可思议的快速和善于表达的语言,比起 R 要快的,比起 Python 又有潜力处理更具规模的数据,也很容易上手。
“Julia 会变的日渐重要,最终,在 R 和 Python 可以做的事情在 Julia 也可以”。 Butler 是这么认为的。
就现在而言,若要说 Julia 发展会倒退的原因,大概就是它太年轻了。 Julia 的数据社区还在初始阶段,在它要能够和 R 或 Python 竞争前,它还需要更多的工具包和软件包。
Driscoll 说,它就是因为它年轻,才会有可能变成主流又有前景。
Java 和以Java 为基础的架构,是由谷谷里最大的几家科技公司的核心所建立的,如果你从Twitter、Linkein 或是Facebook 里观察,你会发现Java 对于所有数据工程基础架构而言,是非常基础的语言。
Java 没有和 R 和 Python 一样好的视觉化功能,它也不是统计建模的最佳工具,但是如果你需要建立一个庞大的系统、使用过去的原型,那 Java 通常会是你最基的选择。
为了迎合大量数据处理的需求,以 Java 为基础的工具群兴起。 Haoop 为处理一批批数据处理,发展以 Java 为基础的架构关键;相较于其他处理工具,Haoop 慢,但是无比的准确和可被后端数据库分析广泛使用。和 Hive 搭配的很好,Hive 是基于查询的架构下,运作的相当好。
Scala是另一个以 Java 为基础的语言,和 Java 很像,对任何想要进行大规模的机械学习或是建立高阶的演算法,Scala 会是逐渐兴起的工具。它是善于呈现且拥有建立可靠系统的能力。
“Java 像是用钢铁建造的;Scala 则是让你能够把它拿进窑烤然后变成钢的黏土”Driscoll 说。
Matlab 可以说是历久不衰,即使它标价很高;在非常特定的利基市场它使用的相当广泛,包括密集的研究机器学习、信号处理、图像辨识等等。
GO 是另一个逐渐兴起的新进者,从 Google 开发出来的,放宽点说,它是从 C 语言来的,并且在建立强大的基础架构上,渐渐地成为 Java 和 Python 的竞争者。
这么多的可以使用,但我认为不见得每个都一定要会才行,知道你的目标和方向是什么,就选定一个最适合的工具使用吧!可以帮助你提升效率又达到精准的结果。