【数据科学】如何像数据科学家一样思考(12个步骤)

介绍

目前,数据科学家正在受到很多关注,因此,有关数据科学的书籍正在激增。在寻找关于空间的好书时,在我看来,他们中的大多数更多地关注工具和技术,而不是数据科学过程的细微问题解决性质。直到我遇到Brian Godsey的“ 像数据科学家一样思考 ” - 它试图引导有抱负的数据科学家通过这个过程作为一条有许多叉子和潜在未知目的地的道路。它讨论了哪些工具最有用,以及为什么,但主要目标是在智能,高效和成功的情况下导航数据科学过程,以实现解决实际数据中心问题的实际解决方案。

 

数据科学项目的生命周期

在本书中,Brian提出数据科学项目包括3个阶段:

  • 第一阶段是准备阶段 - 在项目开始时收集信息所花费的时间和精力可以在以后节省大量的麻烦。
  • 第二阶段是构建产品,从规划到执行,使用您在准备阶段学到的知识以及统计和软件可以提供的所有工具。
  • 第三阶段也是最后阶段即将完成 - 交付产品,获得反馈,进行修订,支持产品以及完成项目。

从图像中可以看出,这3个阶段包含12个不同的任务。我想用这篇文章总结这12个步骤,因为我相信任何有抱负的数据科学家都可以从熟悉它们中受益。

 

第一阶段 - 准备

数据科学的过程始于准备。你需要建立你所知道的,你拥有的,你能得到什么,你在哪里,以及你想成为什么样的人。最后一个是最重要的; 数据科学项目需要有目的和相应的目标。只有当您有明确的目标时,才能开始调查可用资源以及实现这些目标的所有可能性。

1 - 设定目标

在数据科学项目中,与许多其他领域一样,主要目标应在项目开始时设定。在设定目标后,您所做的所有工作都是利用数据,统计数据和编程来实现这些目标。

首先,数据科学的每个项目都有一个客户。有时,客户是向您或您的企业支付费用的人 - 例如,客户或承包代理商。在学术界,客户可能是一位要求您分析数据的实验室科学家。有时,客户是您,您的老板或其他同事。无论客户是谁,他们都会对他们可能从您那里得到的东西抱有一些期望,他们是获得该项目的数据科学家。

为了理解这些期望,您需要对他们的数据提出好的问题。提出能够提供信息性答案并随后改进结果的问题是一项重要且微妙的挑战,值得进行更多的讨论而不是通常的讨论。好的问题在他们的假设中是具体的,好的答案是可衡量的成功而没有太多的成本。从数据科学项目中获得答案通常看起来像下面的公式或配方。

虽然有时候其中一个要素 - 好问题,相关数据或富有洞察力的分析 - 比其他成分更容易获得,但这三者对于获得有用的答案至关重要。任何旧问题,数据和分析的产品并不总是一个答案,更不是一个有用的答案。值得重复的是,您始终需要在项目的每个步骤中都要刻意和深思熟虑,并且此公式的元素不是例外。例如,如果您有一个好问题但不相关的数据,则很难找到答案。

现在是在您期望与之合作的问题,数据和答案的背景下评估项目目标的好时机。通常,初始目标的设定考虑了一些商业目的。如果您不从事商业活动 - 例如您正在进行研究 - 那么目的通常是对结果进行一些外部使用,例如在特定领域中推进科学知识或为其他人提供分析工具。

虽然目标源于项目本身的背景,但每个目标都应该通过基于数据科学的实用过滤器来实现。此过滤器包括提出以下问题:(1)有什么可能?(2)什么是有价值的?(3)什么是有效的?将此过滤器应用于良好问题,可能的答案,可用数据和预见障碍的上下文中的所有假设目标,可以帮助您实现一系列可行,有效,有价值且高效的项目目标。

 

2 - 探索数据

数据科学过程准备阶段的第二步是探索现有数据。下图显示了数据科学家可能访问数据的3种基本方式。它可以是文件系统的文件,数据科学家可以将文件读入他们最喜欢的分析工具中。或者数据可以在数据库中数据库也在文件系统上,但是为了访问数据,数据科学家必须使用数据库的接口,这是一个帮助存储和提取数据的软件层。最后,数据可能位于应用程序编程接口(API)之后API是数据科学家与某些系统之间的软件层,可能是完全未知的或外来的。

