会机器学习就够了?下一代数据科学家群体走向“全栈”!
数据科学一直是个引人注目的领域,尤其是对于那些有计算机科学、统计、业务分析、工程管理、物理、数学等学科背景的年轻人。但雾里看花始终看不清晰,人们总是认为数据科学背后有许多神秘的地方,觉得它不仅仅是机器学习和统计。
多年来,我与许多专业人士讨论过该如何进入数据科学领域。为什么总有关于数据科学的炒作?能够帮助人们走进这一领域的仍然是统计数据和机器学习吗?未来也仍是如此吗?
两个月前,我从研究生院毕业后直接作为数据科学家加入了媒体巨头ViacomCBS。除了研究助理和实习之外,没有任何全职行业经验。我的工作职责包括从构想、开发到生产ML产品,使用过文中列出的大部分工作方式。希望本文能帮到所有有志于进军这一领域的数据科学家和机器学习工程师们。
为什么总有关于数据科学的炒作?
几乎人人都想要进入数据科学领域。几年前,数据科学领域存在供需问题:自从DJPatil博士和JeffHammerbacher创造了Data Science一词后,对数据科学家的需求大大增加,相关人才显得供不应求。
到了2020年,情况有所好转。受到过正规或者MOOC教育的数据科学爱好者的数量有所增加,人才需求也有所增加,但没达到前者的增长程度。这一术语所涵盖的领域越来越广泛,包含了人们进行数据科学工作所需的大多数功能。每个人都在谈论数据科学,但大多数却不得其法。
我认为数据科学总被炒作有以下几个原因:
- 前沿发展
- 工作满意度高
- 业务影响巨大
- 数据生成量增加
- 数据科学家头衔背后的神秘感
- 数据很好看!(不是字面意思~)
- 大量学校和训练营能提供数据科学学位
- 许多招聘网站将其评为最热门的工作(最近3年被Glassdoor评为美国最热门的工作)
自称是数据科学家的人?
总有人会这么介绍自己,所以让我就当前的行业状况讲一些真相。
由于职位需求的增加和数据科学家头衔的光鲜,许多公司已开始将产品分析师、商业情报分析师、业务分析师、供应链分析师、数据分析师和统计学家的职位改为数据科学家,因为许多人离职的原因便是去应聘数据科学家的职位,但实际上这些公司提供的工作内容往往是一样的。
许多人从职位头衔微小的字词变化中感到了被尊重。因此,公司们以相同的思路改变职位名称,使他们的职位显得更耀眼也更令人期待,例如数据科学家-分析方向、产品数据科学家、数据科学家-增长方向、数据科学家-供应链方向、数据科学家-可视化方向或数据科学家,还有什么不能加的方向?
大多数接受教育或者在线培训的人都有一个误区,认为所有数据科学家都会建立精致的机器学习模型,但这种认知并不完全正确。我刚开始攻读应用数据科学硕士时就是这样想的,以为大多数数据科学家都是做机器学习。
但是当我开始在美国实习和就业时,才逐渐了解真相。推动人们走向数据科学的力量,其实源自对人工智能及其业务影响的炒作。
下一代数据科学家——机器学习
在2020年,对于想要以数据科学家-ML方向(这样命名因为它不是数据科学家-分析方向)的身份进行应用机器学习,却又没有博士学位的人来说,除了人人都可做的将机器学习应用到数据集,可选的方法更多了。我将从自身经验出发分享一些关键点,或许有助于你的面试:
- 分布式数据处理/机器学习:掌握Apache Spark、ApacheHadoop、Dask等技术的实践经验能够证明你可以大规模创建Data / ML管道。有以上任何一种技术的应用经验都很加分,不过我还是建议使用Apache Spark(使用Python或Scala)。
- 生产环境机器学习/数据管道:如果可以亲身体验Apache Airflow就再好不过了。ApacheAirflow是用于创建数据和机器学习管道的标准开源作业编排工具。行业里已经在使用它,因此建议你学习并围绕它进行一些项目。
- DevOps/Cloud:数据科学领域,很多人都过分忽视了DevOps。如果没有基础架构的话,要如何构建ML管道?构建在本地计算机上运行的笔记本或代码,并不像我们在课程中所做的那样容易。你编写的代码应该可跨自己或其他人可能在团队中创建的基础结构进行扩展。
许多公司可能尚未布局ML基础架构,正在寻找入门人员。即使在课程学习中,熟悉Docker,Kubernetes以及使用Flask之类的框架构建ML应用程序也应该是标准做法。我喜欢Docker,因为它具有可扩展性,可以构建基础架构映像,并在Kubernetes集群上的服务器/云上复制相同的内容。
- 数据库:必须了解数据库和查询语言。尽管SQL被严重忽略,但无论在任何云平台或数据库上,它仍然是行业标准。开始在leetcode上练习复杂的SQL将帮助到你应对在DS profiles中的某些编码面试部分,因为你要负责在预处理进行时从仓库中导入数据,这将简化你在运行ML模型前进行预处理。使用SQL将数据传输到模型中时,大多数功能工程可以随时随地完成,然而很多人会忽略这点。
- 编程语言:推荐用于数据科学的编程语言是Python、R语言、Scala和Java,了解他们中的任何一个都可以帮助你解决问题。对于ML类型的工作,面试过程中都将进行现场编码,因此你需要在自己觉得有效率的地方练习——Leetcode或者Hackerrank等。
如今,除非你足够幸运,在行业中有一些重要的关系(建立人际关系网非常重要!)或拥有署名的出色研究记录,否则只了解机器学习或统计学的话,你仍无法进入数据科学领域并学习ML。商业应用程序和领域知识往往需要工作经验,但是除了在相关行业进行实习之外,这些经验事先无从习得。
我也曾站在数据科学的路口徘徊,如今就要亲历下一代数据科学家进入领域的需求在当下成型。这个行业日新月异,需要你不断调整自己跟上它的脚步。