一、项目描述
APP或者商家在发展新用户时通常是通过构建产品的病毒性传播系数, 使产品更具吸引性。以通信行业为例,发展新用户的方式通常有:
- 人工病毒性:通过人工干预(推出一些家庭或者朋友套餐),鼓励旧客户邀请他人成为新客户;
- 口碑病毒性:不断完善自己的产品以获得良好口碑,通过广告投放等进行推广,使客户主动来办理业务称为新客户;
可见,发展一个新客户是需要一定成本的,一旦客户流失,将会对商家造成损失,所以对客户流失的预测显得尤为重要。预测客户流失的作用有:
- 预测哪些客户有可能称为流失客户,在他流失之前使用触达策略挽留客户;
- 分析客户流失的原因,寻找先行指标来提升留存率,完善产品
- 对于已经流失的客户,改变产品运营策略拉回客户,促进回流。
本项目通过对客户流失数据(数据来源:https://www.ibm.com/communities/analytics/watson-analytics-blog/guide-to-sample-datasets/ )进行清洗、构建数据挖掘模型,来解决以下问题:
- 1.哪些变量对客户流失的影响比较大;
- 2.如何预防客户流失;
- 3.使用自动分类器寻找准确率高的模型;
二、数据清洗
可以看到数据共21个字段,Churn为目标字段,customerID为无输入字段,其余字段包含了客户基本信息(年龄、性别等)和消费相关数据(月消费、年消费、支付方式等),以及套餐情况(电话服务、网络服务的等)。
将数据导入IBM SPSS Modeler,添加数据审核节点,可以看到TotalCharges存在11个缺失值,考虑到样本规模较大,因此将缺失的记录删除。
三、C5.0决策树
3.1 简单模式
C5.0决策树分类原理主要是利用资讯衡量标准 (Information Measure) 来构建决策树,并对每一个节点产生不同数目的分支来分割数据,直到数据无法分割为止。C5.0 决策树只适用于分类类型的目标字段,对输入字段没有要求。
由于数据的目标字段Churn是分类字段,因此可以直接做C5.0决策树分析。
这里我们添加分区节点,将原始数据分为70%训练集和30%样本集,来更好的评价模型。
分析:可以看到在简单模式下(没有人为规定每个每个子分枝的最小记录数)生成了一个9层的决策树。
- 影响最大的变量为合约方式,按月签约的客户流失率达到42.38%,而按一年或者两年签约的客户流失率只有6.171%。
- 然后是网络服务,可以看到,使用用DSL(数字用户线)和Fiber Optic(光纤)的客户人比较多,流失率也比较大,可能是因为这两项服务收费比较高,效果又没有满足客户的期望;虽然不使用网络服务的客户流失率较低,但是因为样本数较少,因此不能得出高科技会使流失率变大的结论
- 使用DSL的客户又根据总消费是否大于309.400被分为两部分,总消费比较多的客户流失率较小。
- 使用Fiber Optic的客户根据使用时间是否大于14个月被分为两部分,使用时间较短的客户明显流失率更高。
- 其他比较重要的变量,可以在没有显示完全的决策树中看到,但是没有太大的作用,不能得出很明显的结论,所以在下一步考虑使用专家模式修剪决策树。
模型评估:在模型后面添加了分析节点,来查看模型的正确率,由于前面已经把数据分为70%训练集和30%样本集,所以我选择了按分区分隔。从Churn分布图中可以看到在7032个样本里,本身没有流失的客户就占到73.4%,比例较大。所以只看总的正确率没有太大意义,能准确的预测出churn='Yes'的客户才是模型构建的目标。
- 训练集:对于churn='No'的客户,预测正确率为90.4%;对于churn='Yes'的客户,预测正确率为57.7%
- 验证集:对于churn='No'的客户,预测正确率为87.8%;对于churn='Yes'的客户,预测正确率为52.3%
我画出了预测结果的ROC图,可以看到验证集的准确率低于训练集,这倒是正常,但是验证集的准确率也不尽人意,对于churn='Yes'的客户,预测准确率只有57.7%。
3.2 专家模式
由于简单模式的准确率不尽人意,所以我考虑通过专家模式来修剪决策树,探究是否能够提升模型的准确率。首先我将每个子分支的最小记录数设置为100,运行后得到一个6层的决策树,得到的结论和简单模式时差不多。
模型评估:
- 训练集:对于churn='No'的客户,预测正确率为87.4%;对于churn='Yes'的客户,预测正确率为60.8%
- 验证集:对于churn='No'的客户,预测正确率为84.6%;对于churn='Yes'的客户,预测正确率为57.9%
可以看到专家模式与简单模式相比,对于churn='No'的客户,准确率稍微有些下降;但是对于churn='Yes'的客户,准确率稍微有所提高。
3.3 使用错误分类成本
在前面的分析中,无论是简单模式还是专家模式,对于churn='Yes'的客户,预测准确率都不高,因此考虑使用错误分类成本。在实际操作中,对于一个将要流失的客户,如果错误分类,假设会带来50元的损失(长期损失会更多);对于一个不会流失的客户,如果错误分类,假设会带来5元的损失(人工客服致电成本)。
在专家模式下,生成一个三层决策树。
模型评估:
- 训练集:对于churn='No'的客户,预测正确率为41.2%;对于churn='Yes'的客户,预测正确率为98%
- 验证集:对于churn='No'的客户,预测正确率为40.0%;对于churn='Yes'的客户,预测正确率为97.0%
可以看到使用错误分类成本后,对于churn='Yes'的客户,准确率大幅度提高,接近100%;而对于churn='No'的客户,准确率也下降了将近一半。这是因为我们设置的将要一个流失的客户的错误分类成本,比一个不会流失的客户的错误分类的成本大很多
3.4 结论
3.4.1影响流失率的因素
- 1.合约方式对客户是否会流失起着至关重要的作用,这也是当代通信行业通过一些优惠活动促进客户办理长年限合约,比如预存两年话费之后按月返还,或者与宽带绑定。
- 2.网络服务也是很重要的因素,通过分析发现,使用DSL(数字用户线)和Fiber Optic(光纤)的客户人比较多,流失率也比较大。这是因为这两项网络服务的价格昂贵,再加上各大通信运营商竞争激烈,如果客户花钱使用了网络服务,但是使用体验不佳,或者在出现使用问题时不能得到技术支持及时的帮助,又或者其他通信运营商有更优惠的套餐,那客户便会流失。
- 3.使用时间这个因素应该和客户年龄放在一起考虑,本项目使用的数据中关于年龄的字段为‘是否为老年人’,是一个名义类型的字段。在日常生活中,老年人或者中年人对换号码都比较排斥,尤其是工作比较繁忙的客户,因为换号码需要通知通讯录好友,很浪费时间。因此老年人或者中年人的流失率相对较低。而年轻人喜欢体验新鲜,不存在种种顾虑,流失率相对较高,往往哪家通信运营商比较优惠,或者服务更新颖,就选择哪一家的服务。因此要想降低流失率,就需要“抓住年轻人的心”。
3.4.2预测到客户会流失之后应该怎么做
- 1.通过模型预测到某客户将成为流失客户的概率较高时,可以通过人工客服致电这位客户,使用触达策略挽留。
- 2.基于3.4.1给出的影响因素改善产品,从根源上降低流失率。另外,流失用户需要到服务台进行销户,这时可以采用有奖填写问卷调查的方式,了解客户流失的原因。
四、自动分类器
前面使用的C5.0决策树预测准确率不尽人意,因此我使用自动分类器寻找准确率较高的模型。在分区节点后添加自动分类器建模,显得准确率较高的七个模型,按总体精确性降序排列。
4.1 Logistic回归
双击自动分类器结果中的Logistic回归模型,可以看到自动分类器使用的是多项式模型,而数据中的Churn字段只分成两类,所以我自己又做了二项式Logistic回归分析。因为出现了多个“字符串字节过长”报错,因此有些字节需要重新分类。
添加重新分类节点将比较长的字符串改成缩写。
输出结果:
建模时,选择 Logistic回归的二项模型,方法为向前步进法。运行后得到如下结果:
Logistic回归没有将所有自变量都纳入模型,最后输入模型的是这八个字段,可以看到最重要的变量是使用时间,其次是合约方式,然后是网络服务,这三个最为重要的变量和之前的分析结果一致。
从个案处理摘要中可以看到有4901个案例被用于训练模型。
从因变量取值水平编码中可以看到churn='Yes'被编码为1。
第一个分类表格是空模型的观测值和预测值对比,由于空模型会将所有值都预测为0(churn='No'),所以对于流失客户都预测错误,总体精确性为73.9%。
第二个分类表格可以看到模型在构建过程中每纳入一个自变量,准确率的变化。可以看到,随着自变量不断的被纳入模型,churn='No'的准确率虽然稍微有所下降,从100%下降到92%;但是churn='Yes'的准确率从0提高到了56%。
模型评估:
添加分区节点查看模型对验证集的预测准确率。
- 训练集:对于churn='No'的客户,预测正确率为90.0%;对于churn='Yes'的客户,预测正确率为56.0%
- 验证集:对于churn='No'的客户,预测正确率为86.7%;对于churn='Yes'的客户,预测正确率为53.9%
4.2 类神经网络
类神经网络(ANN)有稳定性强的优点,也存在训练过度、结果可读性差等问题。双击自动分类器结果中的类神经网络模型,可以看到模型的基本信息。
模型评估:
添加分区节点查看模型对验证集的预测准确率。
- 训练集:对于churn='No'的客户,预测正确率为90.1%;对于churn='Yes'的客户,预测正确率为55.9%
- 验证集:对于churn='No'的客户,预测正确率为87.5%;对于churn='Yes'的客户,预测正确率为53.7%
五、结论
- 本次项目基于已有的客户流失模型,在第三章中构建了C5.0决策树模型,探讨了简单模式和专家模式的区别,试图通过使用错误分类成本提高churn='Yes'的预测正确率。解决了哪些变量对客户流失的影响比较大、如何预防客户流失、预测到客户会流失之后应该怎么做的等问题
- 在第四章使用了自动分类器,寻找准确率比较高的模型,并分别探讨了Logistic回归模型和类神经网络模型,发现这两种模型与C5.0决策树模型相比,差异不大,对于churn='Yes'的客户,预测正确率皆在50%到60%之间。
- 虽然没有找到满意的预测客户流失的模型,但我在此次项目中对各种分类方法有了更深刻的认识。