最好熟悉数据可能采用的一些表单,以及如何查看和操作这些表单。以下是其中一些:平面文件(csv,tsv),HTML,XML,JSON,关系数据库,非关系数据库,API。有时您无法决定选择哪种格式。数据以某种格式出现,您必须处理它。但是,如果您发现该格式效率低下,笨拙或不受欢迎,您通常可以自由设置可能使事情变得更容易的辅助数据存储,但需要花费时间和精力来设置辅助数据商店。对于访问效率至关重要的应用程序,成本是值得的。对于较小的项目,也许不是。当你到达那里时,你必须越过那座桥。

现在您已经了解了常见的数据形式,您需要对它们进行侦察。以下是您应该考虑的方法:Google搜索,组合不同的数据源,抓取网络,或自己测量/收集它们。就个人而言,我是网络抓取的忠实粉丝。Web scraper必须做的两件重要事情是以编程方式访问大量URL并从页面中捕获正确的信息。如果你想在Facebook上了解你的朋友网络,理论上你可以编写一个脚本来访问所有朋友的Facebook个人资料,保存个人资料页面,然后解析这些页面以获取他们的朋友列表,访问他们的朋友配置文件,等等。这仅适用于允许您查看其个人资料和朋友列表的人,而不适用于私人个人资料。

 

3 - 噪声数据

数据噪声,第三步,是以困难,非结构化或其他任意格式获取数据和信息并将其转换为传统软件可以使用的内容的过程。与数据科学的许多方面一样,它不是一个过程,而是一个可以在整个项目策略的环境中应用的策略和技术的集合。争吵不是一项任务,可以事先准确地规定步骤。每个案例都不同,需要解决一些问题才能取得好成绩。

在噪声之前,好的争论归结为可靠的计划,然后进行一些猜测和检查以确定哪些有效。花一点时间进行数据噪声可以为您节省很多痛苦。通常,数据噪声计划的选择应在很大程度上取决于您在首次调查数据时发现的所有信息。如果您可以想象解析数据或以某种假设的方式访问它 - 我尝试扮演噪声脚本的角色 - 那么您可以编写一个执行相同操作的脚本。假装你是一个噪声的脚本,想象你的数据会发生什么,然后再编写脚本。数据噪声是一个不确定的过程,总是最好先探索一下,然后根据你所看到的内容制定争吵计划。

没有一种方法或一种工具可以实现使混乱数据清洁的目标。如果有人告诉你他们有一个可以纠缠任何数据的工具,那么该工具是一种编程语言,或者他们在撒谎。许多工具都适用于做很多事情,但没有一个工具能够处理任意数据。数据以如此多的形式存在,并且出于如此多的目的,很可能不存在任何能够以任意目的读取任意数据的应用程序。简而言之,数据噪声是一个不确定的事情,需要在特定情况下使用特定工具来完成工作。您可以尝试使用文件格式转换器或专有数据管理器,并编写脚本来处理数据。

 

4 - 评估数据

尽快开始开发以数据为中心的产品或复杂的统计方法可能很诱人,但了解数据的好处值得花费一点时间和精力。如果您对数据有了更多了解 - 如果您保持对它的了解以及如何分析它 - 您将在整个数据科学项目的每个步骤做出更明智的决策,并在以后获得收益。如果没有初步评估(第4步),您可能会遇到异常值,偏差,精确度,特异性或数据的任何其他固有方面的问题。为了更好地发现这些数据并更好地了解数据,后期争论数据分析的第一步是计算一些描述性统计数据。

描述性统计是定量描述信息集合的主要特征或定量描述本身的学科。想一想数据集的描述,最大值,最小值,平均值,摘要。如果不提及推论统计数据,通常很难讨论描述性统计数据。推论统计是使用您必须推断 - 或推断 - 您没有直接测量或数据的知识或数量的数据的做法。对于数据集,您可以说以下内容:

  • 描述性统计数据问:“我有什么?”
  • 推论统计数据问:“我能得出什么结论?”

大多数统计学家和商人都同意这需要推论统计数据来得出大部分很酷的结论:当世界人口达到峰值然后开始下降时,病毒式流行病的传播速度有多快,当股市上涨时,人们是否会在Twitter上对某个主题有一般积极或消极的情绪,等等。但描述性统计在使这些结论成为可能方面起着非常重要的作用。了解您拥有的数据以及它可以为您做些什么是值得的。

