数据科学家,需要写SQL吗?

2021-07-15 14:40:23 阅读 12554

作为一名计算机科学家,我常常会被问到这样的问题:数据科学家,需要写SQL吗?机器学习工程师,需要很懂算法吗?


这些问题在脱离具体场景的情况下是难以回答的,要想从根本上搞清楚这个问题,就必须从岗位职责说起。




这些年来,大数据和人工智能相关的领域正以前所未有的速度发展着,随之而来的就是越来越多、以及越来越细分的数据岗位。今天我结合一下这几年在硅谷工作的经历,谈一谈个人对这些岗位的认识,以及它们在国内外市场发展的前景。


这里我们要讨论的职位包括:数据分析师,数据科学家,数据架构和工程师,以及机器学习工程师



1

数据分析师


数据分析师,英文是Data Analyst, 简单的说,这个岗位需要通过使用数据、生成洞见,回答问题,最终帮助领导层做出业务决策,为企业提供价值。


数据分析师完成的常见任务包括数据清理、数据分析和数据可视化。根据行业的不同,数据分析师也可能拥有不同的头衔,包括商业智能分析师、业务分析师、运营分析师、数据库分析师等等。但是无论头衔如何,数据分析师都需要具有把传统业务转变为数据驱动业务的能力。


这么说你可能觉得比较抽象,我来举几个例子。


第一个,公司需要进行大规模的营销,所以想知道应该通过什么渠道来发送广告,发给怎样的客户群体,以及如何衡量每个渠道的投资收益,这个时候数据分析师就可以分析手头的数据,来帮助规划这类的营销活动,最终让公司的市场拓展活动收获更好的效果。


再举个例子,企业的老总发现近期公司的业绩有明显的增长,他/她想深入地了解其背后的根本原因有哪些,以及如何保持这种增长的态势。这个时候数据分析师也可以帮上大忙,他们通过执行分析历史的数据,得出合理的结论,并对未来做出一些假设和预估。


上述是一些对数据分析岗位职能的概要性描述,那么为了胜任这类岗位,咱们需要具备哪些基本的能力呢?


首先从非技术的角度来看,你对业务需要有良好的理解,因为关于业务的分析,是数据分析师首要的任务。只有对业务有充分的认识,才有可能明白使用何种技术来进行分析和处理。


另一个必备的是良好的数据敏感度,它让你可以从海量数据中及时发现和分析其中隐含的变化和问题,提炼出有价值的结果并最终给出建议。


此外,数据分析师需要和业务部、运营部、产品部、开发部能多个部门跨团队合作,因此也需要具备良好的沟通协调能力和团队合作精神。


谈完了非技术的技能,再从技术的角度来看需要具备哪些技能。数据分析师需要熟练掌握数据操作、分析和展示的语言以及软件,比较基础的一些包括微软的Excel和PPT,高级一些的包括数据库查询语言SQL,数据分析/展示工具Tableau,如果需要涉及到建模,还需要操作SAS、SPSS clementine、MATLAB等数据挖掘工具。



2

数据科学家


数据科学家,英文是Data Scientist。从“科学家”(Scientist)这个词,我们大致就能猜出这个岗位需要更多的专业的知识。


具体的来说,数据科学家会运用他们在统计和机器学习方面的专业知识,通过建模和预测来回答关键性的业务问题。数据科学家仍然需要能够像数据分析师一样清理、分析和可视化数据。


不过,数据科学家将在这些技能方面拥有更多、更深的专业知识,并且还能够训练和优化机器学习模型。如果说数据分析师专注于从过去和现在的角度来理解数据,那么数据科学家则专注于对未来的发展做出可靠的预测。


这里我还是使用市场营销的案例,解释一下数据分析师和科学家工作的差异。如前所述,数据分析师注重的是现有数据的分析,包括每种渠道的投资回报率,每个客户群体最关注的话题,市场营销费用的变化趋势等等。


而数据科学家更注重的是如何通过历史的客户行为数据,建立一个有效的个性化推荐模型,以增加未来的市场营销中,客户的活跃程度等等。


那么为了胜任数据科学家的岗位,咱们又需要具备哪些基本的能力呢?


从非技术的角度来看,和数据分析师类似,对于业务的良好理解、对数据的敏感性是比不可少的。


另一方面,从技术的角度来看,数据科学家使用机器学习来构建更好的预测算法,测试并不断提高机器学习模型的准确性,因此必须对人工智能领域的建模非常熟悉,并使用相关的工具,例如Python中的Scikit-learn,Scipy, Numpy, PySpark库,R语言和Spark语言中的各种机器学习库等等。


此外,数据科学家经常设计AB测试,通过统计学的方法来评估系统准确性的提升,所以统计学的知识也是必不可少的。



3

数据架构和工程师


数据架构和工程师,英文是Data Architect and Engineer。有的时候人们也把这数据架构师和数据工程师分开来讨论,不过在我看来这两者的工作技能和职责有不少重叠的地方,所以就一并说了。


如果你对软件研发行业内的架构师和开发工程师职责很熟悉的话,那么理解数据架构师和工程师就不难了。


只是数据相关的架构师和工程师,他们更侧重的是数据相关的内容。比如,数据架构师搭建并设置分布式的集群,让我们可以把数据存放在分布式的存储上,并通过分布式的计算资源来处理这些数据。


而数据工程师还会进行一些基本的开发和维护,对数据进行必要的预处理。例如构建清洗原始数据的数据管道(Data Pipeline),在新数据上应用机器学习模型的特征转换,持续监控和测试系统以确保优化性能等等。


