游戏留存的数据挖掘:如何使用机器学习来做?
发表于2017-11-22
网游产品的一个核心关注点是留存数据,尤其是次留数据和三留数据。最大程度提高游戏用户的留存率,对游戏在竞争激烈的市场存活至关重要。本文尝试应用统计学分析技术[1]、机器学习[2]和大数据挖掘技术,对游戏前期埋点数据进行挖掘,从中寻找游戏显著统计特征,找到流失玩家和非流失玩家的差异,试图以数据找到游戏用户流失/留存的原因。
本文的方法从客观数据出发来研究游戏,我们相信此方法对于国内游戏制作的意义。本文方法属探索性质,所得结果是初步和粗浅的,存在不足之处,欢迎大家批评指正。
1.研究对象与初步结果
本文将使用一款成功的ARPG手机网游K(避免广告嫌疑,下文简称“K游戏”)前期的埋点数据数据进行用户流失分析,埋点数据中包含玩家ID,动作时间戳,动作,玩家关键属性,即玩家在游戏中所获得的金币,钻石,所在的等级等特征,见下图。
图1:游戏K埋点数据样本
为了研究卡顿对产品留存影响,我们还研究了另外一款页游S,与游戏K进行了对比,具体实验过程和明确结论在本文第5.3小节。
实验取得了初步的成果,使用XGBoost进行分类,最终得到首日用户流失分类准确率为76%,次日用户流失分类准确率为75%。我们对提取出的关键特征进行了深入的分析,并提出了若干建议,以大量的玩家行为数据所呈现出的规律为决策提供依据。
2. 数据预处理与属性选择
2.1 数据清洗
本实验中使用K游戏的数据与北京深极智能科技有限公司汤州林在论文中[3]的是同一数据。我们选择了2016.10.100:0:47至2016.10.13 0:0:0的埋点数据,剔除起始日期不在10日的玩家,并以自然天进行分割,得到第一,二,三天的数据,在这三天的数据中分别获得第一天,第二天,第三天玩家的特征和标签。特征包含行为特征和关键属性特征,标签为流失或者非流失。
在原始数据中,我们发现操作动作数量小于16的玩家流失较多,这一部分的玩家很可能是由于对游戏的题材不感兴趣而流失,这部分的玩家对游戏的分析无太大意义,故剔除操作动作数量小于等于16的玩家。
在第一自然天中总共有17965个玩家,其中有7142个非流失玩家,10823个流失玩家,剔除动作数量小于16的玩家,得到非流失玩家6958个,流失玩家9326个,比例约为1:1.34,大致符合1:1,故不进行采样,第二天游戏玩家大约有50%会流失,所以未进行采样,在第三天中,由于数据本身的原因(第四天的数据中只统计了很小的时间段内),未进行分析。
2.2 玩家行为特征
将数据以自然天分割之后,全部的数据中总共有4867个动作,剔除一部分冷门动作,冷门动作指操作过该动作的玩家数量很少的动作,这些动作基本都是玩家自身固有的聊天动作,基本上这样的聊天动作只会有一个玩家操作,在本实验中选择的最小动作支持度是5,即在所有玩家的所有点击动作中,操作该动作的玩家数量小于等于5则会被剔除,由此得到2675个动作,并得到玩家的动作序列,为消除动作序列长度对分类准确率的影响,以词袋模型处理玩家的动作序列,并由此得到玩家动作序列的TF-IDF矩阵。
在玩家的每一个动作序列的每一个动作的频率计算如下:
(2.1)
上式中,表示动作i在动作序列j中出现的次数,表示动作i在动作序列j中的频率。体现了该玩家对于动作i的偏爱程度。
每一个动作的计算如下,D表示玩家的动作序列集合,计算玩家的总数量与操作该动作的玩家数量的比值。
(2.2)
值体现了动作i在所有动作序列中的区分程度。
每一个动作序列的每一个动作的值即为该动作在玩家序列中的频率和该动作的值的积,计算公式如下。
(2.3)
体现了玩家对于动作序列j中i动作的偏好程度,同时也兼顾了动作i在所有玩家动作序列中的区分程度。
2.3 玩家关键属性特征
根据数据中的信息计算玩家的派生属性,由于我们已经剔除了游戏中的脏数据和一些极端数据(不符合统计规律),故使用平均值来进行试验,派生属性包含玩家动作时间间隔的平均值,动作之间的平均时间间隔计算如下,N表示动作的变化次数。
(2.4)
派生属性还包含玩家的战力,等级,金币,钻石,黑钻,体力的平均增长速度,即战力,等级,金币,钻石,黑钻,体力的变化值与时间的比值,平均增长速度计算如下,N表示特征的变化次数。考虑到游戏玩家行为的特殊性(睡觉、休息),我们对时间变化量超过五分钟的也统一按照五分钟来处理。
(2.5)
派生属性还包含动作时间间隔的最大值,动作种类,游戏时间,是否是vip用户,战力,等级,金币,钻石,黑钻,体力的最大值、最小值,以及变化次数。
- 玩家动作时间间隔的平均值可以反映出玩家在游戏中动作的连贯性,可反映出玩家对于该游戏的熟练程度。
- 玩家动作时间间隔和动作时间间隔的最大值可反映出游戏是否有卡点。
- 玩家的战力,等级,金币,钻石,黑钻,体力的平均增长速度可以反映出玩家对于游戏是否领会,同时也反映了玩家对于游戏的熟悉程度。
- 玩家的战力,等级,金币,钻石,黑钻,体力的最大和最小值可以反映玩家在游戏中的获得感和失落程度。
- 玩家战力,等级,金币,钻石,黑钻等的变化次数可以反映玩家在游戏中的活跃程度。
- 动作的种类,和玩家在游戏中的时长反映了玩家对于游戏本身的喜爱程度,用户是否是vip用户,由于只有6%的VIP用户会流失,所以用户是否是vip用户也反映了用户对于游戏的喜爱程度。
在以上派生属性中,玩家的动作种类,玩家游戏的总时长,玩家战力,等级,金币,钻石,黑钻,体力的最大值与游戏时长有一定的关联,单独使用玩家关键属性特征进行分类,得到的分类准确率为64%。
3. XGBoost算法介绍
a) 集成学习
通过对比经典监督学习中不同的算法,综合考虑模型的效果和可解释性,最终选择了集成学习[2]中的XGBoost算法来对本文涉及的游戏埋点数据进行机器学习。XGBoost算法是一种集成学习算法。
图2:集成机器学习
如上图所示,集成学习通过构建并结合多个机器学习器来完成学习任务,常可获得比单一学习器显著优越的泛化性能。
根据个体学习器的产生方式,目前的集成学习方法大致可以分为两大类,即个体学习器间存在强依赖关系,必须串行生成的序列化方法,以及学习器间不存在强依赖关系,可同时生成的并行化方法,前者的代表是Boosting,后者的代表是Bagging。
b) XGBoost
在本文中我们将使用集成学习中Boosting方法中的梯度提升树的改进型,XGBoost算法[4]来进行分析,XGBoost显式的将树模型的复杂度作为正则项加在了优化目标函数中,可防止模型过拟合,同时在迭代过程中,允许使用列抽样,也起到了防止过拟合的作用,增强了模型的泛化能力。XGBoost通过计算每一个节点特征分割的基尼系数得到特征权重,并根据权重的大小,自动抽取特征中较为重要的特征,更注重模型的可解释性。
4.实验流程
对于前面清洗出的数据,以自然天进行分割,得到第一,二,三天的数据,在这三天的数据中分别获得第一天,第二天,第三天玩家的特征和标签,通过前面所述XGBoost算法进行机器学习。具体参数设定如下:使用k折交叉验证和网格搜索得到最优的参数为学习率0.1,最大树的个数为20,树的最大深度为3。
实验流程如下
图3:处理流程
5.实验结果
5.1首日用户流失分析
使用第一天玩家的动作特征和其余特征使用XGBoost进行分类在测试集上的准确率为76%,对于非流失玩家的预测精确率和召回率为72%, 60%对于流失玩家的预测精确率和召回率为74%, 85%。在第一自然天的玩家埋点数据中,所提取的高区分度特征如下。
5.1.1 玩家行为特征
在第一自然天的玩家埋点数据中,所提取的高区分度动作特征由以下几个表显示, A表示动作,B表示动作的详细说明,C表示点击该动作的用户数量,D表示点击该动作之后流失的用户数量,E表示非流失玩家点击该动作的平均次数与流失用户点击该动作的平均次数的比值,F表示该动作在分类器中的重要性。该动作在分类器中的重要性由XGBoost根据特征在节点分割时的基尼系数得到。
经过统计,在第一自然天中,非流失玩家的平均点击次数为1240.2,流失玩家平均点击次数为277.9,二者的比值大约为4.6,如果E列的值大于4.6表示非流失玩家更偏好点这个动作,如果E列的值小于4.6表示流失玩家更偏好这个动作,由于使用的是平均值,所以比值可能会在4.6附近浮动。
由分类器所提取出的关键动作中主城类动作如下表:
表1
在主城类动作中,技能类动作,以及奖励,消费类动作区分度较高,非流失玩家平均点击动作“明日领取”,“钻石商城”的次数与流失玩家的比值大于4.6,玩家点击“明日领取”可以在第二天获得相应的装备,这个动作使得玩家对于游戏充满了期待,建议增加相应活动对玩家的诱惑性,同时增加此类动作的展示,使其在游戏中更加醒目。
由分类器所提取的关键动作中关卡类动作如下表:
表 2
在关卡类动作中,动作“关卡,获得新道具”和“关卡,守护水晶关卡点击给水晶充能”流失玩家和非流失玩家点击次数的比值与平均比值4.6接近,说明这些动作所造成的潜在的影响影响了玩家的去留,如道具的吸引程度较大,符合玩家的预期,建议增大道具的诱惑性。
在关卡类动作中,暂停类动作区分度高,暂停类动作具有一定的偶然性,因为玩家在游戏中可能被别的事物打扰。其中“关卡结束,返回主城”动作的留存比较高, 在游戏的实际体验中,过了一个关卡,可以选择继续进行或者返回主城,返回主城之后,缺乏指导,导致玩家不知道如何继续,建议游戏在玩家返回主城之后,增加引导。
由分类器所提取得关键动作特征中奖励类动作特征如下表:
表3
在奖励类动作中,非流失玩家的平均点击次数与流失玩家的比值均大于4.6,建议加大游戏中对于奖励的诱惑性,以吸引更多的玩家留下。
由分类器所提取的关键动作特征中,装备类特征如下表:
表4
以上装备类动作中,可以发现非流失玩家平均点击次数与流失玩家的平均点击次数都大于4.6,其中“/list/icontent/c1/bgbg”中非流失玩家平均点击次数与流失玩家的平均点击次数远超4.6值得注意,这表明非流失玩家对于装备类动作的偏好程度要大于流失玩家,建议增强游戏中装备的醒目程度,并增强装备的感官体验,以装备来吸引玩家。
5.1.2 玩家关键属性
由分类器所提取的玩家关键属性特征如下:
表5
最大时间间隔对玩家的流失与否无明显关联,最大时间间隔本身具有一定的偶然性。
分析上述几个特征,由于这几个特征都和时间有很大的关联,如玩家玩的时间越长体力的变化次数和最大的体力自然越大,而玩家玩的时间越长,说明玩家对该游戏的喜爱程度越深,自然越不易流失,这也符合我们的一般认知,玩家的战力,等级,金币,钻石,黑钻,体力的最大值和变化次数,动作的种类与玩家的游戏时间都有有潜在的关系,所以剔除掉时间因素得到其余派生属性的特征的重要性如下:
表6
由上述表格可得非流失玩家的平均时间间隔要略小于流失玩家,同时非流失玩家的战力增长,钻石增长和黑钻增长速度都高于流失玩家,表明非流失玩家在操作上的熟练程度要略高于流失玩家,同时也反映了非流失玩家在游戏的专心程度上要高于流失玩家,这可能是因非流失玩家本身对ARPG游戏熟悉,也有可能是这些玩家是从别的服务器转来的用户。
5.2次日用户流失分析
使用第二自然天的用户的动作特征和其余特征进行XGBoost分类,在测试集上的准确率为75%,对于非流失玩家的预测精确率和召回率为74%,76%对于流失玩家的预测精确率和召回率为76%, 74%。
5.2.1 玩家行为特征
在第二自然天用户埋点数据中,所提取的高区分度动作由以下几个表显示。 A表示动作,B表示动作的详细说明,C表示点击该动作的用户数量,D表示点击该动作之后流失的用户数量,E表示的是非流失玩家点击该动作的平均次数与流失用户点击该动作的平均次数的比值,G表示该动作在分类器中的重要性。
在第二天中,非流失玩家的平均点击次数为1499.38,流失玩家的平均点击次数为463.64,二者的比值是3.23,如果F列的值大于3.23说明非流失玩家更偏好该动作,如果小于3.23说明流失玩家更偏好该动作。
由分类器所提取的关键动作特征中,主城类动作如下所示:
表7
在主城类动作中,“冒险”,“好友提示”,“竞技”类动作,非流失玩家的平均点击次数与流失玩家的比值均大于3.23,表明非流失玩家更加偏好这类动作,其中“好友提示”体现了玩家在游戏中的社交性,如果一起玩的人更多,会导致玩家更愿意留下,建议在游戏中,更多的增加游戏的社交属性。
在主城动作中,“主城,收缩按钮”,“主城,右下方收缩按钮”流失人数较多,而这两个动作在首日流失分析中,流失人数同样也很多,通过进行卡点分析,玩家在首日和次日的动作随后的平均时间间隔为3.4秒,“主城,收缩按钮”随后的平均时间间隔为2.64秒,“主城,右下方收缩按钮”随后的平均时间间隔为2.01秒,均小于平均时间间隔,可排除卡点对这两个动作的影响。
由分类所提取的动作类特征中,装备类动作如下表:
表8
在以上装备类动作中,E列的值均大于3.23,说明非流失玩家更偏好游戏中的装备,建议将这些动作所展示的装备设置的更加醒目,更加具有美感和诱惑性,能够更多的吸引玩家。
由分类器所提取的关键动作特征中游戏进行中的动作特征如下:
表9
在以上动作中,“角色战败,点击此处继续”动作的流失玩家较多,而且E列的值小于3.23,同样“角色战败,再来一次”动作E列的比值同样小于3.23,流失玩家更偏好点击这些动作,表明,流失玩家在进行游戏时,战败的可能更大,同时对于战败也更加敏感,符合预期,建议游戏适当的降低难度。
“竞技场,自动战斗”动作流失玩家玩家较多,而且E列值小于3.23,表明流失玩家更偏好进行自动战斗,建议游戏增加玩家战斗时的场面,使战斗场面更具美感,增强游戏的感官体验,以吸引玩家。
“恭喜获得提示,点击关闭”,“第一章第七关,进入后,引导员出现,点击引导员或对话框”两个动作E列的值均小于3.23,说明流失玩家更倾向于获得提示,这也反应了流失玩家对于游戏熟悉度不够,建议适当加强引导。
“网络连接中,点击屏幕”动作的流失人数较多,说明因为网络的原因使得玩家缺乏了耐心,继而导致流失,流失玩家更偏好点击,因此技术优化提升游戏流畅度在游戏前期很重要。
5.2.2 玩家关键属性
由分类所提取的关键属性如下表:
表10
剔除时间影响之后的关键属性如下表所示:
表11
在第二自然天中,非流失玩家的动作间的平均间隔小于流失玩家,同时非流失玩家的战力平均增长速度,钻石的平均增长速度都高于流失玩家。
5.3 卡点分析
在网游中,技术原因或网络原因导致的客户端卡顿,对于游戏玩家体验和留存有很大影响。本小结试图量化评估此影响。
针对分类器所提取出的关键动作进行深入的分析,探究卡点与动作留存比之间的关系,对游戏进行卡点分析,即对玩家的动作留存比和随后的时间间隔平均值(即卡顿时间)进行相关性分析,动作留存比定义如下。
(5.1)
并计算动作留存比和动作随后的时间间隔之间的皮尔逊相关系数。针对两个变量X和Y皮尔逊相关系数计算公式如下:
(5.2)
其中为变量X,Y之间的协方差,计算公式如下,其中n表示变量取值的个数。
(5.3)
公式(4.2)中表示变量X的标准差的计算公式如下,表示变量X的数学期望。
(5.4)
绘制首日玩家动作留存比和卡顿时间曲线如下图:
图4:首日玩家动作留存比和卡顿时间曲线
所得到的首日玩家动作留存比和动作卡顿时间的相关性为0.09,表明游戏卡点对首日玩家流失的影响较小。
绘制次日玩家动作留存比和卡顿时间曲线如下图:
图5:次日玩家动作留存比和卡顿时间曲线
所得到的次日玩家动作留存比和卡顿时间的相关性为0.10,表明游戏卡点对次日用户流失的影响较小。由此可得,游戏K在技术层面已充分调优,卡顿对于玩家流失的影响可忽略不计。
作为对比,北京深极智能科技公司数据挖掘组对另外一款网游产品S进行了同样的卡顿时间-流失分析,数据如下:
表12:游戏S卡顿时间与留存比数据
两者曲线如下图:
图6:游戏S前期动作留存比和卡顿时间曲线
可以算出,流失/存留比与卡顿时间相关性为0.92, 是高度正相关,说明游戏S的前期,卡顿是玩家流失的主要原因,因此游戏S需要聚焦技术调优,提升留存。
不同游戏前期的卡顿以及卡顿对留存的影响是不同的,本小节提供了一种量化度量办法,研发商可以用来确定卡顿的影响,从而决策是否需要进行技术调优。
6.总结与后继工作方向
本文取得了初步结果,可以帮助游戏研发商借助客观数据挖掘改进游戏。但我们研究也存在一些问题,需要在后继研究中改进:
- 对于data leaking问题没有很好的解决。
- 从思路上来说,玩家点击的不一定是他们感兴趣的(比如,游戏强引导让玩家不得不点),而玩家脱离强制引导后,没点击的行为才是一个强行为,其意义更重大。(感谢阿里云数据处理专家王函的宝贵意见,见文献[3]的评论部分)
- 在我们的分析过程中,没有考虑玩家动作之间的相关性。