分享

数据科学与开源

 oskycar 2014-04-21

数据科学 旨在从数据集中提取有用的信息。公司很久以前就已认识到数据作为业务资产的价值。但现在可用的巨大数据量需要采用新的方法来理解数据并高效地管理它们。越来越多的工程师和科学精英开始构建系统,对海量数据应用数据科学。本文将向您介绍数据科学领域,以及可供如今的数据科学家使用的开源工具。

数据科学和数据科学家

数据科学始于数据收集。适合收集的数据可能是 开放数据 或来自内部业务流程的数据(比如网站统计数据)。接下来是提炼:将数据化简为能回答具体问题的有用信息的创造性过程。通常,问题定义了提取信息的方法。在收集和提炼步骤中还包含其他重要的步骤,比如数据清理(或预处理)和数据可视化。

开放数据

开放数据是一种通过使每个人在需要时能够自由使用数据,从而将数据大众化的概念。逐渐开放的数据运动与开源背后的理念不谋而合。开放数据的一个有用来源是 Data.gov(参见 参考资料),这是一个美国政府网站,创建该网站是为了提高公众对联邦政府行政部门所生成数据的访问能力。

也可将数据科学视为一种业务流程。O'Reilly 的 Mike Loukides 通过一个富有吸引力的例子表明,数据科学不仅是数据向信息的转换,也是数据向产品 的转换(参见 参考资料)。从这个角度讲,这个领域就像当今的淘金潮 — 对海量信息中宝贵价值的竞争性搜索。

数据淘金潮中的勘探者被称为数据科学家。随着企业认识到其数据中的价值,对有才能的多学科工程师和科学家的需求也不断增长。数据科学家必须拥有计算机科学、数学和统计学技能。理想情况下,他们还应拥有领域 知识,即对数据来源有一定的了解(医疗、财务、Web 和其他领域)。图 1 表明数据科学是计算机科学、数学、统计学和领域知识的交集:

图 1. 数据科学家精通的重要学科
该图显示了重要数据科学学科的交集

借助这个完整的技能集,数据科学家可以将领域知识和数学转换为应用程序(从计算机科学领域讲),挖掘数据并从中提炼出信息。关键在于一个多学科的关注点(它也可包含机器学习和信息检索等领域)。

目前,对拥有大数据分析经验的工程师和科学家拥有很高的需求。McKinsey & Company 预计到 2018 年,胜任数据科学家角色的人才将出现短缺(参见 参考资料)。数据科学中的理念和方法对其他许多学科也很有用。即使您不渴望成为数据科学家,数据科学技能也能够为您的工程工具箱提供很好的补充。

Back to top

应用数据科学的地方

像云计算一样,数据科学正在快速引起人们的注意并得到应用。依据 Google Insights for Search(以前称为 Google Trends),在今年截至编写本文时,对数据科学的兴趣大约翻了一番。Google Insights for Search 本身就是实际应用数据科学的一个例子。图 2 表明,从 2011 年夏季到 2012 年春季,以数据科学 为词汇进行 Web 搜索的频率显著增加:

图 2. Google Insights for Search 有关对数据科学的兴趣的数据
该图显示了从 2011 年夏季到 2012 年春季,Google Insights for Search 获得的对数据科学感兴趣的数据

数据科学正快速成为组织内一个在线获取数据的工作中心(包括基于爬网的收集或基于单击等用户行为的内部收集)。主要网站(比如 Google、Amazon、Facebook 和 LinkedIn)都拥有自己的数据科学团队来使用网站的可用数据(参见 参考资料)。

Google 对 PageRank 算法的开发就是数据科学的一个早期例子。Google 从 Web 获取数据并为每个页面上的超链接分配一个权重数字,以度量这些链接的相对重要性。(PageRank 的完整细节仅在 Google 内部公开。)该算法可用作将 Web 内容作为搜索词汇的函数来排名的方式。

大型在线零售商(比如 Amazon 和 Walmart)使用数据科学来尝试提高销量。它们基于各个用户的产品搜索和购买历史记录为客户生成建议。

LinkedIn(一个专业社交网站)维护着海量的数据,这些数据与人们和他们的职业、兴趣和人脉有关。这个庞大的数据网络催生了各种推荐机制(针对个人、群体和公司),以及在更深级别上使用该数据在 LinkedIn 网站上生成新产品的项目。

