来源 | 大数据文摘

作者|Maksim Butsenko

编译|籍缓、Jiaxu、李雷、王嘉仪


一个影响深远的数据科学项目远远不止一个工作模型那么简单。特别是当我们要构建一个影响全球几百万人日常生活的的产品时,需要一支具备各行业专业知识的团队。


资深数据从业者、Taxify(一家欧洲打车软件公司)数据科学家Maksim Butsenko就这一问题采访了数百人,得到了这篇“避坑指南”。让你能更有效的盘你的数据科学项目。


Maksim Butsenko表示在Taxify,通过创建数据科学卓越计划,使这一过程更加透明,统一和高效- 它有助于我们围绕最佳规范开展工作。同时,与新加入的数据科学团队成员分享最佳规范对公司和新人都是有益的。 最后,我们希望这些规范能够帮助任何人开始他们的数据科学之旅。


1定义数据科学家的角色


科技行业已经或多或少懂得如何让工程师和业务人员一起工作。我们有多种产品开发方法可供选择——你的团队自行设置Scrum(敏捷软件开发的框架),Kanban(看板管理)或XP(极限编程)工作流程。


人们知道如何将这些方法融入组织中,你也可以找到许多关于如何高效应用这些方法的建议。然而,大多数人没能理解数据科学家应如何融入这一场景。他们应该算哪一部分-技术人员还是业务人员?你是放手让他们发现未知的见解?还是要求他们回答一个非常具体的问题或者改善你业务中的一个具体领域?


Asko Seeba非常清楚地解释了企业如何看待数据科学项目的过程,并认为它主要就是一个研究项目。考虑到即使是业内人士仍然试图理解如何以最高效的方式利用数据科学家的专业知识,那么新加入者怎么知道他们应该关注哪些技能?


2建立团队


一年前,我们开始在Taxify建立一个顶级数据科学团队。考虑到我们的快速增长(去年Taxify乘客数量增长了十倍,我们为全球超过1500万名乘客和500,000名驾驶员提供服务)以及运输领域数据相关的挑战数量,只雇用少数优秀的数据科学家是不够的。我们正在考虑在明年为我们的团队增加几十位数据科学家。


但我们究竟要找谁?数据科学中严格意义上的学位课程刚刚兴起,行业本身尚未完全确定如何定义数据科学家的完美简历。


事实上,数据科学家库目前由具有不同背景的个人组成。我们的团队中有人拥有计算机科学和人工智能的背景,但也有来自信号处理,计量经济学,化学,复杂系统,社会学等领域的人。


我们的共同点是通常对科学方法和实验设计的良好理解。获得技术技能要简单得多。但是,由于我们来自各个领域,因此我们对提供基于数据的产品的流程的理解可能会有所不同。需要花费一些精力来整合所有这些经验并提供强大的团队成果,这就是我们如何处理这个问题的办法。


3数据科学卓越计划


我们启动了一项内部计划,旨在为团队发布专注于直接产品影响的自动预测铺平道路。我们称之为“数据科学卓越计划”,它的目的是收集我们已经建立的团队和我们正在努力实现的最佳实践并应用之。


它有助于新团队成员简化模型开发过程并避免常见陷阱,这样我们就可以更快地前进。在我们能够产生有价值的东西之前,不必检查本指南中的每一条,但是大多数要点都是为了确保结果的质量,并避免代价高昂的错误。


我在这里谈论我们的数据科学卓越指南的原因是:它给出了对发布数据产品的要领的深刻理解。虽然大部分内容对于经验丰富的数据科学家来说都是不言而喻的,但你无法从机器学习(ML)课程或书籍中了解它,因此这对于任何刚毕业或从其他领域转移到数据科学的人都很有用。


通过进行面试和审查测试任务,我们经常看到许多具有很强的技术技能和对ML充分了解的初学者没能提出正确的问题或者也不知道如何在现场测试他们的模型。这时候我们的数据科学卓越指南就可以为他们提供帮助。


4问题陈述


首先定义你要解决的问题。


如果可能的话用数学符号描述它(不需要太严格,但有助于确保定义是正确的)。通过定义问题,我们可以开始概述解决方案的可能方法。这是一个迭代过程,回到问题陈述并验证——我们问了自己正确的问题吗?我们可以对市场上已有且可重用的解决方案进行文献探讨和研究,重点在于它们对我们的问题的作用。



5目标和指标


根据项目的目标,提出可以标示目标达到的指标。


在开始研究原型之前,先问问自己:

1. 你的模型对于产品和其使用人员有多少实际价值?

2. 有什么影响?它会影响10%的用户群还是40%?

3. 你如何计划在产品级别上衡量模型的效率?

4. 收集和衡量你可以想到的所有KPI和指标是一种很好的做法。主要目标的积极影响可能会对其他领域产生负面影响。


6时间规划


探索数据,尝试不同的特征工程和构建模型的方法是一项持久战。花费大量时间在这上面也可能会让你在Kaggle比赛中获得巨大的胜利。然而,在快速发展的公司中仍有许多与数据相关的挑战等待解决。


例如,预测驾驶员到达乘客打车地点的时间(预计到达时间- ETA)是我们服务的关键要素。我们发布了成功的预测模型,与现有解决方案相比,平均绝对预测误差得到了显着改善,在这之后我们还得问自己继续努力将误差进一步减少或者多次迭代是否还值得。我们知道这将需要大量的工作,并且无法预先估计可能的改进量。


