本文是对某线上酒店用户流失预测分析项目的一个总结。
目录/分析思路:
01: 项目介绍
02:问题分析
03:数据探索
04:数据预处理
05:建模分析
06:用户画像分析
一、项目介绍
该项目是对某酒店预订网在一段时间内的客户预定信息数据进行分析,通过算法预测客户访问的转化结果,挖掘出影响用户流失的关键因素,并深入了解用户画像及行为偏好,从而更好地完善产品设计,进行个性化营销服务,以减少用户流失,提升用户体验。
二、问题分析
这个项目是问题诊断型,要解决的问题是关于用户流失的。在官方提供的字段和解释中,有一个label字段,这个是目标变量,也就是我们需要进行预测的值。label=1代表客户流失,label=0代表客户未流失,很显然这是个分类的预测问题。
我们的目标就是在预测准确率高的同时最大化召回率,从业务角度出发,也就是将更多原本可能会流失的客户最大概率地预测出来,以针对性进行挽留。因为通常来讲,获取新用户的成本比挽留老用户流失的成本要多得多。
三、数据探索
1、数据总体情况
本数据集合userlostprob_data.txt,为某酒店预订网2016年5月16至21日期间一周的访问数据。
本数据集总的数据共有689945行,51列,包含样本id,label以及49个变量特征。
考虑到保护用户隐私,该数据经过了数据脱敏处理,和实际的订单、浏览量、转化率有一些差距,但是并不影响问题的可解性。
2、数据指标梳理
观察数据集,里面的变量比较多。所以首先将数据字典中中文解释替换对应变量名,增强可读性,然后最好将指标进行梳理分类,然后逐个字段进行解析。
经过研究发现,指标大概可以分为三类:一类是订单相关的指标,如入住日期、订单数、取消率等;一类是与客户行为相关的指标,如星级偏好、用户偏好价格等;还有一类是与酒店相关的指标,如酒店评分均值、酒店评分人数、平均价格等。
3、相关特征描述性分析
3.1 访问日期和入住时间
入住人数和访问人数都在5月20日达到峰值,大概是“520”情人节的原因;5月21日之后入住人数大幅减少,后面的两个小波峰,表明周末会比平日人多一些。
3.2 访问时间段
可以观察到,凌晨3-5点是访问人数最少的时间段,因为大多数人这个时间都在睡觉;在晚上9-10点左右访问人数是最多的。
3.3 客户价值
“客户近1年价值”和“客户价值”两个特征非常相关,都可以用来表示客户的价值;可以看到,大部分客户的价值在0-100范围;有些客户价值高达600,后期需重点关注分析这类高价值客户。
3.4 消费能力指数
基本呈现正态分布,大部分人的消费能力在30附近。消费能力达到近100的人数也很多,说明在我们酒店的访问和入住客户中,存在不少高消费水平群体。
3.5 价格敏感指数
去掉极值,数据呈右偏分布,大部分客户对价格不是很敏感,不用太费心定价;针对价格敏感指数100的客户群体,可以采用打折的方式进行吸引。
3.6 入住酒店平均价格
大部分人选择酒店价格在1000以下,价格2000以上的酒店选择的人非常少;排除“土豪”,可以看到,消费者对酒店价格的选择,基本是一个正偏态的分布,大部分人会选择的平均价格在300元左右(大概是快捷酒店一类)。
3.7 用户年订单数
大部分用户的年订单数在40以下,同时,也存在部分频繁入住酒店的用户,需要重点维护;
3.8 订单取消率
用户一年内取消订单率最多的是100%和0,对于百分百取消订单的客户可以结合订单数了解一下原因。
3.9 一年内距离上次下单时长
可以观察出,预定间隔时间越长的人数是递减的,说明相当多的人订酒店还是比较频繁的;侧面反映出“熟客”会经常性地选择预定酒店,回头客较多。
3.10 会话ID
服务器分配给访问者的一个id,1为新的访客。
访问客户中老客户占大多数;老客的预定概率比新客的预定概率稍微高一点。
四、数据预处理
4.1 重复值处理
数据维度没有发生 变化,说明该数据集没有重复值。
4.2 生成衍生字段
基于对业务的理解,考虑到用户提前预定酒店时间这一特征可能会比较重要,将两个日期型特征转化生成一个新的特征,提高模型准确度和可解释性。
时间格式转换 生成提前预定天数列 删除与后续建模分析无关的列4.3 缺失值处理
查看缺失值情况
共51个字段,缺失字段:44个
缺失值处理思路及过程
查看特征分布情况:
查看所有数值型特征的分布情况,根据数据分布合理选用处理方法,包括异常值、缺失值处理,同时有助于深入了解用户行为。
共51个字段,缺失字段:44个,选择合适的方法进行缺失值处理:
缺失比例80%以上:1个,“近7天用户历史订单数”缺失88%,直接删除该字段。
趋于正态分布的字段,使用均值填充;右偏分布的字段,使用中位数填充。
检查缺失值填充情况
查看可知,缺失值数据已填充完毕。
4.4 异常值处理
极值处理:
盖帽法(后面基于实际业务思考,盖帽法存在部分不合理,可能会过滤高价值用户,需要调整)
负值处理:
4.5 标准化处理
距离类模型需要提前进行数据标准化。
五、建模分析
首先拆分训练集和测试集
5.1 逻辑回归
[0.7366529216096935, 0.7016048745527705]
5.2 决策树
[0.8728884186420657, 0.8448881691422343]
5.3 随机森林
[0.8936581901455913, 0.9399374165108152]
5.4 朴素贝叶斯
[0.6224554131126394, 0.6610756921767458]
5.5 XGBOOST
[0.8886143098362913, 0.9383456626294802]
5.6 模型比较
画出ROC曲线
可以看到,朴素贝叶斯表现最差,逻辑回归的表现也不是很好,说明该数据不是线性可分的;随机森林和xgboost模型的表现差不多,二者的AUC得分都在0.9以上,分类效果很好,随机森林AUC值为0.94更高一点,固采用随机森林进行用户流失预测。
5.7 随机森林模型优化
交叉验证
学习曲线——取分类器为80
[0.9333570067179268, 0.97816699979759]
即根据这个随机森林模型召回率可以达到97.8%,流失客户预测准确率可以达到93.3%。
该模型可以直接上线用于用户流失预测。
5.8 影响客户流失的关键因素
用随机森林分析影响客户流失的因素:使用feature_importance方法,可以得到特征的重要性排序。
最重要的前10个特征:
年访问次数、一年内距上次访问时长、昨日访问当前城市同入住日期的app uv数、一年内距离上次下单时长、昨日提交当前城市同入住日期的app订单数、24小时内已访问酒店可订最低价均值、24小时内已访问酒店商务属性指数均值、24小时内已访问次数最多酒店可订最低价、24小时历史浏览次数最多酒店评分人数、客户价值 。
六、用户画像分析
接下来用K-Means聚类的方法将用户分为3类,观察不同类别客户的特征。
K-means聚类
可以看到,聚出来的3类用户有各自非常明显的特征,针对不对类用户的个性化营销建议:
0类为中等群体:消费水平和客户价值都偏低,访问和预定频率较高,提前预定的时间是三类中最长的;花费非常多的时间进行浏览才能做出选择,比较谨慎,推测可能为出门旅行的用户。
建议:尽可能多地进行推送,因为此类客户通常比较喜欢浏览;多推荐价格相对实惠的酒店;推送当地旅游资讯,因为这类客户旅游出行的概率较大。
1类为低价值客户:消费水平和客户价值极低,偏好价格较低,访问和预定频率很低; sid值很低,说明新客户居多。
建议:按照流失客户处理,不建议花费过多营销成本,不做特定渠道运营;推荐促销活动,价格折扣大的的低价酒店;新用户占比较大,潜在客户居多,可以维持服务推送。
2类为高价值客户:消费水平高,客户价值大,追求高品质,价格敏感度高;登陆时间长,访问次数多,提前预定时间短,但退单次数较多。
建议:为客户提供更多差旅地酒店信息; 推荐口碑好、性价比高的商务连锁酒店房源吸引用户; 在非工作日的11点、17点等日间流量小高峰时段进行消息推送。
一些备注:
1、数据特征筛选时可以做相关性分析,因为可能某些特征之间存在高度相关,可以用相关性分析去掉和目标变量相关性小于0.01的变量,其他变量之间相关性高于0.9的可以删除,再利用主成份分析对指标进行降维整合,可能会使模型效果达到最好。
2、如果想对用户分类更加精细,可以使用RFM模型进行用户价值分析。但本项目特征包含信息较多,用RFM可能损失信息量比较大。
网友评论