像数据科学家一样思考:12步指南(上)
2019年09月28日 由 sunlei 发表
641897
0
介绍
目前,数据科学家受到了广泛的关注,因此,有关数据科学的书籍层出不穷。在寻找有关这个领域的好书时,我觉得他们中的大多数更关注工具和技术,而不是数据科学过程中微妙的解决问题的本质。直到我遇到了Brian Godsey的《像数据科学家一样思考》——他试图引导有抱负的数据科学家通过这个过程,就像一条有许多岔口和潜在未知目的地的道路。它讨论了哪些工具可能最有用,以及为什么最有用,但主要目标是以智能、高效和成功的方式导航数据科学过程,从而为现实中的数据中心问题找到实用的解决方案。
数据科学项目的生命周期
Brian在书中提出数据科学项目包括三个阶段:
- 第一阶段是准备阶段——在项目开始时收集信息所花费的时间和精力可以避免以后的大麻烦。
- 第二阶段是构建产品,从计划到执行,使用您在准备阶段学到的知识,以及统计和软件能够提供的所有工具。
- 第三个也是最后一个阶段是收尾——交付产品,获得反馈,进行修改,支持产品,并完成项目。
如图所示,这三个阶段包含了12个不同的任务。我想用这篇文章来总结这12个步骤,因为我相信任何有抱负的数据科学家都可以从熟悉这些步骤中获益。
第一阶段-筹备工作
数据科学的过程从准备开始。你需要确定你知道什么,你拥有什么,你能得到什么,你在哪里,你想去哪里。最后一点非常重要;数据科学项目需要有一个目的和相应的目标。只有当你有了明确的目标,你才能开始调查可用的资源和所有的可能性,朝着这些目标前进。
1 -设定目标
与许多其他领域一样,在数据科学项目中,应该在项目开始时设置主要目标。设定目标后所做的所有工作就是利用数据、统计数据和编程来实现这些目标。
首先,数据科学中的每个项目都有一个客户。有时,客户是付钱给您或您的企业来做项目的人——例如,客户或合同代理。在学术界,客户可能是要求您分析他们的数据的实验室科学家。有时候顾客是你,你的老板,或者其他同事。无论客户是谁,他们都有一些关于他们可能从您那里得到什么的期望。
为了理解这些期望,您需要对他们的数据提出好的问题。提出能够提供有价值的答案并随后改善结果的问题,是一项重要而微妙的挑战,值得进行比通常情况下更多的讨论。好的问题在他们的假设中是具体的,好的答案是不需要太多代价就可以衡量的成功。从数据科学的一个项目中得到答案通常看起来像下面的公式或配方。
虽然有时候其中一个要素——好的问题、相关的数据或有洞察力的分析——比其他要素更容易获得,但这三个要素对于获得有用的答案都是至关重要的。任何旧问题、数据和分析的产物并不总是一个答案,更不用说有用的答案了。值得重申的是,在项目的每个步骤中,您总是需要深思熟虑,并且这个公式的元素也不例外。例如,如果你有一个很好的问题,但是没有相关的数据,那么答案将很难找到。
现在是根据您希望处理的问题、数据和答案来评估项目目标的好时机。通常情况下,最初的目标是基于一些商业目的而设定的。如果你不是在做生意——例如,你在做研究——那么目的通常是对结果进行一些外部利用,比如在某个特定领域深化科学知识,或者为其他人提供一种分析工具。
虽然目标源于项目本身的外部环境,但每个目标都应该通过基于数据科学的实用过滤器。这个过滤器包括以下问题:(1)什么是可能的?(2)什么是有价值的?(3)什么是有效的?在好问题、可能的答案、可用的数据和可预见的障碍的背景下,将此过滤器应用于所有假定的目标,可以帮助您实现一组可靠的、可能的、有价值的和有效的项目目标。
2-探索数据
数据科学过程准备阶段的第二步是探索可用的数据。下图显示了数据科学家访问数据的3种基本方法。它可以是文件系统中的一个文件,数据科学家可以将该文件读入他们最喜欢的分析工具。或者数据可能在数据库中,数据库也在文件系统中,但是为了访问数据,数据科学家必须使用数据库的接口,这是一个帮助存储和提取数据的软件层。最后,数据可能在应用程序编程接口(API)的后面,API是数据科学家和一些可能完全未知或外来的系统之间的软件层。
最好熟悉数据可能采用的一些表单,以及如何查看和操作这些表单。以下是其中一些:平面文件(csv、tsv)、HTML、XML、JSON、关系数据库、非关系数据库、api。有时候你没有选择权来决定选择哪种格式。数据以某种格式出现,您必须处理它。但是,如果您发现这种格式效率低下、笨拙或不受欢迎,通常可以自由地设置辅助数据存储,这可能会使事情变得更简单,但是需要额外的时间和精力来设置辅助数据存储。对于访问效率至关重要的应用程序,成本是值得的。对于较小的项目,也许未必。既然走到了那儿就得过那座桥。
既然你已经接触到了一些常见的数据形式,你需要去寻找它们。以下是您应该考虑的方法:google搜索,组合不同的数据源,抓取web,或者自己测量/收集它们。就我个人而言,我是一个网络抓取的超级粉丝。web scraper必须做好的两件重要事情是以编程方式访问大量url并从页面中捕获正确的信息。如果你想知道你在facebook上的朋友网络,理论上你可以写一个脚本,访问你所有朋友的facebook个人资料,保存个人资料页面,然后解析页面以获取他们的朋友列表,访问他们朋友的个人资料,等等。这只适用于允许您查看其个人资料和朋友列表的人,而不适用于私人资料。
3-争用数据
数据争用(datawranging)是第三步,它是以困难的、非结构化的或其他任意格式获取数据和信息,并将其转换为常规软件可以使用的内容的过程。与数据科学的许多方面一样,与其说它是一个过程,不如说它是一个策略和技术的集合,可以在整个项目策略的上下文中应用。争用不是一项事先就可以规定步骤的任务。每个案例都是不同的,需要解决一些问题才能得到好的结果。
好的争论归根结底是在争论之前的扎实计划,然后一些猜测和检查,看看什么是有效的。在数据争论上多花一点时间可以帮你省下很多痛苦。一般来说,数据争用计划的选择应该在很大程度上取决于您在第一次调查数据时发现的所有信息。如果你能想象解析数据或者以某种假设的方式访问它——我试着扮演一个争吵的脚本——那么你就可以编写一个做同样事情的脚本。假设你是一个争吵的脚本,想象一下数据可能会发生什么,然后稍后再编写脚本。数据争用是一个不确定的过程,因此最好根据你所看到的情况进行一些探索,并制定一个争用计划。
没有一种方法或工具可以完成清理杂乱数据的目标。如果有人告诉你他们有一个工具可以整理任何数据,那么要么这个工具是一种编程语言,要么他们在说谎。很多工具都适合做很多事情,但是没有一个工具可以包装任意的数据。数据以如此多的形式存在,用于如此多的目的,以至于可能没有一个应用程序能够以任意的目的读取任意的数据。简单地说,数据争用是一件不确定的事情,需要在特定的环境中使用特定的工具来完成这项工作。您可以尝试使用文件格式转换器或专用数据包装器并编写脚本来包装数据。
4 -评估数据
尽快开始开发以数据为中心的产品或复杂的统计方法可能很诱人,但是了解数据的好处是值得付出一点时间和精力的。如果你对你的数据有更多的了解——如果你保持对它的意识,以及你可能如何分析它——你将在你的数据科学项目的每一个步骤中做出更明智的决定,并在以后获得收益。如果没有一个初步的评估(第4步),您可能会遇到异常值、偏差、精确度、特异性或数据的任何其他固有方面的问题。为了揭示这些,更好地了解数据,数据分析的第一步是计算一些描述性统计。
描述统计学是定量描述一组信息的主要特征的学科,或定量描述本身。考虑数据集的描述、最大值、最小值、平均值和摘要。讨论描述性统计常常很难不提到推理统计。推理统计学是一种使用数据来推断或推断你没有直接测量或数据的知识或数量的实践。关于数据集,可以这样说:
- 描述统计学问:“我有什么?”
- 推论统计学的问题是:“我能得出什么结论?”
大多数统计学家和商界人士都同意,要得出最酷的结论,需要推论性的统计数据:当世界人口达到峰值,然后开始下降,病毒传播的速度有多快,当股市上涨,推特上的人们是否通常对某个话题有正面或负面的看法,等等。但描述性统计在使这些结论成为可能方面发挥着极其重要的作用。知道你拥有的数据以及它能为你做什么是值得的。
使用描述性统计信息,您可以在数据集中找到与特定概念描述匹配的实体。如果你从事在线零售业,你可能会把客户看作你的主要实体,你可能会想找出那些可能购买一个新的视频游戏系统或一个特定作者的新书的人。如果你在做广告,你可能会寻找那些最有可能对某个广告做出回应的人。如果你从事金融业,你可能会在股市上寻找即将上涨的股票。如果可以对这些特征进行简单的搜索,那么这项工作将很容易,而且您不需要数据科学或统计学。但尽管这些特征并不是数据固有的(你能想象一只股票会告诉你它什么时候会上涨吗?),当您看到它们时,您通常可以认出它们,至少在回想起来是这样。这些数据科学项目的主要挑战是建立一种及时发现这些有趣实体的方法。
第二阶段-建筑物
在问了一些问题并设定了一些目标之后,你就开始调查数据的世界,整理一些特定的数据,并开始了解这些数据。在每个步骤中,您都学到了一些东西,现在您可能已经能够回答在项目开始时提出的一些问题。现在让我们进入构建阶段。
5-开发计划
第五步是制定计划。正如在早期的计划阶段一样,不确定性和灵活的路径应该是你的首要考虑因素。你现在对你的项目有了更多的了解,所以以前存在的一些不确定性已经不复存在了,但是某些新的不确定性已经出现了。把你的计划想象成一条穿越城市的试探性路线,这个城市的街道一直在建设中。你知道你想去哪里,想走几条路去那里,但在每个十字路口都可能有一条封闭的道路,交通不畅,或者路面坑坑洼洼,摇摇欲坠。当你遇到这些障碍时,你必须做出决定,但现在有一两个后备计划就足够了。
计划和目标可以在任何时候改变,因为新的信息或新的限制或任何其他原因。您必须将重大变更告知项目涉及的所有人,包括客户。项目的客户显然对项目的最终产品应该是有什么既得利益,否则项目就不存在了,所以应该让客户知道目标的任何变化。因为大多数客户都喜欢随时了解你的计划,所以通常建议告诉他们你的计划,无论是新的还是旧的,你将如何实现这些目标。客户也可能对进度报告感兴趣,包括到目前为止你有什么初步结果,以及你是如何得到这些结果的,但是这些是最不重要的。
关注客户关心的问题:已经取得了进展,目前预期的、可实现的目标是x、y和z。他们可能有问题,这很好,他们可能有兴趣了解你项目的所有方面,但以我的经验来看,大多数都不是。在这个阶段与客户会面时,你唯一必须得出的结论是,你清楚地传达了新的目标是什么,并且他们批准了这些目标。其他都是可选的。
您还可以考虑向客户传达您的基本计划,特别是如果您正在使用他们的任何资源来完成项目。他们可能有你还没有经历过的建议或其他领域知识。如果涉及到他们的资源,例如数据库、计算机、其他员工,那么他们肯定会感兴趣地了解您将如何以及如何利用他们。
原文链接:https://medium.com/cracking-the-data-science-interview/how-to-think-like-a-data-scientist-in-12-steps-157ea8ad5da8