前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个完整的数据分析案例 | 用Python建立客户流失预测模型(含源数据+代码)

一个完整的数据分析案例 | 用Python建立客户流失预测模型(含源数据+代码)

作者头像
Crossin先生
发布2020-06-28 16:50:28
4.6K0
发布2020-06-28 16:50:28
举报

来源:数据分析不是个事儿

作者:启方

原文:

https://mp.weixin.qq.com/s/_20MN6V6aV1T3Ekd7C9neQ

客户流失是所有与消费者挂钩行业都会关注的点。因为发展一个新客户是需要一定成本的,一旦客户流失,成本浪费不说,挽回一个客户的成本更大。

今天分享一个用户流失预测,以电信行业为例。

所以,电信行业在竞争日益激烈当下,如何挽留更多用户成为一项关键业务指标。为了更好运营用户,这就要求要了解流失用户的特征,分析流失原因,预测用户流失,确定挽留目标用户并制定有效方案。

一、提出问题

1、哪些用户可能会流失?

2、流失概率更高的用户有什么共同特征?

二、理解数据

1、采集数据

本数据集来自DF ,数据源地址: https://www.datafountain.cn/dataSets/35/details#

本数据集描述了电信用户是否流失以及其相关信息,共包含7044条数据,共20个字段,介绍下各个字段:

  • customerID :用户ID。
  • gender:性别。(Female & Male)
  • SeniorCitizen :老年人 (1表示是,0表示不是)
  • Partner :是否有配偶 (Yes or No)
  • Dependents :是否经济独立 (Yes or No)
  • tenure :客户的职位(0-72,共73个职位)
  • PhoneService :是否开通电话服务业务 (Yes or No)
  • MultipleLines:是否开通了多线业务(Yes 、No or No phoneservice 三种)
  • InternetService:是否开通互联网服务 (No, DSL数字网络,fiber optic光纤网络 三种)
  • OnlineSecurity:是否开通网络安全服务(Yes,No,No internetserive 三种)
  • OnlineBackup:是否开通在线备份业务(Yes,No,No internetserive 三种)
  • DeviceProtection:是否开通了设备保护业务(Yes,No,No internetserive 三种)
  • TechSupport:是否开通了技术支持服务(Yes,No,No internetserive 三种)
  • StreamingTV:是否开通网络电视(Yes,No,No internetserive 三种)
  • StreamingMovies:是否开通网络电影(Yes,No,No internetserive 三种)
  • Contract:签订合同方式 (按月,一年,两年)
  • PaperlessBilling:是否开通电子账单(Yes or No)
  • PaymentMethod:付款方式(bank transfer,credit card,electronic check,mailed check)
  • MonthlyCharges:月费用
  • TotalCharges:总费用
  • Churn:该用户是否流失(Yes or No)

2、导入数据

3、查看数据集信息

三、数据清洗

1、查找缺失值

数据集中有5174名用户没流失,有1869名客户流失,数据集不均衡。

2、查看数据类型

TotalCharges表示总费用,这里为对象类型,需要转换为float类型

3、转换类型

再次查找缺失值:

这里存在11个缺失值,由于数量不多我们可以直接删除这些行

4、处理缺失值

5、数据归一化处理

四、数据可视化呈现

1、查看流失客户占比

由图中结果可以看出,流失客户占整体客户的26.6%。

2、性别、老年人、配偶、亲属对流客户流失率的影响

性别、老年人占比结果

配偶、亲属占比结果

可以看出,男性与女性用户之间的流失情况基本没有差异,而在老年用户中流失占比明显比非老年用户更高,在所有数据中未婚与已婚人数基本持平,但未婚中流失人数比已婚中的流失人数高出了快一倍,从经济独立情况来看,经济未独立的用户流失率要远远高于经济独立的用户。

3、提取特征

4、构造相关性矩阵

5、使用热地图显示相关系数

结论:

从上图可以看出,互联网服务、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视和网络电影之间存在较强的相关性,多线业务和电话服务之间也有很强的相关性,并且都呈强正相关关系。

6、使用one-hot编码

7、电信用户是否流失与各变量之间的相关性

由图上可以看出,变量gender 和 PhoneService 处于图形中间,其值接近于 0 ,这两个变量对电信客户流失预测影响非常小,可以直接舍弃。

8、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视、网络电影和无互联网服务对客户流失率的影响

由上图可以看出,在网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视和网络电影六个变量中,没有互联网服务的客户流失率值是相同的,都是相对较低。

这可能是因为以上六个因素只有在客户使用互联网服务时才会影响客户的决策,这六个因素不会对不使用互联网服务的客户决定是否流失产生推论效应。

9、签订合同方式对客户流失率的影响

由图上可以看出,签订合同方式对客户流失率影响为:按月签订 > 按一年签订 > 按两年签订,这可能表明,设定长期合同对留住现有客户更有效。

10、付款方式对客户流失率的影响

由图上可以看出,在四种支付方式中,使用Electronic check的用户流流失率最高,其他三种支付方式基本持平,因此可以推断电子账单在设计上影响用户体验。

五、数据预处理

由前面结果可知,CustomerID表示每个客户的随机字符,对后续建模不影响,我这里选择删除CustomerID列;gender 和 PhoneService 与流失率的相关性低,可直接忽略。

对客户的职位、月费用和总费用进行去均值和方差缩放,对数据进行标准化:

使用箱线图查看数据是否存在异常值:

由以上结果可以看出,在三个变量中不存在明显的异常值。

查看对象类型字段中存在的值:

综合之前的结果来看,在六个变量中存在No internet service,即无互联网服务对客户流失率影响很小,这些客户不使用任何互联网产品,因此可以将No internet service 和 No 是一样的效果,可以使用 No 替代 No internet service。

使用Scikit-learn标签编码,将分类数据转换为整数编码:

六、构建模型

1、建立训练数据集和测试数据集

2、选择机器学习算法

3、训练模型

4、评估模型

召回率(recall)的含义是:原本为对的当中,预测为对的比例(值越大越好,1为理想状态) 精确率、精度(precision)的含义是:预测为对的当中,原本为对的比例(值越大越好,1为理想状态) F1分数(F1-Score)指标综合了Precision与Recall的产出的结果

F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差。

综上所述,在10种分类算法中朴素贝叶斯(Naive Bayes)的F1分数最大为63.31%,所以使用朴素贝叶斯模型效果最好。

七、实施方案

八、结论

通过上述分析,我们可以大致勾勒出容易流失的用户特征:

老年用户与未婚且经济未独立的青少年用户更容易流失。

电话服务对用户的流失没有直接的影响。

提供的各项网络服务项目能够降低用户的流失率。

签订合同越久,用户的留存率越高。

采用electronic check支付的用户更易流失。

针对上述诊断结果,可有针对性的对此提出建议: 推荐老年用户与青少年用户采用数字网络,且签订2年期合同(可以各种辅助优惠等营销手段来提高2年期合同的签订率),若能开通相关网络服务可增加用户粘性,因此可增加这块业务的推广,同时考虑改善电子账单支付的用户体验。

最后,分享源码:

https://paste.ubuntu.com/p/tsZjWrVvY9/

数据源地址:

https://www.datafountain.cn/dataSets/35/details

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档