Thursday, February 21, 2008

fwd客户流失分析建模与实施方法

北京大学

计算机系数据库与信息系统研究室

副教授/博士

王腾蛟


首先谢谢乔总,谢谢计费网的各位朋友,各位来宾大家早上好,我是北大计算机系的王腾蛟,今天受乔总的安排,让我们先做一个开幕词,开幕词不敢说,首先我感到非常荣幸能够在今天与大家在一起交流中国电信业商业智能,尤其是客户流失管理技术服务的发展,我们很高兴看到主办单位里今天由国内主要的电信运营商、集成商、厂商,电信业知名的专家教授汇聚一堂,共同参加中国电信业商业智能大会。我本人认为这次大会和培训都是非常及时和重要的。因为当前客户流失管理为代表的电信业商业智能建设不论在技术上,还是在服务上都很关注,这主要体现在以下几个方面。我觉得第一个比较重要的方面是数据的驱动,我们搞数据仓库的人都知道数据仓库以数据驱动为目标。电信业的高速发展产生海量、珍贵的客户资源,以数据仓库分析挖掘为中心的商务智能的开发和应用为这项奠定基础,国内电信运营商经历数据整理和集成之后,基本完成BI系统初步建设,形成了具有相当规模的数据仓库,这为当前深层次的数据分析和挖掘提供更为重要的基础。这是我个人认为第一个数据驱动。

第二个重要驱动是需求驱动,应该说国内电信运营商比过去任何时候都更加迫切地需要以数据分析和挖掘为核心的更有效,更深入的BI系统建设,我本人在北大计算机系进行数据仓库和数据挖掘的教学,常有朋友问,数据挖掘哪本书最有影响,我想很多朋友可能会说比如美国UIUC韩家伟写的数据挖掘概念与技术,这个书我印象最深的打开第一页开篇就是需要是发明之母,这个给我的印象还是非常深刻的。我们都讲数据挖掘,其实这两个名词从他诞生的那天起,从纯技术角度来说,从技术角度来说,80年代初搞知识库就一直在从事这样相关的技术。但是一直没有形成有规模的应用和发展。那么很大程度上那时候纯技术角度还没有应用的驱动。尤其从90年代末开始,正是由于数据技术的应用驱动,因为数据挖掘、数据分析这种概念相继得到发展。那么,我觉得当前电信运营企业的竞争主要集中到了提高服务质量上面,电信运营商迫切需要通过挖掘和分析提高服务质量,针对这种业务需求,很好带动电信业商业智能产业的发展,这是我想谈的第二点关于需求需要。
第三是技术驱动,在座各位朋友对已有的事物型应用是不同的,以客户流失管理为代表的商务智能系统建设,在技术上有很多挑战性。当前我们厂商给我们提供了许多分析和挖掘工具构建分析模型,但是如何更加有效的应用这些工具,深入地分析海量的多维的动态变化,构建面向更深层次,尤其满足业务需求的应用,还面临很多技术挑战,不断分析和解决这类挑战,正是当前各类企业和技术人员从促进关心电信业、商务智能发展的一个重要原因。所以我将当前以客户流失管理为代表的电信业商务智能建设,无论是技术上,还是服务上都得到广泛关注的归结为几点,数据驱动、需求驱动、技术驱动几点,本次大会包括培训的举办,对电信业商业智能的技术人员、管理人员、服务人员搭建一个很好的平台。此次大会的主题我看是全方位提升系统应用,我觉得也深刻反映当前电信业的总趋势。希望在大家努力下,这次会议会达到预期的目标,为我们国家电信业商业智能建设做出贡献,最后衷心祝愿中国电信业商业智能不断完善,预祝大会取得圆满成功。谢谢大家。
根据会议的安排让我做第一个报告,我看到今天的日程请到许多知名的专家做报告,我发言时间做一个抛砖引玉。我的报告题目是客户流失分析建模与实施方法,做这样一个题目,我有两点想法,第一个想法我们都说客户流失管理,我们认为这种商业智能系统比较核心的问题如何准确地建模,我们觉得建模成为整个系统的核心,我在报告当中涉及到一些建模的方法。另外前一段时间,这几年来,北京大学与很多厂商运营商包括中国移动、亚信等企业进行过一些合作,我们也把自己一点点切身体会和实施方法做一点点报告,欢迎大家跟我们做一些技术交流,这是我今天报告的题目。

