作为一名计算机科学家,我常常会被问到这样的问题:数据科学家,需要写SQL吗?机器学习工程师,需要很懂算法吗?
这些问题在脱离具体场景的情况下是难以回答的,要想从根本上搞清楚这个问题,就必须从岗位职责说起。
这些年来,大数据和人工智能相关的领域正以前所未有的速度发展着,随之而来的就是越来越多、以及越来越细分的数据岗位。今天我结合一下这几年在硅谷工作的经历,谈一谈个人对这些岗位的认识,以及它们在国内外市场发展的前景。
这里我们要讨论的职位包括:数据分析师,数据科学家,数据架构和工程师,以及机器学习工程师。
1
数据分析师
数据分析师,英文是Data Analyst, 简单的说,这个岗位需要通过使用数据、生成洞见,回答问题,最终帮助领导层做出业务决策,为企业提供价值。
这么说你可能觉得比较抽象,我来举几个例子。
上述是一些对数据分析岗位职能的概要性描述,那么为了胜任这类岗位,咱们需要具备哪些基本的能力呢?
首先从非技术的角度来看,你对业务需要有良好的理解,因为关于业务的分析,是数据分析师首要的任务。只有对业务有充分的认识,才有可能明白使用何种技术来进行分析和处理。
此外,数据分析师需要和业务部、运营部、产品部、开发部能多个部门跨团队合作,因此也需要具备良好的沟通协调能力和团队合作精神。
2
数据科学家
数据科学家,英文是Data Scientist。从“科学家”(Scientist)这个词,我们大致就能猜出这个岗位需要更多的专业的知识。
具体的来说,数据科学家会运用他们在统计和机器学习方面的专业知识,通过建模和预测来回答关键性的业务问题。数据科学家仍然需要能够像数据分析师一样清理、分析和可视化数据。
不过,数据科学家将在这些技能方面拥有更多、更深的专业知识,并且还能够训练和优化机器学习模型。如果说数据分析师专注于从过去和现在的角度来理解数据,那么数据科学家则专注于对未来的发展做出可靠的预测。
这里我还是使用市场营销的案例,解释一下数据分析师和科学家工作的差异。如前所述,数据分析师注重的是现有数据的分析,包括每种渠道的投资回报率,每个客户群体最关注的话题,市场营销费用的变化趋势等等。
而数据科学家更注重的是如何通过历史的客户行为数据,建立一个有效的个性化推荐模型,以增加未来的市场营销中,客户的活跃程度等等。
那么为了胜任数据科学家的岗位,咱们又需要具备哪些基本的能力呢?
另一方面,从技术的角度来看,数据科学家使用机器学习来构建更好的预测算法,测试并不断提高机器学习模型的准确性,因此必须对人工智能领域的建模非常熟悉,并使用相关的工具,例如Python中的Scikit-learn,Scipy, Numpy, PySpark库,R语言和Spark语言中的各种机器学习库等等。
3
数据架构和工程师
数据架构和工程师,英文是Data Architect and Engineer。有的时候人们也把这数据架构师和数据工程师分开来讨论,不过在我看来这两者的工作技能和职责有不少重叠的地方,所以就一并说了。
从数据架构师和工程师的岗位职责,咱们不难看出,他们需要打造稳定可靠的数据平台,确保数据分析师、数据科学家或者其他使用数据的岗位,能够使用海量的、准确的、及时的数据。
从数据架构师和工程师的岗位职责可以看出,他们需要更多的软件应用和开发技能,这样他们才能构建用于数据消费的 API,并把外部或新数据集集成到现有数据管道中。
所以对于数据架构师和工程师来说,常见的实用性技能包括Hadoop之类的开源软件,例如Hive,Hbase,MongoDB,Cassandra,Redis等等,或者是一些商业性的软件例如AWS,Azure,以及数据的ETL处理(Extract、Transform、Load)。
最近几年,随着机器学习自动化部署的兴起,这个岗位也需要开始关注一些和自动化部署相关的技术,包括Kubernetes, MLFlow, Kubeflow, Spinnakers等等。
4
机器学习工程师
机器学习工程师,英文是Machine Learning Engineer。实际上,机器学习工程师和数据科学家的岗位角色有部分的重叠。
不同之处在于,数据科学家更加侧重于离线的建模实验,以及验证其有效性。而机器学习工程师更加侧重于为模型设计自动化运行的软件,让模型可以提供在线的预测服务。
再次使用市场营销的案例,数据科学家通过收集用户行为的历史数据、构建多种营销相关的特征、测试不同的机器学习算法、评估最终的AB测试效果,获得一些关键性的结论,然后把这些结论告诉机器学习工程师。
假设结论是使用过去3个月的用户数据、构建点击率和购买率的特征、使用XGBoost模型,那么机器学习工程师无需再花时间去尝试不同的可能,而只需要按照数据科学家的蓝图来设计并实现就可以了。
和数据科学家相比,机器学习工程师需要更强的软件开发能力,所以除了具备相当的人工智能知识背景,这个岗位还需要广泛的数据系统架构和编程技能,包括Python、Java、Scala等编程语言,TensorFlow、PyTorch 或 Keras 等机器学习框架, Hadoop 或其他分布式计算系统等等。当然,作为开发团队,敏捷环境中的工作经验也是必不可少的。
根据上述的一些描述,我大致总结了一下这4种岗位在技能上的要求高低,
|
人工智能 |
软件开发 |
沟通协调 |
数据分析师 |
中 |
低 |
高 |
数据科学家 |
高 |
中 |
中 |
数据架构和工程师 |
低 |
高 |
中 |
机器学习工程师 |
中 |
高 |
中 |
5
发展前景的简短分析
数据分析师:对深入理解业务有着浓厚的兴趣,对数据敏感,而且擅长使用数据和相关的报表来说话,给出合理的洞见。
数据科学家:一般情况下,数据科学家除了能够胜任数据分析师的工作,还需要对数据建模、数据挖掘、机器学习和AB测试等领域更为了解。
数据架构和工程师:如果你对海量数据的高效处理有兴趣,那么这个职位最适合你了。为了提升处理的效率,通常你要精通分布式集群的设置和使用,甚至还需要熟悉分布式计算的语言,例如Spark,Hive等等。如果你也原意更多的学习人工智能的相关知识,也能向机器学习工程师迈进。
机器学习工程师:如果你对机器学习和编程都很感兴趣,希望能够打造端到端的机器学习模块,那么这个职位是不错的选择。当然,这也意味着你需要在多个方面,包括人工智能、数据科学、软件工程等具备相当的知识储备。
最后的最后,强调一下,上述所有这些内容,都是基于通常的认知,以及我自身的一些观察和经历所总结而来的。具体到每个企业和个人,都需要结合自身的发展情况,进行定制化的业务发展和职业生涯的规划。如果大家感兴趣,我会针对每个岗位,进行更深入的介绍和分析,给你提供更全面的信息作为参考。
作者简介,熊猫教授,一位定居美国的计算机科学家,交大计算机博士,发表过20多篇国际论文和30项国际专利。曾任职于微软、IBM、eBay,出版过四本技术畅销书,极客时间3万畅销专栏作者。