觉得可以的话,点个赞呀!
0 目的
本文目的是找到付费客户的流失原因,并给出相应的理论建议。
数据来源:
https://www.kaggle.com/blastchar/telco-customer-churnwww.kaggle.com
1前期工作
1.1数据清洗-列名翻译
BEGIN;
ALTER TABLE 电信流失用户 CHANGE customerID 顾客ID VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE gender 性别 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE SeniorCitizen 老年用户 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Partner 伴侣用户 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Dependents 亲属用户 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE tenure 在网时长 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE PhoneService 电话服务 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE MultipleLines 多线服务 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE InternetService 上网服务 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE OnlineSecurity 网络安全 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE OnlineBackup 网络备份 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE DeviceProtection 设备保护 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE TechSupport 技术支持 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE StreamingTV 在线电视 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE StreamingMovies 在线电影 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Contract 合同期 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE PaperlessBilling 电子账单 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE PaymentMethod 付款方式 VARCHAR(30);
ALTER TABLE 电信流失用户 CHANGE MonthlyCharges 月租费 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE TotalCharges 累计付费 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Churn 是否流失 VARCHAR(20);
COMMIT;
1.2数据清洗-数据一致化
老年用户0否,1是
UPDATE 电信流失用户
SET 老年用户 = Replace(老年用户,1,'Yes');
UPDATE 电信流失用户
SET 老年用户 = Replace(老年用户,0,'No');
在网时长
UPDATE 电信流失用户
SET 在网时长 = (
CASE
WHEN 在网时长 BETWEEN 1
AND 6 THEN
'0.5 Year'
WHEN 在网时长 BETWEEN 7
AND 12 THEN
'1 Year'
WHEN 在网时长 BETWEEN 13
AND 24 THEN
'2 Year'
WHEN 在网时长 BETWEEN 25
AND 36 THEN
'3 Year'
WHEN 在网时长 BETWEEN 37
AND 48 THEN
'4 Year'
WHEN 在网时长 BETWEEN 49
AND 60 THEN
'5 Year'
WHEN 在网时长 BETWEEN 61
AND 72 THEN
'6 Year'
WHEN 在网时长 = 0 THEN
'New'
END
);
月租费
UPDATE 电信流失用户
SET 月租费 = (CASE WHEN 月租费 BETWEEN 0 AND 30.00 THEN '1'
WHEN 月租费 BETWEEN 30.01 AND 60.00 THEN '2'
WHEN 月租费 BETWEEN 60.01 AND 80.00 THEN '3'
WHEN 月租费 BETWEEN 80.01 AND 100.00 THEN '4'
WHEN 月租费 BETWEEN 100.01 AND 120.00 THEN '5'
END);
1.3数据清洗-无效值、缺失值处理
累计付费为空的用户属于无效用户
DELETE FROM `电信流失用户` WHERE 累计付费 = ' '
新用户也不在考虑范围内
DELETE FROM `电信流失用户` WHERE 在网时长 = 'New'
2.创建流失情况分类视图
按照四个大类(用户属性,电话服务,上网服务,合同属性)分别建立视图。
2.1电话服务流失情况
创建视图
SELECT
`电信流失用户`.`电话服务` AS `电话服务`,
`电信流失用户`.`多线服务` AS `多线服务`,
`电信流失用户`.`上网服务` AS `上网服务`,
count(0) AS `总数`,
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) AS `流失数`,
format(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
),
2
) AS `流失率`,
concat(
format(
(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
) * 100
),
2
),
'%'
) AS `流失率%`
FROM
`电信流失用户`
GROUP BY
`电信流失用户`.`电话服务`,
`电信流失用户`.`多线服务`,
`电信流失用户`.`上网服务`
ORDER BY
`流失率` DESC,
`流失数` DESC
分组分析:以电话服务为例(其他几个和电话服务差不多):
SELECT
`电话服务`,
SUM(`总数`) AS 总数,
SUM(`流失数`) AS 流失数,
FORMAT(
SUM(`流失数`) / SUM(`总数`),
2
) AS 流失率
FROM
`电话服务`
GROUP BY
`电话服务`
image
有图可知,流失率高的用户属性包括:
-
电话服务:Yes
-
上网服务:Fiber optic
-
多线服务:Yes
尤其需要注意的是上网服务为Fiber optic的用户群体,这类人员的流失率特别高
2.2上网服务
SELECT
`电信流失用户`.`上网服务` AS `上网服务`,
`电信流失用户`.`网络安全` AS `网络安全`,
`电信流失用户`.`网络备份` AS `网络备份`,
`电信流失用户`.`设备保护` AS `设备保护`,
`电信流失用户`.`在线电影` AS `在线电影`,
`电信流失用户`.`技术支持` AS `技术支持`,
`电信流失用户`.`在线电视` AS `在线电视`,
count(0) AS `总数`,
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) AS `流失数`,
format(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
),
2
) AS `流失率`,
concat(
format(
(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
) * 100
),
2
),
'%'
) AS `流失率%`
FROM
`电信流失用户`
GROUP BY
`电信流失用户`.`上网服务`,
`电信流失用户`.`网络安全`,
`电信流失用户`.`网络备份`,
`电信流失用户`.`设备保护`,
`电信流失用户`.`技术支持`,
`电信流失用户`.`在线电视`,
`电信流失用户`.`在线电影`
ORDER BY
`流失率` DESC,
`流失数` DESC
分组分析:以网络安全为例(其他几个差不多):
SELECT
`网络安全`,
SUM(`总数`) AS 总数,
SUM(`流失数`) AS 流失数,
FORMAT(
SUM(`流失数`) / SUM(`总数`),
2
) AS 流失率
FROM
`上网服务`
GROUP BY
`网络安全`
image
上网服务中也可以分为安全类服务和娱乐类服务:
-
从图中大致可知,安全类服务为No的的群体流失率较为Yes的高出很多;
-
娱乐类服务为No的较Yes的稍微高出一些;
2.3 用户属性
SELECT
`电信流失用户`.`性别` AS `性别`,
`电信流失用户`.`老年用户` AS `老年用户`,
`电信流失用户`.`伴侣用户` AS `伴侣用户`,
`电信流失用户`.`亲属用户` AS `亲属用户`,
`电信流失用户`.`在网时长` AS `在网时长`,
count(0) AS `总数`,
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) AS `流失数`,
format(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
),
2
) AS `流失率`,
concat(
format(
(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
) * 100
),
2
),
'%'
) AS `流失率%`
FROM
`电信流失用户`
GROUP BY
`电信流失用户`.`性别`,
`电信流失用户`.`老年用户`,
`电信流失用户`.`伴侣用户`,
`电信流失用户`.`亲属用户`,
`电信流失用户`.`在网时长`
ORDER BY
`流失率` DESC,
`流失数` DESC
image
-
由图可知,流失率随着在网时长增加而降低,可知在网时长长的为高价值用户;
-
流失率与性别的关系不是很明显;
-
老年用户、非伴侣用户、非亲属用户的流失率高
2.4 合同属性流失情况
SELECT
`电信流失用户`.`合同期` AS `合同期`,
`电信流失用户`.`电子账单` AS `电子账单`,
`电信流失用户`.`付款方式` AS `付款方式`,
`电信流失用户`.`月租费` AS `月租费`,
count(0) AS `总数`,
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) AS `流失数`,
format(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
),
2
) AS `流失率`,
concat(
format(
(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
) * 100
),
2
),
'%'
) AS `流失率%`
FROM
`电信流失用户`
GROUP BY
`电信流失用户`.`合同期`,
`电信流失用户`.`电子账单`,
`电信流失用户`.`付款方式`,
`电信流失用户`.`月租费`
ORDER BY
`流失率` DESC,
`流失数` DESC
image
-
流失率随合同期的增加而减少,因此需要严格关注合同期为月的用户,这类用户的流失率特别高;
-
电子账单用户和付款方式为电子支票的用户流失率比较高;
-
整体而言月租费高的流失率也高,可以关注月租费为4 的,这类人群人数最多,而流失率也最高,但这类人群能够带来的收益最大,需要采取措施增加这部分人群的粘性;
3 高流失率情况整合
设定指标:流失数量50以上,流失率40%以上。
3.1电话服务类目下高流失率组合
SELECT
*
FROM
`电话服务`
WHERE
`电话服务`.`流失数` >= 50
AND `电话服务`.`流失率` >= 0.4
image
3.2上网服务类目下高流失率组合
SELECT
*
FROM
`上网服务`
WHERE
`上网服务`.`流失数` > 50
AND `上网服务`.`流失率` > 0.4
image
上图可知流失率高的用户都集中在上网服务为Fiber optic 的用户,这类用户的整体而言安全类服务开通数量较少,因此针对Fiber optic类用户建议至少开通一项安全服务类业务
3.3用户属性类目下高流失率组合
SELECT
*
FROM
`用户属性`
WHERE
`用户属性`.`流失数` > 50
AND `用户属性`.`流失率` > 0.4
image
从图中观察可知,非伴侣用户、非亲属用户且在网时长为0.5年的群体流失率非常高。
3.4合同属性下高流失率组合
SELECT
*
FROM
`合同属性`
WHERE
`合同属性`.`流失数` > 50
AND `合同属性`.`流失率` > 0.4
image
从图中观察可知,合同时间为月的群体流失率非常高。
4 措施与建议
4.1 组合分析
4.1.1 上网服务——安全设置/娱乐设置
由上述分析知,上网服务为Fiber optic的用户流失率高为42%。而这部分人群数量也很多。在此给出的建议是安全设置中至少能够有两个。
下面是设置为:技术支持和网络安全时,此时的流失率为28%。
SELECT
`上网服务`.`上网服务`,
Sum(`上网服务`.`总数`) AS '总数',
Sum(`上网服务`.`流失数`) AS '流失数',
FORMAT(Sum(`上网服务`.`流失数`)/Sum(`上网服务`.`总数`),2) AS '流失率'
FROM
`上网服务`
WHERE
`上网服务`.`上网服务` ='Fiber optic' AND
`上网服务`.`网络安全` = 'Yes' AND
`上网服务`.`网络备份`='No' AND
`上网服务`.`设备保护`='NO' AND
`上网服务`.`技术支持`='Yes'
GROUP BY
`上网服务`.`上网服务`,
`上网服务`.`网络安全`,
`上网服务`.`网络备份`,
`上网服务`.`设备保护`,
`上网服务`.`技术支持`
image
同时也发现在线电影和在线电视对Fiber optic的影响不大,但是开通在线电影或者在线电视能够降低DSL的流失率。
下面是以开通在线电视为例,此时DSL的流失率能够从25%降低到15%。由此可见娱乐类的开通对DSL降低流失率有一定帮助。
SELECT
`上网服务`.`上网服务`,
Sum(`上网服务`.`总数`) AS '总数',
Sum(`上网服务`.`流失数`) AS '流失数',
FORMAT(Sum(`上网服务`.`流失数`)/Sum(`上网服务`.`总数`),2) AS '流失率'
FROM
`上网服务`
WHERE
`上网服务`.`上网服务` ='DSL' AND
`上网服务`.`在线电影` = 'No' AND
`上网服务`.`在线电视`='Yes'
GROUP BY
`上网服务`.`在线电影`,
`上网服务`.`在线电视`
image
4.1.2 用户属性——合同属性
在网时长——伴侣用户/亲属用户
上述分析知,在网时长为0.5 Year的流失率非常高,当同时开同伴侣用户和亲属用户号时能够使流失率从55%降低到44%,也有一定作用。
SELECT
`用户属性`.`在网时长`,
`用户属性`.`伴侣用户`,
`用户属性`.`亲属用户`,
Sum(`用户属性`.`总数`) AS '总数',
Sum(`用户属性`.`流失数`) AS '流失数',
FORMAT(Sum(`用户属性`.`流失数`)/Sum(`用户属性`.`总数`),2) AS '流失率'
FROM
`用户属性`
WHERE
`用户属性`.`在网时长` ='0.5 Year'
GROUP BY
`用户属性`.`伴侣用户`,
`用户属性`.`亲属用户`
image
4.1.3在网时长——合同期为月
创建视图
SELECT
`电信流失用户`.`老年用户` AS `老年用户`,
`电信流失用户`.`在网时长` AS `在网时长`,
`电信流失用户`.`电子账单` AS `电子账单`,
`电信流失用户`.`付款方式` AS `付款方式`,
`电信流失用户`.`合同期` AS `合同期`,
`电信流失用户`.`月租费` AS `月租费`,
count(0) AS `总数`,
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) AS `流失数`,
format(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) / count(0)
),
2
) AS `流失率`
FROM
`电信流失用户`
GROUP BY
`电信流失用户`.`在网时长`,
`电信流失用户`.`电子账单`,
`电信流失用户`.`付款方式`,
`电信流失用户`.`合同期`,
`电信流失用户`.`月租费`
下面分析在网时长为0.5年不同合同期的情况,这部分人群95%以上都是月租用户,流失率也非常高,在55.20%,年租和2年租客户流失率明显下降很多,因此对于在网时长小于一年的用户可以采取一些措施,增加合同期,比如半年期或者季度期,增加客户粘度。
SELECT
`用户属性-合同属性`.`在网时长`,
`用户属性-合同属性`.`合同期`,
Sum(`用户属性-合同属性`.`总数`) AS `总数`,
Sum(`用户属性-合同属性`.`流失数`) AS `流失数`,
SUM(流失数)/sum(总数)
FROM
`用户属性-合同属性`
WHERE
`用户属性-合同属性`.`在网时长` = '0.5 Year'
GROUP BY
`用户属性-合同属性`.`在网时长`,
`用户属性-合同属性`.`合同期`
image
4.1.4在网时长——支付方式
SELECT
`用户属性-合同属性`.`在网时长`,
`用户属性-合同属性`.`付款方式`,
Sum(`用户属性-合同属性`.`总数`) AS `总数`,
Sum(`用户属性-合同属性`.`流失数`) AS `流失数`,
SUM(流失数)/sum(总数) AS '流失率'
FROM
`用户属性-合同属性`
WHERE
`用户属性-合同属性`.`在网时长` = '0.5 Year'
GROUP BY
`用户属性-合同属性`.`在网时长`,
`用户属性-合同属性`.`付款方式`
image
对于在网时长为0.5年的群体,在让客户选择付款方式时,尽量建议客户能够选择Credit card (automatic)、Mailed check两种付款方式。
4.1.5在网时长——月租费
SELECT
`用户属性-合同属性`.`在网时长`,
`用户属性-合同属性`.`月租费`,
Sum(`用户属性-合同属性`.`总数`) AS `总数`,
Sum(`用户属性-合同属性`.`流失数`) AS `流失数`,
SUM(流失数)/sum(总数) AS '流失率'
FROM
`用户属性-合同属性`
WHERE
`用户属性-合同属性`.`在网时长` = '0.5 Year'
GROUP BY
`用户属性-合同属性`.`月租费`
image
image
相同月租费情况下,在网时长为一年的群体明显比为0.5年的群体流失率低,因此对于在网时长为0.5年的群体,建议可以在开始的半年或者一年降低月租费用。
4.1.6老年用户——付款方式
SELECT
`用户属性-合同属性`.`老年用户`,
`用户属性-合同属性`.`付款方式`,
Sum(`用户属性-合同属性`.`总数`) AS `总数`,
Sum(`用户属性-合同属性`.`流失数`) AS `流失数`,
SUM(流失数)/sum(总数) AS '流失率'
FROM
`用户属性-合同属性`
WHERE
`用户属性-合同属性`.`老年用户` = 'Yes'
GROUP BY
`用户属性-合同属性`.`老年用户`,
`用户属性-合同属性`.`付款方式`
image
老年用户付款方式为Bank transfer(automatic) 和 Credit card(automatic)流失率较低,因此在新客户加入的时候,可以建议客户以这类自动扣款方式缴纳钱。
4.2 需要具体调研的业务
4.2.1 所有业务均为无
SELECT
月租费,
count(0) AS '总数',
SUM(IF(是否流失 = 'Yes', 1, 0)) AS 流失数,
FORMAT(
SUM(IF(是否流失 = 'Yes', 1, 0)) / count(0),
2
) AS 流失率
FROM
`电信流失用户`
WHERE
`网络安全` = 'No'
AND `网络备份` = 'No'
AND `设备保护` = 'No'
AND `技术支持` = 'No'
AND `在线电视` = 'No'
AND `在线电影` = 'No'
GROUP BY
月租费
image
4.2.2 所有业务均开通
SELECT
月租费,
count(0) AS '总数',
SUM(IF(是否流失 = 'Yes', 1, 0)) AS 流失数,
FORMAT(
SUM(IF(是否流失 = 'Yes', 1, 0)) / count(0),
2
) AS 流失率
FROM
`电信流失用户`
WHERE
`网络安全` = 'Yes'
AND `网络备份` = 'Yes'
AND `设备保护` = 'Yes'
AND `技术支持` = 'Yes'
AND `在线电视` = 'Yes'
AND `在线电影` = 'Yes'
GROUP BY
月租费
image
可以看到所有业务开通和所有业务不开通有一种情况是两者月租费都为3,但是流失率上差别极大,由于目前缺乏相关资料进一步说明哪些业务开通需要增加月租费,哪些不用,如果有这些资料,就可以采取相关措施,鼓励没开通任何业务的客户开通一些业务。
5 结论
-
上网服务为Fiber optic的用户建议是安全设置中至少能够有两个;
-
开通在线电影或者在线电视能够降低DSL的流失率,建议促进DSL类客户开通这类业务;
-
对于在网时长为0.5 Year的用户,同时开同伴侣用户和亲属用户号也有一定作用。
-
对于在网时长小于一年的用户可以采取一些措施,增加合同期,比如半年期或者季度期,增加客户粘度。
-
对于在网时长为0.5年的群体,在让客户选择付款方式时,尽量建议客户能够选择Credit card (automatic)、Mailed check两种付款方式。
-
相同月租费情况下,在网时长为一年的群体明显比为0.5年的群体流失率低,因此对于在网时长为0.5年的群体,建议可以在开始的半年或者一年降低月租费用。
-
老年用户付款方式为Bank transfer(automatic) 和 Credit card(automatic)流失率较低,因此在新客户加入的时候,可以建议客户以这类自动扣款方式缴纳钱。
-
整体而言月租费高的流失率也高,需要更加关注月租费为4 的群体,这类人群人数最多,而流失率也最高,但这类人群能够带来的收益最大,需要采取措施增加这部分人群的粘性;
-
可以看到所有业务开通和所有业务不开通有一种情况是两者月租费都为3,但是流失率上差别极大,由于目前缺乏相关资料进一步说明哪些业务开通需要增加月租费,哪些不用,如果有这些资料,就可以采取相关措施,鼓励没开通任何业务的客户开通一些业务。
笔者缺乏该行业相关经验,因此在分析过程中还存在许多待改进的地方,希望相互学习改进。
参考:https://zhuanlan.zhihu.com/p/59842554
网友评论