数据科学在 Web 属性上的一个新示例是公司 bitly。在表面看来,bitly 是一项服务,它帮助用户将任何 URL 缩短到最长 19 个字符的 URL(永久存储在 bitly 的数据中心)。对缩短的 URL 的引用从 bitly 重定向到原始 URL。bitly 然后可看到人们缩短的 URL 其他用户单击了哪些 URL。这种策略提供了海量的数据,bitly(和它的首席科学家 Hilary Mason)可使用它们生成关于浏览习惯的大量统计数据。向 bitly 注册的用户可看到他们缩短的 URL 何时被单击、通过哪个引用程序(电子邮件客户端、Twitter 或另一个 URL),以及来自哪个国家。企业也可使用 bitly 跟踪针对一组内容的用户行为。

Back to top

用于数据科学的开源工具

就像计算机编程并不局限于单一的语言或开发环境一样,数据科学也并不仅与单个工具或工具套件相关联。开源领域有纷繁多样的工具在推进数据科学的发展。它们包括在数值方面处理大数据集的工具,以及帮助开发复杂处理的可视化和原型设计工具。表 1 列出了可供数据科学家使用的主流开源工具,并定义了它们的角色:

表 1. 用于数据科学的开源工具
工具描述
Apache Hadoop处理大数据的框架
Apache Mahout用于 Hadoop 的可扩展的机器学习算法
Spark用于数据分析的集群计算框架
The R Project for Statistical Computing容易使用的数据操作和绘图
Python, Ruby, Perl原型设计和生产脚本语言
SciPy用于科学计算的 Python 包
scikit-learn用于机器学习的 Python 包
Axiis交互式数据可视化

表 1 中的列表并不详尽,仅给出了数据科学家的工具箱中的一些核心元素。开源领域还拥有高度的专业化和特定于领域的库和工具(例如,用于交互式地图可视化和文本分析的实用程序)。

Hadoop、Mahout 和 Spark

Internet 为收集关于用户行为和习惯的海量数据创造了机会。Apache Hadoop 是处理海量数据集的首要工具。Hadoop 对数据科学至关重要,它提供了一个可扩展的分布式数据处理框架。不是所有数据科学问题都需要使用大数据进行处理,但在您的问题涉及到互联网范围的数据时,Hadoop 是一个理想的工具。Google MapReduce 框架的 PageRank 算法实现就是数据科学在大数据框架方面的一个早期例子。(Hadoop 是 MapReduce 的一种实现。)Apache Pig 可以使 Hadoop 更易于使用,它带来了一种能自动构建 MapReduce 应用程序的查询语言(参见 参考资料)。

Apache Mahout 是 Hadoop 平台上的一种可扩展的机器学习算法实现(参见 参考资料)。Mahout 包含集群算法和基于批处理的协作式过滤算法(用于实现建议系统)的可扩展实现。

另一个针对大数据集的值得注意的解决方案是 Spark 框架(参见 参考资料)。Spark 包含一些优化,比如具有能够容错的抽象内存型集群计算。

R 项目

名为 R 的编程语言和开发环境是一个通常能够在数据挖掘者的工具箱中找到的工具。R 专注于统计计算和制图。R 相对容易学习,广泛应用在数据分析领域中。R 不但是开源的而且是免费的,它是一种具有庞大用户群的流行语言。

R 是一种支持面向对象、函数、过程和命令式编程风格的多泛型语言。该语言通过一个命令行接口进行解释,还包含广泛的生产级图形功能。静态图形可立即使用。借助额外的包,还有可能实现动态和交互式图形。图 3 给出了一个使用 R 生成的示例图表:

图 3. 使用 R 的示例 3D sinc 图表
该屏幕截图显示了一个使用 R 生成的示例 3D sinc 图

R 编程语言是使用 C 和 Fortran 开发的。R 中的许多内部标准函数是使用 R 本身开发的。R 支持混合语言编程,支持从 C 和 Java? 等语言访问 R 对象。您可以使用 轻松地扩展 R 的功能,这些包可使用 R、C、Java 和 Fortran 编程语言开发。

脚本语言

多范式脚本语言(比如 Python、Ruby 和 Perl)为应用程序开发和部署提供了一个专业平台。而且它们非常适合原型设计和测试新理念。这些语言还支持各种数据存储和通信格式,比如 XML 和 JavaScript 的对象表示法 (JSON),以及各种各样用于科学计算和机器学习的开源库。Python 是这一领域无可争辩的领导者,或许因为它对来自非计算机科学背景的用户而言最容易学习。数据科学家的工作常常需要 Python 的知识。

SciPy 和 scikit-learn

SciPy 包将 Python 扩展到了科学编程领域。它支持各种各样的功能,包括并行编程工具、集成、常微分方程解答器,甚至包括为在 Python 代码中包含 C/C++ 代码而执行的扩展(称为 Weave)。

