跳至主要内容

美国陆军能教给您的数据科学之道

军旅生活会教给您许多非常实用的技能、特质和习惯。它也会通过“亲手去做”教会您如何入门数据科学。
Jason Graham
Jason Graham

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

我最近完成了 DataCamp 的“使用 Python 的数据科学家”职业路径课程,感觉已经“武装完毕”,可以迎接一些真实的数据挑战,但事情并没有那么简单。无论是在 DataCamp 还是在大学完成课程,都只是成为数据科学家这条漫长道路上的第一步。您学到的技能必须不断练习、打磨,并最终转化为一个能够展示所学、并向潜在雇主证明您能为其团队带来价值的作品集。

但如何走到这一步?

工具箱里有一些工具,并大致知道如何使用是一回事,但真正开始动手往往让人望而生畏。

那么,如何开始?

这篇文章不是讲您会写什么代码,而是讲您将经历什么样的过程。本文将尝试从我在美国陆军的经验出发,回答上述问题。

民事事务与民事信息管理

在踏上成为数据科学家的道路之前,我在美国军队服役了二十年,最后五年在美国陆军预备役的民事事务(Civil Affairs)兵种。简而言之,民事事务是陆军中负责在灾害或冲突后稳定地区局势的部门。他们会被部署到各种情形中,从 2014 至 2016 年非洲之角的埃博拉疫情,到卡特里娜飓风后的灾后重建。他们也在伊拉克战争等冲突期间被大量使用。他们的任务是把一个地区带回到灾前所谓的“正常生活”。

您也许会问:这和数据科学家有什么关系?

民事事务依赖于信息,也就是数据。要将一个地区恢复到正常,就必须先知道“正常”是什么,以及“正常”是否足以让该地区保持稳定。当地居民也许认为没有教育体系、安全保障,甚至没有清洁水源是“正常”的。要判断一个地区需要什么才能稳定,就需要收集、分析大量数据,并让决策者掌握这些信息。

民事事务中的决策者,相当于企业中的“高层管理”。他们是军政高官,以及红十字会、世界卫生组织等机构的领导者,负责最终决定资金、人力和时间的投入方向。他们的决策在很大程度上基于通过一个称为民事信息管理(CIM)的流程所收集的高质量信息。

我在民事事务的时间里,领导过 CIM 团队,向其他民事事务单位教授 CIM 流程,并改进我们用于这一流程的技术。大家普遍认为我是 CIM 的主题专家。我可以告诉您,这并不仅适用于军队。我们使用的数据并非机密,必须能被军方、地方政府、FEMA,以及红十字会和世卫组织等民间组织共同使用。

我们用于收集、分析和传播信息的 CIM 流程可以应用到数据科学中,而据我在 DataCamp 上所见,它几乎被广泛采用,只是名称不同。

数据科学不止于命令行或 Jupyter Notebook。当您处理一个数据集时,几乎总有一个终极目标和一个客户。即使您是出于好奇或练习技能在处理数据集,那么客户就是您自己。客户也可能是您博客的读者、同事、主管,或是付费客户。

如果您接受“总有客户”这一点,那么您也必须接受“总要有一个产品”,而这个产品必须回答那个至关重要的“问题”。

“问题”

在进入六步 CIM 流程之前,您必须知道“问题”是什么。最简单的说法就是:这是您进行分析的理由。

例如,在 面向数据科学的 Python 入门中,问题是“FIFA 中守门员的身高中位数是多少?”。在 Kaggle 的泰坦尼克号竞赛中,问题是“哪类人最有可能在泰坦尼克号沉没事故中幸存?”。

总会有一个问题,而且很多情况下需要回答多个问题。既然已经明确了“问题”,您就可以开始流程了。

CIM 流程

收集

没有数据就无从分析,也谈不上数据科学家的存在。在 DataCamp、Kaggle、Driven Data 和 Data.gov 上使用的数据集,都必须先被收集。互联网上可用的数据几乎无穷无尽,其中大部分可以通过网络爬取或其他自动化方式完成。当我还在民事事务时,我大量依赖 CIA World Factbook、人口普查数据和 Google 地图。

