数据科学很枯燥?不,其实它非常有趣
上周推送的数据科学系列首篇文章(回顾戳??数据科学很枯燥?不,其实它非常有趣)向大家分享了数据科学的概念、使命、学科位置以及未来发展,相信大家对数据科学都有了一个粗浅的认识。不过当大家面对复杂且精密的数据产品时,可能还是会好奇这些看似神秘的数据产品,都经历了什么样的生产过程。
实际上,所有数据产品的生产,都遵循着一套流程。流程的设计方案并不唯一,最广为人知的数据产品设计流程是CRISP-DM(cross-industrystandardprocessfordatamining),即“跨行业数据挖掘标准流程”。今天,我们就从CRISP-DM谈起,聊一聊数据产品的构建步骤,以及数据科学家的工作实践。
CRISP-DM的起源
年,SPSS、戴姆勒-克莱斯勒、NCR三家公司共同成立了一个兴趣小组,目的就是为了建立数据建模的标准流程。年,小组正式提出了CRISP-DM,这一方法将数据产品项目的生命周期划分为六个标准阶段,分别是业务理解、数据理解、数据准备、建立模型、模型评估和模型发布。
这套流程之所以能够被广泛使用,原因之一是它没有特定工具的限制,不论是使用MATLAB或者R这类科学计算型编程工具,还是使用Python这类功能强大的综合性编程语言,都可以使用这套建模方法论。另外一个原因是它也没有特定领域和行业的局限,相对于其他的方法论,CRISP-DM具有适用范围广的优点。
图1CRISP-DM流程图
如上图所示,虽然CRISP-DM的完整步骤包含六个阶段,并且存在连续依赖关系,但是它们的顺序并不是固定的,可以循环出现。是否能够继续进行下一个阶段,取决于之前的工作是否达到最初的业务目标。
CRISP-DM的步骤
1、业务理解
数据分析师在业务理解阶段,会花费大量时间与业务部门同事沟通,了解业务问题。该阶段的重点在于确定业务目标、建立从业务到模型的转化,以及制定项目计划。
不同建模任务中的业务目标千差万别,比如对于一家银行来说,它可能希望本行的理财产品销售额上升30%,或者客户流失率降低20%,一个定义明确的业务目标是整个建模工作的基础。
确定业务目标之后,数据分析师需要将业务的问题转化为一个数学模型问题。一些典型的数学模型如下:
●聚类问题
如构建客户画像,形成用户及产品标签等
●预测问题
如客户流失预测、客户违约预测、产品销量预测等
●分类问题
如结合客户消费及信贷,将客户按照商业价值进行划分等
基于前两项的准备,建模人员就可以制定具体的,可量化的工作计划来评估工作量,然后根据工作量倒排项目计划表,将目标拆解到更小的时间颗粒度,并由专人负责跟进。
2、数据理解
数据理解的目标主要是熟悉数据的特点,探索数据与数据之间的内在联系,并评估数据质量是否有问题。根据数据来源的不同,在实际的数据产品中,一般可以将数据分为内部数据与外部数据。在进行数据搜集和处理的过程中,特别需要注意数据的合规性,以及客户隐私数据的保护。有些时候搜集来的数据并不能直接用于建模,而是需要进行数据标注与转换,将其转变为计算机可以识别的数据格式。当数据准备充分之后,可以对数据进行统计分析,以获得对数据的理解。
3、数据准备
数据准备是数据挖掘最重要的阶段之一,通常这一阶段所花费的时间和工作量占整个项目的50%-70%。数据准备包含数据选择、数据清洗、构建新特征、数据降维等工作。
数据选择
在数据选择阶段,一是要划分训练集与测试集,二是要确定需要使用的数据字段。在字段的选取上,可以选择那些与业务目标息息相关的数据字段,也可以采用基于统计学的方法,帮助数据科学家进行数据选择。
数据清洗
常见的数据集会存在缺失值、错误值、离群值、编码不一致等缺陷。以离群值为例,虽然数量较少,且并不影响主要的数据特征,但如果不加以排除直接应用,就有可能对模型造成负面影响。编码不一致的问题也经常出现在数据中,比如使用多种格式保存日期数据等,在建模之前,需要把数据整理到统一单位和格式。
当数据量比较大的时候,建模人员通常将有问题的数据删除,保留合理的数据。但如果数据量本来就比较少的话,也可以通过一些统计学的方法,对问题数据进行修复或插补。
构建新特征
在数据挖掘项目中,最常做的一件事就是衍生数据的生成,建模人员可以利用较少的原始特征,衍生出大量的复合特征,例如通过客户交易流水,衍生出客户平均交易金额、交易次数、交易集中度等指标。
数据降维
模型的构建难度与数据的量级呈正相关性,若数据集的特征较多,则可以通过数据降维的方式,减少数据特征,同时避免丢失太多信息,保持模型性能。
数据降维的另一个目的是对数据进行可视化。通过数据降维,将数据降为三维或二维的数据,并保持数据之间的关系,数据可视化就会变得很简单。
4、建立模型
算法选择
建立模型的第一步是选择合适的算法。越复杂的算法并不一定效果就越好,算法的效果取决于训练数据的特点,以及算法参数。在建模阶段,数据科学家可以尝试多种合理的算法,分析其对该问题的适用性。
构建模型
大多数算法都需要对参数进行学习或者调整,比如在分类模型中调整类别的数量等。在每次调整算法参数并得到模型之后,建模人员需要根据评价标准,记录模型的效果,比较不同的算法参数及模型效果,确定最佳算法和参数。
5、模型评估
至此,数据产品项目已经完成了绝大多数的工作,在开始最后的部署之前,还需要进行模型评估。模型的结果有可能达到了最初的业务目标,也有可能没有达到。未达到预期有很多原因,比如业务目标一开始设置的不够合理、与业务目标密切相关的数据未收集到等等。这时候,我们就要回到之前的步骤,来检查哪个环节出现了问题,并进行修复。
6、模型发布
根据业务要求和运算性能的不同,部署的模型可分为离线模型、近线模型和在线模型三种。离线模型运算的时间较长,通常以小时来计算。近线模型适用于轻量级算法,一般在内存和内存数据库(如Redis)中进行,运算的速度以秒为单位。而在线模型在内存中运行,运行的速度以毫秒计。
在模型发布这个阶段,算法建模人员需要与研发工程师密切协作,确保业务系统能够正确的调用算法模型。
CRISP-DM的实践
一个数据科学项目的成功,离不开数据科学家与两方的沟通。一方面,数据科学家需要对接前端业务人员,清楚的了解业务需求,这也要求数据科学家储备足够的业务知识。另一方面,数据科学家需要对接后端研发人员,能够向研发人员讲清楚模型逻辑与结构,理解研发人员提出的模型发布、部署时可能存在的问题与障碍。
许多初级数据科学家经常把工作重点放在了建模阶段,然而,资深的数据科学家会花费更多时间用于沟通,来确保项目有明确的业务目标、正确的数据以及良好的部署。经验表明,大约80%的项目时间,都花在建模以外的工作上,这也对数据科学家的综合素质提出了更高的要求。
如何成长为一个优秀的数据科学家?下一期数据科学文章“人员篇”,将带你详细了解数据科学家所需要的各项技能。我们下期再见!
预览时标签不可点收录于话题#个上一篇下一篇