赞
踩
客户流失是一个存在于各个行业的严重问题,这一问题也同样受到众多电信服务提供商的关注——因为获得一个新客户的成本远远超过保留一个老客户的成本(点击文末“阅读原文”获取完整数据)。
相关视频
因此,探索可能对客户流失产生重要影响的相关指标,并根据现有信息对未来进行预测至关重要,这可以帮助服务提供商识别客户流失的潜在风险,提出有针对性的计划,从而有效提高客户保留率。项目的关键挑战在于如何找出对客户流失最具有影响力的因素,以及如何对各异的机器学习模型进行评价,挑选出适合做预测的最佳模型。
解决方案
任务/目标
探索可能对客户流失产生重要影响的相关指标;挑选出适合做预测的机器学习模型
用于分析的电信客户流失数据集(查看文末了解数据免费获取方式)涵盖7000多位电信业务用户的签订服务类别、人口统计特征和账户信息。该数据集总共有20个变量。因变量是客户流失标识,记录最近一个月内客户是否流失。其他19个自变量用于从多个角度描述客户。
为了更好地理解这些特性并分析它们与客户流失的关系,我将它们分为三类。如下图所示,第一类描述了客户的基本特征,如性别,是否为老年人,是否有伙伴或家属。这些功能与用户的日常生活密切相关,可能会影响用户的流失行为。二是电信合同的特点。这一类描述了合同的有效期,合同是否使用无纸化账单,支付方式,以及合同的月度费用、总费用等数字特征。这些特征反映了客户与电信合同相关的选择,在客户流失中起着至关重要的作用。例如,选择长期合同的客户可能有更低的流失机会。最后一类是服务功能,重点在于电话服务及互联网服务的相关指标。
探索性数据分析
通过对分类变量进行堆积柱状图的可视化呈现以及对数值变量的分布研究、箱型图可视化、相关性计算进行探索性数据分析。在此基础上,选择对目标流失变量有显著影响的特征。就分类变量而言,首先,没有合作伙伴或家属的老年人客户流失率更高。第二,选择光纤网络服务而不选择其他网络服务的客户流失率较高。三是选择按月合同、无纸化账单和电子支票支付方式的客户流失率较高。就数值变量而言,总留存时间较短、总付费较低的客户更有可能离开。收费与总留存时间呈正相关。研究结果不仅为机器学习的研究提供了有益的参考,而且具有一定的商业应用价值。
数据处理
将所有的分类变量转换为dummy variable,对所有的数值变量进行z-normalization以消除不同变量间的量级差异。
构 造
在建立模型前,将模型随机分割成training set和testing set,数据量比例为3:1;在模型调参时,使用5折交叉验证法。
建模
KNN
K-最近邻(KNN)分类器是监督学习中最经典、最直观的方法。其中最近点的概念是由欧氏距离定义的,因此需要将特征转化为一个标准范围,以避免一些大范围特征导致的优势。因为已经对数据进行了z-normalization,所以这不会成为模型的问题。
在调整参数时,尝试了K从1到100的不同选择。5折交叉验证的预测精度如下图所示。最终取最优K=66。
朴素贝叶斯
逻辑回归
我通过5折交叉验证对特征进行向后选择、向前选择和逐步选择,其中表中显示的精度是通过在验证数据集上取性能的平均值计算的。根据他们的表现,最终选择了逐步选择的作为模型。
根据逻辑回归系数的p-value,总留存时间、月租费和电话服务是前3个显著变量。总留存时间和电话服务对客户流失有负影响,而月租费对客户流失有正影响。换句话说,如果一个新客户的总留存时间很短,没有电话服务,并且每个月支付很高的费用,他很可能流失。这符合直觉,因为老客户更忠诚。此外,在没有电话服务的情况下,客户对特定电信服务提供商的依赖性也不是很强。此外,高昂的月费可能会让客户不再坚持使用某家电信公司的服务。
LDA/QDA
我实现了两种形式的判别分析:线性判别分析(LDA)和二次判别分析(QDA)。前者比后者灵活,但不需要估计太多的参数。
随机森林
用随机的方式建立一个森林,森林由很多决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
支持向量机
支持向量机找到一个超平面来分离具有最大边界的类。在某种程度上,它类似于Logistic回归和LDA,但当类几乎是可分离的,支持向量机做得相当好。此外,核支持向量机可以绘制非线性边界,建模非常灵活。最常见的核函数是线性,多项式,高斯RBF(径向)和Sigmoid。
在参数的调整中,可以选择不同的核形式,也可以选择不同的惩罚参数c的值。为了得到更准确的模型预测性能的估计,采用了5折交叉验证。
点击标题查阅往期内容
数据分享|R语言决策树和随机森林分类电信公司用户流失churn数据和参数调优、ROC曲线可视化
左右滑动查看更多
01
02
03
04
CART
分类与回归树(CART)是一种基于树的模型,涉及到分层和分割预测空间。分裂的行为可以归纳为一棵树,也称为决策树。
在分类树中,我使用基尼指数来衡量节点的纯度,然后递归地对节点进行二叉分割,以搜索出最优分区。最后,我通过一些停止条件在叶节点停止。
然而,由于过拟合的原因,分类树可能在训练集中表现良好,但在测试集中表现不佳。因此,我们需要修剪树,使其不那么复杂,以便在测试数据上有更好的性能。我采用的方法是成本复杂度剪枝(CCP)和5折叉验证。
随机森林
树很容易被理解和可视化,但它有时并没有很好的预测精度。为此,我们采用了一些集成学习方法来提高它的性能。随机森林则更进一步,对袋装树的特征进行随机选择。这样的选择可以解除套袋树的关联,使树的平均结果更加可靠。在randomForest()函数中,ntree表示随机森林中包含的决策树的数量,max_depth表示从根节点到最远的叶子节点的节点数量。它们在调整参数时非常有用,我们尝试使用step = 50将ntree设置为50至500,使用step = 10将max_depth设置为10至100。使用不同ntree和max_depth的模型的性能如下图所示。
在随机森林模型中,我们也可以通过平均减少基尼系数来知道不同变量的重要程度。发现最重要的变量是TotalCharges, MonthlyCharges和tenure。
XGBoost
Boosting是另一种提高模型性能的集成学习方法。boosting算法通过迭代重新加权训练数据的观测值来处理底层训练数据。在所有的增强算法中,XGBoosting(极端梯度增强)被认为是最强大的模型之一。它可以使用正则化来避免过拟合,有效地处理丢失的数据,并以极快的速度建立树。
神经网络
前馈神经网络作为一种强大的深度学习方法,也被用于提高预测性能。前馈神经网络是一种单元之间没有递归关系,信息在网络中只向前传播的神经网络。通过进行正向和反向计算阶段来训练网络。应用R包“nnet”构建具有隐含层的前馈神经网络。
模型 比较
指标选择
Precision表示在所有预测中对流失客户的正确预测所占的比例。电信公司希望确保他们留住这些客户的成本在经济上是有效的。换句话说,他们很可能会花钱留住FN+TN的客户,但实际上只有TN的客户流失了。因此,Precision作为衡量客户保留计划有效性的一个重要指标。
Recall代表正确预测的流失顾客在所有流失顾客中的比例。对于电信公司来说,有流失倾向的客户被留存得越多越好。因此,Recall是衡量成功识别流失客户能力的有效指标。
对比
根据探索性数据分析部分的观察结果和logistic回归和随机森林中的重要性度量,电信企业应特别关注总留存时间、月租费和电话服务等关键变量。如果客户是新客户,每月支付高额费用,或者没有电话服务,那么电信公司很有可能会失去这个用户。除了朴素贝叶斯模型和CART模型之外,其他模型的性能都不差,而且彼此之间非常相似。如果要选择其中一种作为电信公司应用客户流失预测的推荐方法,前馈神经网络模型可能会被选择,因为前馈神经网络模型在不同测度下表现相对稳定。
基于以上结论,从业务的角度提出以下建议:
1.根据前馈神经网络模型,建立流失率高的用户列表。对上市用户进行实时监控、用户调研和回访。
2.对于新客户,可以提供半年期优惠券等折扣,以度过用户流失的高峰期。对于光纤用户和附加流媒体电视和电影业务用户,重点是改善网络体验和增值业务体验。需要提升技术部门以改善网络指标。此外,公司应承诺为目标用户提供免费网络升级和每月免费电视、电影等服务,以提高用户粘性。
3.对于在线安全、在线备份、设备保护、技术支持等增值服务,公司应提供以用户介绍和推广为主的折扣,如首个月或半年免费体验。
4.针对月度签约用户,推出年度签约支付折扣活动,将月度签约用户转化为年度签约用户。
在此对Lingzi Lu对本文所作的贡献表示诚挚感谢,她专注数据清洗、机器学习、金融数据分析等领域。擅长R语言、Python。
数据获取
在公众号后台回复“电信数据”,可免费获取完整数据。
点击文末“阅读原文”
获取完整数据。
本文选自《电信行业客户流失预测:KNN、朴素贝叶斯、逻辑回归、LDA/QDA、随机森林、支持向量机、CART、神经网络》。
点击标题查阅往期内容
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
R语言基于树的方法:决策树,随机森林,Bagging,增强树
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证
R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。