不过,事情并不总是那么容易。

2016 年 11 月,田纳西州加特林堡遭遇了一场毁灭性的野火,摧毁了 2500 多处民居和商铺。当时我被分配在附近诺克斯维尔的一支民事事务部队,我们受邀协助评估损失。加特林堡周边是农村山地,房屋分散在群山之中,几乎不可能持续更新地图。判断哪些建筑仍然屹立的唯一办法就是手动收集数据。我们与当地志愿者和政府机构并肩作战,分组驾车或徒步穿行在那些乡间道路寻找房屋。每发现一栋建筑,我们就会在地图上标注,并记录损毁情况。随后,这些数据会交由当地机构汇总。

另一个很好的人工数据收集例子是 Scandens 喙深度遗传数据集,它被用于 Python 的统计思维(第 2 部分)课程。那份数据来自 40 多年的个人观察!

我相信您不必付出那么大的代价才能获得可用的数据。您可以先从每门 DataCamp 课程开头提供的数据集入手;如果里面没有您喜欢的内容,可以浏览上面列出的资源,或者直接用 Google 搜索您想要的数据。

整理

当您找到一个包含所需全部信息且打包整齐的数据集时,感觉当然很棒。不幸的是,这更多是例外而非常态。大多数时候,您会发现数据是碎片化的,需要拼装。

整理是将原始数据组织起来,变成可使用的数据集的阶段。

虽然民事事务中的初始数据有不少来自互联网,但那只是很小一部分。绝大多数数据来自一线人员。民事事务小组会进入某个区域,拍照、采访当地居民,并评估机场、学校、警察局、发电厂等建筑设施。所有这些数据会以书面报告的形式回来,需要整理成可用的信息。虽然我没有亲自参与前文提到的那次野火数据的整理,但每一张手工标注的地图最终都必须被整理汇总,形成一份单一来源,记录每个测绘点的坐标、状况和物业描述。

对于正在成长中的数据科学家来说,整理大概是我们大多数人开始真正“接手数据”的地方。

以 Scandens 喙深度遗传数据为例。每天的观测报告必须先整理成每周或每月报告,再到年度报告,最终汇集成一份代表 40 年数据的单一数据集。

良好的整理能在后续工作中省去大量功夫,因为它提供了边整理边清洗数据、并将其归入更易于后续处理的正确类别的机会。合并(merge)、连接(join)、追加(append)等技术在这一阶段大显身手。

处理

说实话,即便我们找到了已经收集、整理好的、包含所需全部信息的数据集,它很可能也“不够好看”,需要清洗。处理阶段就是把“数据”变成可用、可供分析的形式。在民事事务中,我花了大量时间在收集和整理数据上,但在处理阶段,我才真正“摸清”数据,并开始构思分析计划。

在 CIM 团队里,我常做所谓的“区域评估”。也就是在我们进入实地之前,先对某个区域做初步分析,从而了解在该区域中我们可能需要优先处理的问题。收集并整理好该区域的相关数据后,即便在正式分析之前,也要先把它处理成可消费的信息。结果通常是一份 Excel 工作簿或一个数据库,里面是干净、分类明确的信息,可以通过搜索或筛选来回答不需要深入分析的基础问题。

在数据科学中,这就是我们整理与探索数据、并进行探索性数据分析(EDA)的阶段。如果您能认真做好数据的正确分类与标注,并确保数据类型正确,那么在后续分析中就能省去不少麻烦。把数据处理好,等于为一次高质量的分析打下基础。

分析

回到前文的区域评估例子,拥有一个可以查询并得到答案的数据集当然很好。我可以找出该地区有多少医生,或者人均每年有多少加仑清洁水。这些都是重要信息,但还不是“分析”。分析要回答的问题是:“该地区在政府、经济、基础设施、安全和医疗方面,与周边地区相比如何?”以及“按当前用水速度,该地区多久会耗尽清洁水源?”。

