首发地址:https://yq.aliyun.com/articles/224350
本博主关于数据科学的文章有许多篇,系列总结在此博客中:
未来是大数据的时代,成为一名数据科学家是从事这方面研究者梦寐以求的职业,本文是一份给数据科学家新手的建议,关于作者学习数据科学的一些亲身体会。
动力
两年前,我在行业分享了个人从事数据科学的经历。本文原本是为了庆祝自己两年的推特纪念日而写的个人反思,但最终发表在Medium上,这是因为我相信它对许多有抱负的数据科学家是非常有用的。
很快就到了2017,我在Airbnb不到两年的工作时间里成为高级数据科学家。当回顾到目前为止的旅程并想象下一个来的是什么,我写了这些关于我早期职业生涯的一些认识。
如果我之前博文的目标受众是有抱负的数据科学家以及对这个领域完全陌生的人,那么本文是针对那些已经在这个领域刚刚起步的人。这篇文章的目的不仅是要用来提醒自己已经学到的重要的知识,同时也激励那些从事数据科学事业的人!
你在谁的关键路径上?
Philip Guo在他的博客“你在谁的关键路径上?”中阐述了以下观察:
- 如果我是在导师的关键路径上,然后他们会努力提供帮助以确保我成功;相反,如果我没有在导师的关键路径,通常我自己照料自己。如果你在某人的关键路径上,然后你强迫他们把你的成功与他们联系起来,这将激励他们尽可能的提升你。
这项工作的结果是相当直观的,通过我早期的职业生涯作为一个例子:
在推特时,我一直想了解更多关于机器学习的知识,尽管我的团队是数据驱动型,但在很大程度上需要数据科学家关注实验设计及产品分析。尽管我尽了最大的努力,但经常发现很难将学这类知识的欲望嫁接到团队中的关键项目中。
因此,当我来到Airbnb,我有意识地决定集中加入一个项目/团队,其中机器学习是该项目成功的关键。在我跟经理确定的几个有前途的工作中,在Airbnb对客户终身价值(LTV)的房源建模。
这个项目不仅是我们事业成功的关键,也是我职业生涯的发展。我学到了构建大规模机器学习模型的工作流程,以及一些解决具体的业务问题的情境学习的优化方法。
毫无疑问,选择的项目的框架在导师的关键路径可以使我们越来越幸运。
学到的准则:我们都希望发展感兴趣及追寻的知识,发现项目、团队和公司的关键路径,它们最好与你一致。
针对问题选择正确的工具
在Airbnb工作之前,我常使用R和dplyr语言。从开始LTV项目后,我很快意识到使用Python去构建复杂的管道更容易些,此时我面临一个两难情形——应该从R转到Python吗?
这是数据科学家普遍会遇到的一个的问题,因为选择哪种语言都是困难的。对我来说,这中间显然存在一个转换成本。经过利弊权衡再做选择,但我越想它就越陷在决策瘫痪的陷阱里。最终,我通过看了这个而逃离瘫痪:
- 不要思考学习哪种编程语言,而要思考哪种语言能为你提供特定领域语言(DSL)的正确设置并适合你的问题。
工具的合适性始终依赖于上下文以及特定的问题。因此不要关心是否应该学习Python,而是关心Python是否适合做这项工作。用下面是一些例子详细描述这点:
- 如果你的目标是应用最新的、先进的统计方法,R语言可能是更好的选择。因为R是由统计人员为统计人员建立。每一周,在CRAN上有很多有趣的新R包提供。
- 另一方面,Python对于构建生产数据管道非常管用,因为它是一个通用的程序设计语言。例如,可以在蜂巢使用Python UDF轻易地构建一个scikit学习模型来做分布式评分。
建设学习型项目
虽然我在之前没有使用过Python,并且从来没有真正正确的学好Python基础,导致我害怕代码被分成相关的类别,我一直想知道,__init__ .py是用来做什么的。
在打算真正学好基础的这段时间中,我从Anders Ericsson的刻意练习研究中获得灵感:
- 刻意练习是由教师设计的活动,其目的是有效地改善个人在具体方面的表现。
鉴于我是自己的老师,所以我需要自己设定练习计划。例如,我开始策划”学习计划”的一套材料,都是与机器学习最相关的Python内容。这个过程花了我几周时间,之后选定一个个性化的课程。所有的这些前期工作都是为了确保我能走上正确的学习之路。下面是一些项目里程碑(由于关于Python的基本概念,这里没有进行翻译):
一旦有了明确的课程,使用以下策略来在工作中刻意练习:
- 反复练习:我强迫自己做一些简单的事情,比如Python中的非关键任务的分析,虽然这会拖慢我的效率,但这强迫我熟悉pandas的基本API而不必有时间负担。
- 建立反馈回路:在适当的时候就找机会审查其他人的代码并修复一些小错误,在编写自己的代码时,试图重构它几次使其更具可读性。
- 分块学习和回顾:每到周末,我会写下了那一周的进度,包括研究的重要资源、了解到概念等。通过回顾所学的内容,能够更好地消化相关概念。
学到的准则:在许多实践实验的支撑下,在进入一个项目之前,提前规划可以帮助你更加刻意的练习。重复、组块、回顾和反馈是加强学习的最有用的方式。
与有经验的数据科学家搭档
一个关键成分是刻意练习能得到及时的反馈和行动。任何伟大的运动员、音乐家或数学家在没有指导或有针对性的反馈情况下就能够成就伟大。
我从那些有成长型思维的人观察到的一个共同特点是他们都不会为承认不知道的东西而感到羞愧,他们是不断寻求反馈。长期自我回避不会的问题在大多数情况下都错过了学习的机会。
在这个项目前,我有很少的将机器学习模型应用于生产的经验。在这个项目中,我做的最好的决定之一是提前告知我的合作者关于我对机器学习的基础知识知之甚少,但我非常想学并且保证随着我知识的积累,会让自己对团队更加有用。
这是一个很好的策略,因为人们一般会喜欢分享他们的知识,尤其是当他们知道最终受益的会是他们的导师时。下面是一些具体例子,如果没有我的合作伙伴的指导,我不会学得很快:
- Scikit学习管道:我的合作者建议采用Sklearn的管道施工可以让我的代码更模块化。这个工具使我的代码更简洁、更可重复使用而且更容易兼容生产模型。
- 模型诊断:由于我们的预测问题涉及时间,合作者告诉我典型的交叉验证行不通,而使用时间序列的交叉验证是一个更好的方法。
- 机器学习的基础建设:在机器学习工程师的帮助下,我学会了通过virtualenvs管理包的依赖关系、如何使用picking序列化模型等。
由于学到了更多的新概念,我不仅能够将其运用到项目中,还能够参与到项目讨论中,这使得项目能做得更好。知识共享创造了一个良性循环,使我成为一个更好的伙伴。
学到的准则:从长远来看,自我审查在大多数情况下都错过了学习机会,早点表明你的求知欲,使自己变得更好而变得更有用。
教学以及传福音
经过多年的研究生导师工作,我一直都知道我对教学的热诚。Richard Feynman,一位诺贝尔奖物理学得主、了不起的老师,讲述了自己的教学观:
- 如果不能将知识给一些基础薄弱的人讲解明白,这意味着我们自己都没有真的弄明白。
知道这些教学技巧可以提高我个人理解的水平,我寻找机会仔细记录模型的实现过程、提供学习午餐并鼓励其他人尝试新的工具。
截至九月下旬,我已经开始与我们的内部数据大学团队合作并准备了一系列关于内部机器学习工具系列。我不知道这最终会走向哪里,但我在Airbnb会驱动更多与机器学习相关的教育。
最终,我会用一条来自Hadley Wickham的一条推特结束这部分:
- 有用的东西不仅仅是新软件,还包括解释现有工具、案列研究、描述工作流程以及良好的错误报告等。
— @hadleywickham
学到的准则:教学是检验你对这门学科理解以及提高技能的最好方法,当你学到有价值的东西时,请与他人分享。你并不总是需要创建新的软件,解释现有的工具如何工作也是非常有价值的。
在步骤k时,想想你的第k+1步
从专注于自己的项目,到与机器学习指导团队的合作,最终使得其他数据科学家能更多地了解机器学习工具。原来的项目范围比几个月前更大,诚然,我从来没有预料到这放在第一位。
当我思考这个项目的演变时,有一件事情与我以往的项目不同,那就是对当前事物状态有一点不满,总是想让它做得更好一点。描述这点最动人的方式来自Claude Shannon的写作:
“有不满的想法,这并不意味着对世界悲观不满——我们不喜欢事情进行的方式是——我指的是一个建设性的不满。思想可以用文字表达,这虽好,但我认为事情可以做得更好。我想有一个更简洁的方法来做这件事,我认为情况会有所改善。换句话说,当事情看起来不太好时,需要有持续的轻微刺激;我认为对目前的不满是好的科学家的一个关键驱动力。”
我决不是一个合格的科学家,但我觉得稍微不满的表征相当于告诉你是否能扩展你的项目影响。在我的项目中,每当我在步骤k时,我自然会开始思考如何第k+1步及更远。
我认为这种心态是非常有帮助的——用你良好的鉴赏力和轻微的不满来坚持不懈地为你的进步加油。
学到的准则:在做一个项目时注意你内心的不满,这些都是关于你如何改进和将项目扩展到下一个级别的线索。
分离想法:你和你的工作
最近,我听了Richard Hamming的演讲,演讲的题目是“你和你的研究”,也可以被命名为“你和你的事业”。
在演讲中分享了一些他的故事,有几点对我很重要。
- 如果你正在做的事情是不重要的,不可能会重要,你为什么这么做?你必须研究重要问题。这么多年的星期五下午我都会思考我研究领域中重要的问题[这占我工作时间的10%]。
- 让我提醒你重要的问题,重要的不是结果,有些问题不重要是因为你还没有受到抨击。问题的重要性在很大程度上取决于如果你是否有办法去解决问题。
- 这整个过程,我想教你的东西是风格和品味,所以你会有一些直觉,什么时候问题是正确的,什么问题是正确的以及如何去解决它。正确的问题在适当的时间以适当的方式解决,并且没有其他的解决方法。
重要问题对于你来说是重要的;对他来说,这是科学的问题;对于我们大多数人来说,这可能是不同的东西。他还谈到制定进攻计划的重要性,如果你没有一个计划,那么这个问题并不重要,但后果很严重。最后他提到了用自己独特的风格和品味做事情。
他做重要工作的标准很高,但这是值得效仿的。当你发现你的重要问题时,你自然会努力做的更好并使其更有效;你会找到教育别人关于它的意义;你会花时间向其他厉害的人学习并学好自己的手艺。
那么最后问自己,在你的关键路径上,对你来说最重要的问题是什么?欢迎读者留言反馈。
作者信息
Robert Chang,一名高级数据科学家,现工作于Airbnb。
Linkedin:http://www.linkedin.com/in/robert-chang-877b1720/
Medium:https://medium.com/@rchang
Twitter:https://twitter.com/_rchang
本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。
文章原标题《Advice For New and Junior Data Scientists》,作者: Robert Chang,译者:海棠,审阅:李烽,董小姐
文章为简译,更为详细的内容,请查看原文
翻译者: 海棠