主要内容包括这样几个方面,一个是客户流失分析的概述,在关于建模的实施方面,我将着重报告关于定义业务问题,数据预处理,还有应用算法建立挖掘模型,模型评估,模型解释和应用,这样几个方面,最后简单讨论系统建设当中遇到的若干问题,与大家共同讨论。

首先报告客户流失分析概述,我们都知道客户流失分析它的基本概念大致的描述就是对业务部门关心的目标客户群的数据进行分析和挖掘,帮助其掌握可能流失客户的特征,并制定相应的挽留策略。我们觉得正在大规模实施这种以客户流失分析管理为代表的这种商业智能的基础是三个,一个是数据基础,现在各个电信运营商构建的数据仓库系统为客户流失分析奠定了重要的数据基础。第二是技术基础,可以用相对成熟的数据挖掘工具构建客户流失分析模型,说相对成熟,这个技术也在不断发展之中。从我们高校的角度来看,这些年来很多新的技术,像遗传这种算法都出现的不是很久。但是出现很短的时间内应用到我们技术当中,这个技术是在蓬勃发展过程中。第三应用基础,各个电信运营商市场部门和业务部门都需要流失分析系统提供他的挖掘结果制定相应的挽留策略和营销计划,我们认为这是客户流失分析的三个基础。

第二个客户流失分析的建模与实施问题。我这儿做了一个简单的图,把客户流失分析建设做了简单的描述,我们认为大致有这样几个方面,首先要比较准确地定义我们的业务问题,第二是数据的预处理,这往往也是容易被人们忽视,但是发挥了重要作用的一个环节,核心是建立挖掘模型,有了挖掘模型再进行模型评估,最后是模型的解释和应用以及特征分析与对策。定义业务问题我想和很多业务系统是类似的,需要了解业务部门需求,确定预测目标的数据定义,我们要预测这个目标,怎么样从数据上做一个定义,确认拥有与解决问题相关的数据,在这些基础上制定工作目标,这是定义业务问题需要完成的工作。数据预处理,包括数据抽样,数据评估,数据清洗和衍生,还有数据划分,这个在我过去看来是数据挖掘系统建设教科书上出现的问题,但是通过这些年来,我看各个省的建设当中,这些工作都发挥了重要的作用。建立挖掘模型是核心,根据应用需求选择有效的算法和工具,包括决策树、神经网、回归,进行模型的训练和校验。有了挖掘模型,我们可以结合业务部门进行模型评估,得出一个最佳模型。有了这个模型之后,我们可以通过模型为每个客户打分,得出其未来的流失概率,根据该客户的实际情况,考核挖掘模型。特征分析与对策,概括不同级别的流失客户的特征,或针对不同客户群体分析其流失的特征,结合业务部门分析对不同特征或不同群体的流失挽留方案,最后一个环节也是很重要的。比如流失名单出来一万个的,我们不可能针对一万个客户进行一万个挽留策略,有了这种决策怎么办?特征分析和对策是一个手段,我们不可能拿一种挽留方案针对一万个客户,给我们一种技术手段,我们可以针对这个特征给客户分群,大概有七八种群,我们可以制定七八种挽留策略。有一个大箭头,我认为这是客户流失分析这类系统比较有特色的,一般都采用圆形法开发,是不断滚动的过程。这是简单的概括一下客户流失分析的建模与实施的流程。

首先看看定义问题。首先我们需要了解业务部门的需求,我举了一些例子,比如我们希望能够预测什么样的流失客户,比如说主动流失还是被动流失,是内部流转还是流失到其它运营商,是否不关心入网近三个月的流失客户,是否更关心签约客户和大客户的流失等等,我们需要把这些问题准确定义下来,还有对这些客户的业务部门还关心什么,主要是属性,比如转移到哪儿,投诉数量,地理位置,包括目前挽留可能流失客户的手段都有什么,主观上对客户流失的概括有什么,等等,我们需要有业务部门进行很好的沟通,确定好这些需求。

