不论是传统行业还是互联网行业,用户流失都是比较关注的点。因为拉新是需要一定成本的,而拉新成本显然要比保持老客户高的多。

在用户运营中,如何有效预测用户流失,对潜在流失客户做特征分析和流失原因分析,将有助于运营制定有针对性的用户挽留方案,提高用户留存率。

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

一、确定需求,提出问题哪些用户最可能会流失?

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

预测用户是否流失?

二、理解数据

数据介绍:该数据集共有21个字段,7042条记录,每条记录包含了唯一客户的特征。

数据字段:数据集中,各数据指标的内容和含义,如下:数据字段含义

观察字段,可以分为如下几类:

用户基本信息(customerID、gender、SeniorCitizen、Partner、Dependents)

用户账户信息(tenure、Contract 、PaperlessBilling、PaymentMethod、MonthlyCharges 、 TotalCharges)

用户订阅服务(PhoneService、MultipleLines、InternetService 、OnlineSecurity、OnlineBackup、DeviceProtection、TechSupport、StreamingTV 、StreamingMovies)

用户流失指标(Churn)

首先,导入数据,查看数据:

发现 TotalCharges 的数据类型不是数值型,需要进行处理(下文进行)。

三、数据清洗

在正式清洗前,先来阐述一下数据清洗规则。基本上,可以总结为以下 4 个关键点,统一起来叫“完全合一”,即:完整性:单条数据是否存在空值,统计的字段是否完善。

全面性:观察某一列的全部数值,比如在 Excel 表中,我们选中一列,可以看到该列的平均值、最大值、最小值。我们可以通过常识来判断该列是否有问题,比如:数据定义、单位标识、数值本身。

合法性:数据的类型、内容、大小的合法性。比如数据中存在非 ASCII 字符,性别存在了未知,年龄超过了 150 岁等。

唯一性:数据是否存在重复记录,因为数据通常来自不同渠道的汇总,重复的情况是常见的。行数据、列数据都需要是唯一的,比如一个人不能重复记录多次,且一个人的体重也不能在列指标中重复记录多次。

按照以上的原则,我们能解决数据清理中遇到的大部分问题,使得数据标准、干净、连续,为后续数据统计、数据挖掘做好准备。

3.1 类型转换

最常用的:df.astype('数据类型') ;

除了用astype进行类型转换,也可以自定义函数来批量修改数据类型(通过int(),str()等直接转换)。还可以用Pandas的一些辅助函数(如to_numeric()、to_datetime())。

使用 pd.to_numeric() 转换成适当数值类型,errors='coerce',遇到错误时转换成 NAN;DataFrame.apply(pd.to_numeric, errors='coerce')

使用 pd.to_numeric() 转换成适当数值类型,errors='ignore',遇到错误时忽略,不予转换该列;DataFrame.apply(pd.to_numeric, errors='ignore')

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

将 TotalCharges 字段,进行类型转换后,发现 TotalCharges 字段存在缺失值;

3.2 缺失值处理

上图中,做一个简单的减法,可以发现,TotalCharges 存在11个缺失值,由于数量不多我们可以直接删除这些行。

3.3 数据归一化

对 Churn 列中的 Yes 和 No 分布用 1 和 0 替换,方便后续处理。

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

四、数据分析(可视化分析)

将数据集的数据分为:分类特征数据和数值特征数据,进行可视化呈现。

4.1 查看流失用户占比

由图中结果可以看出,流失用户占整体用户的比例高达 26.58%。应该引起足够重视!

4.2 分类型特征数据(16个)

4.2.1 用户基本信息(gender、SeniorCitizen、Partner、Dependents)

CustomerID 表示每个客户的随机字符,对后续分析不产生影响,我这里选择删除CustomerID列。

结论真的如上图展示的这样吗?在做分析之前,需要先确定各个分类对用户流失是否存在明显的差异。即:需要做卡方检验!用户基本信息指标的卡方检验结果

结论:性别方面:男性和女性用户之间的流失情况基本没有差异;

老年用户流失占比明显比非老年用户高;

未婚流失人数比已婚流失人数高出了一倍;

经济独立方面,经济未独立的用户流失率要远远高于经济独立的用户。

4.2.2 用户账户信息(Contract 、PaperlessBilling、PaymentMethod)

结论:采用无纸化账单(PaperlessBilling)时用户更容易流失;

合同签约方式上(Contract),大多数用户选择月付,但月付用户的流失率最高,签约越长的用户越不容易流失,签约方式对用户流失率影响为:按月签约 > 按一年签约 > 按两年签约;

在4中付款方式中,电子支付(Electronic cherk)明显更容易流失客户,其他三种支付方式的用户流失基本持平,电子支付更容易流失用户的原因,还需要结合更多的数据与场景进行推断。

4.2.3 用户订阅服务(PhoneService、MultipleLines、InternetService 、OnlineSecurity、OnlineBackup、DeviceProtection、TechSupport、StreamingTV 、StreamingMovies)卡方检验结果

结论:是否开通电话服务业务(PhoneService),对用户是否流失基本没影响;

多线业务(MultiLines)方面,对用户流失的影响不大;

互联网服务(InternetService)上,采用 Fiber optic服务的用户更容易流失。卡方检验结果

结论:在网络安全服务(OnlineSecurity)、在线备份业务(OnlineBackup)、设备保护业务(DeviceProtection)、技术支持服务(TechSupport)、网络电视(StreamingTV )和网络电影(StreamingMovies)六个变量中,没有互联网服务(No internetserive)的客户流失率值是相同的,都是相对较低。可能原因:这六个因素只有在客户使用互联网服务时,才会影响客户的决策,不会对不使用互联网服务的客户决定是否流失产生效应;

网络安全服务(OnlineSecurity)、在线备份业务(OnlineBackup)、设备保护业务(DeviceProtection)、技术支持服务(TechSupport)对用户是否流失的效果类似,没有订阅的用户较容易流失;

网络电视(StreamingTV )和网络电影(StreamingMovies)没有明显特征,进行特征分析时可以忽略。

4.3 数值型特征数据(3个)

主要包括:用户在网时间 tenure、月费用 MonthlyCharges、总费用 TotalCharges

在网时间越短的用户,流失率越高,用户流失率随着在网时长的增加而降低;月费用越高的用户越容易流失,总费用越少的用户较容易流失。

五、机器学习之特征工程

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

对在网时间、月费用和总费用进行去均值和方差缩放,对数据进行标准化。

所谓标准化数据,即:保证每个维度的特征数据方差为1,均值为0,使得预测结果不会被某些维度过大的特征值而主导。

由上图看出,在网时间、月费用和总费用这三个变量中不存在明显的异常值。

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

六、机器学习之构建模型

结果为:

从结果中,我们能看到 SVM 分类器的准确率最高,测试准确率为 0.7971。

八、结论与建议

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

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

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

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

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

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

针对上述诊断结果,可有针对性的对此提出建议:

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