首先声明,该文章是石头哥的最新文章,力作之一。石头哥是游戏数据挖掘与分析QQ群的群主之一,该文出自他手,在此予以转发,望从事游戏数据分析的各位可以从中学到一二。本来我的博客想来很少转文章的,不过在此,这样的好文必须转起来。
原文地址:
流失预测模型在很多行业都有引用到切实的市场运营当中,而接下来就开门见山的说一下游戏行业有关用户流失模型的建立。
目标:关于游戏用户的流失,普片的衡量指标有周流失与月流失,接下来研究的问题有两个:
① 有关付费用户的月登陆流失问题
② 有关付费用户的月付费流失(付费用户的月登陆流失定义:本月充值的用户在下个月不再有登陆行为。付费用户的月付费流失:本月充值的用户在下个月不在有付费行为。但有可能还有登陆行为,这部分用户被称为沉默付费用户。)
数据指标理解:影响流失的普片判断有:在线活跃、充值或消费活跃、还有玩家账号一些属性(如果细分还有副本的活跃度,某些活动的活跃度,或者社交的数据等)。本文在做流失预测模型之前做以下数据准备:
玩家ID
玩家角色名
等级
注册时间
本月充值总额
本月铜币活跃(铜币的交易次数)
本月绑定铜币活跃(绑定铜币交易次数)
本月元宝活跃(元宝交易次数)
本月活跃天数(登陆天数)
本月登陆次数
本月登陆总时长
下月充值总额
下月登陆天数
以上是从数据库中取出来的基本指标,而进行分析的指标可以在这个基础指标的基础上再进行丰富,例如:每活跃天在线时长=登陆总时长/活跃天数;每活跃天登陆次数=登陆次数/活跃天数;活跃度=活跃天数/本月已注册时长(大家将发现这里衍生的“活跃度”指标在后面的分析会起到神奇的效果)。数据都准备好了之后,现在就开始建立模型,以下用到的是SPSS Modeler软件。
首先采用源节点来录入数据,数据分为两份,第一份为“11月预测12月”数据,第二份为“12月预测1月”的数据。
接着利用“导出”节点导出我们所需要的衍生字段。
因为这里的“下月充值流失”是根据下月是否有充值来判断转换的,下月充值为0即为流失则标志为T,否则为F(“下月登陆流失”同理)。利用导出节点,我们依次衍生了以下字段:
下月充值流失
下月登陆流失
每活跃天铜币交换次数
每活跃天绑定铜币交易次数
每活跃天元宝交易次数
每活跃天登陆次数
每活跃天登陆时长
每活跃天充值额度
活跃度(登陆天数/本月已注册天数)
接下来就是对一些多余字段的过滤还有数据的清理(如包括空值的数据,或者不合理数据,如活跃度>1为不合理数据)。
添加“过滤”&“选择”节点。
把无用的字段过滤掉(根据自己源数据来过滤,如这里的下月充值(元宝)字节已经转换成“下月充值流失”字节,所以可以删除过滤掉),点击确定。
打开“选择”节点,模式选择“抛弃”,条件写上一些需要清除的数据,点击确定。
模型之前的数据准备都基本完成了,最后添加一个类型节点。
我们先研究的是下月登陆流失,所以现将下月充值流失角色设为无,下月登陆流失设为目标,接下来就是选择需要预测的模型。这里选择了贝叶斯与C5.0的算法。
贝叶斯这里运用了三种方法:TAN、Markov、Markov_FS
分别添加三个贝叶斯节点,名字分别命名:TAN、Markov、Markov_FS(方便辨识)。
TAN设置结构类型为TAN;Markov设置结构类型为Markov Blanket;Markov_FS设置结构类型为Markov Blanket并且勾选“包括特征选择预处理步骤”。分别运行得到3个模型,最后连接一个“分析”节点,默认状态下按运行。
分析节点运行结果:大家可以明显发现,运用贝叶斯的三种方法的准确率基本都为83%,这说明三种方法差别并不大。其实在一般预测来说,80%以上已经算比较好的结果了。但是这里将进一步采用C5.0的算法与其比较。
添加C5.0算法节点,默认状态下按运行,得到C5.0的模型,点击C5.0模型节点
可以看到每一个变量的重要性,而“活跃度”这个变量的重要性是最高的。(这也说明了一些衍生字段对后期分析的重要性)
接下来再添加“分析”节点发现准确率达到85%,比贝叶斯要稍微好点。(有一些情况对决策树使用boosting方法或者进行截枝修剪严重性会得到更好的效果)
我们再用C5.0模型进一步进行流失分析,添加“直方图”节点:
选择字段level OR 注册时间,交叠字段颜色选择我们通过C5.0预测出来的“$C-下月登陆流失”字段,点击运行。用这个方法可以进一步预测分析下月流失的等级分布,或者注册时间分布,或者更多有关玩家的信息,原理一样在这里不再做拓展。到这里流失预测模型已经建好可以投入使用了。接上我们需要预测1月份的数据,我们可以进一步看到这个预测模型在下个月的准确性仍可以保持在85%左右,说明预测的效果还是不错的,之后可以直接进行一系列的分析。(在这里说明一下,一般预测模型会随着时间的推移慢慢减低准确性,所以建议在做预测之前都用前一个月的数据来训练一次模型,从而能让模型保持一定的准确性)
附加一个12月份付费用户在1月份流失的注册时间分布图,大家看有没有发现什么有意思的东西~