本期【观视界】邀请到柯内特数据科学家 张浩彬
坐客“数字化学会”向大家分享心得
张浩彬
广东柯内特环境科技有限公司数据科学家
历任IBM华南区商业智能事业部数据挖掘工程师,大中华区认知方案事业部大数据认知方案专家。
多年来一直从事数据分析,数据挖掘的商业应用项目,专注于人工智能的商业化技术应用,出版物:《数据实践之美》,《小白学数据挖掘与机器学习 SPSS Modeler案例篇》及《IBM SPSS Modeler18.0 数据挖掘权威指南》。微信公众号:探数寻理(wetalkdata),致力于人工智能技术及应用分享,多次举办相关系列培训课程及讲座。
大家好,今天主要是想跟大家谈谈在商业应用中,我们是如何开展数据分析/数据挖掘的。也会谈谈从我的经验来看,个人可以怎样学习数据分析/数据挖掘的问题。
数据科学的概念认识;
CRISP-DM,数据挖掘项目体系介绍;
商业理解、数据理解以及数据准备的关键;
数据建模的算法概要以及实践经验;
个人学习数据学的书籍推荐;
人工智能这个概念,最早在上个世纪50年代被提出来。它是想做什么,希望可以使得计算机可以模仿人类的行为。最简单的概括就是,我们希望可以制造一个机器人出来,代替人去完成一些工作,最重要的是,他是具备智能的,而不是简单的机械复制任务。
但是这个时期,我们一般称之为寒冬。
为什么,因为真的太难了。
机器学习其实是人工智能研究发展到一定阶段的必然产品。在人工智能早期,科学家普遍认为只要使得计算机具备推理能力就能实现,但是后来发现,要实现人工智能,必须使得机器获得知识。在机器学习时期,出现了基于符号主义的决策树方法,基于统计方法的支持向量机,基于连接主义的神经网络,这有点像是一个百花齐放的时期。实际上这个时期,连接主义的代表神经网络,是被统计学习方法普遍压制,因为当时的计算能力太弱了。
而进入二十一世纪,连接主义又回来了,就是深度学习。不严谨的说法,深度学习就是多层的神经网络,一般可以把具有3层以上中间层的神经网络也可以称之为深度学习。

接下来,我们探讨一下,人工智能,机器学习,数据挖掘以及深度学习的关系。
按照前面的定义,任何能使计算机模仿人类行为的技术我们都能称之为人工智能,而机器学习,则是实现人工智能的其中一个部分,或者说一个分支,这个关系是比较明确的。
那么什么又是数据挖掘呢?
简单来说,机器学习和数据挖掘是一体两面。两者都是从数据中进行知识提炼。机器学习一般是对一个数学目标,而数据挖掘更加考虑商业运用。但是我认为他们的技术和流程都是一样的,都包括了数据准备,数据清洗,建立模型。
而进一步,深度学习则又是机器学习的一个部分。
以上就是一些概念上的澄清,但是我个人而言,一般更喜欢把整个体系,称之为数据科学。当然,我个人理解的数据科学,还得加上传统的数据分析在里面。而在整个体系本身,我个人理解,数据科学的本质,或者说模型的本质就是建立一个现实世界和数学世界的联系表达。例如我们可以利用房屋信息,预测他的价格。构建一个数学表达式。通过构建合适的数学表达式,我们将能进一步认识现实世界的联系,同时通过模型,我们能够实现对未知样本的预测。

但是,在商业实践中,我们可不仅仅是简单把数据收集起来,直接扔进程序跑出一个模型就进行应用这么简单。
在实践当中,一个数据科学应用项目或者也可以直接称之为数据挖掘项目(或者说在咱们企业内部中一个分析研究主题),不但周期长,常常还会跨数据源,甚至跨部协助进行,稍不留神就会陷入复杂的数据迷宫当中,因此在为了能够在整个项目阶段能够保持研究重点,能够持续跟踪,一个有效的数据挖掘方法论(明确的流程模型)是非常有必要的。

