IBM认知计算事业部工程师张浩彬:数据科学的商业实践征程
提纲概览:
1.CRISP-DM,数据挖掘中的方法论;
2.数据挖掘在实践中的应用,以及如何开展一个数据挖掘项目;
3.数据理解与数据准备的过程以及经验原则
4.数据建模的实践经验
5.如何学习数据分析与数据挖掘
以下为正文:
大家好,今天主要是想跟大家谈谈在商业应用中,我们是如何开展数据分析、数据挖掘的。也会谈谈从我的经验来看,个人可以怎样学习数据分析/数据挖掘的问题。
今天的内容我会避免过于技术的问题,主要谈谈在 数据挖掘 过程中的体系,以及一些经验原则,也会谈谈整个数据挖掘的基本框架。另外看到群里有不少熟悉的朋友,之前是有关注我的公众号,这次分享之中会从里面截取一些图片,但是内容上会有所不同。
先说方法论的问题:
在实践当中,一个数据挖掘项目(或者说在咱们企业内部中一个分析研究主题),不但周期长,常常还会跨数据源,甚至跨部协助进行,稍不留神就会陷入复杂的数据迷宫当中,因此在为了能够在整个项目阶段能够保持研究重点,能够持续跟踪,一个有效的数据挖掘方法论(明确的流程模型)是非常有必要的。
商业应用的数据挖掘会是一个持续性的项目过程,在这个过程中,毫无疑问的是数据挖掘的各种算法是数据挖掘过程的核心步骤,但我们也要明白算法并不是整个项目的全部决定性因素。商业理解真的太重要!
而为了使得整个数据挖掘过程更加标准化,也就催生出很多指数数据挖掘过程的方法论,其中比较经典的是CRISP-DM(CRoss IndustryStandard Process- for Data Mining,跨行业数据挖掘标准流程),其中一共分为6个步骤:商业理解,数据理解,数据准备,建模,评估,发布。
具体流程可以见上图。在上面的图中,大家要注意到最外面的蓝色圈。虽然我们说是六个步骤,但是实际上这是一个不断循环往复的过程。可能我们在建模阶段遇到问题,发现数据变量不够或者理解不够充分,那就需要返回到上一个阶段。
补充一点,利用指导方法论,我们是为了尽可能地让流程标准化,同时可以基于各个步骤划分不同工作小组的内容,便于更好的合作,但不是为了造成过分的约束,实际上,在我经历的项目中,由于项目的要求和人员投入的约束,具体分工会有一定的出入,但是一套标准的流程是非常有必要的。
如果简单的区分的话,我们一般也可以划分:商业理解,数据理解和处理,建模与评估,结果发布等四个过程。
这个4阶段划分,也很常用,一般一个项目小组很多时候是基于这4个任务进行划分的。
数据挖掘过程的各个阶段和任务(成果)可以见上面这张图。
大家可能觉得每个阶段划分也要有阶段成果有点烦,但是针对每个阶段进行适当的回顾或者总结,可以更好地避免给自己挖坑。尤其是在大型项目相互协助的过程中,这种方式既是保护团队,也是保护自己。
接下来,我举一个电信行业应用的例子也会穿插一些其他行业的介绍:
商业理解是整个数据挖掘过程的最重要阶段,大家设想一下假如我们在电信行业,领导会说他想做一个流失分析,这个时候,大家可以先想想我们怎么理解这个问题。
如果在我刚接触项目的时候,我最直接的分析思维就是需要先理解:
(1)我们的目标是预测哪些客户会流失?
(2)更进一步我们可能需要知道,哪些是影响客户流失的重要因素?
但是我认为我们还需要理解清楚:
(1)为什么咱们先提出的是流失分析,实际的优先级应该是怎样的?
(2)对于我们企业来说,现在的流失问题有多严重?
(3)预测客户流失并不是最终目的,客户挽留才是最后的价值,从业务上是否可以根据挖掘结果针对性采取策略挽留流失?
为什么要做流失分析?为什么是这个时候想做流失分析?为什么想通过数据挖掘来解决流失分析?
在第一阶段一定要多问多想“为什么”?这些问题的答案决定了我们的项目是否有坚实的业务基础,以及投入的力度,这里面的坑实在是太多了。
流失的定义是什么?这个问题很好,实际上,这是我们定义好商业问题之后,进一步要做的一件事情。
我们需要把商业问题转化为数学技术问题,例如:
(1)如何定义流失?是客户销户就够了吗,还是客户主要发生多个月欠费就可以认为流失?
(2)既然我们的目标是挽留流失,那更重要的是在客户流失前就找到这些人,那是否需要定义一个濒临流失阶段(多个月没有发生通话/只维持基本套餐费用)?
(3)进一步地在资源(人力,物力,时间)限制的情况下,我们需要进一步界定:哪些高价值的客户在流失(资源不足以覆盖所有高流失名单)?如果对流失的客户(或部分客户)进行挽留,投入是多少?收益是多少?资源有限,这个非常重要。
最后必须强调,一个在参与项目或者项目汇报经常忽略的问题,模型的结果并不是我们项目的最终结果,我们要先把商业问题转化为数学问题,但是最后我们得把数学结果转变为商业结果,这才是在商业数据挖掘应用中的重中之重。
再举个例子,咱们有时候会做一些零售的项目,零售企业会告诉我们他们要做商品的关联分析。大家可以想象,客户要的真的只是关联分析的支持度和置信度吗,然后出一个表格吗?
远远不止,简单地说,他可能需要我们进一步回答,在关联商品当中,哪些是同品类的关联(超市的盐和糖,一般咱们直觉都能猜到,这其实不太重要),哪些是同楼层跨品类关联(例如我们发现汽水和干货,因为该超市楼上是电影院),跨品类关联(黄金和茶叶,送礼人群),最后,利用这些关联,它可以怎么指导业务?捆绑促销?货架摆放建议?招商谈判等等。
我这里再详细说一下,刚刚说,一般我们也可以划分为商业理解,数据理解与准备,建模与评估、应用。在项目早期,我想说我们只能尽可能去贴近。像我刚刚所说我们要多问为什么,我再举个例子:
例如,客户跟我说,“我想做个关联分析”。实际上,作为分析顾问/数据科学家,我们就要想,他为什么想要做关联分析,另外我们也要注意一点,关联分析这是一个数据挖掘术语。我们要把它还原为一个业务问题,即使他明确提出他要关联分析。
例如最后,我们就会发现,他认为对于会员他了解得足够了,但是它缺乏一个商品的360度视图。再问,360度视图的目标是什么,可能就会得出最近一年商品销量下降,同时高管认为要开展新的一期招商。
那问题就会变为,客户希望解决销量问题(他已经想到了交叉销售,),同时他希望能够更好自己自己的商品(为他们招商提供依据和决策,尽管暂时还没有具体方法)
下面来说第二阶段:
数据提供了数据挖掘的“原材料”。该阶段需要理解您的数据资源是什么,以及这些资源有何特征。
首先我们需要与业务部门以及数据管理员确定:
(1)在他们的认知当中,哪些数据可以用来预测客户流失?
(2)哪些数据是已经在咱们的系统当中?
(3)是否有一些重要的影响因素还没记录或者需要一定代价才能获取?
另外如果咱们的数据量特别的大,这个时候也可以借助抽样的方式进行一些简单的探索。
在确定好分析的数据源后,我们还需要确定这些数据当中每个指标的业务含义是什么,了解业务含义和统计口径对于我们后续分析非常的重要,这决定了我们对数据的处理方式,另外在很多的项目当中,不同数据源获取的同一指标数据,统计口径经常会存在一定的差异。
例如在电信行业里面会有“高峰时期电话数”这个指标,设置这个指标的业务根据是什么?例如:高峰时期的定义是从什么时候到什么时候?这个指标是按天统计,按周统计还是按月统计?这个指标是计算呼入还是呼出,还是一并统计?
最后,我们还需要对数据进行一定的探索性分析。
1、一般我们会先对数据质量进行分析,例如:
(1)缺失值:对于分类字段,缺失值处理我们可以选择众数,连续字段可以选择平均值/中位数,或者通过回归进行插补。
(2)极值,离群值:查看连续字段是否拥有极值和离群值,我们一般用n倍标准差定义。对于这些离群值,我们可选择:删除记录,把离群值进行代替,一般我们可以用公式代替:
另外,如果离群值数量比较多,也可以考虑单独把离群值数据单独抽取出来单独分析。
(3)我们也需要查看分类型指标里面的种类数量有多少:例如一个分类指标如果超过上百个分类的话,明显就会存在问题,这时候我们可以考虑:过滤该字段,对字段采取合并等方式。这个问题在我们研究商品分类中特别常见。
以上是数据质量的简单介绍。
2、进一步地,我们也可以借助分布图,箱线图地查看数据的分布情况,查看数据分布是否符合一般认知。
3、还有的是,我们可以结合数据的偏度和峰度进行辅助分析,同时也会计算算式平均值,中位数,1/4分位数以及3/4分位数等常用的统计指标。
4、当然,进行数据探索,我们在这个阶段也可以进行一些简单的数据分析,例如计算相关系数矩阵(统计指标之间的关系),也可以简单做一些t检验以及卡方检验帮助我们进行一些变量筛选,在一个工业项目中,我们就试过用t检验选择连续变量,卡方检验选择分类变量。
另外值得注意的是,当数据分布与业务认知存在一定冲突的时候,也不一定是数据质量存在问题,相反应该细心求证出现偏差的原因,这些不一致的情况或者说异常往往代表了一个好的切入点。
这个切入点通常就是项目当中比较好玩的地方了。例如我们在一个客户的项目当中也曾遇到过下面某地市门店他们存在大量深夜交易。(深夜11点,一个买衣服的品牌)
最后我们就发现,这是因为店长习惯晚上下班后一次性对交易进行录入,她告诉我们这样很方便。也遇到过会员系统当中存在会员积分比起平均积分要高几十倍的会员。
你以为我们找到了超级会员吗~最后发现是店员把非会员的购买都算到自己偷开的会员卡中(这个事情在业务上不一定是错的)。另外我们也遇到了一些购买数量特别高的人群,最后我们单独把这类人群单独拿出来分析。
在对数据进行充分理解的基础上,我们就要生成能够满足数据挖掘需要的数据宽表。在此阶段,我们需要集中精力在数据准备上,往往一个项目超过60%的时间都放在数据理解和数据清洗上面。
我经常和项目成员说,一个项目里面60%时间都是用于数据准备上面,你觉得剩下的40%是什么?
你以为剩下的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实验室开发出一套具有自主学习能力的神经网络模型,它能够从一千万中图片中找出那些有小猫的照片。在这里,输入就是这一千万张图片,输出就是对于这些图片的识别。
未到18岁的请跳过下面内容~上周,著名人工智能公司Clarifai推出了能够识别成人内容的模型,该模型能够识别出含有裸体和半裸体的图片和视频。这里面用到的也是卷积神经网络。
除了预测认为,在控制任务中,我们希望尽可能地刻画清楚X与Y的关系。
在这里,预测结果固然重要,但是我们也十分关心模型的形式具体是怎么样,或者借助统计挖掘模型帮助我们生成了怎样的判别规则。
例如在银行业,我们希望通过客户的个人信用信息来评价个人的借贷风险,这就要求我们不但能够回答这个客户的风险是高是低,还要求我们回答哪些因素对客户风险高低有直接作用,每个因素的影响程度有多大。
咱们再回到刚刚的电信客户流失分析中。在模型的选择上,我们一般可以从业务思路,模型准确性以及应用方式考虑。
1、业务思路:针对客户流失例子一个直观的想法:因为我们的目标变量是否流失属于分类字段,因此我们可以通过分类算法把流失客户以及留存客户进行划分;进一步地,我们还希望了解客户的流失特征或者流失路径,我们也就选择了分类算法中的决策树C5.0进行建模。
当然,咱们也可以尝试通过聚类算法将整体客户群组进行市场细分(例如k-means),尝试能否得出具有高流失可能性的群组,不过该方法一般我们都用作补充研究。
2、模型准确性:针对同样的问题甚至同类型的场景,现在往往有多种算法都能够实现。具体到不同的应用场景,不同模型结果的准确性往往存在较大差异,因此我们应该结合数据特征,算法优势,针对性地选择合适的建模技术,一个数据挖掘项目往往需要通过多次尝试,才能选择出适合的算法;
例如有人喜欢SVM,因为有着稳定的准确率,而且也有着优美的公式。有人喜欢Logistic,因为它的关系的刻画特别的清楚;有人喜欢决策树,模型能够非常简洁,容易解释并且往往准确率也不错;
3、应用方式:正如前文所说,数据挖掘任务一般分为预测任务和控制任务。在有的时候,我们可能希望用神经网络模型,尽管它更像一个黑盒子,预测结构难以解释,但是预测效果一般比较精确;而在有的时候,我们可能希望使用决策树模型,因为它它以规则的方式来展现结果,非常易于分析人员进行解读。
好了,接下来就解释,为什么刚刚说分清咱们的任务是预测还是控制这么重要。在我们帮助一些企业做项目的时候,尽管他们会强调自己的想要做预测,但实际上他们对“可理解性“的要求是非常的高,这在一些非科技互联网类的企业中尤其明显。
他们希望深入理解关系式背后的业务逻辑,同时希望能够借助数据关系帮助他们进一步优化改善业务体系,例如在传统的信用风险评估当中,Logistic就应用得非常的广泛。
关于模型的具体介绍,考虑到时间有限,每个模型都可以说一整天,我觉得咱们可以以后互相交流讨论,这里我想和大家特别谈的一点是,模型不是死板的,它可以存在多种变体,例如我们在讨论流失分析的时候,就尝试使用聚类算法试图找出一个高流失的客户群。
这里我再举一个大家常见的非常简单的模型做一个举例,RFM模型相信大家都非常熟悉了,根据最近购买时间,购买频次以及购买金额,然后进行评分,一般来说,每个维度打分从1-5,最后根据这个评分我们就可以评价客户价值。
大家现在可以回忆一下RFM,想想RFM可以做什么。刚刚我们说我们RFM可以研究客户价值,但是在实际应用中可以是千差万别的。
首先对于不同的企业来说,他们的顾客购买行为是可以差异非常大的(例如卖食品的,卖鞋的,卖家电真的差很远),那么我们对于RFM模型的三个维度,我们的权重设置得一样合适吗?不合适,因此我们需要根据业务需要修改三个维度的权重;更进一步,RFM每个维度5个评级,一共可以由125种分类,分类数量是不是太多?咱们是不是可以结合聚类分析,尝试把125个子群体进行合并再打上标签会更好;打上标签后,为了演示直观,咱们是不是可以通过筛选更多的特征,然后用雷达图显示不同客户群体的特征会更加直观?
咱们还可以再进一步,咱们都说RFM应该评价顾客,那咱们是否可以用RFM评价商品价值?
完全可以!更进一步,可能F频率和M金额都比较好定义,但是对于定义最近购买时间对于商品来说就不合适了,大部分商品很可能一天会出售多次;那怎们办,那咱们就可以尝试以这个商品出现在每个小票的最后时间求平均作为代替。
所以我想说的是,在实际的数据挖掘项目当中,我们建立的模型绝不仅仅只是一个算法以及参数的调整,更加重要的是业务知识的结合和分析逻辑的构建。
再来讲一下模型评价:
嗯,好了,通过一系列的数据挖掘工作,在咱们的客户流失分析模型中,已经得到一个精确率较高并且有一定业务解释能力的决策树C5.0模型。但是我们还不能直接部署,我们还需要对其进行一定的评估。
一般来说从技术上,我们可以通过一系列的模型评估手段。
对于模型评估,我们可以采取一些常用的指标进行判读:
这个指标非常直观,就是直接描述模型的总体准确情况。但一般我们对于分类项目来说,我们其实更更加关注其中的某个特定类别,而不是整体准确率。回到例子电信例子本身,我们更加关心的是对于流失客户的预测是否正确,因此我们需要一个更加关注特定类别的指标。
正如上面所说,我们更加关心究竟我们对于客户流失的预测是怎样的,所以引入一个命中率,它主要反映了我们目标类别的预测准性。例如建模人员提供了一份100人的流失名单,那命中率研究的是,在这份名单中有多少客户是真正流失了的;
正如我们前面所说仅仅关注准确率很有可能产生一种模型很好的幻觉。模型查全率反映的是,在我们在所有的目标类别当中,我们实际找到了多少了。
举个例子,上面咱们提到了命中率,咱们提到分析人员提供了一份100人的流失名单,假如其中准确率也非常的高,有80人事真正的流失,命中率达到80%;但是假如我们的数据集里面最终是由1000人流失的话,那么我们就只是发现其中的8%。另外除了指标法,技术评估上,我们一般也会借助增益图和提升图,采用图形的方式也能更加直观评估结果。
其中,红色的线我们称之为基线,它总是一条45度角的直线,而蓝色的先我们称之为增益线,它代表模型预测结果的优劣。增益线下的面积越大,效果越好。
当然,除了上述的技术评估手段,在实际项目当中,我们还需要结合业务判断。例如在咱们的流失分析中,我们可以导出规则特征以及流失名单与业务人员进行分析探讨,验证模型可靠性;
另外,在此阶段,我们也应该重新回顾整个数据挖掘过程,确保中途没有出现技术偏差;
到了应用阶段:
先谈基本的问题:经过前面一系列的努力,我们已经得到一个经过初步验证认为有效的数据挖掘模型,我们要开始设计策略进行模型应用及预演,可能包括的手段会有:
1、生成客户流失名单,并结合市场细分以及业务经验,选择重点关注客户;
2、选择并识别当中的流失比例最高的规则以及高价值客户的流失规则,针对该规则设计针对性的改善措施以及营销措施;
3、根据分析结果以及挽留成本设计具体计划,并计算预期收益;
4、设计监测和模型维护计划,用于后续模型优化。千万不要忘记这一点。这是经常遗漏的一个步骤。
实际项目中,虽说咱们这是最后一步,但其实对于企业来说,只是完成了一半,而结果部署将是剩下来的另外一半。虽然说,咱们项目似乎差不多到尾声了,但是我想说对于企业来说,真的只是一半。
首先把最后的分析结果与业务人员(或其他主导部门)进行沟通并取得一致将是第一个难点,所以在前面模型选择那部分,很多时候咱们选择可解释性强模型的原因。
设身处地,你是一线的业务能手。有一天,有个数据分析人员(尽管你知道他学历很高)跟你说,你这样投广告是错的,应该是这样这样投,这是咱们分析过的。你是业务人员怎么想?而如果咱们选的还是一个黑盒子模型~,嗯,你懂的。
更进一步,取得一致后,怎么落实商业策略并监控是需要投入人力和财力成本的,所以往往一个好的分析项目也常常需要配套好的业务策略,实际上,很多项目往往会在这方面出现问题。
举个例子:例如某快消企业的分析部门通过研究测试,发现该公司旗下某个系列产品的定位存在一定的偏差,建议从研发和广告投入上需要重新定位,并且出了一份详细的调研及分析报告并附上建议。但是很多情况下,这些建议最终只会被业务部门采纳10%,甚至不到。
在实际当中,分析团队与业务部门保持良好的沟通和充分的信任,是非常非常重要的一件事情。
实际上,在真正的数据挖掘应用中,我们还会遇到很多的问题,例如数据不平衡,例如变量选择等等,由于时间的关系,这里不能一一而足。如果要我谈其中的核心,我会说的是,我们需要尽可能站在更高的角度,更有体系化的考虑问题。
这句话的详细解释是:我们需要有战略层面的眼光去考虑,假如我们研究顾客,那我们考虑的是360度的客户视图,我们希望洞察客户,希望实现以客户为中心的转型。与此同时落实到操作层面,需要考虑这些客户画像的分析主题(从客户获取,到客户营销响应,交叉营销,客户价值分析,生命周期管理,社交认知分析,客户流失分析等)的业务价值落脚点(业务应用方式和收益)和实现难度(数据难度和模型难度),做好长期战略规划的同时,兼顾小步快跑,快速迭代。
数据科学家要的是:业务知识+算法知识+编程技能。
关于数据科学的商业应用大概到这里,下面还有一个部分就是我的个人学习推荐。
主要是一些推荐材料,在理论知识方面。最主要的可能是统计学和概率论知识。
1、统计学/概率教学:
(1)课程:有个推荐是:可汗学院的统计学以及概率课程,我会评价的是,这些课程很粗暴直接。
(2)具体到一些参考书:
a.统计学(作者:William Mendenhall/Terry Sincich)
b.统计学(作者:贾俊平、何晓群、金勇进)
*第一本偏应用,第二本理论多点
较深的话,会有:
c.统计推断 (作者:William Mendenhall / Terry Sincich )——非常经典经典的统计学教材,借用介绍“从概率论的基础开始,通过例子与习题的旁征博引,引进了大量近代统计处理的新技术和一些国内同类教材中不常见而又广为使用的分布。其内容既包括工科概率入门、经典统计和现代统计的基础,又加进了不少近代统计中数据处理的实用方法和思想”。我会用“漂亮”来形容它。
2、统计学/概率论/机器学习需要一定的数学知识,其中比较重要的数矩阵部分。
(1)课程:大家还是可以看可汗学院的线性代数课程
(2)参考书:
a.线性代数(第四版) :比较经典的线性代数参考书了,很多学校的线代教材乃至于研究生入学考试很多人都会选用这本。这本书线性代数我个人是一半一半,我再想想可能会推荐另外一本。
3、在机器学习方面:
(1)课程:我推荐的是吴恩达的机器学习,大家可以上Coursera或者网易公开课上面观看,我是非常强烈的推荐这门课程。
另外我想谈一点,大家在看一种方法的时候要从机器学习和统计学两个方面去理解。例如我是统计学出身,我在看Andrew课程的时候,我就经常有恍然大悟的感觉。反过来,你是cs出身的,我希望你不要忽视统计学中的一些精华,举个例子,p值虽然被用烂了,但是远远未到不值得重视的地步。
(2)机器学习的书籍上:
a.数据挖掘导论:这本书优点是很全,缺点也是很全,但却难得一见的入门教材,有一定难度,但是对于我们构建自身的统计挖掘体系有很大帮助。体系很重要!
b.《统计学习方法》(作者:李航):这本书也是我的心头好
c.《机器学习》(作者:周志华)
4、工具上的话,比较常用的是就是SAS,SPSS,R以及Python了。大几年前,可能还是以SAS以及SPSS为主,但是自从 大数据 火了之后,基本上这几种工具在要求上都很常见了。但是今天没谈大工具的一个很大原因是,工具只是咱们把统计挖掘实现的过程,我个人更觉得哪种工具更符合自己的背景和使用习惯就选择哪种,不用过于纠结。例如SAS和SPSS作为传统的商业化工具,好处是商业化,所以稳定,所以性能相对不错并且市面上材料比较多并且成熟,当然坏处也是商业化,要掏钱;而R和Python好处是开源,生命力非常的强大,而且有很多新的方法/功能都能在其中找到,当然不好的地方就是支持相对差一点。更加具体来说,SPSS就是无论你是统计分析还是数据挖掘,基本都不需要编程,学习曲线非常的平缓(当然,你可以在SPSS上写R与Python,另外Modeler是支持对R脚本进行图形化封装的);SAS相对于SPSS就是更加灵活;R相对来说统计背景的人更喜欢使用,Python的话,CS背景的人更多使用。
Question and Answers:
问答:
Q:想咨询下促销因素应当如何记录,记录哪些字段比较有用?
A: 其实我觉得促销更应该把它考虑成一个体系更加好。我举一个例子,在零售行业当中,一种方式是,事先设定好折扣方式/程度,持续时间,覆盖渠道,人群要求等等,之后在每次要发起一次促销,只需要在系统中把上述内容组装并发布就可以了。促销信息的记录非常重要!
Q:如果在数据清洗的过程中是不是事先定一下规则之类的与客户商议什么的呢?是否完整地做数据清洗记录?
A: 一般项目团队再实际当中或者团队成员中咱们都可以理解会有一个相关的知识库,然后再数据理解阶段,咱们会基于调研等情况与客户进行沟通,进一步确认是数据的认知,一般这个时候会有一个基础的清洗规则。当然,常常我们会在实际的数据清洗过程还会发现更多的问题,这个时候还得与客户再确认等等。数据清洗的规则和记录一般都会记录下来,这是因为:
(1)这往往反映了一些问题:可能是业务流程上也可能是技术上的,这些问题探寻与解决的本身就是一个成果;
(2)数据清洗并不是一个一次性过程,简单来说,如果不做记录在后期我们如果发现更多问题可能会复原不了,另外我们通常需要把这些清洗过程最后需要统一规范化ETL,所以记录是非常必要的。
Q:老师,问一个问题,一个数据挖掘分析项目,从启动到业务落地,您一般花费多长时间?
A: 一般3个月到3年,3月是比较快的,3年不是指一个项目是指一个体系。从简单项目来说,是3个月-1年都有,正常是半年。
Q:我也是暨大统计,也是电信行业的,刚才请教的问题能否解答下?促销通常会对业务产生很大的影响,但在我们的传统数据里促销因素没有获得很好的记录。怎么才能把促销因子体现在挖掘的过程中?
A: 我会建议之后要记录这个字段。其实这事从实现难度真的不大,零售行业都很干了这件事情了。
作者简介:
张浩彬, IBM认知计算事业部工程师,负责大数据解决方案的分析工作,擅长企业大数据方案设计,数据建模和数据分析。曾任SPSS技术工程师,有丰富的数据分析商业应用项目经验。
☞点击进入 IBM 在数据观的企业栏目>>>
责任编辑:王培