行业资深专家切身经验——给数据科学家新手的建议

  1. 云栖社区>
  2. 博客>
  3. 正文

行业资深专家切身经验——给数据科学家新手的建议

【方向】 2017-10-14 21:58:46 浏览3443
展开阅读全文

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud

本博主关于数据科学的文章有许多篇,系列总结在此博客中:

关于数据科学的那些事

未来是大数据的时代,成为一名数据科学家是从事这方面研究者梦寐以求的职业本文是一份给数据科学家新手的建议,关于作者学习数据科学的一些亲身体会。

81e77806e119653bfd57537a13ba2d97b6c22a00

动力

两年前,我在行业分享了个人从事数据科学经历本文原本是为了庆祝自己两年的推特纪念日而写的个人反思,最终发表在Medium上,这是因为我相信它许多有抱负的数据科学家是非常有用的。

很快到了2017,我在Airbnb不到两年的工作时间里成为高级数据科学家。当回顾目前为止的旅程想象下一个来的是什么,我写了这些关于我早期职业生涯的一些认识。

如果我之前博文的目标受众是有抱负的数据科学家以及对这个领域完全陌生的人,那么本文是针对那些已经在这个领域刚刚起步的人。这篇文章的目的不仅是要用提醒自己已经学到重要的知识,同时也激励那些从事数据科学事业的人

你在谁的关键路径

Philip Guo在他的博客“你在谁的关键路径上?”中阐述了以下观察:

  • 如果我是在导师的关键路径,然后他们会努力提供帮助以确保我成功相反,如果我没有导师的关键路径,通常我自己照料自己。如果你在某人的关键路径,然后你强迫他们把你的成功与他们联系起来,这将激励他们尽可能的提升你

d3f0ca9243dd5542bca1158b0c484c01d8bd3bdc

这项工作的结果是相当直观的,通过早期的职业生涯作为一个例子

在推特时,我一直想了解更多关于机器学习的知识尽管我的团队是数据驱动但在很大程度上需要数据科学家关注实验设计及产品分析。尽管我尽了最大的努力,经常发现很难将学这类知识的欲望嫁接到团队的关键项目中。

因此,当我来到Airbnb,我有意识地决定集中加入一个项目/团队,其中机器学习是该项目成功的关键。在我跟经理确定的几个有前途的工作中,在Airbnb对客户终身价值(LTV)的房源建模。

这个项目不仅是我们事业成功的关键,也是我职业生涯的发展。我学到了构建大规模机器学习模型的工作流程,以及一些解决具体的业务问题的情境学习的优化方法

毫无疑问,选择项目框架在导师的关键路径可以使我们越来越幸运。

学到的准则:我们都希望发展感兴趣及追寻的知识,发现项目、团队和公司的关键路径,它们最好与你一致。

针对问题选择正确的工具

Airbnb工作之前,我常使用R和dplyr语言。从开始LTV项目,我很快意识到使用Python去构建复杂的管道更容易些,此时我面临一个两难情形——应该从R到Python

9674380c2425af05a29a60b5e88045b52cceee15