确定好需求之后,我们需要进行准确的定义。定义预测目标的数据,比如我们要确定目标状态是转为预拆机,目标两个月连续0通话,欠费停机,这个不同的说法会对我们的模型产生不同的对策。然后确认是否解决问题相关数据,客户资料、客服资料,目标客户近3到6个月CDR和汇总信息。第三预测一下企业当中将来使用挖掘结果的情况,包括是直接输出离网名单,还是将离网客户进行分组,或者先对客户进行分组,每组建立不同的离网模型等等。看看是需要整体的命中率高,还是对比如前5%的预测离网的客户命中率高,采取何种的挽留手段等等,这几个方面都需要准确的定义才能对我们将来训练模型有一个准确的描述,那是关于业务问题的定义。

有了以上这些工作,我们就需要制定一个工作目标和范围,大致与业务部门商讨确定大致的工作范围,制定目标和计划,比如说我们计划在这个基础当中可以构建流失分析模型,第二步流失分析的应用,产生模型,预测目标客户的流失概率,比如说每一个入网三年以上的大客户,两个月后可能主动流失的概率,可以为每个数据库中的客户打分。第二个是特征分析,描述不同等级流失概率客户的特征,包括消费性的特征,社会属性的特征等等。最后一步制定挽留策略,结合客户分群,对不同特征的客户采取哪些手段防止流失,需要制定比较完整的工作计划和范围。

制定好工作计划之后,我们对数据还是要进行认真的分析,具体从事过这种流失模型建设的朋友可能都有这样的体会,选取不同的数据,甚至对一个数据集合如何进行划分,往往都会对分析的准确率产生重大的影响。我们举一个简单例子,既然要做分析,要训练模型,肯定要选取数据训练集,数据集的时间窗怎么划分,就直接影响系统的各个方面。比如说数据窗口延迟窗口、预测窗口,我们都知道数据窗口越长,按说更能够反映过程的特点,从模型训练角度来说可能更准确。这个也不是绝对的,这个时间代价往往是相当高的,像我们现在很多工具,比如说用的神经网络,他的收敛性负载性比较高,过长的时间范围的数据这个代价也是很高的,这是一个矛盾。延迟窗口也是这样,为什么有延迟窗口?我们不希望现在九月就预测九月,我们希望预测十一月、十二月,中间给我一段时间让我做这些工作。显然延迟窗口越长对我做工作越充分,但是这个跨度越大,对于现有的技术来说,这个时间每拉大一点,准确率应该降不少的范围。所以这也是一个矛盾。数据窗口、延迟窗口大小,往往在各个方面都需要我们做一个折中,选取比较好的点做我们的目标,这是关于时间窗口的问题。

一个简单的例子,比如我们要确定需要解决的一些问题,比如说预测可控的流失客户,目标两个月连续0通话,我们确定要解决的问题,然后确认与解决问题相关的数据,包括客户资料,CDR等等,预测在企业中使用的挖掘结果,客户离网概率,反馈到数据仓库,这是我们要在第一步需要做的一些确定性的工作。定义业务问题。

