本文作者 Russell Jurney
在博彩游戏中练出了数据分析的技能,构建了网络应用程序分析美国和墨西哥的博彩机器的表现。在涉足创业、互动媒体、记者等行业后,他搬到硅谷,在Ning和LinkedIn从事构建分析型应用的工作。Russell现在是Data Syndrome的首席顾问,他帮助公司使用本书所介绍的原则和方法构建分析型产品。
敏捷开发已经成为当今软件交付的实际方式。敏捷开发包括一系列成熟的方法学,比如Scrum,这些方法学提供了以小增量构建出优秀软件的框架。已经有人尝试过将软件的敏捷开发应用到数据科学中,但是结果并不理想。对于敏捷过程的产物而言,交付用于生产环境的软件和影响决策的认知是截然不同的。
- 数据科学与工程之间存在长期的错位,数据科学团队在进行探索性的数据分析和应用研究,工程团队却经常不理解数据科学团队在做什么。同时,工程团队也常常不确定该做些什么,这样就造成了“瀑布的拉力”,敏捷开发的项目似乎也呈现出了瀑布模型的特征。
- 操作Spark 进行数据提炼缺乏理论与技术指南,让我们能在公司内充分发挥“大数据”的力量——通过引入更强大的处理器、更大容量的存储及虚拟化技术、统计学、机器学习等新工具,解决一些以前近乎无解的难题;从原始数据中获得全新的产品,把原始数据提炼为可以转化为利润的认知,在新型的数据分析应用中将这些认知产品化并且应用到生产环境中。
- 操作真实而原始的数据、从事数据科学、进行严肃的研究,这些都很花时间,比敏捷开发的周期(一般是“月”这个量级)要长得多。许多机构的开发迭代周期并没有那么长,也就是说如今应用研究者的进度压力相当大。数据科学受困于例如瀑布模型之类的老式软件工程开发模式的桎梏。
为了整合敏捷开发和大数据集上的数据科学这两个领域,同时将研究和工程融合到一起,产出一些有用的产品,我们提出了一套新的敏捷方法学,并且提供了一些使用合适的软件栈构建产品的例子。这套方法学旨在让你能掌控大局,确保你的应用研究能产出有用的产品,满足实际用户的需求。这套全新的敏捷宣言,围绕下面这几条原则进行组织。
迭代,迭代,再迭代
数据表必须被解析、格式化、排序、汇总和总结,然后才能被理解。能够使人得出见解的图表通常来自第三次或第四次尝试,而不是第一次。构建准确的预测模型可能需要经过多轮特征工程和超参数调优。在数据科学中,迭代是提取、可视化以及产品化见解不可或缺的环节。构建数据科学应用就意味着迭代。
发布阶段性结果
迭代是构建分析型应用不可或缺的行为,这意味着每个冲刺结束时我们都会留下一些没做完的事情。如果我们不在冲刺结束时发布未完成的阶段性输出,可能最终什么也没发布出去。那不是敏捷开发该有的样子。
好的系统是自我记录的,而在敏捷数据科学中,我们记录和分享我们在工作中创建的未完成的数据。我们把所有工作都提交到代码管理系统中。我们与团队成员分享的工作成果,也应尽快与最终用户分享。这一原则并不是对每个人来说都是那么容易接受的。许多数据科学家有着学术背景,他们曾经经过多年的紧张研究,仅仅写出一纸毕业论文,用作申请学位。
原型实验高于实施任务
在软件工程中,产品经理让开发者在一个冲刺阶段内完成一张图表的开发。开发者把这个任务转化为实现一个SQL GROUP BY 语句,并创建一个网页来显示图表。任务完成了吗?没有。如此具体的图表不大可能有什么价值。数据科学和传统软件工程的不同之处就在于它一半是科学一半是工程。
对于任何任务,我们都需要迭代以获取见解,我们可以把这些迭代当作实验。管理数据科学团队意味着监督多个并行开展的实验,而不仅仅是分配任务。良好的数据资产(表格、图表、报表、预测)是作为探索性数据分析的结果出现的,所以我们应该多从实验的立场思考问题而不是完成任务的立场。
在产品管理中仔细考虑数据的情况
能做成什么与想做成什么一样重要。知道孰难孰易与知道需要什么一样重要。在软件开发中,有三个方面需要考虑:客户、开发人员、业务。而在分析型应用程序开发中,还有一个方面需要考虑:数据。如果不掌握数据对于某个功能“不得不说的意见”,产品负责人就不算尽职。在产品讨论中要始终考虑数据的情况,这意味着产品讨论必须以可视化为基础,我们的工作重点在于通过内部应用程序进行探索性数据分析。
上下求索于数据价值金字塔
数据价值金字塔是模仿马斯洛需求层次理论发展出的五层金字塔模型。它表达了原始数据经过表格、图表、报表到预测模型的层层提炼所包含的越来越多的价值,每一层的目的都是提供更多行为依据或是改进现有的行为:
- 数据价值金字塔的第一层(记录)与连通(plumbing)有关,目的在于打通数据集从采集到在应用中展示之间的流程。
- 图表(chart)和表格(table)层是数据优化和分析的起点。
- 报表(report)层提供沉浸式数据探索,帮助推理并了解数据。
- 预测(prediction)层创造了更多价值,但要创建好的预测模型,就需要进行特征工程,这需要低层的支持。
- 最后一层,行动(action)层,它是人工智能热潮发挥作用的一层。如果你所得出的见解无法产生新的行动或是改进现有行动,那这个见解就不那么有价值。
数据价值金字塔为我们的工作制订了提纲。我们应该不仅仅要把这个金字塔当作要遵守的规则,还要时刻牢记在心。有的时候你会跳过一些步骤,有的时候你会搞错顺序。如果直接把新数据放到预测模型中,而且不在底层把数据添加到应用的数据模型中使得数据集可以访问且对于应用透明,那么技术债就来了。你需要牢记,应该尽可能减少技术债。
找到实现杀手级产品的关键路径并遵照执行
为了尽可能地提高我们成功的概率,我们应该把大多数时间放在应用程序对于成功最重要的部分上。但是最重要的是哪部分呢?这需要通过实验才知道。分析型产品的开发就是搜寻和追求移动的目标。
一旦确定了一个目标,比如要做出预测,我们就必须找到实现目标的关键路径。如果这个目标被证明是有价值的,我们还要找到改进的关键路径。随着一个又一个任务的处理,数据被逐步提炼。分析型产品常常需要多个阶段的提炼,涉及ETL(提取、转化、加载)过程、统计学技术、信息访问、机器学习、人工智能、图分析等。
这些阶段的互动可以形成复杂的依赖网。团队领导者应当掌握依赖网。他的工作就是确保团队发现关键路径,然后组织团队按关键路径完成。产品经理无法自上而下管理关键路径,相反这应当由产品科学家自下而上找到。
抓住本质
如果我们无法轻易按照开发常规应用的日程交付做好产品,那我们交付什么呢?如果不交付,我们就没有做到敏捷。为了解决这个问题,在敏捷数据科学中,我们“抓住本质”。核心就是记录分析过程,而不是我们要开发的应用的终极状态。在迭代攀登数据价值金字塔的过程中交付阶段性内容,遵循杀手级产品的关键路径,这让我们能够敏捷。所以,产品到底从何而来?从记录探索性数据分析的过程而来。
这七条原则共同驱动了敏捷数据科学方法学。它们为探索性数据分析,并且据此为构建分析型应用程序提供了框架和参考。可以说这是敏捷数据科学的核心。但是为何要使用这种方法,这种方法又是怎么得出,在新书《Spark全栈数据分析》中将做出详尽解答,她已在阅读原文中恭候多时,何不早日相逢?
内容简介:本书介绍了作者提出的基于Spark的敏捷数据科学方法论,结合作者在行业中多年的实际工作经验,为数据科学团队提供了一套以类似敏捷开发的方法开展数据科学研究的实践方法。书中展示了工业界一些常见工具的使用,包括从前端显示到后端处理的各个环节,手把手帮助数据科学家快速将理论转化为真正面向用户的应用程序,从而让读者在利用数据创造真正价值的同时,也能不断完善自己的研究。本书适合初学者阅读,数据科学家、工程师、分析师都能在本书中有所收获。