在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
对于中国各大电信运营商而言,在整体市场规模相对稳定的情况下,能否维护好现有的客户是保证其收益的重中之重。因此,预测客户流失的可能性与否,直接关系到运营商的客户维护的重点正确与否。本文将基于”狗熊会“基础案例:收集客户流失,来演示基于C5.0算法的客户流失预测,数据下载 点击打开链接。 一、数据结构查看与初步分析 读入并查看数据(见下图),一共包含10个变量,其中ID为每个用户的唯一标识,在进行预测分析时需要删除;流失用户为因变量,”0“表示未流失,”1“表示已流失。 >customers<-read.csv("customer.csv",stringsAsFactors= FALSE) 查看整体的用户流失情况(见下图),可以发现流失用户数较未流失用户数多 除此之外,我们还可以通过交叉表的形式查看各变量与用户流失与否的关系(见下多图) 由上图不难发现,签订过服务合约、改变过行为、有过关联购买、集团用户、套餐金额较高的用户有更高的概率不流失;反之,用户流失的概率就相对较高。 同时,我们也可以查看下用户的使用行为,包括使用月数、额外流量和额外通话时长,的分布情况,见下图 >par(mfrow=c(1,3)) ##将画板变为1行3列的样式,让三张图在同一行分布 可见,使用月数以12-14月居多,额外通话时长与额外流量较集中分布。 二、流失预测与模型评价 首先,需要将原始数据随机划分为训练集和测试集 > set.seed(11) ##设置随机可重复 查看训练集和测试集中的记录是否符合随机分布要求,见下图,基本符合随机分布要求 > prop.table(table(c_train$流失用户)) 接着,利用C5.0决策树算法进行训练 > c_train<-c_train[-1] library(C50) 由上图可知,该树共有7各分支,并且准确划分了当中的3965条记录,错误率仅是0.9%。 下面用测试集对模型 c_model 进行评估 > c_t_model<-predict(c_model,c_test) > table(c_test$流失用户,c_t_model) ##利用交叉表查看预测的准确率情况 可见,该模型的预测准确率在98.15%以上,仅18个预测出错,其中是流失用户的被预测为非流失的有4个,非流失用户被预测为流失用户的有14。 再接下来,尝试下优化模型(见 点击打开链接 ,内有两种优化模型的方法) 自适应增强算法是通过将很多能力较弱的学习算法组合在一起,使得这样的组合算法比任何单独的算法都强很多。在C5.0算法中,可以通过参数 trials,引入boosting算法,表示在模型中使用的独立决策树的数量。 > c_model_boost10<-C5.0(c_train[-9],c_train$流失用户,trials = 10) ##trials=10 已经成为一个事实标准的数字 预测准确率上升到98.46%,上述幅度不明显。但流失用户的被预测为非流失的有6个,比原来的模型多了2个,而将流失用户的被预测为非流失的代价更大(可通过添加代价矩阵解决,见 点击打开链接),故该优化效果不明显。 |
请发表评论