使用描述性统计信息,您可以在数据集中找到与特定概念描述匹配的实体。如果您从事在线零售业务,您可能会将客户视为您的主要实体,并且您可能希望识别那些可能购买新视频游戏系统或特定作者新书的人。如果您正在从事广告工作,那么您可能正在寻找最有可能回应特定广告的人。如果你在金融领域工作,你可能会在股票市场上寻找即将上涨的股票。如果可以对这些特征进行简单搜索,那么工作就很容易,您不需要数据科学或统计数据。但是,虽然这些特征并不是数据中固有的(你能想象一只股票可以告诉你什么时候它会上涨吗?),你经常可以在看到它们时认出它们,至少在回想起时。此类数据科学项目的主要挑战是创建一种及时发现这些有趣实体的方法。

 

第二阶段 - 建设

在询问了一些问题并设定了一些目标后,您调查了数据世界,争论了一些具体数据,并了解了这些数据。在每一步中,您都学到了一些东西,现在您已经能够回答在项目开始时提出的一些问题。现在让我们进入建设阶段。

5 - 发展计划

第五步是制定计划。与早期的规划阶段一样,不确定性和灵活路径应该是您的首要考虑因素。你现在对你的项目了解得更多,所以之前存在的一些不确定因素已不复存在,但某些新的不确定因素已经出现。将您的计划视为通过一个城市的试验性路线,这个城市的街道正在不断建设中。你知道你想去哪里以及去往那里的几种方法,但是在每个十字路口都可能有道路封闭,交通不畅或人行道坍塌和破碎。当你遇到这些障碍时,你必须做出决定,但是现在只需要一两个备份计划就足够了。

给定新信息或新约束或任何其他原因,计划和目标可随时改变。您必须向与项目有关的每个人(包括客户)传达重大更改。该项目的客户显然对项目的最终产品应具有既得利益 - 否则项目将不存在 - 因此应该让客户了解目标的任何变化。因为大多数客户都希望了解情况,所以通常建议您告知他们您的计划,无论新旧,您将如何实现这些目标。客户可能也对进度报告感兴趣,包括您到目前为止的初步结果以及如何获得这些结果,但这些都是最低优先级。

关注客户关心的事情:取得了进展,目前预期的,可实现的目标是X,Y和Z.他们可能有问题,这很好,他们可能有兴趣听取项目的所有方面,但根据我的经验,大多数不是。在此阶段与客户会面的唯一必须结论是,您清楚地沟通新目标是什么以及他们批准这些目标。其他一切都是可选的。

您也可以考虑将您的基本计划传达给客户,特别是如果您使用他们的任何资源来完成项目。他们可能有您尚未体验过的建议,建议或其他领域知识。如果涉及他们的资源,例如数据库,计算机和其他员工,那么他们肯定会有兴趣了解您将如何以及使用它们的程度。

6 - 分析数据

数据科学过程的第六步是数据的统计分析。统计方法通常被认为是进行良好数据科学所需技能和知识的近一半,或至少三分之一。另一个重要的部分是软件开发和/或应用程序,剩下的较小部分是主题或领域专业知识。

统计学的一方面是数学,另一方面是数据。数学 - 尤其是应用数学 - 通过一组工具提供统计数据,以便进行分析和解释。无论如何,数学通常不会触及现实世界。完全基于逻辑并始终 - 始终 - 从一组假设开始,数学必须首先假设它可以在开始描述它之前描述的世界。每个数学陈述都可以用if开头(如果假设是真的),这可以将语句及其结论提升为抽象性。这并不是说数学在现实世界中没用; 恰恰相反。数学而不是科学,更多的是我们可以用来描述事物的词汇。其中一些可能在现实世界中。与词汇表及其包含的单词一样,很少有描述完全正确。

然而,数学确实提供了统计使用的大量重型机械。统计分布通常由复杂的方程式描述,其根源在实际的科学意义上是有意义的。拟合统计模型通常使用数学优化技术。即使假设项目数据所在的空间也必须用数学方法描述,即使描述仅仅是“N维欧几里德空间”。

除数学外,统计学还拥有自己的一套主要以数据为中心的技术。

  • 描述性统计是一种通常直观或简单的统计数据,可以提供对数据的良好概述,而不会过于复杂或难以理解。在某种意义上,描述性统计通常与数据保持接近。
  • 推论统计本质上是从数据中删除的一个或多个步骤。推断是基于可测量的相关量来估计未知量的过程。通常,推论统计涉及定义数量,可测量和不可测量以及它们彼此之间关系的统计模型。推论统计的方法可以从简单到复杂,也可以在精度,抽象性和可解释性方面有所不同。