从数据架构师和工程师的岗位职责,咱们不难看出,他们需要打造稳定可靠的数据平台,确保数据分析师、数据科学家或者其他使用数据的岗位,能够使用海量的、准确的、及时的数据。


或者说,数据架构师和工程师为数据分析师和数据科学家奠定了基础,让后者们可以专注于数据的分析和建模,而不用担心数据是怎么来的,是否可靠等等。


从数据架构师和工程师的岗位职责可以看出,他们需要更多的软件应用和开发技能,这样他们才能构建用于数据消费的 API,并把外部或新数据集集成到现有数据管道中。


所以对于数据架构师和工程师来说,常见的实用性技能包括Hadoop之类的开源软件,例如Hive,Hbase,MongoDB,Cassandra,Redis等等,或者是一些商业性的软件例如AWS,Azure,以及数据的ETL处理(Extract、Transform、Load)


最近几年,随着机器学习自动化部署的兴起,这个岗位也需要开始关注一些和自动化部署相关的技术,包括Kubernetes, MLFlow, Kubeflow, Spinnakers等等。



4

机器学习工程师


机器学习工程师,英文是Machine Learning Engineer。实际上,机器学习工程师和数据科学家的岗位角色有部分的重叠。


这两个角色都需要处理大量信息,需要出色的数据管理技能和对动态数据集执行复杂建模的能力。


不同之处在于,数据科学家更加侧重于离线的建模实验,以及验证其有效性。而机器学习工程师更加侧重于为模型设计自动化运行的软件,让模型可以提供在线的预测服务。


所以常见的合作模式是,数据科学家通过不断的实验,找到合理的建模方法,然后把这些宝贵的经验移交给机器学习工程师,让他们打造可扩展性能更好,响应速度更快的服务模块。


再次使用市场营销的案例,数据科学家通过收集用户行为的历史数据、构建多种营销相关的特征、测试不同的机器学习算法、评估最终的AB测试效果,获得一些关键性的结论,然后把这些结论告诉机器学习工程师。


假设结论是使用过去3个月的用户数据、构建点击率和购买率的特征、使用XGBoost模型,那么机器学习工程师无需再花时间去尝试不同的可能,而只需要按照数据科学家的蓝图来设计并实现就可以了。


当然,在某些场合下,数据科学家和机器学习工程师的分工不那么明显,另外最近几年很火的MLOps,也进一步降低了机器学习模型的开发和部署门槛,让这两者的界限变得模糊起来。


从国内的IT产业来看,早些年的算法工程师和数据挖掘工程师,和这里提到的机器学习工程师是比较接近的,而这些算法和数据挖掘工程师往往同时扮演了数据科学家和机器学习工程师的角色。


最近这些年,国内的这些岗位也逐步细分为数据科学家和机器学习工程师,当然,这个是否必要,也要看企业的需求。


和数据科学家相比,机器学习工程师需要更强的软件开发能力,所以除了具备相当的人工智能知识背景,这个岗位还需要广泛的数据系统架构和编程技能,包括Python、Java、Scala等编程语言,TensorFlow、PyTorch 或 Keras 等机器学习框架, Hadoop 或其他分布式计算系统等等。当然,作为开发团队,敏捷环境中的工作经验也是必不可少的。


根据上述的一些描述,我大致总结了一下这4种岗位在技能上的要求高低,



人工智能

软件开发

沟通协调

数据分析师

数据科学家

数据架构和工程师

机器学习工程师



                                                                         5

发展前景的简短分析


数据分析师:对深入理解业务有着浓厚的兴趣,对数据敏感,而且擅长使用数据和相关的报表来说话,给出合理的洞见。


对数据的操作和分析具备一定的基础,或者是愿意学习这些技术的人员。作为数据分析师,如果你有足够的学习能力和意愿,也能继续深造,往数据科学家的方向发展。


数据科学家:一般情况下,数据科学家除了能够胜任数据分析师的工作,还需要对数据建模、数据挖掘、机器学习和AB测试等领域更为了解。


如果具有一定的统计学知识,特别是针对AB测试的统计显著性分析和功效分析,那就更好了。此外,数据科学家常常还需要涉及一定的编程,例如使用Python和Spark语言。


如果你对数学,及其在计算机领域中的运用和编程感兴趣,那么这个岗位就适合你了。考虑到最近几年机器学习部署自动化的发展,可能越来越多的数据科学家也能完成部分机器学习工程师的职责了。


数据架构和工程师:如果你对海量数据的高效处理有兴趣,那么这个职位最适合你了。为了提升处理的效率,通常你要精通分布式集群的设置和使用,甚至还需要熟悉分布式计算的语言,例如Spark,Hive等等。如果你也原意更多的学习人工智能的相关知识,也能向机器学习工程师迈进。


机器学习工程师:如果你对机器学习和编程都很感兴趣,希望能够打造端到端的机器学习模块,那么这个职位是不错的选择。当然,这也意味着你需要在多个方面,包括人工智能、数据科学、软件工程等具备相当的知识储备。


最后的最后,强调一下,上述所有这些内容,都是基于通常的认知,以及我自身的一些观察和经历所总结而来的。具体到每个企业和个人,都需要结合自身的发展情况,进行定制化的业务发展和职业生涯的规划。如果大家感兴趣,我会针对每个岗位,进行更深入的介绍和分析,给你提供更全面的信息作为参考。



作者简介熊猫教授一位定居美国的计算机科学家,交大计算机博士,发表过20多篇国际论文和30项国际专利。曾任职于微软、IBM、eBay,出版过四本技术畅销书,极客时间3万畅销专栏作者。

关注微信公众号,获取最新信息小编微信(zqykj0811),加入微信群与悟空团队的数据分析师一起交流

返回新闻活动列表