而为了使得整个数据挖掘过程更加标准化,也就催生出很多指数数据挖掘过程的方法论,其中比较经典的是CRISP-DM(CRoss IndustryStandard Process- for Data Mining,跨行业数据挖掘标准流程),其中一共分为6个步骤:商业理解,数据理解,数据准备,建模,评估,发布。

数据挖掘过程的各个阶段和任务(成果)可以见下面这张图:


商业理解是整个数据挖掘过程的最重要阶段,例如领导会说他想做一个流失分析,那可能我们最直接的分析思维就是需要先理解:(1)我们的目标是预测哪些客户会流失?(2)更进一步我们可能需要知道,哪些是影响客户流失的重要因素?
但是在这里我们还需要理解清楚:(1)为什么咱们先提出的是流失分析,实际的优先级应该是怎样的?(2)对于我们企业来说,现在的流失问题有多严重?(3)预测客户流失并不是最终目的,客户挽留才是最后的价值,从业务上是否可以根据挖掘结果针对性采取策略挽留流失?在第一阶段一定要多问多想“为什么”?
接下来我们回到正题,下一步很重要的一步,我们需要把商业问题转化为数学技术问题,例如:(1)如何定义流失?是客户销户就够了吗,还是客户主要发生多个月欠费就可以认为流失?(2)既然我们的目标是挽留流失,那更重要的是在客户流失前就找到这些人,那是否需要定义一个濒临流失阶段(多个月没有发生通话/只维持基本套餐费用)?(3)进一步地在资源(人力,物力,时间)限制的情况下,我们需要进一步界定:哪些高价值的客户在流失(资源不足以覆盖所有高流失名单)?如果对流失的客户(或部分客户)进行挽留,投入是多少?收益是多少?
最后必须强调,一个在参与项目或者项目汇报经常忽略的问题,模型的结果并不是我们项目的最终结果,我们要先把商业问题转化为数学问题,但是最后我们得把数学结果转变为商业结果,这才是在商业数据挖掘应用中的重中之重。

数据提供了数据挖掘的“原材料”。该阶段需要理解您的数据资源是什么,以及这些资源有何特征。
首先我们需要与业务部门以及数据管理员确定:(1)在他们的认知当中,哪些数据可以用来预测客户流失?(2)哪些数据是已经在咱们的系统当中?(3)是否有一些重要的影响因素还没记录或者需要一定代价才能获取?
如果咱们的数据量特别的大,这个时候也可以借助抽样的方式进行一些简单的探索。
在确定好分析的数据源后,我们还需要确定这些数据当中每个指标的业务含义是什么,了解业务含义和统计口径对于我们后续分析非常的重要,这决定了我们对数据的处理方式,另外在很多的项目当中,不同数据源获取的同一指标数据,统计口径经常会存在一定的差异。
例如在电信行业里面会有“高峰时期电话数”这个指标,设置这个指标的业务根据是?高峰时期的定义是从什么时候到什么时候?这个指标是按天统计,按周统计还是按月统计?这个指标是计算呼入还是呼出,还是一并统计?
最后,我们还需要对数据进行一定的探索性分析。
1.一般我们会先对数据质量进行分析,例如:
(1)缺失值:对于分类字段,缺失值处理我们可以选择众数,连续字段可以选择平均值/中位数,或者通过回归进行插补
(2)极值,离群值:查看连续字段是否拥有极值和离群值,我们一般用三倍及标准差定义,对于这些离群值,我们可选择:删除记录,把离群值进行代替,一般我们可以用公式代替:
Maximum = Quantile(0.75) + IQR* 3
Minimum = Quantile(0.25) - IQR * 3
计算上四分位数和下四分位数之间的差值,即四分位数差。
另外,如果离群值数量比较多,也可以考虑单独把离群值数据单独抽取出来单独分析;
(3)我们也需要查看分类型指标里面的种类数量有多少:例如一个分类指标如果超过上百个分类的话,明显就会存在问题,这时候我们可以考虑:过滤该字段,对字段采取合并等方式;
2.进一步地,我们也可以借助分布图,箱线图地查看数据的分布情况,查看数据分布是否符合一般认知;
3.还有的是,我们可以结合数据的偏度和峰度进行辅助分析,同时也会计算算式平均值,中位数,1/4分位数以及3/4分位数等常用的统计指标;
4.当然,进行数据探索,我们在这个阶段也可以进行一些简单的数据分析,例如计算相关系数矩阵(统计指标之间的关系),也可以简单做一些t检验以及卡方检验帮助我们进行一些变量筛选,在一个工业项目中,我们就试过用t检验选择连续变量,卡方检验选择分类变量;
另外值得注意的是,当数据分布与业务认知存在一定冲突的时候,也不一定是数据质量存在问题,相反应该细心求证出现偏差的原因,这些不一致的情况或者说异常往往代表了一个好的切入点。
例如我们在一个客户的项目当中也曾遇到过下面某地市门店他们存在大量深夜交易(晚上11点,最后我们就发现,这是因为店长习惯晚上下班后一次性对交易进行录入);也遇到过会员系统当中存在会员积分比起平均积分要高几十倍的会员(最后发现是店员把非会员的购买都算到自己偷开的会员卡中)。;另外我们也遇到了一些购买数量特别高的人群,最后我们单独把这类人群单独拿出来分析;

