本节书摘来自华章计算机《Spark与Hadoop大数据分析》一书中的第1章,第1.2节,作者:文卡特·安卡姆(Venkat Ankam) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2 大数据科学以及Hadoop和Spark在其中承担的角色
数据科学的工作体现在以下这两个方面:
从数据中提取其深层次的规律性
创建数据产品
要从数据中提取其深层次的规律性,意味着要使用统计算法提炼出有价值的信息。数据产品则是一种软件系统,其核心功能取决于对数据的统计分析和机器学习的应用。Google AdWords或Facebook里的“你可能认识的人”就是数据产品的两个例子。
1.2.1 从数据分析到数据科学的根本性转变
从数据分析到数据科学的根本转变的根源,是对更准确的预测和创建更好的数据产品需求的不断增长。
让我们来看一个示例,其中解释了数据分析和数据科学之间的差异。
问题:某大型电信公司有多个呼叫中心,负责收集呼叫者信息并将其存储在数据库和文件系统中。该公司已经对呼叫中心数据实施数据分析,提供了以下分析结果:
服务的可用性
平均应答速度、平均通话时间、平均等待时间和平均呼叫时间
呼叫的放弃率
首次呼叫解析率和每次通话的费用
座席占用情况
现在,该电信公司希望减少客户流失,改善客户体验,提高服务质量,并通过以接近实时的方式了解客户的情况,进行交叉销售和向上销售。
解决方案:分析客户的声音。客户的声音比任何其他信息都有更深刻的含义。我们可以使用CMU Sphinx等工具将所有呼叫转换为文本,并在Hadoop平台上进行扩展。我们可以进行文本分析以从数据中获取分析结果,获得高精确度的呼叫–文本转换,创建适合该公司的模型(语言和声学),并根据业务发生变化的频度,随时重新训练模型。此外,可以利用机器学习和自然语言处理(natural language processing,NLP)技术创建用于文本分析的模型,提供以下指标,合并到数据分析的指标里:
客户流失的主要原因
客户情感分析
客户和问题的划分
客户的 360 度视角
请注意,这个用例的业务需求产生了从数据分析到实现机器学习和NLP算法的数据科学的根本转变。为了实施这个解决方案,需要使用新的工具和技术,还需要一个新的角色:数据科学家。
数据科学家具备多种技能—统计、软件编程和业务专业知识。数据科学家能够创建数据产品,并从数据中提炼出价值。让我们来看看数据科学家与其他角色有什么不同。这会有助于我们理解在数据科学和数据分析项目中有哪些角色,以及他们要承担哪些工作。
- 数据科学家与软件工程师
数据科学家和软件工程师角色之间的区别如下:
软件工程师根据业务需求,开发通用的应用软件
数据科学家不开发应用软件,但他们开发软件来帮助解决问题
通常,软件工程师使用Java、C++和C#等编程语言
数据科学家往往更重视像Python和R这样的脚本语言
- 数据科学家与数据分析师
数据科学家和数据分析师角色之间的区别如下:
数据分析师使用SQL和脚本语言进行描述性及诊断性分析,从而创建报告和仪表板。
数据科学家使用统计技术和机器学习算法来进行预测性及规范性分析,从而找到答案。他们通常会使用诸如Python、R、SPSS、SAS、MLlib和GraphX之类的工具。
- 数据科学家与业务分析师
数据科学家和业务分析师角色之间的区别如下:
两者都关注业务,因此他们可能会提出类似的问题
数据科学家具备找到答案所需的技术技能
1.2.2 典型数据科学项目的生命周期
让我们学习如何了解和执行典型的数据科学项目。
从图1-4中所示的典型数据科学项目的生命周期可以看出,数据科学项目的生命周期是迭代的,而如图1-3所示的数据分析项目的生命周期却不是迭代的。在对项目结果进行改善的情况下,定义问题和结果以及沟通这两个阶段没有包含在迭代中。然而,整个项目的生命周期是迭代式的,它需要在生产实施后不断地改进。
图1-4 数据科学项目的生命周期
在数据预处理阶段,定义问题和结果的步骤与数据分析项目类似,如图1-3所示。所以,让我们来讨论数据科学项目所需的新步骤。
- 假设和建模
对于具体问题,要考虑所有能够和预期结果相匹配的可行解决方案。这通常涉及关于这个问题的根本原因的假设。这样,关于业务状况的问题就会浮现出来,例如为什么客户会取消服务,为什么支持电话会显著增加,以及为什么客户会放弃购物车。
如果我们对数据有更深入的理解,根据某个假设就可以确定合适的模型。这就关系到理解数据的属性及其相互关系,并通过定义用于测试、训练和生产的数据集来构建建模所需的环境。我们可以利用机器学习算法(如逻辑回归、K均值聚类、决策树或朴素贝叶斯等)来构建合适的模型。
- 衡量有效性
模型的执行是通过针对数据集运行确定的模型来进行的。通过利用正确的输出对结果进行核对可以衡量模型的有效性。我们可以使用测试数据验证结果,并创建像均方差(Mean Squared Error,MSE)之类衡量有效性的指标。 - 做出改进
从衡量结果可以看到需要改进的程度有多大。要考虑你会做出哪些改变。你可以问自己以下问题:
围绕问题的根本原因所做出的那些假设是否正确?
提取更多的数据集是否会产生更好的结果?
是否有其他解决方案能产生更好的结果?
一旦你实施了改进措施,就要对它们再次进行测试,并将它们与以前的衡量结果进行比较,以进一步改进解决方案。
- 交流结果
针对结果的交流是数据科学项目生命周期中的重要一步。数据科学家描述数据中的发现的方式是把这些发现和业务问题关联起来。报表和仪表板是交流结果的常用工具。
1.2.3 Hadoop和Spark 承担的角色
Apache Hadoop为你提供了分布式存储和资源管理功能,而Spark为你提供了数据科学应用程序所需的内存级性能。对于数据科学项目来说,Hadoop和Spark有以下的优点:
广泛的应用和第三方组件包
一个便于使用的机器学习算法库
Spark 能够和深度学习库(如 H2O和TensorFlow)集成
可以利用 Scala、Python和R的shell进行交互式分析
统一的特性—可以把SQL、机器学习和流式传输一起使用