原文链接: The key to building a data science portfolio that will get you a job
这是我们“如何建立数据科学能力集”系列文章的第四篇。在这个系列的过去几篇文章中,我们已经讨论过了:如何建立可以讲故事的数据科学工程?如何建立端对端的机器学习项目?如何设置数据科学博客?在本文中,我们向后退一步,在一个更高水平关注你的能力集。我们会讨论雇主想看到候选人什么技能?如何建立能力集来有效地证明那些技能?我们还会囊括相关项目的例子和提供一些如何开始的建议。阅读完本文后,你会对于为什么要建立这些数据能力集,如何去建立产生一个好的理解。
- 雇主在寻找什么?
当雇主在招人时,他们在寻找可以为公司创造价值的人。这常常意味着只有能够为公司创造价值和机会的人,才有机会。作为一个数据科学家,你可以从以下四个方面,为公司创造价值。
- 从原始数据中提炼洞察力,把这些洞察呈现给他人。
- 例如:分析广告点击率,发现广告对于年龄在18-21岁的人比21-25岁的人更加有效。这可以让公司优化广告投放,从而创造商业价值。
- 建立可以为客户提供直接价值的系统。
- 例如:Facebook的数据科学家通过最优化消息流,进而为用户展示更好的结果。因为用户卷入越多,就可以进行更多的广告投放,这将为Facebook带来直接的收益。
- 通过建立系统,为公司内的其他员工提供直接价值。
- 例如:建立脚本,自动化的汇集3个数据集,产生一个干净的数据集以供他人分析。通过让他人的工作效率更高,从而为公司创造价值。
- 在公司内部,与他人分享你的经验。
- 例如:与产品经理讨论,如何建立需要机器学习算法的产品。这可以预防不现实的时间线和残次品的产生,从而为公司创造价值。
毫无疑问,当雇主寻找候选人时,他们在寻找可以做以上四件事的人(具体哪一件是重点,根据公司的需求而定)。为了证明你可以在以上四个方面为公司创造价值,你需要证明自己以下几项技能。
- 沟通的能力
- 与他人合作的能力
- 技术竞争力
- 从数据进行推理的能力
- 创新的能力和动机
一个好的能力集可以展示你以上方面的技能,并且容易为他们所阅读和判断,每一个能力集都应该是具有好的说明文档和清晰解释的。因此雇主能够快速评估你的能力。
-
为什么需要一个能力集?
如果你拥有机器学习或者相关领域的名校的学位,获得一个数据科学的工作是相对容易的。因为颁发你学位的机构的权威性,雇主相信你有能力为其公司创造价值。如果你没有来自名校的相关学位,你必须建立这种信赖。关于数据科学非常棒的一件事就是你在自己项目中所做的事情和你在公司所从事的工作及其相似。作为一个数据科学家处理Lending Club的信贷数据和分析其发布的匿名贷款数据及其相似。
建立雇主对你信任的一等重要的事情就是:证明你可以完成他们需要你完成的事情,在数据科学领域,这就是建立一个项目集合。当这些项目越贴近实际,雇主越相信你将成为公司的财富,你就更加有机会获得一个电话面试。 -
把什么东西放入你的数据科学能力集?
我们现在知道了要建立一个能力集,下一步,我们需要弄明白要把什么东西放在这个集合中。至少,你应该在Github或者是你的博客中有几个项目,项目中的代码是显而易见的,并且具有良好的说明。越容易让雇主发现这些项目,对他们就越容易评估你的技能。每个项目都应该具有良好的说明文档,包含一个README文件,其中解释如何安装,以及对数据的仔细说明。
我们将逐步介绍几类应该放入你能力集的项目。最好是每类都有多几个项目,尤其对于那些你与目标职位相关的项目。比如:如果你想申请机器学习相关职位,建立多一些使用机器学习的项目是很有帮助的。或者如果你想申请一个分析师,数据清理和讲故事的项目会更加重要。
-
数据清理项目
一个数据清理的项目可以向雇主展示:你可以处理分撒的数据集,并且可以挖掘其内涵。这是数据科学家最重要的工作,是需要证明的核心技能。这类项目中涉及到处理大量杂乱的数据,清理他们以及进一步的分析。一个数据清理项目可以证明:你可以从数据推理,处理多个来源的数据和整理他们形成一个数据集。数据清理占数据科学家工作的一大部分。在入职之前,就要证明你已经一直在做相关的事情了。你想要从原始数据发展到一个更加容易分析的版本,为了完成这些,你需要做一下的事情。- 寻找杂乱数据集
- 首先可以尝试一下data.gov, /r/datasets或者 Kaggle Datasets
- 不要去找那些已经很干净的数据集,你想要的是一个有很多数据文件,数据间存在一些差异的数据集
- 尽可能的去寻找补充数据集,例如,你下载了一个航班的数据,通过google找找看有没有其他相关的数据可以整合
- 选择一个你非常感兴趣的,这样一会把项目做的更好
- 选择一个可以用数据回答的问题
- 探索数据
- 寻求一个有趣的视角,继续挖掘
- 清理数据
- 统一,整合多个数据文件
- 确保你想挖掘的角度是可以用数据回答的
- 做一些基本的分析
- 试图回答你最初提出的问题
在我们系列文章的第一篇,分析NYC学校的数据,一步步了解如何建立一个完整的数据清理项目。你可以从这里找到这个.
- 寻找杂乱数据集
-
讲故事的数据项目
讲故事的数据项目可以证明你具有从数据中提取洞见和说服他人的能力。这对你能够创造的商业价值有巨大的影响,同时也是你能力集中至关重要的一部分。这类项目涉及到处理一系列数据以及讲述一个有吸引力的故事。比如:你可以用航班数据阐述特定的航班具有严重的延误,这可以通过改变航线来修复。一个好的讲故事项目会极为倚重可视化,会带领读者见证分析的每一步。以下是建立一个好的故事讲述项目中,你需要遵循的一些步骤。
- 从多个视角挖掘一个数据
- 探索数据
- 发现数据中有趣的关联
- 创建图表,一步一步的展示你的发现。
我们的系列文章中之前提到文章的第二部分,分析NYC学校数据,包括如何透过数据讲故事的步骤。你可以从这里找到这里.
- 从多个视角挖掘一个数据
-
端对端项目
目前,我们已经涉及了数据探索和分析的项目。他们可以帮助产品经理去了解你在挖掘洞见和展示上做的如何。但是那些项目并没有展现出你建立用户指向的系统的能力。用户指向的系统设计到具有高性能的代码,这些代码可以多次复用,产生不同的输出。例如:一个可以预测股票市场的系统,这个系统会每天下载新的市场数据,预测哪只股票在当天表现做好。
为了展示我们能够建立可使用的系统,我们需要建立一个端对端的项目。这个端对端的项目可以输入数据,处理数据,进而产生输出。通常这是一个机器学习算法产生的结果,也可以是匹配某一准则的所有行。问题的关键是让这个系统足够灵活,可以处理新的数据,并且具有高性能。让代码容易设置和运行也很重要。以下是在建立一个好的端对端项目时,你需要遵守的步骤:- 找到一个有趣的课题
- 导入,整理多个数据集
- 下载尽量多的数据集,在你能力能够处理的范围内
- 阅读数据
- 找出你要进行的预测
- 建立预测
- 计算必要的特征
- 评估训练集和测试集
- 进行预测
- 清理你的代码,写文档
- 分解你的代码到多个文件中
- 添加一个readme文件解释如何安装和运行该项目
- 添加代码内的注释
- 让代码容易从命令行运行
- 上传你的项目到Github
我们这个系列先前的文章,分析Fannie Mae债务数据,涉及到如何创建端到端机器学习项目的步骤。你可以从这里找到这里.
-
解释性的文章
能够理解和解释复杂的数据科学概念(比如:机器学习算法)非常重要。这可以帮助雇主评判你沟通和表达复杂概念的能力。
这是数据科学能力集中至关重要的一环。它包括了现实数据科学工作中很棒的一面。这也表明你能够从更深的层次理解概念和工作原理,而不是停留在字面意思。这种深入的理解对证明你判断的正确性和顺利开展你的工作至关重要为了能写出表明你理解力的文章,我们首先需要选择一个数据科学相关的主题去解释,然后写一个博客,带领读者一路从最底层的工作方式到一个可以实现的代码例子。关键是用平实,简单的语言。你使用的语言越学术,让雇主越难判断你是否真正理解了概念。其中重要的步骤是:选择一个你理解透彻的主题,带领读者从头到尾理解概念,使用概念做一些有意思的事情。以下是你需要遵循的一些步骤:
- 找到一个你理解的很好的概念,或者是一个可以学习的概念。
- 机器学习算法(如:k近邻)是一个不错的选择
- 统计概念也可以
- 确保这个概念有独特之处,值得花费时间去解释
- 确保你足够理解这些概念,如果太复杂很难理解的清楚。
- 选择一个数据集或者一个脚手架帮助你解释概念
- 例如,如果你选择k近邻,你可以使用NBA的数据来解释这个概念
- 创建一个文章大纲
- 假设读者不具有你要解释概念的背景知识
- 把概念分割成小的步骤
- 对于k近邻可能是
- 用相似性进行预测
- 相似性的测量
- 欧式距离
- 使用k=1进行匹配
- 使用k>1进行匹配
- 对于k近邻可能是
- 写你的文章
- 使用清晰,直接的语言进行解释
- 确保与你的脚手架保持紧密的结合
- 试着让不懂的人阅读一下,看看他们的反应
- 分享你的文章
- 也许倾向于你自己的博客
- 或者上传到Github
- 找到一个你理解的很好的概念,或者是一个可以学习的概念。
可选择的其他能力
当你已经有了一些项目在你的博客或者Github上时,添加其他一些东西到你的项目中也是很有帮助的。比如:Quora的回答,演讲和数据科学竞赛的结果。这些常常是雇主次要的考量,但是他们可以成为你锦上添花的部分,让你从能力相当的人中脱颖而出。
读完此外,你应该对于你的能力集中需要什么技能有一个清晰的认识了,以及该做哪些事情建立这些能力集,现在是时候开始做了。