在对数据进行充分理解的基础上,我们就要生成能够满足数据挖掘需要的数据宽表。
在此阶段,我们需要集中精力在数据准备上,往往一个项目超过60%的时间都放在数据理解和数据清洗上面。
我经常和项目成员说,一个项目里面60%时间都是用于数据准备上面,你以为剩下的40%是建模分析?其实10%才是建模分析,剩下的30%都是用来吐槽数据质量问题的。
在数据理解阶段,我们介绍了处理缺失值和离群值的手段,一般除了这些,我们还需要:
(1)处理无效值:如未知,如年龄显示100,一般采取与缺失值类似的方式;
(2)修改不合规字段:如某些记录后面出现空格:如套餐198 ;
(3)编码方式/统计口径不一致的问题:如统计方式,统计范围,统计单位等;
进一步地,通常我们在做好数据清洗后,我们要对数据进行一系列的加工,生成一张用于数据挖掘用的宽表。
值得注意的是这是一个需要不断调整优化的过程,举个例子有可能原始的变量个数有50个;通过我们对变量的转换和衍生,生成了100个变量;最后通过对业务的理解,模型的测试,从100个变量当中选择新的50个变量进行分析;
这里介绍一些咱们常用数据转换方式:
(1) 单变量自身转换

(1)连续变量转为为连续变量:如出于计量和比较进行转换,如转换单位:通话小时数->通话分钟数的;出于对数据分布修订的转换,如:对数据对数转换;为了使不同量纲或者不同数量级的数据能够很好地进行对比,对数据标准化(原始值-平均值)/标准差,一般在聚类的时候,对数据先进行标准化也是一种必要手段;
(2)连续变量转换为离散变量:一般这种转换会损失一定的信息,但是出于业务更好理解的考虑或者算法的需要,采取的措施一般是利用分箱处理,一般可以选择等距离分箱或者等数量分箱,也有利用分布进行分箱的;
(3)离散变量转换为连续变量:这种方式我比较少用,一般只是一些有序的分类变量转换为1,2,3,4;
(4)离散变量转换为离散变量:一般用于一个变量当中包含有多个类别,我们对变量采取合并,例如运营商信息的省份字段,我们可以把省份归纳为东部,西部,南部等,也可以按照经济水平进行区分。
(2) 变量之间的衍生

