分享

大话机器学习--数据科学中各个角色

本帖最后由 喵十八 于 2018-8-8 15:54 编辑

问题导读
1.在数据科学的全流程中,一般有哪几个角色?

2.不同角色分别承担的职责是什么?

3.不同角色都有哪些能力要求?
4.不同角色之间的相互关系是什么?
5.如何开始你的数据科学之路?







综述
当下,机器学习非常火爆。那么机器学习中,最为关键的是什么? 没错,是数据。机器学习是数据驱动的。没有数据,纵然算法模型再精妙,也无法落地。
而在真实的数据科学世界里,我们会有两个极端,一个是业务,一个是工程。偏向业务的数据科学被称为数据分析(Data Analysis),也就是A型数据科学。偏向工程的数据科学被称为数据构建(Data Building),也就是B型数据科学。

从工具上来看,按由业务到工程的顺序,这个链条是:EXCEL >> R >> Python >> Scala >> Java(C++)
从流程上看,主要涉及的流程如下:

算法上线流程

算法上线流程

在整个过程中,涉及到需求的分析,数据的爬取(爬虫)、清洗(ETL)、特征工程、模型训练调优等,需要不同角色的工程师通力协作,因而也就产生了更精细的分工。

对于不同的角色分工,不同的人给出了不同的定位。
如国外 ETL 服务商 Stitch 的 CEO Jake Stein,近日对这个话题进行了总结。他绘制了一张工具图,来呈现他们在日常工具使用上的不同。对于新手,也可以通过这张图来看典型的“数据科学家”、“数据工程师”和“软件工程师”都要掌握哪些工具。
data_roles_and_skill_sets.jpg

而业界巨头Google内部则有三类技术岗位。Data Engineer(数据工程师),Data Scientist(数据科学家),Data Analyst(数据分析师)。
虽然各个职责的名称有所区别,但是所承担的工作,都是大同小异。毕竟整个流程走下来,处理的东西是基本一致的。下面将对这些问题分别进行叙述。

有哪些角色
一般来说,为了确保整个流程能够正常流转,需要处理数据分析师,数据工程师,数据科学家这三个角色。
在开始介绍前,先看个吐槽,看下这几个角色眼中其他的小伙伴都是什么样子的。
各个角色眼中的其他职业.jpg

上图纯属恶搞,如有冒犯请勿介意。

数据分析师
数据分析师指的是不同行业中,专门从事行业数据搜集、整理、分析,并依据数据做出行业研究、评估和预测的专业人员。
目前世界500强企业中,有90%以上都建立了数据分析部门。IBM、微软、Google等知名公司都积极投资数据业务,建立数据部门,培养数据分析团队。各国政府和越来越多的企业意识到数据和信息已经成为企业的智力资产和资源,数据的分析和处理能力正在成为日益倚重的技术手段。
与传统的数据分析师相比,互联网时代的数据分析师面临的不是数据匮乏,而是数据过剩。因此,互联网时代的数据分析师必须学会借助技术手段进行高效的数据处理。更为重要的是,互联网时代的数据分析师要不断在数据研究的方法论方面进行创新和突破。

工作内容
  • 快速的产生漂亮且简单易懂,直切重点的分析报告。
  • 使用聚类或者回归等等基本统计分析来解决具体业务问题例如:打折对销量的影响,分类不同的消费者的问题。

能力要求
  • 对业务的理解,从事数据必须结合具体的业务,熟悉行业知识和业务流程,脱离了具体业务说数据分析,是没有意义和价值的。
  • 数学分析功底,掌握数据分析基本原理与一些有效的数据分析方法,并能灵活运用到实践工作中。基本的分析方法有:对比分析法、分组分析法、交叉分析法、结构分析法、漏斗图分析法、综合评价分析法、因素分析法、矩阵关联分析法等。高级的分析方法有:相关分析法、回归分析法、聚类分析法、判别分析法、主成分分析法、因子分析法、对应分析法、时间序列等。
  • 工具使用能力,需要熟练使用Excel,ppt等工具。能够做出清晰明确易懂的汇报材料。此外,最好掌握一门数据分析语言,R 或者 python等。
  • 讲演能力,数据分析师和码农不同,使用的是数据,但是需求的采集、最后产出面对的对象都是人,需要较强的表达、沟通、讲演能力,并能运用图表有效表达数据分析师的分析观点,使分析结果一目了然,最终能够“讲好故事”。
  • 经验,数据分析相对码农,更看重经验的积累。不同的数据分布使用不同的处理方式,这都需要经验的指导。