与 SciPy 相关的是 scikit-learn,它是一个适用于基于 Python 的机器学习的包。scikit-learn 包含机器学习领域中用于监督式学习(支持向量机、朴素贝叶斯)、无监督学习(集群算法)的许多算法和其他用于数据集操作的算法。

这两个包都扩展了 Python 的功能,以便用作一个数据科学平台。

Axiis 交互式数据可视化

许多开源解决方案仅致力于可视化。一个特别有趣的例子是 Axiis 框架,它提供了一种简明的标记语言来实现彩色的富可视化。图 4 给出了一个例子:

图 4. 使用 Axiis 框架的楔子堆形图形表示
该屏幕截图显示了使用 Axiis 框架创建的楔子堆形图形表示

图 4 是来自 Tom Gonzalez(BrightPoint Consulting 的常务董事)的一个交互式示例的静态版本。请参见 参考资料,获取交互式版本的链接。

Back to top

结束语

数据科学家的角色构筑在一个牢固的知识和经验平台之上。但工具也是数据科学领域的一个重要方面。在新兴学科中,开源社区常常是建立前所未有软件的先锋队。数据科学领域也不例外。数据科学相对较新,所以几乎可以肯定会有更多的新工具、数据协议和数据格式正在筹划之中。但在数据科学中,像在许多其他学科中一样,开源解决方案已在宽度和深度上领先一步。

Resources

Learn

  • Google Insights for Search:这个 Google 站点支持任何人查看一个主题在全球多个地区的搜索趋势,包括两个或更多主题的对比趋势。
  • 开放数据:在 Wikipedia 上了解开放数据。
  • 什么是数据科学?”(Mike Loukides,O'Reilly Radar,2010 年 6 月):参阅对数据科学和将数据转换产品背后的理念的出色介绍。
  • Growing Your Own Data Scientists”(Dan Woods,Forbes,2012 年 3 月):这个文章系列调查分析了这一领域的领先专家对数据科学家 的定义。
  • developerWorks 上的 Hadoop:浏览关于 Apache Hadoop 和相关技术的丰富文章和其他资源。
  • Apache Mahout:适合所有人的可扩展机器学习框架”(Grant Ingersoll,developerWorks,2011 年 11 月):Mahout 提交者 Ingersoll 介绍了 Mahout 的功能,展示了一个部署和扩展 Mahout 的一些更流行算法的示例。
  • 用于 Linux 的数据可视化工具”(M. Tim Jones,developerWorks,2006 年 11 月):这篇文章提供了一些与 R 项目比较相似的有用的数据可视化工具。
  • Big data: The next frontier for competition:了解来自 McKinsey & Co. 的研究及大数据和数据科学家的角色。
  • developerWorks 大数据技术主题:查找丰富的操作指引信息、工具和产品,引导您了解大数据世界。
  • Data.gov:通过在线目录浏览可用的 Data.gov 数据库,使用多个条件进行过滤搜索。
  • Science.gov:这个门户支持访问来自 13 个联邦就的超过 55 个数据库和 2,100 个网站,获取美国政府科学信息。与 Data.gov 上一样,您可按搜索条件或特定机构来限制搜索。
  • 使用 Apache Pig 处理数据”(M. Tim Jones,developerWorks,2012 年 2 月):进一步了解 Pig 以及如何将它应用到您应用程序中。
  • Spark,一种快速数据分析替代方案”(M. Tim Jones,developerWorks,2011 年 11 月):了解 Spark 集群计算方法以及它与 Hadoop 的区别。
  • developerWorks 开源技术主题:查找丰富的操作信息、工具和项目更新,帮助您掌握开源技术并将其用于 IBM 产品。

Get products and technologies

  • Apache Hadoop:下载 Hadoop。
  • Apache Mahout:从 Apache 镜像下载 Mahout。
  • Spark:获取最新的 Spark 版本。
  • R 编程语言:获取 R,一种广泛用于统计和可视化领域的多范式语言和开发环境。
  • PythonRubyPerl:借助这些多范式脚本语言,简化数据提炼算法的开发和原型设计。
  • SciPy and scikit-learn:结合使用 Python 的数据科学功能、用于科学计算的 SciPy 包,以及用于机器学习的 scikit-learn 包。
  • Axiis:Axiis 数据可视化框架是既适合初学者也适合专家的一个有用解决方案。查阅 示例页面 以了解该框架能带来哪些可能,包括 图 4交互式版本
  • 以最适合您的方式 评估 IBM 产品:下载产品试用版,在线试用产品,在云环境中使用产品。

Discuss

  • 加入 developerWorks 社区。探索由开发人员推动的博客、论坛和维基,并与其他 developerWorks 用户进行交流。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多