# 客户流失预警分析
ABC是一家通信公司,主要经营移动话音、数据、IP电话、多媒体业务、宽带服务等业务,其签约用户超过3000万。因为种种原因,每月都有接近20万左右的用户不再使用其提供的服务(即离网)。通信行业的竞争越来越激烈,获取新用户的成本越来越高,如何挽留现有用户,成为通信公司维持用户数、保证收入的一个重要因素。
ABC公司想对可能离网的用户进行一些有针对性的挽留行动,比如一些用户关怀服务、一些优惠策略等,但是如何从3000万用户中找到离网倾向比较高的用户,对公司来讲非常困难。目前公司尝试每月随机获取一部分用户,对其进行关怀,但关怀成本很高,效果不佳。
ABC公司的需求比较明确,从现有客户中识别出离网倾向较高的客户,然后对这些客户进行有针对性的挽留活动。
我们从客户中筛选出目标客户,通常有两种方式:
第一种,给出一系列的明确规则,根据这些规则去获取符合条件的客户。如果我们能够确定满足某些条件的客户属于要离网的高危客户,我们直接根据条件过滤出这些客户来即可,比如:最近一个月内有过投诉记录,并且本月消费金额比上月低20%的中老年女性客户属于离网客户,我们就可以通过简单的查询语句把这些客户识别出来。显然,ABC公司的这个例子不属于这种情况,无法通过这种明确规则定义的方式实现;
第二种,没有明确规则,但是有很多和用户相关的数据,比如自然属性、社会属性、行为数据等,通过机器学习的方法,选取合适的算法,让算法从数据中总结规律,即所谓的“让数据说话”。即使用机器学习的方法,从已有数据集中发现一些有用的模式。本例中,从已有的历史数据中,可以搜集整理已经离网的用户的相关数据,通过分析这些数据,将用户分成两类,一类是离网的,一类是不会离网的。分类的结果中通常会返回一个离网概率,概率高的(比如大于50%),可以认为是高危用户,离网概率低的,认为是安全用户。本例适合使用这种方式,通过机器学习的算法从已有的大量数据中发现离网用户的特点,建立预测模型,去预测其他用户会不会离网。
机器学习的算法有很多种分类,本例中已经有部分离网用户的相关数据,即属于有监督学习,我们的目的是建立一个预测模型,对现有用户进行分类,需要选择一个合适的分类算法。分类算法种类也非常多,本例中我们选择随机森林RandomForest。(也可以尝试其他算法,综合比较一下效果)
具体的处理思路如下:
第一步,准备数据,搜集可以用来进行离网分析的用户数据,包括用户属性(profile)、通话记录(CDR)、数据业务(MMS)、短信业务(SMS)、掉话信息(KILL)、用户是否离网(SID)等,需要用到过去六个月的历史数据;
第二步,生成特征,将上述明细数据进行汇总,按照不同业务板块分成多个指标(通话记录、数据业务使用情况、短信业务、掉话次数等),结合用户的属性,作为用户的基本特征;然后基于基本特征,去扩展一些新的特征出来,比如slope(六个月的变化趋势)、nuc(六个月是否试用过该服务)、MDN和MDP(当前月份和过去六个月的变化、偏移);
第三步,特征选择,经过第二步,我们会得到大量的特征,需要对这些特征根据重要性进行筛选,选出其中对最终结果影响最大的top N个特征(本例中选择了top 50的特征);
第四步,准备建模数据,即根据第三部的特征选择的结果,准备建模用数据,数据集中主要包括了筛选出来的top 50的特征;
第五步,模型训练及评估,将建模用数据分成两个集合,比例为7:3,其中70%的记录用来训练randomforest模型,另外30%的数据用来测试该模型,通过模型参数调整,使结果达到可接受的水平,该模型即为最终训练出的模型;
第六步,模型应用,使用第五步中的模型,对新的数据集(需要整理成和模型训练的数据集的格式一致)进行预测,得到用户的离网概率,根据离网概率降序排列,取排在前面的用户,对他们进行挽留;