(1) 汇总型指标:这个大家比较常见,例如我们统计一个客户在过去一年当中的消费/通话行为,例如计算一年内通话时长的总和,平均值,最大值,最小值,1/4分位数,3/4分位数,标准差,通过这些指标,我们希望整体判断通话状况;值得注意的是,这里面的指标我们一般只会选择少量假如模型,因为这些指标间本身也有比较强的相关关系;
(2) 强度相对指标:简单的如平均通话时长,就是用总的通话时间/通话次数所得,我们希望用这个指标侧面了解每个客户的通话习惯;
(3) 比例相对指标:就是直接反映总体总各部分的比例关系,这在客户行为研究用得特别的多,例如我们分析一个客户在闲时的通话时长占总体的比例,在周末通话时长占总体的比例等等,一般这种指标用于区分客户群体比较有用
(4) 时间对比指标:一般如果我们的原始数据包含几年的数据记录,我们就可以同比(16年5月通话时长/15年5月通话时长)或者环比(16年5月对于16年4月),这种指标在专门的时序分析中用得比较多,相对而言在其他方面比较少,一般我们更喜欢用趋势型指标代替时间对比指标
(5) 趋势型指标:在客户研究当中,尤其是研究客户价值/客户生命周期这两个主题当中,趋势类指标特别重要,例如我们希望了解每个客户的通话时长/交易金额从历史到现在,是一个向上的趋势,还是一个向下的趋势。
这种指标非常有助于我们判断客户的生命周期价值实在提升还是存在潜在的流失可能,因为会借助回归分析方法(月份为自变量,每月通话时长/话费为因变量),最后得回归系数作为该指标。
当然,这样的回归分析很有可能违反回归的前提条件,但是我们发觉这种指标在实际应用层面有很大的帮助。
(6) 波动指标:另外除了研究变化趋势,我们也可以研究数据的波动情况,一般我们可以用标准差或变异系数来反映;

在第一次准备好数据后,就可以开始尝试建模了,接下来,我稍稍啰嗦一点介绍一些基本概念。

建立统计学习模型,简单是指利用一个(或多个)输入变量(一般称为为自变量,预测变量)通过拟合适当的关系式来预测输出变量(也称因变量,响应变量)的方法。其中f(x)是我们希望探求的关系式,但一般来说是固定但未知。尽管f(x)未知,但是我们的目标就是利用一系列的统计/数据挖掘方法来尽可能求出接近f(x)的形式,这个形式可以是一个简单的线性回归模型(y=a+bx),也可能是一个曲线形式(y=a+b(x的平方)),当然也有可能是一个神经网络模型或者一个决策树模型。

了解这一点后,我们还需要更加明确我们建立模型的应用目标,这将很大程度上决定了我们选择什么类型的模型。一般在商业实践当中,我们可以把统计/挖掘任务简单划分为预测和控制。


在预测任务中,我们希望模型尽可能地精确,相反预测模型f的形式可能是一个黑箱模型(即模型的本身我们不能很好的解释或者并不清楚,我们更加关心这当中的输入和输出,并不试图考察其内部结构),只要能够提高我们的预测精度我们就认可达到目的了。
一般认为,神经网络模型属于黑箱模型,如几年前Google X实验室开发出一套具有自主学习能力的神经网络模型,它能够从一千万中图片中找出那些有小猫的照片。在这里,输入就是这一千万张图片,输出就是对于这些图片的识别。
又例如最近,著名人工智能公司Clarifai推出了能够识别成人内容的模型,该模型能够识别出含有裸体和半裸体的图片和视频。这里面用到的也是卷积神经网络。

而在控制任务中,我们希望尽可能地刻画清楚X与Y的关系

