笔者本是学术界的Bioinformatics Scientist,因生计问题改行工业界Data Scientist,经历过2家大的互联网公司,3个不同岗位的Data Scientist。现将这些年来摸爬滚打中所学所做所想所理解总结如下,抛砖引玉,还请大家多批评指点。
1 Data scientist的职责? Data Scientist是数据应用科学家。他应该立足某个应用领域,根据领域需求设计合适的数据产品,利用可以自动化获取的数据资源,设计合适的算法,采用适当的自动化工具进行数据计算/合并/转换,最终得到数据产品。DS需要有独立的研究/开发能力,至少应该能开发出数据产品的原型以及产生数据产品的流水线的原型,如果他能够开发出稳定可靠的工业级数据处理流水线那就更好,因为通常在工作中找到合适容易理解你的思路并实现的工程师本来就不是一件容易的事情。
2 Data scientist应该培养哪些能力? 1 大方向 1. 定义数据产品:DS需要能够敏锐的捕捉数据产品的需求,能够发现并创造对企业有价值的数据产品 。根据最终消费者的不同,通常数据产品分为两类:
2. 数据获取能力:加工得到DS的数据产品需要各种来源数据,这些数据可能来自于各种不同的地方:flatfile, database, api, etc,有着各种各样的格式。为了处理这些东西,DS需要掌握相关的知识。 3. 数据加工能力:DS首先要有足够的理论知识才能够比较游刃有余的加工各种数据,对于处理文字数据你要有NLP的知识,处理图像数据你要有数字图像处理的知识,做机器学习应该要有数学和统计学知识。 通常有两种手段来加工DS的数据:直接使用现成的工具包,或者自己写程序来实现。然而最终DS都应该有写程序整合的能力,因为数据加工通常比较复杂分为很多个步骤,为了实现这些步骤的自动化,DS需要将这些步骤整合为数据处理流水线,不能自动化的则的不能称为“产品”,因为不能有效的利用机器从而无法达到边际效用递减的效果。
2 内功(思维/知识层面) Data scientist首先是科学家。形而上者谓之道,DS应该要有足够的理论知识作为指导。 做好的DS比做好的Developer更困难,因为需要学习和积累更多的东西,但通常领域知识不容易过时,因此带来的好处是DS的职业生命力可能会较长一些。 2. 数学:数学应该是DS的专长,在工作中会起到引导方向的作用,我自己个人的理解,DS应该掌握。 3. 线性代数:基础。 4. 概率论/统计学:猜想大部分DS靠这个混饭。 5. 最优化/运筹:碰到合适的问题这个会有奇效。 6. 计算机科学:虽然说计算机不过是实现idea的工具,但现实中各种软件工具几年一变,非常容易过时,为了更容易的理解和掌握它们,万变不离其宗,应该学习不变的理论的东西。 7. 数据库理论 8. 算法:帮助DS高效的实现程序。 9. 函数式编程:让DS脱离接近硬件的思考,设计出更贴近问题领域,更数学化的程序。 10. 机器学习:混饭吃的招牌。
3 招式(技术/应用层面) 企业比较喜欢自己能support自己的DS。Developer们通常很忙,沟通这件事情有时候也很麻烦,所以DS最好有单打独斗实现idea的能力。从这个角度出发,我认为DS关于数据这块的知识面要足够广,以支持自己单打独斗。 2. 程序设计语言 :DS不应该局限于某一两种程序设计语言,否则实现能力就受到了**。我认为DS应该会以下几类程序设计语言: 3. 数据库 :各种SQL/NoSQL的玩意,Hadoop等等。
3 Data scientist应该如何做项目? 我的个人经验是DS很多时候需要单打独斗,和developer的集团作战不太一样的。 DS在自己的领域要有更高的开发效率,因为很多时候DS需要开发原型或者迅速计算一些东西以便辅助决策。如果自己的地盘上比developer还慢那还成什么话? DS写程序的原则是能不写就不写,写了就有可能出bug。所以,尽量使用现成well tested的工具来完成任务。DS应该会简化问题抓住重点,解决关键的问题,因为单打独斗没有足够的时间,很难做到面面俱到。
4 Data scientist的职业规划? 要问职业规划,这个问题很难,我想很多人都在摸索中前进。呆在一个地方,也许可以慢慢的升为Senior以及更高,或者转为Team leader,这是两条不同的路。 第三条路,有些文章说Data scientist = |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|