这是数据科学家普遍会遇到的一个的问题,因为选择哪种语言都是困难的。对我来说,这中间显然存在一个转换成本。经过利弊权衡再做选择,但我想它越陷决策瘫痪的陷阱。最终,我通过看了这个逃离瘫痪:

  • 不要思考学习哪种编程语言,而要思考哪种语言能为你提供特定领域语言(DSL的正确设置并适合你的问题。

工具的合适性始终依赖于上下文以及特定问题。因此不要关心是否应该学习Python,而是关心Python是否适合做这项工作。用下面是一些例子详细描述这点

  • 如果你的目标是应用最新的、先进的统计方法,R语言可能是更好的选择。因为R是由统计人员为统计人员建立。每一周,CRAN有很多有趣的新R包提供。
  • 另一方面,Python对于构建生产数据管道非常管用,因为它是一个通用的程序设计语言。例如,可以在蜂巢使用Python UDF轻易地构建一个scikit学习模型做分布式评分。
学到的准则:不要纠结于单一的技术或编程语言,而是关心哪个工具或技术能最好地帮助你解决问题?关注于解决问题,工具自然而然的就确定了。

建设学习型项目

虽然我之前没有使用Python,并且从来没有真正正确的学好Python基础,导致我害怕代码被分成相关的我一直想知道,__init__ .py是用来做什么的

在打算真正学好基础的这段时间中,我从Anders Ericsson刻意练习研究中获得灵感

  • 刻意练习是由教师设计的活动,其目的是有效地改善个人在具体方面的表现。

鉴于我是自己的老师,所以我需要自己设定练习计划。例如,我开始策划学习计划的一套材料,都是与机器学习最相关的Python内容。这个过程花了我几周时间之后选定一个个性化的课程。所有这些前期工作是为了确保我能走上正确的学习之路下面是一些项目里程碑(由于关于Python的基本概念,这里没有进行翻译):

02ff9be05ccc6b61bf46dcfecfd24ee22264ca39

一旦有了明确的课程,使用以下策略在工作中刻意练习

  • 反复练习:我强迫自己做一些简单的事情,比如Python中的非关键任务的分虽然这会拖慢我的效率,但这强迫我熟悉pandas的基本API而必有时间负担。
  • 建立反馈回路:在适当的时候就机会审查其他人的代码并修复一些小错误,在编写自己的代码时,试图重构它几次使其更具可读性。
  • 分块学习和回顾:每到周末,我会写下了那一周进度,包括研究的重要资源了解到概念等通过回顾所学的内容,能够更好地消化相关概念。

学到的准则:在许多实践实验的支撑下,在进入一个项目之前,提前规划可以帮助你更加刻意的练习。重复、组块、回顾和反馈是加强学习的最有用的方式。

与有经验的数据科学家搭档

一个关键成分刻意练习得到及时的反馈和行动。任何伟大的运动员、音乐家或数学家没有指导或有针对性的反馈情况下就能够成就伟大。

我从那些有成长型思维的人观察到的一个共同特点他们都不会为承认不知道的东西而感到羞愧,他们不断寻求反馈。长期自我回避不会的问题在大多数情况下都错过学习的机会。

e84208c5b860cd80d865ce2b892d8a033cb6cede

在这个项目,我很少的将机器学习模型应用于生产的经验在这个项目中,我做的最好的决定之一是提前告知我的合作者关于我对机器学习的基础知识知之甚少,但我非常想学并且保证随着我知识的积累,会让自己对团队更加有用

这是一个很好的策略,因为人们一般喜欢分享他们的知识,尤其是当他们知道最终受益的会是他们的导师时。下面是一些具体例子,如果没有我的合作伙伴的指导我不会学得很快:

  • Scikit学习管道:我的合作者建议采用Sklearn的管道施工可以让我的代码更模块化。这个工具使我的代码更简洁、更可重复使用而且更容易兼容生产模型。
  • 模型诊断由于我们的预测问题涉及时间,合作者告诉我典型的交叉验证行不通,使用时间序列的交叉验证一个更好的方法。
  • 机器学习的基础建设在机器学习工程师的帮助下,我学会了通过virtualenvs管理包的依赖关系如何使用picking序列化模型等。

由于学到了更多的新概念,不仅能够将其运用项目能够参与到项目讨论使得项目能做得更好。知识共享创造了一个良性循环使我成为一个更好的伙伴。

学到的准则:从长远来看,自我审查在大多数情况下都错过了学习机会,早点表明你的求知欲,使自己变得更好而变得更有用。

教学以及传福音

经过年的研究生导师工作,我一直都知道我对教学的热诚。Richard Feynman一位诺贝尔奖物理学得主了不起的老师,讲述了自己的教学观:

  • 如果不能将知识给一些基础薄弱的人讲解明白,这意味着我们自己都没有真的弄明白。

知道这些教学技巧可以提高我个人理解的水平,我寻找机会仔细记录模型的实现过程、提供学习午餐并鼓励其他人尝试新的工具。

截至九月下旬,我已经开始与我们的内部数据大学团队合作并准备了一系列关于内部机器学习工具系列。我不知道这最终会走向哪里,但我Airbnb会驱动更多与机器学习相关的教育。

最终,我会用一条来自Hadley Wickham的一条推特结束这部分:

  • 有用的东西不仅仅是新软件,还包括解释现有工具、案列研究、描述工作流程以及良好的错误报告等。

                    — @hadleywickham

学到的准则:教学是检验你对这门学科理解以及提高技能的最好方法,当你学到有价值的东西时,请与他人分享。你并不总是需要创建新的软件,解释现有的工具如何工作也是非常有价值的。

在步骤k时,想想你的第k+1

从专注于自己的项目,到与机器学习指导团队的合作,最终使得其他数据科学家能更多地了解机器学习工具。原来的项目范围比几个月前更大,诚然,我从来没有预料到这放在第一位。

当我思考这个项目的演变,有一件事情以往的项目不同那就是对当前事物状态有点不满,总是想让它做得更好一点。描述这最动人的方式来自Claude Shannon的写作

96bf1d6aba9450ef1e9d9e43eccaf2b8d492d410

“有不满的想法,这并不意味着对世界悲观不满——我们不喜欢事情进行的方式是——我指的是一个建设性的不满。思想可以用文字表达,这虽好,但我认为事情可以做得更好。我想有一个更简洁的方法来做这件事,我认为情况会有所改善。换句话说,当事情看起来不太好时,需要有持续的轻微刺激;我认为对目前的不满是好的科学家的一个关键驱动力

不是一个合格的科学家,但我觉得稍微不满的表征相当你是否能扩展你的项目影响。在我的项目中,每当我在步骤k,我自然会开始思考如何k+1及更远。

我认为这种心态是非常有帮助的——用你良好鉴赏力和轻微的不满来坚持不懈地为你的进步加油

学到的准则:在做一个项目时注意你内心的不满,这些都是关于你如何改进和将项目扩展到下一个级别的线索。

分离想法:你和你的工作

最近,我听了Richard Hamming的演讲,演讲的题目是你和你的研究”,也可以被命名为你和你的事业

在演讲中分享了一些他的故事,有几点对我很重要。

  • 如果你正在做的事情是不重要的,不可能会重要,你为什么这么做?你必须研究重要问题。这么多年的星期五下午我都会思考我研究领域中重要的问题[这占我工作时间的10%]
  • 让我提醒你重要的问题,重要的不是结果,有些问题不重要是因为你还没有受到抨击。问题的重要性在很大程度上取决于如果你是否有办法去解决问题。
  • 这整个过程,我想教你的东西是风格品味,所以你会有一些直觉,什么时候问题是正确的,什么问题是正确的以及如何去解决它。正确的问题在适当的时间以适当的方式解决,并且没有其他的解决方法。

重要问题对于你来说是重要的;对他来说,这是科学的问题对于我们大多数人来说,这可能是不同的东西。他还谈到制定进攻计划的重要性如果你没有一个计划,那么这个问题并不重要,但后果很严重。最后他提到了自己独特的风格和品味做事情

做重要工作的标准很高,但这是值得效仿的。当你发现你重要问题,你自然会努力做的更好使其更有效;你会找到教育别人关于它的意义;你会花时间其他厉害的人学习并学好自己手艺


那么最后问自己,在你的关键路径上,对你来说最重要的问题是什么欢迎读者留言反馈。


作者信息

77a06740841c419341f01e3adf318a776bb1ac75

Robert Chang一名高级数据科学家,现工作于Airbnb

Linkedinhttp://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,译者:海棠,审阅:李烽,董小姐

文章为简译,更为详细的内容,请查看原文

 

 

附件下载: 给数据科学家新手...[【方向】].1507989359.pdf

网友评论

登录后评论
0/500
评论
【方向】
+ 关注