考虑到这一点,无论是在进行探索性分析还是优化现有模型方面,我们都致力于为我们的工作限定时间。我们为特定任务设置了有限的时间,并尝试在此时间段内提供结果,即使这意味着放弃最可用的模型或省略一些有趣的功能设计创意。时间限定在构思阶段也很有用,例如,为了评估可能的工作区域,我们每天对一个想法以快速双人编程马拉松的模式来弄明白其可能的结果,我们能够多快生成可部署的模型以及它对项目最初基线的改善程度。


7工具


只有当数据科学家独自工作时才不需要考虑代码的可重用性。你可以以最快最喜欢的方式得到想要的结果。但团队合作需要考虑到如何使整个团队前进的更快一点,即便这意味着增加了个人的工作量。


例如,将包含地理信息的热图进行比较的方法可能在他人的分析中也用得上,那么花一些时间对函数进行整理概括并将其作为内部数据堆栈库的一部分就是有意义的,这有助于提升团队整体的速度。并且以可读且易于重用的方式所构建的代码或使用手册将有益于所有人。


总的来说,我们的目标是为数据科学家和工程师提供最好的工具。构建必需的核心部分,其他的能买则买。


8代码检查


代码检查是软件开发标准流程的基础环节。但对于许多数据科学家来说就不那么受用了,部分原因在于他们中的许多人并没有计算机科学的相关学位,并且不太理解软件的最佳规范。这就是为什么检查机器学习代码如此重要,尤其是将要转化为产品的代码。同时需要注意的是,检查为建立模型而做出的假设也是不可或缺的一个环节。


例如,在与我们的领域相关的任务中,你可能想要讨论诸如“如何定义客户需求?”、“为什么缺失的乘车价格字段被平均价格代替?”等问题。这意味着软件开发人员没有充分了解数据科学的过程,就无法评估代码的整体功能,也不会留意到(数据模型相关的)假设的错误。


因此,需要将代码检查分为两个阶段(软件/模型)或者启用同时具备两个领域相关知识的人才。代码审查也是提升团队内部知识共享的一种有效方法,特别是当团队成员分散在各自的项目上时。


9AB检验


当模型准备好了,并且误差在合理范围内,经过代码审查并准备就绪,你希望它能够对业务产生积极影响。那么你怎样实际验证模型是否具有预期的作用呢?实际上的数据的模糊性和不确定性,成为我们工作中的难点之一。我们是全世界发展最快的行业,同时也拥有最复杂的市场和众多竞争对手。我们获得的数据不仅取决于自身,还受到城市社会活动和竞争对手的促销等因素的影响。



考虑到这一点,AB检验则是可以可靠地(如果使用得当)测量特征影响的工具。在这里,AB检验意为实验设置随机分配到对照组和实验组。然而,有些实验立刻会对整个城市产生影响,(例如改进调度算法),此时AB检验便不能有效进行。对于这类情况,我们的模拟引擎能够很好地掌控。同时运行多个实验则是另一个要考虑的复杂因素。


解决方案是构建一个复杂的AB检验引擎来跟踪所有实验,处理实验和对照组中的随机分配,收集观察统计数据,并计算出相应的p值。然而,即使是最复杂的引擎也无法解决在实际测试设置中产生的误差。因此,必须在公司内部共享最佳规范。


10可见度和团队沟通


团队越壮大,越要保证所有事情都得到沟通,各方的意见都要照顾到,所有的成员都知道别人在做什么。


基于各种原因,沟通可见性十分重要:

1. 每个人都应该清楚团队里的其他人在做什么,并且知道该找谁寻求建议或合作

2. 多人做同一个任务时要减少“重复工作”的可能性

3. 共享你知道的信息(对于非技术领域相关的模型尤为重要,运营团队可能会有更多专业知识)

4. 虽然听起来有些反直觉,但沟通的可见性减少了对相同事件的重复解释及沟通误解。


持续的跟踪和多渠道分享进度也是非常重要的,因此我们明确定义了分享工作成果的一些好方法:

1. Slack(企业级沟通工具,Slack 整合了电子邮件、短信、GoogleDrives、Twitter、Trello、Asana、GitHub 等 65 种工具和服务,可以把各种碎片化的企业沟通和协作集中到一起。)项目状态在相应渠道的定期更新。

2. 每周和每月例会:与团队和干系人讨论并确定工作优先级。时时刻刻地进行优先级再评估,因为每周一次太慢了。

3. 研究笔记:数据科学家跟踪项目状态主要是为了自己,比如重大发现和计划。 研究笔记是收集主要发现的好方法,以便日后通过其他途径,幻灯片或会议来分享。

4. 当谈到团队的沟通时,少绝对不比多好。 过度分享通常不是一个大问题,但是分享不足会严重阻碍团队的进步。


11讲故事的能力


讲故事的能力对于在团队中工作的数据科学家来说,和掌握过度拟合,或者知道应该选择卡方检验还是t检验一样重要。这包含了向负责人表达和展示成果的能力。你不应该花五分钟来解释图表上的内容及其重要性。


你想说的大部分内容应该很直白地展现在图表里,并通过选择图形,颜色,图例,轴标签来传达信息。


12关于作者



Maksim Butsenko是Taxify的数据科学家。他的主要职责包括构建数据和机器学习产品,以确保公司的可持续发展,并且帮助收集和推广团队和公司内部的最佳数据科学规范。Maksim是从学术界转行过来的,他有统计信号处理的研究背景。


相关报道:

https://medium.com/taxify-labs/what-they-dont-teach-you-in-machine-learning-courses-53c936ccaacd