业内较为常见的人工智能规划流程是CRISP-DM,这个流程确定了一个数据挖掘项目的生命周期。
移动互联网的产品设计流程,通常要经历需求调研、需求分析、功能设计、视觉设计、编码测试几个阶段。围绕的重心是智能手机设备,对于产品的功能流程设计是否合理,用户交互是否顺畅,界面设计是否美观有着较高的要求。
如下图所示:
移动互联网产品规划流程
但是,在人工智能产品设计中,核心的重点不再是手机界面,而是对于业务的理解。
对数据的理解和对算法的理解,这就要求我们在进行产品规划的时候,将设计的重点从手机界面转变为以围绕业务目标的数据为核心。
目前,业内较为常见的设计流程是CRISP-DM(Cross-IndustryStandardProcessforDataMining,跨行业数据挖掘标准流程)。
CRISP-DM跨行业数据挖掘标准流程
在1996年的时候,SPSS,戴姆勒-克莱斯勒和NCR公司发起共同成立了一个兴趣小组,目的是为了建立数据挖掘方法和过程的标准。并在1999年正式提炼出了CRISP-DM流程。
这个流程确定了一个数据挖掘项目的生命周期,包括以下六个阶段:
这套流程没有特定工具的限制,不论是使用SPSS这类图形化的数据挖掘工具,还是python这类可用于数据挖掘的编程语言都可以。
也没有特定领域和行业的局限,是适用于所有行业的标准方法论,相对于其他的数据挖掘方法路,CRISP-DM具有灵活和适用范围光的优点。
需要特别注意的是:虽然这套数据挖掘流程的完整生命周期包含六个阶段,每一个阶段都依赖于上一个阶段的产出物,但是这六个阶段的顺序却并不是固定的。尤其是商业理解和数据理解,数据准备和建模阶段可能经常出现反复循环的过程。
是否可以继续进行下一个阶段取决于是否有达到最初的业务目标,如果业务目标没有达到,那么就要考虑是否是数据不够充分或算法需要调整,一切都以业务目标为导向。
那么,接下来,我们用一个电商案例来看一下:如何在实际工作中运用这套流程?
商业理解
海微购是一家从事跨境电商业务的创业公司,公司在前几年抓住了海淘的趋势,用户量和交易额都还不错。在新的财年,公司希望能在去年的基础上将GMV提高10%,并以此为目标制定新一年的工作计划。
1.确定业务目标
首先,需要先确定业务目标。
2.确定数据挖掘目标
第二步,需要将业务的问题转化为一个数据挖掘的问题。
根据业务目标,我们可以将其转化为以下几个数据挖掘问题:
在制定数据挖掘目标时,需要明确数据挖掘的问题是一个分类问题,聚类问题还是一个预测问题,以便于后续的建模阶段选择合适的算法。另外,还需要确定的是数据挖掘的范围,是针对所有用户大范围调整,还是先针对小规模的部分用户进行A/BTest,待验证成功之后再全面推行。
3.制定项目计划
在这个阶段需要明确各个环节的交付产物,并识别可能的项目风险,提前制定风险应对计划。
数据理解
1.收集数据
数据理解的第一步是收集数据。
海微购公司的产品经理通过排查发现:公司目前已经通过埋点收集到了用户在web端和APP端的行为数据,且平台售卖的商品有专门的人员负责打标签的工作,内部数据较为完善。但是,还缺乏用户对于平台上未售卖商品的偏好数据以及用户的人口属性数据。
针对这一点,海微购公司的产品经理决定组织一次用户有奖问卷调研活动。通过问卷调研的方式,抽样选取用户进行问卷填写,成功的收集了用户对于平台未售卖商品的偏好数据以及人口属性数据。
另一方面,通过网络爬虫数据,爬取了竞争对手平台的所有商品销售量,并根据销售单价推算出了总的销售额,完善了现有的数据体系。
2.数据标注
海微购公司所拥有的数据并不只有数据库中已经结构化了的数据,他还拥有很多非结构化的数据,例如:商品的图片数据,客户与客服的通话语音数据等等。
这些非结构化的数据并不是直接用于建模,而是需要先进行数据标注,将其转变为计算机可以识别的数据格式。
3.描述数据
当数据准备充分之后,需要对数据进行描述,以供后续阶段使用。主要包括对数据量的描述,数据值类型的描述以及编码方案的描述。
这些渠道类型在数据库中可以用文字来进行表示,也有可能用1234的数字来表示,在数据描述中需要特别注明这一类的数据及其对应的含义,以便后续阶段能正确的使用这些数据。
数据准备
如果产品经理在前期对于业务理解非常准确,数据理解也非常充分,那么将极大的减少数据准备阶段的工作量,提高工作的效率。
1.选择数据
在第一步选择数据阶段,需要做两件事情:第一是在所有的数据中选择哪些数据作为训练集,哪些数据作为测试集;第二是选择参与建模的特征字段有哪些。
2.清理数据
数据准备的第二步,是对数据进行清理,在实际的工作中,收集的数据不一定是100%准确无误的,常见的数据问题有:缺失值,错误值,离群值,编码不一致和无效数据。
例如:用户的年龄信息与是否购买某些商品有非常强的关系,但是用户的年龄信息对于用户本身来讲不是一个必填的信息。所以,商家不一定能获取到而造成缺失值。另外一种可能就是用户未填写真实的年龄,导致年龄出现负数或大于200的数这类错误值。
还有一些数据,例如用户的身高数据,如果绝大多数用户的身高在1.5米到1.9米之间,但是并不排除有一些用户的身高可能低于1.5米或高于1.9米。这类数据并不是错误数据,而是离群值,这类离群值量级较少,不是主要客户特征,但如果不加以排除直接参与到建模阶段,就有可能对建模造成一定的负面影响,比如:影响正常的平均值或极差。
编码不一致的问题也经常出现在数据中,例如:很多数据在低于1万的时候,显示的是具体的数值,而高于1万之后就不再显示具体的数值,而是显示成x.x万这样的格式,造成格式编码不一致的情况,在建模之前需要将所有数据处理为统一的单位和格式。
数据的正确性会直接影响后续建模阶段的模型效果,所以在数据准备阶段需要将这些问题数据进行处理,最简单的方法就是直接删除有问题的数据。但如果数据的量本来就比较少的话,也可以通过一些统计学的方法对数据进行修复或插补,例如:均值填补法处理缺失值,盖帽法处理离群值等等。
3.构建新数据
在数据挖掘中,有一些数据可以通过其他的数据转化而来,例如:如果获取到了用户的身份证信息,就可以根据身份证的生成规则知道用户的籍贯地址,生日以及性别。知道了用户的手机号,就可以通过手机号的归属地查到用户所在地;知道了用户的常用收货地址,结合房产数据,可以推测出用户大致的月收入。
除了对已有数据进行转化,还可以通过人工定义的方式将一些用户的事实行为通过规则转化为新的数据,例如:将月均平台消费超过1万的定义为高消费客户,将月活跃天数大于15天的定义为高活跃用户等等。
4.数据降维
数据降维的另一个目的是对数据进行可视化,我们生活在一个三维的世界中,但如果数据的维度大于三维,就无法进行可视化了。而通过降维将数据降为三维或二维的数据,并保持数据之间的关系,就可以通过肉眼来观察数据模型的效果了。
建立模型
到了这个阶段,之前的工作终于可以有所回报了,我们可以运用算法对前几个阶段准备的数据进行建模,看是否可以达到我们期望的结果。
建模的过程通常会执行多次,使用多个不同的算法和参数,因为在实际工作中,只是用一个算法且仅执行一次运算就能圆满的解决业务需求。这样的情况几乎是不存在的,正常的情况是我们可能需要在数据准备阶段与建立模型阶段之间反复多次,以确保业务目标达到最佳的效果。
1.选择建模算法
第一步,我们需要根据业务目标选择适合的算法,在前文我们提到过算法分为有监督学习和无监督学习两种。根据业务目标的不同,又可以分为:分类算法,聚类算法或预测算法。
算法的选择并不一定是越复杂的算法效果就越好,最终的效果取决于训练的数据以及设置的算法参数,所以我们可以在建模的时候,将适合的算法都尝试一次,根据结果来进行选择。
2.训练集评估
第二步,在选择好使用哪种算法之后,我们需要选择与训练集对应的测试集数据,并对算法的结果定义一个明确的评价标准。
3.构建模型
第三步,是真正建模的过程,在这个阶段根据算法的不同,可能需要对算法的参数进行调整,例如:KNN模型中调整K的值,或者深度神经网络算法调整隐藏层的数量等。
在每次调整算法参数并实际生成模型之后,我们需要根据在上一步定义的评价标准,记录模型的结果数据。这些结果数据将用来与其他的算法,以及同一个算法不同参数间的比较,确定最佳算法和参数。
这听起来是一件非常琐碎且耗时的事情,事实也确实如此,但是感谢技术的发展,大多数调参的过程都可以通过计算机自动完成,不需要人来值守。而且,通过集成算法的运用,我们可以同时使用不同的算法来对数据进行建模,我们在后面还会详细的讲到。
模型评估
至此,我们的项目已经完成了绝大多数的工作,在开始最后的部署阶段之前,最重要的事情是彻底的评估模型,根据在商业理解阶段定义的业务目标来评估我们努力的成果。
1.评估结果
最终的算法模型结果有可能达成了我们最初的业务目标,当然也有可能没达成。
达成了当然是一件好事,但如果没达成也不一定是一件坏事,就像爱迪生发明灯泡试验了一千种材料,失败了一千次也并不认为自己是失败了。他说:“我只是证明了这一千种材料不适合做灯丝而已。”
数据挖掘没有达成业务目标的结果,也不一定意味着建模的失败,有多种可能性导致不成功的结果。
2.审核过程
就像每个项目结束之后都需要进行复盘一样,在一次数据挖掘项目迭代之后,也需要对过程的成功之处和不足之处进行总结——回顾每个阶段的任务与关键的决定,看看每个阶段所做的事情对于最终的结果是否有所贡献?有没有什么方法是可以简化或者改善某一阶段任务完成情况?有没有什么不足之处,是可以在下一次迭代时进行改进的?有没有什么导致失败的问题是可以在下一次提前预测到并且避免的?
3.确定后续步骤
无论成功或失败,到现在都已经生成了最终的结果,那么就应该考虑一下:接下来该做些什么了?
一般会有两个选择:
当然,我们还可以选择其他方式来达成业务目标,毕竟一切的技术都是为了业务目标服务的,人工智能也并不是万能的,根据业务专家设置的规则或从产品运营角度也能提高业绩。
结果部署
建模的作用是从数据中找到知识,获得的知识需要以便于用户使用的方式重新组织和展现,这就是结果部署阶段的工作。根据业务目标的不同,结果部署简单的可能只需要提交一份数据挖掘报告即可,也有可能复杂到需要将模型集成到企业的核心运营系统当中。
1.制定部署计划
根据业务要求和运算性能的的不同,部署的模型可分为:离线模型,近线模型和在线模型三种。
近线模型适用于轻量级算法,一般在内存和Redis(一种支持Key-Value等多种数据结构的存储系统,适用于高速消息队列)中进行,运算的速度以秒为单位。而在线模型则通常根据业务规则来设置,在内存中运行,运行的速度以毫秒计。
另外,部署还需要考虑不同编程语言对于算法模型的调取兼容性,在这个阶段算法工程师需要与原有业务的开发工程师进行联调协作,确保业务系统能够正确的调用算法模型结果。
2.模型监督和维护
当发现模型结果在出现短期异常值时,排查异常的原因,例如:运营活动或者节假日等因素,当发现模型长期表现不佳时,则要考虑是否是用户和产品的数据构成已经发生了变化。如果是因为数据构成已经发生变化,则需要重新通过CRISP-DM流程构建新的模型。
3.生成最终报告
不论是在项目过程中一起并肩作战的同事,还是对项目关心的领导,都需要了解项目的最终成果。一个项目的成功,总离不开每个人的努力,常怀一颗感恩的心才能让一个团队走得更远。
本文由@黄瀚星原创发布于人人都是产品经理。未经许可,禁止转载