第二是数据预处理,这个我们在建设当中发现这是非常重要的环节,数据预处理,往往第一步我们都遇到数据抽样,数据抽样往往有这么几个方面,一个是随机抽样,还有分层抽样,还有整群抽样等等,随机抽样往往来说,就是有一定的科学性,它的概率按说比较好的,这样模型的训练和数据测试集不会太大。但是往往他造成的准确性很低,因为在我们面临这个问题当中,随机抽样往往不是很深刻,比如客户流失,他在这个数据当中的比例是很小很小的,比如一万个客户有一百个可能流失,这个概率因为比例很小,所以抽样当中数据更小。如此小的数据去训练一个模型,往往这样的模型不好用。因此大家在逐渐想其它办法,比如分层抽样,客户流失过少会造成模型准确度下降,把样本放大,比如一比一,一比三,这样使得我们的训练数据当中流失的可取比例比较大,这样才能对训练友邦住。再者整群抽样这种方法,也看到有朋友在用这种方法实施,拿到数据先对这些数据进行一次挖掘,进行聚类,事先不定义各种类的标签,让工具来分析他应该划分为多少类,然后对每类的数据分别进行抽样,应该说也是一个比较好的放大。这是关于数据抽样。抽样应该说主要还是凭借于人的思考,人对数据的理解,因此能够达到一个效果,但是不能保证整体上这个数据是合格的,因此还有后续的不少手段,比如数据评估,这个也有很多办法,最常见的可视化技术,反复的多维分析这些数据是不是可行,比如看缺失值,不正常的变量分布,数据异常点,这些细致的需要耐心的工作,是会对模型产生重要影响的。所以这个应该引起我们的重视。比如说缺失值,往往会对模型产生重要的影响,遇到缺失值也是很棘手的问题,第一点考虑,如果我不用他可不可以,如果觉得确实用他,那就需要用办法,比如第一个我们都搞数据质量,能不能把数据补充好,如果确实补充不好,现在也有一些办法。比如最老的,最简单的办法,比如对这个属性的签约值充上,如果这个真对分析产生影响的属性,这样做就得不偿失了。现在也有一些办法,比如在这一步先拿一个工具预测一下,预测的值填充到这个缺失值当中。再一个不正常变量分布,这个往往在数据抽样的时候看不出来,我举一个极端例子,比如在数据评估过程中发现这些客户的年龄都是50岁以上的,当然我说的很简单,但是这种情况就说明如果这些数据是这样,说明这批数据就存在着变量分布不均的情况,这个可能重要的特征就丢失掉了。反过来从训练模型的角度,可能这个模型就学会了,这种特性学习出来了,所以像不正常的变量分布,数据异常点等等,这些都是数据评估的重要方面。

另外一个技术,相关性分析,包括统计的手段,包括业务知识和常识。我们老说这种系统建设需要技术人员、业务人员很好地配合才能完成。业务在建模当中非常重要,比如漫游多的用户长途比较多,我说的例子不一定准确,表达的意思,比如套餐捆绑,这样的业务是谁告诉我们的,这些变量可能存在相关性,如果业务人员告诉我们这两个是相关的,一般相关的不放在团组数据,高相关的,不必马上删除,我们可以参到不同的组当中,一般不建议在同一组当中使用。这是关于数据评估。评估好了之后,对数据还有一些清洗和衍生的问题,这是很好的技巧。比如说清洗很重要的目标就是要去掉噪声,第一要分析什么样的数据是噪声,第二比如去噪声现在有很多好的办法,比如平滑技术等等,现在都提供了这个工具,怎么把它用好。这些像噪声这个问题,对不同的模型可能影响是有差别的,也许决策树就影响不大,也许就影响很大。所以,这个我们要有一个很好的评估,有了这个清洗,下边就有衍生,这个技术很重要,原来的数据集当中并没有这些变量,现在为了很好地训练出这个模型,我们要根据我们的经验给他衍生出一个数据。比如选择,高相关性的变量尽量不要分到同组,衍生比如利用业务知识和统计方法产生新的变量,比如最后一个月通话费与近三个月平均话费的比值,描述意思这种比值过去是没有的,这是我们技术人员训练模型之前造出来的,为什么造这个?是根据经验或者直觉判断这个变量可能对我们的训练有帮助,比如近六个月平均国内漫游次数,每个月的交往圈,这个可能原来没有的变量,我们衍生出来的。再一个在保证模型精确度的情况下,尽量减少输入模型的变量数,还要减少,这是矛盾。有时候要自己来制造,但是总体还要尽可能控制。第一他有利于模型的解释,比如说你出来一个决策树是几百个节点,几百个有时候不太多,但是对业务人员他很难解释这个模型。第二个对挖掘模型新数据的引入新信息的概率和引入噪声的概率是相同的。所以这个是要慎重的,清洗和衍生。