统计建模是使用统计结构描述系统然后使用该模型来帮助分析和解释与系统相关的数据的一般实践。描述性和推论性统计都依赖于统计模型,但在某些情况下,模型本身的明确构造和解释起次要作用。

通过统计建模,主要关注的是理解模型及其描述的底层系统。数学建模是一个相关的概念,它更强调模型的构建和解释,而不是它与数据的关系。统计建模侧重于模型与数据的关系。以下是您应该了解的统计建模中的一些重要概念:

  • 线性,指数,多项式,样条,微分,非线性方程。
  • 潜在变量。
  • 量化不确定性:随机性,方差和误差项。
  • 拟合模型:最大似然估计,最大后验估计,预期最大化,变分贝叶斯,马尔可夫链蒙特卡罗,过拟合。
  • 贝叶斯与频率统计。
  • 假设检验。
  • 聚类
  • 成分分析。

离原始数据最远的是一组统计技术,通常称为黑盒方法,无论好坏。术语黑盒指的是一些统计方法具有如此多的相互之间复杂关系的移动部分的想法,因为它被应用于特定上下文中的特定数据,因此几乎不可能剖析方法本身。机器学习和人工智能的许多方法都符合这种描述。如果您尝试将出现在数据集中的个体分类为几个类别中的一个,并且您应用机器学习技术(例如随机森林或神经网络),事后通常很难说为什么某个人是以某种方式分类。数据进入黑匣子,分类出来了,你通常不确定两者之间究竟发生了什么。

  • 随机森林
  • 支持向量机
  • 推进
  • 神经网络
  • 深度学习

7 - 工程产品

我们的下一步是建立统计软件。如果统计是分析和从数据中得出结论的框架,那么软件就是将这个框架付诸行动的工具。除了没有,数据科学家必须为任何项目做出许多软件选择。如果你有一个喜欢的节目,这通常是一个很好的选择,如果没有其他原因比你熟悉它。但是有充分的理由去挑选别的东西。或者,如果您是数据科学或统计软件的新手,那么很难找到一个起点。

对于花费大量时间使用Microsoft Excel或其他电子表格应用程序,电子表格和基于GUI的应用程序的任何人通常是执行任何类型的数据分析的首选。特别是如果数据是表格形式的,例如CSV,并且数据不是太多,那么在电子表格中开始分析就很容易了。此外,如果您需要进行的计算并不复杂,电子表格甚至可以涵盖项目的所有软件需求。这里常用的软件工具包括Excel,SPSS,Stata,SAS和Minitab。学习这些中级工具之一的编程语言可以是学习真正的编程语言的一个很好的一步,如果这是你的目标。这些语言本身非常有用。特别是SAS在统计行业中拥有广泛的追随者,学习它的语言本身就是一个合理的目标。

编程语言比中级统计应用程序更加通用。任何流行语言的代码都有可能做任何事情。这些语言可以在任何机器上执行任意数量的指令,可以通过API与其他软件服务交互,并且可以包含在脚本和其他软件中。与其父申请相关的语言在这些能力方面受到严重限制。

MATLAB是一种专有的软件环境和编程语言,擅长使用矩阵。MATLAB的成本相当高,但学生和其他大学附属人员可享受大幅折扣。有些人决定在一个名为Octave的开源项目中复制它。随着Octave的成熟,它在可用功能和功能方面越来越接近MATLAB。除了使用附加软件包(也就是工具箱)的代码之外,用MATLAB编写的绝大多数代码都可以在Octave中工作,反之亦然,如果你发现自己有一些MATLAB代码但没有许可证,这很好。

总的来说,MATLAB和Octave非常适合在信号处理,通信,图像处理和优化等方面使用大型矩阵的工程师(特别是电气工程师)。

