如何打造一个“小而美”的数据团队?

DT财经 2017-09-15 13:19 阅读:340
摘要:文/数据侠Navarro言必称数据的时代,造就了很多数据相关职业。你有没有注意到,不仅是BAT这类大公司,连很多的初创企业都开始设“数据科学家”职位。数据科学家到底需要那些技能?小公司的数据科学业务如

文/数据侠 Navarro

言必称数据的时代,造就了很多数据相关职业。你有没有注意到,不仅是BAT这类大公司,连很多的初创企业都开始设“数据科学家”职位。数据科学家到底需要那些技能?小公司的数据科学业务如何开展?来自巴西的初创企业GetNinjas的数据科学家Lucas Fonseca Navarro现身说法告诉你:小数据科学团队,照样可以风生水起。

数据科学团队都由哪些人组成

作为一个数据科学家,通常你需要掌握数学/统计建模知识,有一定商业方面的专长,还要有黑客级的技能来建一个(基于机器学习的)系统……整个社会对数据科学家的看法大致如此,不过对于大多数公司尤其是创业公司而言,实际情况却并非这样。

从理论上来讲,数据科学家通常会接到一些附带数据集的商业难题,需要以此为基础建立一个模型(通常是数据模型),最后将模型应用到实际的系统中去来实时地解决问题。

但是许多公司都知道这样的全能型数据科学家是十分稀少的,很多公司为此不得不采取替代方案:组建一个具有互补技能的团队,发挥团队的合力,其实这也就相当于一个全能型数据科学家。

在GetNinjas公司,我们先组建了一些“跨学科小组”,将数据科学家和网页开发人员、App开发人员等放在一个小组,每个小组只负责产品的某一个部分。

一段时间后我们发现,即便每个科学家在其各自团队进行与其他组不同的研究项目,他们和其他小组的科学家的交流,竟然比跟自己小组内的开发人员还要多。

这可能是由于数据科学项目比网页开发、App研发等团队更需要全面的技能。

最终我们决定重新组建数据科学小组,在公司已有的3个数据科学家基础上,我们又从其他小组请来两个开发人员。主要着重于在对项目有一个全面的检查后通过数据模型进行决策。

如何挑选团队成员

为了打造全能团队,队员们所掌握的技能需要互补。

我们希望成员无论在发现商机、建模或者投身于研究项目和总结经验的时候都可以很顺利并且有默契。在GetNinjas公司,我们数据科学团队的成员结构是这样的:


项目经理:当有新问题出现时,项目经理需要将问题转化为假设,然后通过测试或者反证数据的可操作性,最后产生有助于数据建模的解决方案。同时项目经理作为团队和顾客的中间人,能够及时根据开发进度和顾客的要求调整项目路线。


数据科学家:掌握着数据和解决方案,负责通过数学或统计学方法建模。同时还负责运行模型(通过Python运行)。他们还需要懂得如何使模型能在商业上发挥作用。


开发人员:负责支持数据科学的业务,主要是网页服务和项目基础架构的维护。开发人员还需要将我们的项目与公司其他项目进行协调,辅助团队其他成员掌握更多的开发技能等。

我们的数据科学团队,我自认为很棒的一件事就是尽管他们不是全才,但每个人在每个研究方面都具有相应的基础知识,所以成员在讨论时不会有哪个人听不懂对方所说的内容,所有人都参与其中。

尽管我是项目经理,有时我也会进行开发或建模,有时数据科学家也会分析数据或者整合公司项目、维护基础设施。每个职位之间没有十分清晰的分界线,每个人都可以提出自己的见解,为此我们总能够高效完成工作并不断改进团队的研发流程。

有了团队后,现在该解决公司的难题了

经过与团队的磨合,我们摸索出了数据项目的一套基本流程。如下图:

我们通常从我们产品遇到的业务难题开始,先提出关于这个问题的假设,并对其进行分析证明。

在手头分析的结果出来后,我们就开始建一个基于数据的数学/统计模型。不过,在达成最终解决方案之前,科学家们通常会相互交流,先讨论几种可能的解决方案。

然后使用Python DS模板运行模型。我们绝大多数的数据项目都来源于公司其他团队的“微服务”。

(DT君注:微服务,即Micro-service,其架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯,它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩容。)


因此,随着模型的运行,我们需要对公司各项业务进行整合,部署一些基础架构,从而让这些“微服务”能够落实到应用层面。

当一切准备就绪时,我们会创建一个仪表板(比如Metabase,就一个不错的的开放源代码可视化工具)每天测量项目结果。 数据科学项目通常是基于真实数据的模型,所以环境变化非常快。这些模型可能会过时,因此对结果的跟踪是持续改进项目的关键所在。

这里还需要提个注意事项,千万不要先建模让问题去适配模型,而是应该从问题出发,从中发现解决问题的方法(通常方法思路占80%,努力占20%)。

除非必要,模型还是越简单越好。

如何提高项目完成的效率

由于我们的数据项目都差不多,在团队开始时,我们就决定建一个Python模板,用于我们的所有项目。

这大大提高了项目完成的效率,并在技术方面减少了数据科学家的工作量, 从而节省更多的时间让他们建立更复杂模型。

(图片说明:GetNinjas公司数据团队使用的各类模板)

我们的模板有一个训练和一个预测服务,这也是我们的模板中数据科学家需要编辑的内容,同时在必要的时候,数据科学家们还需要预先输入一些数据。训练不是强制性的,因为我们不是所有的服务都使用机器学习。

最近这两周我们使用Scrum来开发软件(DT君注:Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发),目的是对项目流程中的不同阶段的工作进行分类。我们还会在项目开发任务中使用“计划扑克”方法来提升效率(DT君注:计划扑克是一种标有数字的扑克牌,其目的是为了能够在一个尽可能短的时间内,让团队成员更加多的了解需要做的工作,同时顺带得到一个可接受的估算结果)。

虽然从一开始,我们已经构建了项目相关的一整套基本流程,但我们在每个项目中还会对其进行改进,以适应我们团队和公司的实际情况。毕竟要想提高整个团队的工作效率,基础的架构一定不能马虎。

注:本文编译自Medium.com网站文章,原题《Creating a Data Science Team from scratch》,文中图片均来自原文,DT君作了部分汉化。关注DT财经点击“阅读原文”查看(注意科学上网)。

数据侠门派

本文数据侠Lucas Fonseca Navarro,巴西初创企业GetNinjas数据科学家、数据科学团队产品经理。

加入数据侠

“数据侠计划”由第一财经数据新媒体DT财经发起的数据人社群平台,旗下有数据侠专栏、数据大咖及爱好者社群、线上线下“数据侠实验室”系列活动等项目。

版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。
阅读量: 340
0