第二个变量的转换,比如数据概化,我们说对一个大的数据集合从低的层次抽向高的层次,比如以时间、地区、品牌不同的层次进行汇总,还有规范化,我们把某一个变量规范到零和一之间,还有离散化,这些我们遇到变量转换的工作。有了前面这些工作,就进入了数据划分的阶段,这个根据不同的模型可能有些变化,比如有的有三类,有的有两类,最简单的情况,训练数据占50%用于产生模型的数据,测试数据用于检验模型的效果数据,一般也可以占50%,可以根据抽样方法进行调整,这些都不是绝对的。往往还有三个部分的划分,还有就是预测的数据,预测的数据进行少量进行系统测试的数据,来自于数据集市或数据仓库当中,用来预测将来发生的情况,这是数据划分部分。

以上我们简单讨论一下数据预处理的过程,接下来我们看看建立数据挖掘的模型。有很多,时间关系讨论两个最常见的,比如决策树,我们现在都说,很多省公司都是用决策树产生比较有效的流失模型,他的基本思想就是根据现有的已知结果建立一个树形模型,用于预测未来未知的结果,用途就是提取分类规则,进行分类预测,这个就是大的训练集,用清洗抽样处理过的训练集,用他作为输入,通过决策树分类算法产生输出,产生决策树的模型,大致的过程是这样。

算法输入,我也仅仅举一个简单的例子,比如输入经过数据预处理之后的训练数据,比如说用户选用的品牌,是否欠费停机了,最后一个月通话费与个月的平均话费比值,最后一个月的交往圈,近三个月平均实缴费,我们把这样的数据作为模型训练的变量。输入可以通过一个简单的系统界面作为对模型的输入。然后系统开始进行训练,得到一个训练吃来的模型,这个时间依据数据规模的大小和复杂程度是有不少差别的,往往系统会给你产生这样一个树形的决策树。

通过这个决策树可以直接得到客户流失的决策模型,他的特点是一个树形的结果,内部节点选用一个属性进行分割,每个分杈都是分割的一个部分,叶子节点表示他的分布,这是特点。使用一般是给决策提供分类规则和进行分类预测等等。决策树的算法不再具体说了,最简单是基本算法,现在一个序列产生上百个不同决策树的上百个算法,我看到后面的报告当中,有专家对这个做细致的讨论。

我们技术人员需要了解他一些特点,不必详细了解他的算法,但是要知道他的特征,比如他容易生成可以理解的规则,而且计算量相对不是很大,尤其擅长处理离散的字段,但是这个也是一个弊端,对非离散的字段处理比较麻烦,缺点比如我刚才说的,对连续性的字段需要进行预处理和算法内部的处理,类别比较多的时候,错误的可能性会加大,这个和其它一些模型略有差别,一般情况下对标签属性的个数有较大的限制,这是决策树的特点。

接下来说说人工神经网络,在我们工作的过程当中发现,了解这些原理的基本方法还是有一些作用的。很多年前我记得是在电信做数据仓库之前,我们国内金融就有数据仓库,当时有一些产品的选型放在北大来做,我们很长一段时间组织人对产品进行测试评估,我们发现一个情况,现在的系统越来越复杂,那么简单的,比如说对一个具体的数据进行研究默认的情况,就得到一个效率。然后对于一个很精通的人来说,经过测试也得到一个效率,这两种效率在我们的测试报告里面很多次发现差别是有数量极大的差别,这个并不是说系统做的不好,不好用,那么我觉得这种数字就像相机一样,傻瓜相机也是越做越好,但是终究在质量上与专业相机是有差别的。现在并不是要求我们每个人都非成专业的摄像师,但是了解一些工具的基本原理对我们还是有比较大的作用,因为这个应用性还是有各种不同,这个滚动和动态是不同的,选取什么样的技术,对于我们业务人员,对于我们技术人员来说,会有很大的帮助。