数据工程师
数据工程师需要开发能对数据进行整合、存储和提取的系统,并从软件工程师开发的应用和系统中获取数据。数据工程的诞生,是作为软件工程大类下的一个更细分的技能类别。据雷锋网了解,根据国外统计,40% 的数据工程师原本是软件工程师。这是目前一个很普遍的职业发展道路(软件工程师专注做数据工程)。

工作内容
  • 多快好省地储存,导入,导出数据。
  • 按照数据分析师和算法工程师的需求组织并提供数据。
  • 一般大数据平台的日常维护。
  • 敲代码

能力要求
  • 软件工程师所必备的基本技能。
  • Hadoop, Spark, Kafka, Hive 等新工具 开发ETL/数据流水线。
  • 高级数据结构,分布式计算

数据科学家
数据科学家是指能采用科学方法、运用数据挖掘工具对复杂多量的数字、符号、文字、网址、音频或视频等信息进行数字化重现与认识,并能寻找新的数据洞察的工程师或专家(不同于统计学家或分析师)。这个和目前很多公司的算法工程师的职位类似。
可以看出,数据科学家这一职位对技术能力和学术能力要求非常高。据说google这一职位99%的都是phD,一般人听不懂他们在说什么。
现在很火的机器学习,自然也在他们的范畴之内。

工作内容
  • 实现产品中依赖数据的部分。
  • 通过数据对具体问题进行调查分析。
  • 建立模型支持公司的决策。

能力要求
  • 对数据的提取与综合能力。
  • 统计分析能力。
  • 数据洞察与信息挖掘能力。
  • 开发软件能力。
  • 网络编程能力。
  • 数据的可视化表示能力。

网上,也有人整理一张图片,用来描述数据科学家。如下:
数据科学家技能要求.jpg


理想的团队
在大数据时代,数据工程师的角色愈发地重要。在整个流程中,是当之无愧的基石。也许,这里用数据架构师的称谓更准确。
和数据分析师和数据科学家不同,他们不太关注统计、分析技能、建模等。他们的工作重点在于数据架构、计算、数据存储、数据流等。 因此,数据工程师必须具备相当强的编程能力—包括编写数据查询程序的能力。也就是说,他们的能力必须达到开发高手的级别。
数据工程师还负责数据库设计,数据仓储,建立数据湖。 这就意味着,他们必须十分熟悉现有的数据库技术和数据管理系统,比如和大数据有关的Hadoop与HBase 等。
此外,非功能性的基础设施问题,如数据的可扩展性、可靠性、韧性、有效性,备份等也由数据工程师来负责。没有他们为后续流程提供数据弹药,那么所有的后续流程其实都是一场空。
好的数据工程师,会让他的下游感觉不到他的存在。因为所有的数据都能非常顺畅的流转。但差劲的数据工程师,一定会让他的下游痛不欲生,且常常提心吊胆,担心数据的准确性。

数据科学家,则是整个团队的灵魂。数据科学家在他所参与的设计及其他创造性的工作中扮演着类似艺术家的角色。他认同发散性的思维,并且时常在他所处理的问题中发挥这种能力。尽管熟悉各种不同的数据分析方法,但他不会局限于方法论的框架中。相反,他会将它们组合在一起,甚至是为了他所面对的特定问题而创造一种全新的方法。
因而他们必然是整个团队中最聪明的一群人,他们或许不是专职的编程人员,但是必然都熟悉或精通一种或几种编程语言(要是有一天,有人自称是高级数据科学家,却不会敲代码,相信我,九成是个嘴炮玩家)。他们也会了解现有的数据存储、流转。还是那句话,他们虽然不是专职的,但是他们非常注重细节,关注数据处理的每一个步骤。
最关键的是,他们通常解决的是整个团队中最棘手的部分,他们需要根据目标,将抽象的目标,具体化为数据模型。从而解决问题,达成目标。

数据分析师则是整个团队和外界的一个接口,既需要根据实际业务,定义问题,制定需求,规化方向,也需要将团队的最终成果有效的展现出去。一个好的数据分析师能够让团队的价值得到更好的体现。相信前段时间,那个提出手机主题根据外壳颜色自动变色需求的产品被打的新闻大家都有所耳闻,所以希望你们的数据分析师,不会提出根据用户的性别推算其年龄的需求吧!