在这里,预测结果固然重要,但是我们也十分关心模型的形式具体是怎么样,或者借助统计挖掘模型帮助我们生成了怎样的判别规则。
例如在银行业,我们希望通过客户的个人信用信息来评价个人的借贷风险,这就要求我们不但能够回答这个客户的风险是高是低,还要求我们回答哪些因素对客户风险高低有直接作用,每个因素的影响程度有多大。
模型的选择上,我们一般可以从业务思路,模型准确性以及应用方式考虑。
咱们再回到刚刚的电信客户流失分析中。在模型的选择上,我们一般可以从业务思路,模型准确性以及应用方式考虑。
(1) 业务思路:针对客户流失例子一个直观的想法:因为我们的目标变量是否流失属于分类字段,因此我们可以通过分类算法把流失客户以及留存客户进行划分;进一步地,我们还希望了解客户的流失特征或者流失路径,我们也就选择了分类算法中的决策树C5.0进行建模。
当然,咱们也可以尝试通过聚类算法将整体客户群组进行市场细分(例如k-means),尝试能否得出具有高流失可能性的群组,不过该方法一般我们都用作补充研究。
(2) 模型准确性:针对同样的问题甚至同类型的场景,现在往往有多种算法都能够实现。具体到不同的应用场景,不同模型结果的准确性往往存在较大差异,因此我们应该结合数据特征,算法优势,针对性地选择合适的建模技术,一个数据挖掘项目往往需要通过多次尝试,才能选择出适合的算法;
例如有人喜欢SVM,因为有着稳定的准确率,而且也有着优美的公式。有人喜欢Logistic,因为它的关系的刻画特别的清楚;有人喜欢决策树,模型能够非常简洁,容易解释并且往往准确率也不错;
当然我也很喜欢随机森林,有句话怎么说,你还真的很难建立一个非常糟糕的随机森林模型;
(3)应用方式:正如前文所说,数据挖掘任务一般分为预测任务和控制任务。在有的时候,我们可能希望用神经网络模型,尽管它更像一个黑盒子,预测结构难以解释,但是预测效果一般比较精确;而在有的时候,我们可能希望使用决策树模型,因为它它以规则的方式来展现结果,非常易于分析人员进行解读。
这里再谈一点体会,在我们帮助一些企业做项目的时候,尽管他们会强调自己想要做预测,但实际上他们对“可理解性“的要求是非常的高,这在一些非科技互联网类的企业中尤其明显,他们希望深入理解关系式背后的业务逻辑,同时希望能够借助数据关系帮助他们进一步优化改善业务体系,例如在传统的信用风险评估当中,Logistic就应用得非常的广泛。
还有一点是,尽管在大部分实验室/大数据项目测试中,黑箱子模型的准确率普遍更高,实际商业项目当中的结果可能也是如此,但是结果普遍不会差得十分的明显。
关于模型的具体介绍,考虑到时间有限,每个模型都可以说一整天,我觉得咱们可以以后互相交流讨论,这里我想和大家特别谈的一点是,模型不是死板的,它可以存在多种变体,例如我们在讨论流失分析的时候,就尝试使用聚类算法试图找出一个高流失的客户群。
这里我再举一个大家常见的非常简单的模型做一个举例,RFM模型相信大家都非常熟悉了,根据最近购买时间,购买频次以及购买金额,然后进行评分,一般来说,每个维度打分从1-5,最后根据这个评分我们就可以评价客户价值。
那进一步,对于不同的企业来说,他们的顾客购买行为是可以差异非常大的(例如卖食品的,卖鞋的,卖家电),那么我们对于RFM模型的三个维度,我们的权重设置得一样合适吗?不合适,因此我们需要根据业务需要修改三个维度的权重;
更进一步,RFM每个维度5个评级,一共可以由125种分类,分类数量是不是太多?咱们是不是可以结合聚类分析,尝试把125个子群体进行合并再打上标签会更好;
咱们还可以再进一步,咱们都说RFM应该评价顾客,那咱们是否可以用RFM评价商品价值?完全可以!更进一步,可能F频率和M金额都比较好定义,但是对于定义最近购买时间对于商品来说就不合适了,大部分商品很可能一天会出售多次;那怎们办,那咱们就可以尝试以这个商品出现在每个小票的最后时间求平均作为代替。
所以我想说的是,在实际的数据挖掘项目当中,我们建立的模型绝不仅仅只是一个算法以及参数的调整,更加重要的是业务知识的结合和分析逻辑的构建。
多提一点,近几年,神经网络应用相对火爆。而人工神经网络,就是一种试图模拟生物神经网络的结构和功能的数学模型或计算模型。每个神经元只含有一个轴突,但是通过多个突触可以把信息传输到多个不同的神经元。实际上,每个神经元本身就像是一台微电脑,而整个大脑就是由上百亿个这样的“微电脑”链接而成的。