我们看人工神经网络,也多少分析他的特点和情况。他输入输出和刚才差不多,输入也是训练集,经过神经网络算法,会输出神经网络的模型,也用于分类预测。算法输入可以是近似的,但是与决策树明显的差别在于他可以直接处理连续值,这往往是神经网络的一个挺重要的特色,这个和刚才都类似,我们可以做一个输入的训练来选取相应的属性。输出给你出来这样一个模型,他认为特点是网状结构,内部连接有各自的权重,输出层的结点通过激励函数给出连续值和离散值,这个有一个重要特点,内部结构不可解释,这也是神经网络发展一直当中遇到的一个问题。决策树我们出来了,我们是可以解释解释的,他这样这样,最后可能离网了。但是对于这个神经网络来说,对不起,这个很难解释,为什么出现这样的模型,他不好解释。就是根据你输入的数据特征,再根据神经网络自身的特征然后训练出这样一个模型来,就是告诉你结果,但是对内部结构往往是没有什么妄图,也没有科学的手段来解释的。

这是人工神经元的结构,我刚才也看到后面还有专家会具体介绍,我在这儿不再耽误大家时间了。这是神经元系统的工作原理,系统还是模拟人脑来做的。所以人工神经网络原理通常在他能够争取的工作之前必须训练,那么这个网络一直不断地调整,你在训练他,其实就是动态的调整过程当中,不断地调整,直到所有的输入的训练数据都得到正确的输出,训练就结束了。但是如果当遇到新问题的时候,特征发生变化的时候,还需要再训练。那么作为我们使用人员来讲,应该要注重这个过渡训练或者训练不足的问题,训练不足是这个模型没有学好,过渡训练就是把他给学坏了,因为这个神经网络有这种特征,他们具有这种非记忆性,很多训练系统有记忆性。他前面有规律,再加入新的数据,他前面的不丢失。但是神经网络有这个缺点,这批数据跟前面的完全不同,他前面的数据就忘了。对这个东西准确率往往比较高,但是如何选取数据进行训练,这是比较重要的环节。

这个模型比较易行,而且善于处理大量参数的问题,这个和决策树相辅相成,他比较擅长处理大量参数问题,而且可以直接处理连续值,可以进行并行计算,直接输出预测概率等等。缺点是收敛的速度比较慢,所以这个数据量的规模和数据特征对他的影响比较大,容易形成局部的极值,抗噪声能力比较差。这些通过掌握工具的特点在我们数据处理集的基础上出来了,挖掘模型。

下面很重要的环节是关于模型评估,输入与训练数据同样格式的数据,利用已知的结果评估模型,我看很多省的朋友有很多评估的办法,比如说一月到六月训练七月,然后二月七月训练八月,这样反复评估已有的模型,都是很好的办法。而且需要结合业务部门的意见进行模型评估,得出最佳的模型来。这个图简单说明评估他的整个过程。数据准备、训练模型、测试模型、模型评估,评估往往影响到数据准备这部分。

下面最后说说模型解释和应用,业务人员做出合理的解释,把模型应用于生产,采取相应的挽留策略进行效果分析,收益分析,项目进行反馈调整,模型监控等等。

最后一个问题,简单谈谈系统建设的若干问题,我整理这么几条,可能很多朋友比我还有更多的经验,比如对要解决的业务问题有清晰的认识,第二对业务环境的理解,首先从主观和经验上捕捉最有效的客户属性和特征,排除无关因素。对要解决的业务问题有足够数量和质量的数据支持,根据具体的业务问题和效果选择合适的数据和算法。最后是说模型随时间衰减的问题,这个很多部门可能已经遇到了,我前边花了很大气力训练出来的模型,过了半天可能就不适用了,因为不同的产品推出,行为的变化,都导致这个模型衰减,因此需要反复地调整和优化。以上就我的了解和经验简单向大家做了一个报告,不当之处欢迎各位朋友指出,谢谢大家

1 Comments:

Anonymous Anonymous said...

http://www.google.com/coop/cse?cx=006422944775554126616%3Aixcd3tdxkke

This is a search engine all about Data Mining and Knowledge Discovery, including related International Conferences, Journals, Companies, Blogs, People, Research Institutes, softwares, products, courses, tutorials, papers, codes and etc..

February 22, 2008 at 8:25 PM  

Post a Comment

<< Home