学校里教的数据科学和实际工作中的数据科学的差距,往往让很多刚毕业踌躇满志的职场菜鸟陷入迷茫。
事实是,在学校里你可以把模型做得天花乱坠,但是在公司里你的老板需要用业绩担保为你的研究结果背书,这么一想就不难理解为什么在实际操作层面,公司的模型会更偏向保守,而一些套路很深的职场老鸟会意味深长地说“简单的才是可用的”。
从数据科学毕业生到业界的数据科学家的转型,需要很多经验和行业知识打基础。本文作者Rachael Tatman是Kaggle新上线的机器学习和数据分析课程的讲师之一,最神奇的是她的背景:威廉玛丽学院(美国第二古老的大学)英语本科、华盛顿大学语言学博士,现任Kaggle数据分析师。让我们看看她都给数据职场新人提了哪些建议。
数据科学与研究生学位
首先要说明一点:想成为一名数据科学家,并不意味着你必须拥有一个研究生学位。一个教你如何做研究的学位并不是必须的,除非你在做尖端的机器学习研究(老实说,包括我在内的99.9%的数据科学家并不是在做这件事!)。任何一个企图神话这份工作的人都可能只是想让你花钱读一个学位。
读研期间,我确实学到了许多有价值的技能。我学会了如何处理混乱的数据,问对的问题,在不同的场景下选择适合的数据分析工具,为分析计算及机器学习编写代码,以及清晰地交流技术概念等等。这些是每一个数据科学家必要的技能。
但数据科学家需要的技能并不仅仅是这些。我从学校到工作岗位这段时间,经历过的最有挑战的两个阶段:一是明确我缺少的技能是什么,二是明白如何快速地掌握它们。
如果你现在的境遇与我当初相似,我的经验应该会对你很有帮助。下面列出的四项是我在研究生阶段未学到的技能,以及一些如何学习它们的实用技巧。
SQL
据我了解,大多数以从事数据科学为业的研究生都熟悉R或Python(或对两者都很熟悉!)。与此同时,却只有很少一部分人熟悉SQL。那么这可能会是当你准备进入数据科学行业工作时面临的一个问题:在Python和R之后,SQL是数据科学中使用最广泛的第三种工具(而你很可能对它的掌握程度并不够)。
SQL(通常读作“sequel”)是一种与数据库交互的编程语言。SQL虽然在学术研究中用的不多,但在行业中却应用十分广泛。好在SQL的基本知识比较简单并且有很多学习资源,上手并不难。
怎么学SQL:
选一门课。
网上有很多在线学习课程,包括可汗学院(Khan Academy),DataCamp,Stanford和Udemy。面授课程可能比较难找,但是如果你在本地的大学或社区大学有注册,或报名了编程训练营,也有机会找到。
相关资源:
- https://www.khanacademy.org/computingomputer-programming/sql
- https://www.datacamp.com/courses/intro-to-sql-for-data-science
- https://lagunita.stanford.edu/courses/DB/SQL/SelfPaced/about
- https://www.udemy.com/introduction-to-databases-and-sql-querying//c
开发创建一个SQL案例集。
用查询实例来说明你在真实数据库上的操作能力是证明你熟悉这种语言的好办法。一种方法是在Kaggle的BigQuery数据集上编写核心程序(kernels,即托管的R或Python笔记本)。我整理了一份帮你快速入门的指南,HackerRank和SQLZoo上也有不少SQL的练习资源。
相关资源:
- https://www.kaggle.com/rtatman/sql-scavenger-hunt-handbook/
- https://www.hackerrank.com/domains/sql/select
- https://sqlzoo.net
成为一名多面手
研究生院是很好的学习场所,日复一日的研究工作能帮助你拓展知识边界。但随着项目深入,你会发现你需要钻研某一特定领域,且会越来越细分。最终你会成为最了解这一细分领域的人。这很好,学术研究就是会让你成为这样的又“精”又“专”的人。
然而数据科学家却不是这样开展工作的。除非你足够幸运,能够一直在与你学术论文主题匹配的领域中工作,否则,你会不断接到你之前所研究领域之外,甚至还会有一些之前从未闻及的挑战。所以你必须快速处理并不是自己专长领域的研究。
这里是一些成为多面手的小贴士:
阅读学科之外的内容。
学术学科倾向于使用专门特定的统计工具。例如,在社会语言学方面,我们更多的使用混合效应回归(mixed-effects regression)来做工作,但其实还有很多其他的统计方法。在不同学科中进行阅读会使你接触了解到各种不同的技术和问题,并有助于你快速进入新的领域。
训练自己分析新类型的数据。
数据科学家需要处理各种数据。你可能已经在处理某一类型数据上有了丰富经验,但也需要考虑拓展其它类型数据的分析能力。你处理过时间序列数据吗?文本数据呢?图片数据呢?视频数据呢?音频数据呢?预训练模型呢?或者关系数据库?
找出你的知识与实际应用之间的差距,并尝试就一些新的数据来源进行操作。Kaggle拥有各种来源超过10000个公共数据集,你还可以在Zenodo或Dataverse项上找数据。
相关资源:
- https://www.kaggle.com/datasets
- https://zenodo.org
- https://dataverse.org
和你所工作领域之外的人讨论技术。
与自己工作领域之外的人就技术进行交流,不仅可以学到很多,同时也有机会去练习自己如何把技术给外行人讲清楚,参与讨论的双发都会获益良多。
源代码管理/版本控制
我读研的时候是学过源代码管理的(得益于一个软件技能学习网站(Software Carpentry))。源代码管理的能力是非常有价值的,但是据我所知,我的很多同学对此并没什么了解。
源代码管理,也称版本控制,是一种对单个集中式文档或代码库进行管理及更改的方法。该方法的基本思路是,你可在任何副本上进行工作,且其修改都会使原件得到更新。这很益于单个项目的开发(它可以让你回归到实际工作的那个版本,并找到之前中断的地方),对技术合作来说也十分必要。
怎样学习使用版本控制:
在每个研究项目或课题中都使用版本控制方法。
我觉得这非常有必要。在做论文研究的整个过程中,版本控制多次救我于水火之中。
将GitHub用于个人项目(如果有的话)或可以分享的研究。
这件事可做可不做,但如果加入使用Github的团队会很有益处。此外,活跃的GitHub配置文件是向潜在雇主展示工作流程化的一种好方式。
“够用”就行
当你在学术环境中工作时,你确实需要确保一切都尽力完美。你的研究结果会被专家进行严格评估,如果通过的话,它会被永久地添加到学术文献中。然而,在实际工作中,“马上能用”往往比“最终会达到完美”要好得多。
我在实际工作中学到的第一批新术语之一是MVP,即“最小化可行产品”。这个想法是,当你的东西足以满足一部分与之交互的人的需求时,就把它与人们进行分享。在数据科学环境中,这意味着,你的数据不是必须要去回答每一个问题,也不是必须要使用最精准的模型。也许之后你可以对其进行更深入的分析或其他调整,但在项目达到“够用”时你应该就准备好将其发布。
如何提高判断“够用”的能力:
练习判断“目前已够用”。
下一次你参与一个项目时,要经常停下来,也许在你每天结束之前,考虑你是否已经创造了一些有价值的东西(很可能有!)。花点时间练习如何描述你已经完成了什么有用或有趣的事情。
考虑对研究中间阶段的分享。
可以的话,考虑在博客上或对实验室的同事分享你的下一个研究项目的中间阶段。研究可能并非完美,但这不也是你研究中的一部分吗?想想在数据收集过程中,你学到了什么值得分享的东西?你想想自己做了什么是已经“够用”的,别人可能会觉得它很有价值的东西?
以上便是四种我在研究生学校没学到,但现在每天工作中都会或多或少用到的核心技能。从事数据工作的同行们,你们毕业后,要利用一切可以学习这些技能的机会!
原文发布时间为:2018-03-10
本文作者:文摘菌