先谈基本的问题:经过前面一系列的努力,我们已经得到一个经过初步验证认为有效的数据挖掘模型,我们要开始设计策略进行模型应用及预演,可能包括的手段会有:
1. 生成客户流失名单,并结合市场细分以及业务经验,选择重点关注客户;
2. 选择并识别当中的流失比例最高的规则以及高价值客户的流失规则,针对该规则设计针对性的改善措施以及营销措施;
3. 根据分析结果以及挽留成本设计具体计划,并计算预期收益;
4. 设计监测和模型维护计划,用于后续模型优化。
实际上,在真正的数据挖掘应用中,我们还会遇到很多的问题,例如数据不平衡,例如变量选择等等,由于时间的关系,这里不能一一而足。如果要我谈其中的核心,我会说的是,我们需要尽可能站在更高的角度,更有体系化的考虑问题。我们需要有战略层面的眼光去考虑,假如我们研究顾客,那我们考虑的是360度的客户视图,我们希望洞察客户,希望实现以客户为中心的转型。与此同时落实到操作层面,需要考虑这些客户画像的分析主题(从客户获取,到客户营销响应,交叉营销,客户价值分析,生命周期管理,社交认知分析,客户流失分析等)的业务价值落脚点(业务应用方式和收益)和实现难度(数据难度和模型难度),做好长期战略规划的同时,兼顾小步快跑,快速迭代。
最后由于时间的关系,我个人整理了基本入门书籍,假如你希望接触数据科学,想要入门的一些推荐材料。

《小白学数据与机器学习》
以通俗漫画化的方式介绍数据挖掘与机器学习的相关理论和建模实践,适合新手入门。

《机器学习》
被戏称为《西瓜书》,作为机器学习的入门教材来说,它不但涵盖内容范围全,同时逻辑清晰,可读性强。

《统计学习方法》
相比于西瓜书,要精简得多,但逻辑非常的清晰,部分算法的讲解要更加优美,可读性要低于《西瓜书》,可能不太适合入门者。
SPSS

《IBM SPSS Modeler 18.0数据挖掘权威指南》
以数据挖掘应用为主导,以SPSS Modeler为实践框架的应用指南,内容涵盖数据挖掘方法论、数据读取、数据处理、数据可视化、统计分析与检验、数据挖掘算法、自动建模、集成与扩展、模型部署以及性能优化等。
Python

非常好的python机器学习书籍,主要介绍了三个机器学习常用的组间,Pandas,scikit-learn以及Tensorflow,而且里面的实例非常具有借鉴意义
深度学习Keras

详尽介绍了用Python和Keras进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。书中包含30多个代码示例,步骤讲解详细透彻。
*本文为中国数字化学会专家顾问张浩彬原创稿件
*所有权归属张浩彬所有
如需转载请联系本公众号,并注明出处
(上下滑动可阅读更多)
如您也想参与栏目线上交流
可关注本公众号回复“入群”
每月一期不同有关数字化知识分享交流
等着您来参与...

欢迎点击“阅读原文”加入中国数字化学会,成为我们一员!
*本文为中国数字化学会专家顾问张浩彬原创文章
*所有权归属张浩彬所有
如需转载请联系本公众号,并注明出处