分析是大多数人来到 DataCamp 的初衷所在,这也是我最享受的部分,我们也会在这里回答那个至关重要的问题。几乎每一门 DataCamp 课程都对分析进行了充分讲解,所以我不再赘述。分析的关键在于与数据“过招”,并从中得出结论。

产出

再回到加特林堡野火。假设我们已经将所有数据收集、整理并处理成一个数据库,记录了每栋建筑的坐标、当前状况以及损毁描述,并据此得出结论:受灾区域中有 60% 的建筑损毁严重、无法修复。我们已经回答了“火灾对周边区域影响有多大?”这一问题。

我们还可以更进一步,为每栋受损建筑估值,并据此测算整个区域的重建成本,细化到街区和街道。我们甚至可以确定受灾最严重的街区,从而确定重建工作的优先顺序。

分析很出色,但如果不把它转化为“产品”,就发挥不了作用,而这正是 CIM 流程中的“产出”步骤所要解决的。此前的每一步都是为这一刻做铺垫:打造那个“展示品”,也就是您要交付给客户的成果。

这是一切工作的集大成。产品形式可以是 Jupyter Notebook、带有表格和图表的电子表格、网页、PDF 文件,或源代码。其他形式还有线下演示、录制讲解分析过程的视频演示,或使用 Sway/PowerPoint 的幻灯片。不论选择哪种形式,都必须契合客户的需求。此外还有几点要求:

  1. 对客户而言清晰、简洁、易于理解。
  2. 讲清楚故事,并且能让客户明白其中的意义。
  3. 贴合客户的技术背景与教育水平。

传播

传播是 CIM 流程的最后一步,表面上看似简单:把产品交到客户手里。然而,仔细想想,这可能是整个流程中最重要的一步。我在 CIM 团队时,我们主要产出 PDF、PowerPoint 幻灯片或基于分析的 Excel 报告。为什么用这些方式?因为它们都具有可访问、易使用、可移植等特性,几乎人人都会用。

以我现在的技能,我本可以制作包含报告的交互式网页、带有滑块与筛选器的 Bokeh 图表,以及交互式地图。这样一个复杂、动态的产品,几乎人人都能使用,因为它都封装在一个网页里。无论最终产品多出色,如果不能以如下方式传播给客户,也是徒劳:

  • 可访问:既然处理的是信息,就必须确保客户能够访问。如果把产品“埋”在目标受众无法触及的地方,就会降低其可用性,并很快被遗忘。
  • 易使用:您选择的交付方式,必须对绝大多数客户而言都易于使用。比如,把一个 Python 脚本交付给一群数据科学同行也许没问题,但把同样的脚本发给一个不会运行“data_analysis.py”的人,效果就可能很糟糕。
  • 可移植:说实话,我们获取信息越来越依赖移动设备。很少有机会坐在办公桌前长时间阅读。数据产品需要具备可移植性,无论是通过 PowerPoint、Excel、PDF,还是通过互联网。

传播方法多种多样,本文读者都可以轻松获取,我无法一一列举。如何选择传播方式需要做出判断。请始终问自己:“我如何以最符合客户在可访问性、易用性和可移植性需求的方式,把这个产品送达客户?”

话虽如此,如果您在搭建作品集,Github、Anaconda Cloud、个人网页与博客,以及社交媒体,都是很好的起点。不要害怕把您的作品拿出来,与志同道合的人分享。

结语

如果您从事数据相关工作,很可能已经在使用我上文提到的一些步骤。即便您未必亲自参与全部六步,现在也会对它们以及如何将原始数据转化为成品的流程有了更深入的理解。把军事流程应用到数据科学上,乍听之下也许有些奇怪,但这六个步骤在军队和企业界都对我大有裨益,希望也能助您一臂之力,伴您踏上成为数据科学家的旅程。

主题