如何开始我的数据科学之路?
如果你也有志于参与数据科学,或者以此为工作,那么恭喜你,进入了大坑。你既需要学习相当多的数学知识,也必须掌握繁多的计算机知识,同时具备撸起袖子敲代码的动手能力,还得像诸葛亮一样能舌战群儒(最好像骂死王朗那样,骂那群xjb提需求的产品)。
让我们来看下你的升级之路的终点。当然是成为一名合格的数据科学家。OK,以此为模板,让我们看下你需要掌握哪些知识和技能?

解决问题的能力
请记住所有科学核心都是解决问题,一个伟大的数据科学家也是一个伟大的问题解决者。
这个是在你所有需要掌握的知识和技能中,处于首位的,虽然有点玄学的意思,但是请记住,数据科学家都是为了解决实际的问题,而不是为了炫技去搞哪些模型算法的。

数据敏感性
第二点,似乎还是有点玄乎的东西。但是请记住,数据是最重要的!数据敏感性就是在工作中不断提醒自己,对细节的关注,对每一个流程的把控,然后将这些积累为自己的经验,在解决新的问题的时候使用他们。

统计/机器学习
看完上面的内容,似乎我轻视了统计和机器学习。这只是因为这不是我们讨论的重点,事实上,统计和机器学习的相关知识,是非常重要的。如果你没有专业的知识,你也不能很快地解决数据科学问题。

计算机能力
这个主要就是程序员的能力范围了。主要包括
  • 编程。Python也好,Scala也好,你总会需要一门语言来处理数据,建立模型的。
  • 分布式计算。并不是所有问题都涉及大数据,但考虑到现在数据的情况,掌握了没错的。
  • 软件工程。如果你想吧你设计的机器学习算法转化到应用中,软件工程基础必不可少。
  • 数据处理能力。数据清理/准备是数据科学的重要内在组成部分。这将耗费你大多数时间。

交流/商业头脑
在商业数据科学领域工作,具备交流沟通能力/商业头脑是不容忽视的。除非你将要从事非常具体的工作,可能是纯研究类型的工作(尽管我们要面对现实,在产业界并没有很多这种类型的工作),绝大多数数据科学领域的工作都涉及到业界交流互动,通常是与非学者类型的人打交道。
具备将商业化问题和催生这些问题的环境概念化是极为重要的。将统计学方面的观点转化为可以想普通大众推荐的行动或启发性观点也是重要的。

持续学习的能力
新的工具,新的算法,新的技术,层出不求,只有保持不断学习,才能不断进步。

总结
这种角色的划分,也仅是一个粗粗的分类,好让读者了解这些玩数据的,都在玩些什么,相互之间的界限并不是非常清晰明确,只是每个角色的侧重点有所不同而已。数据工程师,不理解业务和模型的需求,就无法更效率的提供数据,数据分析师不了解前期数据工程师是怎样的处理流程,就无法制定计划。
说不定上一秒还在建模调参的数据科学家,下一秒就和数据工程师讨论起来整个集群的架构该如何设计了。
时代在变,技术也在不断迭代更新。请记住乔帮主的话“stay hungry stay foolish”。
想成为为一名优秀的数据科学家,数据分析师,数据工程师,学习都是必不可少的。

REF
如何成为一名数据科学家
一张图看懂数据科学家、数据工程师和软件工程师之间的区别

各位老铁,回帖有奖,内含一些数据科学理论基础的书籍
书单.png

游客,如果您要查看本帖隐藏内容请回复






已有(18)人评论

跳转到指定楼层
mengyusheng 发表于 2018-8-9 09:24:53
666666666666666666
回复

使用道具 举报

hyolee 发表于 2018-8-9 09:27:08
谢谢楼主分享
回复

使用道具 举报

姚YY 发表于 2018-8-9 09:58:46
谢谢分享,学习了
回复

使用道具 举报

fly2015 发表于 2018-8-9 11:25:24
very  good !!!
回复

使用道具 举报

cotsang 发表于 2018-8-10 22:00:02
大话机器学习--数据科学中各个角色
回复

使用道具 举报

caiqingfei 发表于 2018-8-13 15:09:33
谢谢分享,学习了
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条