[R基于贝尔实验室创建的S编程语言。它是开源的,但它的许可证比Python和Java等其他流行语言更具限制性,特别是如果你正在构建商业软件产品。与MATLAB相比,R中更容易加载和处理不同类型的数据。MATLAB擅长处理表格数据,但一般来说,对于带有标题,混合列类型(整数,小数,字符串等),JSON和数据库查询的表,R更好。当读取表格数据时,R倾向于默认返回类型数据框的对象。数据框是包含列中数据的通用对象,其中每列可以是不同的数据类型 - 例如,数字,字符串或甚至矩阵 - 但每列中的所有条目必须相同。

R是开源的一个优点是开发人员可以更容易地在他们认为合适的地方为语言和包开发做出贡献。这些开源贡献帮助R大幅增长并扩展了与其他软件工具的兼容性。CRAN网站提供了数以千计的R套餐。这是R语言的最大优势; 您可以找到一个帮助您执行您想要进行的分析类型的软件包,因此已经为您完成了一些工作。MATLAB也有包,但不是很多,尽管它们通常非常好。R有好的和坏的以及介于两者之间的一切。您还会发现大量的R代码可以在公共回购中免费获得,但可能没有达到官方包状态。

总体而言,对于统计学家和其他追求数据繁重的探索性工作而不是在分析软件行业中构建生产软件的人来说,R是一个不错的选择。

Python是一种功能强大的语言,可用于编写脚本和创建生产软件。它更适合非统计任务,例如与其他软件服务集成,创建API和Web服务以及构建应用程序。可能因为Python最初是一种通用编程语言,它有一个强大的面向对象设计框架。

尽管Python最初并不是一种高度统计的语言,但已经为Python开发了几个软件包,以提升它与R和MATLAB的竞争。在使用向量,数组和矩阵时,数值方法的numpy包是必不可少的。软件包scipyscikit-learn在优化,集成,集群,回归,分类和机器学习等技术中添加了功能。使用这三个软件包,Python可以与R和MATLAB的核心功能相媲美,在某些领域,例如机器学习,Python似乎在数据科学家中更受欢迎。对于数据处理,包pandas已经变得非常受欢迎。它在某种程度上受到R中数据框架概念的影​​响,但从那时起就超过了功能上的数据框架。如果您的数据集足够大,可以减慢计算速度,但又足够小,以适应计算机的内存,那么大熊猫可能适合您。

然而,数据科学中最着名的Python包之一是自然语言工具包(NLTK)。它是自然语言处理(NLP)中最受欢迎和最强大的工具。如今,如果有人正在解析和分析来自Twitter,新闻源,安然电子邮件语料库或其他地方的文本,那么很可能他们已经使用NLTK这样做了。它利用其他NLP工具(如WordNet)和各种标记化和词干提取方法,在一个地方提供最全面的NLP功能。

总的来说,Python非常适合那些想要做一些数据科学以及其他一些纯粹的非统计软件开发的人。它是唯一能够做得很好的流行,强大的语言。

虽然Java不是脚本语言,因此不适合探索性数据科学,但Java是软件应用程序开发中最着名的语言之一,因此它经常用于分析应用程序开发。使Java不利于探索性数据科学的许多相同原因使其有利于应用程序开发。

Java对于探索性数据科学来说并不是很好,但它对于基于数据科学的大规模或生产代码来说非常有用。Java有许多统计库,可用于从优化到机器学习。其中许多都是由Apache Software Foundation提供和支持的。

在选择统计软件工具时,请牢记以下标准:

  • 实现了方法:如果你使用的是一种相当常见的方法,那么许多工具可能已经有了实现,并且最好使用其中一种。与您在一天中编写并仅使用一次或两次的某些代码相比,已经被许多人使用的代码通常相对没有错误。
  • 灵活性:除了能够执行您想要的主要统计分析之外,如果统计工具可以执行一些相关方法,通常也会有所帮助。通常你会发现你选择的方法并不像你希望的那样好,而且你在这个过程中学到的东西会让你相信一种不同的方法可能会更好。如果您的软件工具没有任何替代方案,那么您可能会遇到第一个选择,或者您必须切换到另一个工具。
  • 信息:一些统计工具,特别是统计编程语言等高级工具,提供了查看几乎所有统计方法和结果的能力,甚至是机器学习等黑盒方法。这些内部并不总是用户友好,但至少它们是可用的。
  • 共性:使用软件,更多人使用工具意味着更多人尝试过,获得结果,检查结果,并可能报告他们遇到的问题,如果有的话。通过这种方式,软件,特别是开源软件,具有反馈循环,以合理及时的方式修复错误和问题。参与此反馈循环的人越多,一个软件相对没有bug并且更强大的可能性就越大。
  • 良好的文档:除了常用之外,统计软件工具应该有全面而有用的文档。如果您无法找到一些重要问题的答案,例如如何配置进行线性回归的输入或如何格式化机器学习功能,这是一个不好的迹象。如果大问题的答案不在文档中,那么找到你将来不可避免地遇到的更具体问题的答案会更加困难。
  • 专门构建:某些软件工具或其软件包是为特定目的而构建的,之后又添加了其他功能。例如,MATLAB和R中的矩阵代数例程在构建语言时是主要关注的问题,因此可以安全地假设它们是全面且健壮的。相比之下,矩阵代数在初始版本的Python和Java中并不是主要关注的问题,因此这些功能稍后以包和库的形式添加。
  • 互操作性:如果您正在使用数据库,使用可以直接与数据库交互的工具会很有帮助。如果您要根据结果构建Web应用程序,则可能需要选择支持Web框架的工具 - 或者至少可以使用JSON或其他一些Web友好格式导出数据的工具。或者,如果您将在各种类型的计算机上使用统计工具,那么您将希望该软件能够在各种操作系统上运行。将统计软件方法集成到完全不同的语言或工具中并不罕见。
  • 许可许可:如果您将商业软件用于商业目的,那么使用学术或学生许可这样做具有法律风险。将商业软件(无论是否经过修改)出售给其他人而不确认许可证不会禁止此类软件也是危险的。

8 - 优化数据

我们流程的第8步是使用补充软件优化产品。我们的第7步中的软件工具可以是多功能的,但它们本质上是统计的。软件可以做的不仅仅是统计。特别是,有许多工具可用于有效地存储,管理和移动数据。有些人可以使计算和分析的几乎每个方面都更快更容易管理。这里有4种流行的软件,可以使您作为数据科学家的工作更轻松。

数据库很常见,在项目期间运行数据库的可能性相当高,特别是如果您要经常使用其他人使用的数据。但是,当然不是仅仅碰到一个,而是自己建立一个数据库来帮助你完成项目。最常见的两种类型是关系型(SQL)和面向文档型(NoSQL,ElasticSearch)。与将数据存储在计算机的文件系统上相比,数据库和其他相关类型的数据存储具有许多优势。大多数情况下,数据库可以通过查询提供对数据的任意访问 - 比文件系统更快,并且它们还可以通过冗余方式扩展到大尺寸,方便的方式可以优于文件系统扩展。

高性能计算(HPC)是一个通用术语,适用于需要进行大量计算并且您希望尽可能快地完成计算的情况。您可以使用超级计算机(比个人计算机快数百万倍),计算机集群(一组计算机彼此连接,通常通过本地网络,并配置为在执行计算时彼此协同工作任务)或图形处理单元(它们非常适合执行高度可并行化的计算)。如果您有权访问,那么HPC是等待PC计算所有需要计算的东西的好选择。使用云HPC产品的好处 - 以及一些功能非常强大的机器 - 必须在您选择之前与货币成本进行权衡。

最大的云服务提供商主要是大型科技公司,其核心业务是其他的。亚马逊,谷歌和微软等公司在向公众开放之前已经拥有大量的计算和存储资源。但他们并不总是将资源用于最大容量,因此他们决定出租剩余产能并扩大总产能,结果证明这是一系列有利可图的商业决策。提供的服务通常大致相当于个人计算机,计算机集群或本地网络的功能。所有这些都可以在世界各地的地理区域中获得,可通过在线连接和标准连接协议访问,通常还可以通过Web浏览器界面访问。如果您没有足够的资源来充分满足您的数据科学需求,

最后,您可以尝试大数据技术:Hadoop,HBase和Hive等。大数据技术的设计不是为了移动数据。当数据集处于设计技术的非常大的规模时,这节省了时间和金钱。每当计算任务受数据传输限制时,大数据可以提高效率。但是,与本章中描述的其他技术相比,大数据软件需要花费一些精力来运行您的软件。只有当你有时间和资源来摆弄软件及其配置时,你应该实现飞跃,如果你几乎可以肯定你会从中获得可观的收益。

9 - 执行计划

构建阶段的最后一步是执行产品的构建计划。大多数软件工程师可能熟悉构建复杂软件的试验和磨难,但他们可能不熟悉构建处理可疑质量数据的软件的难度。另一方面,统计学家知道拥有脏数据是什么样的,但可能没有多少经验来构建更高质量的软件。同样,与项目有关的不同角色的个人,每个人可能拥有各种经验和培训,他们会期待并为不同的事情做好准备。

  • 如果你是一名统计学家,你就会知道肮脏的数据,而且你知道偏见和夸大结果的重要性。另一方面,您可能没有太多经验来构建业务软件,特别是生产软件。您应该咨询具有实践经验的软件工程师,以了解如何提高软件的稳健性。
  • 如果您是软件工程师,您就知道开发生命周期是什么样的,并且您知道如何在部署和交付之前测试软件。但您可能不了解数据,无论您在软件设计和开发方面有多好,数据最终都会以您从未想过的方式破坏您的应用程序。这需要在构建软件时采用新的思维模式以及对错误和错误的新容忍度,因为它们会更频繁地发生。您应该咨询精通预测和处理有问题数据的统计人员,例如异常值,缺失值和损坏的值。
  • 如果你刚开始从事数据科学,没有太多的统计学或软件工程经验,那么有经验的人可以给你一些可靠的建议,如果你能向他们解释你的项目和你的目标。作为一个初学者,你在这个过程的阶段有双重职责来弥补经验的不足。
  • 如果您只是该项目目的的一个团队成员,那么沟通和协调是至关重要的。您不必了解团队中发生的所有事情,但有必要明确目标和期望,并确保有人管理整个团队。

该计划应包含多个路径和选项,所有这些都取决于项目的结果,目标和期限。无论计划有多好,随着项目的进展,总有可能对其进行修订。即使您考虑到所有不确定因素并且意识到每一种可能的结果,计划范围之外的事情也可能会发生变化。计划需要改变的最常见原因是新信息从项目外部的来源出现,并且计划的一个或多个路径发生变化或目标本身发生变化。

随着项目的进展,您通常会看到越来越多的结果积累,让您有机会确保它们符合您的期望。一般而言,在涉及统计的数据科学项目中,期望基于统计显着性的概念或基于这些结果的实际有用性或适用性的某些其他概念或两者。统计意义和实际有用性通常密切相关,当然不是相互排斥的。作为项目计划的一部分,您可能包含了在统计分析结果中达到一定准确性或重要性的目标。实现这些目标将被视为该项目的成功。

 

第三阶段 - 完成

一旦产品构建完成,您仍然需要做一些事情来使项目更加成功并使您的未来生活更轻松。那么我们如何完成数据科学项目呢?

10 - 交付产品

完成阶段的第一步是产品交付。为了创建可以交付给客户的有效产品,首先必须了解客户的观点。其次,您需要为项目和客户选择最佳媒体。最后,您必须选择要包含在产品中的信息和结果以及要遗漏的内容。在产品创建和交付过程中做出好的选择可以大大提高项目的成功机会。

传递媒体可以采取多种形式。在数据科学中,产品最重要的一个方面是客户是否被动地从中消费信息,或者客户是否积极参与产品并且能够使用产品来回答任何大量可能的问题。各种类型的产品可以落在被动和主动之间的任何地方:

  • 可能是向客户提交结果的最简单选项,报告白皮书包括文本,表格,图表和其他信息,这些信息可以解决您的项目要回答的部分或全部问题。报告和白皮书可能印在纸上或以PDF或其他电子格式发送。
  • 在一些数据科学项目中,数据集的分析和结果也可用于项目原始范围之外的数据,其中可能包括原始数据(未来)之后生成的数据,来自不同来源的类似数据,或由于某种原因尚未分析的其他数据。在这些情况下,如果您可以为客户创建可以执行这些分析并在新数据集上生成结果的分析工具,则对客户有所帮助。如果客户可以有效地使用此分析工具,它可能允许他们生成任意数量的结果,并继续很好地回答他们的主要问题以及各种(但相似的)数据集。
  • 如果您想提供比分析工具更积极的产品,您可能需要构建某种类型的完整应用程序。关于交互式图形应用程序最重要的事情是,如果您正在考虑提供交互式图形应用程序,那么您必须设计,构建和部署它。通常,这些都不是一项小任务。如果您希望应用程序具有许多功能并且具有灵活性,那么设计它并构建它将变得更加困难。

除了决定提供结果的媒介之外,您还必须决定它将包含哪些结果。选择产品后,您必须弄清楚用于填充产品的内容。

一些结果和内容可能是明显的选择,但对于其他信息来说,这个决定可能并不那么明显。通常,您希望包含尽可能多的有用信息和尽可能多的结果,但您希望避免客户可能误解或滥用您选择包含的任何结果的任何可能性。在许多情况下,这可以是微妙的平衡,并且在很大程度上取决于具体项目以及客户和其他观众对结果的知识和经验。

 

11 - 进行修订

交付产品后,我们会在初步反馈后继续修改产品。一旦客户开始使用该产品,就有可能出现一系列全新的问题和问题。尽管您付出了最大的努力,但您可能没有预料到客户将使用(或尝试使用)您产品的方式的各个方面。即使产品能够完成它应该做的事情,您的客户和用户也可能不会做这些事情并且有效地完成这些工作。

获得反馈很难。一方面,通常很难从客户,用户或其他任何人那里获得建设性的反馈。另一方面,如果不考虑对您花费大量时间和精力构建的产品的攻击或误解,就很难听取反馈和批评。一些数据科学家提供产品并忘记它们。一些数据科学家提供产品并等待客户提供反馈。一些数据科学家不断提供产品并对这些客户造成错 与客户进行跟进通常是一个好主意,以确保您交付的产品能够解决其旨在解决的一些问题。

进行产品修订可能会非常棘手,找到合适的解决方案和实施策略取决于您遇到的问题类型以及您需要更改以解决问题的方法。如果在整个项目过程中,您始终保持对不确定性的认识以及在此过程中每一步可能产生的许多结果,那么您可能会发现自己现在遇到的结果与您之前预期的结果不同,这可能就不足为奇了。但是,同样的意识实际上可以保证您至少接近有效的解决方案。实际上,这意味着你永远不会期望第一次100%正确,所以当然有问题。但是,如果你一直勤奋,问题很小,修复相对容易。

一旦您发现产品出现问题并弄清楚如何修复产品,仍然需要决定是否修复产品。一些人最初的倾向是每个问题都需要解决; 这不一定是真的。有理由说明您可能不想进行修复问题的产品修订,就像您有理由一样。重要的是停止并考虑选项,而不是盲目地修复发现的每个问题,这可能会花费大量的时间和精力。

12 - 结束项目

我们数据科学过程的最后一步是将其包装起来。随着数据科学项目的结束,似乎所有工作都已完成,剩下的就是修复任何剩余的错误或其他问题,然后才能完全停止对项目的思考,然后继续下一步一个(尽管有持续的产品支持和改进)。但在调用项目之前,您可以采取一些措施来增加未来成功的机会,无论是扩展同一个项目还是完全不同的项目。

现在做两件事有两种方法可以增加你未来成功的机会。一种方法是确保在未来的任何时候您都可以轻松地再次获取该项目并重做,扩展或修改它。通过这样做,您将增加在后续项目中获得成功的机会,相比之下,从现在开始几个月或几年您挖掘项目材料和代码并发现您不记得确切的是什么做了或怎么做了。两种实用的方法是通过文档存储

提高未来项目成功率的另一种方法是尽可能多地从这个项目中学习,并将这些知识带到每个未来的项目中。通过进行尸检项目,您可以希望从其他课程中梳理出有用的课程。这包括审查旧目标,旧计划,您的技术选择,团队协作等。是否有可以应用于未来项目的特定课程或有助于您意识到可能的意外结果的一般课程,通过项目进行思考在事后审查期间可以帮助发现有用的知识,使您能够以不同的方式做事 - 并且希望下次更好。

如果你从每个项目中只拿走一课,那么它应该与沿途发生的最大惊喜有关。不确定性可以渗透到你工作的每个方面,并且记住过去给你带来问题的所有不确定因素,可以防止类似的事情再次发生。从数据到分析再到项目的目标,几乎任何事情都可能在短时间内发生变化。了解所有可能性不仅是一项艰巨的挑战,而且几乎是不可能的。良好的数据科学家和伟大的数据科学家之间的区别在于能够预见可能出现的问题并做好准备。

 

结论

数据科学仍然具有新领域的光环。它的大多数组成部分 - 统计学,软件开发,基于证据的问题解决等 - 直接来自成熟的,甚至是旧的领域,但数据科学似乎是这些部分的新组合,是新的东西。数据科学的核心并不涉及特定的数据库实现或编程语言,即使这些对于从业者来说是必不可少的。核心是数据内容,给定项目的目标以及用于实现这些目标的数据分析方法之间的相互作用。

我非常高兴你看看Brian的书,以获得有关数据科学过程每一步的更多细节。它非常适合数据科学,软件和统计学方面的非专家。它描绘了数据科学的生动画面,作为一个具有许多细微差别,警告和不确定性的过程。数据科学的力量不在于弄清楚接下来应该发生什么,而在于实现接下来会发生什么,并最终找出接下来会发生什么。

原文:https://medium.com/cracking-the-data-science-interview/how-to-think-like-a-data-scientist-in-12-steps-157ea8ad5da8

猜你喜欢

转载自blog.csdn.net/ChenVast/article/details/81483310