如何使用机器学习做游戏留存数据挖掘?

文/ 呆嫖 2017-11-22 16:12:16

前言

网游产品的一个核心关注点是留存数据,尤其是次留数据和三留数据。最大程度提高游戏用户的留存率,对游戏在竞争激烈的市场存活至关重要。本文尝试应用统计学分析技术、机器学习和大数据挖掘技术,对游戏前期埋点数据进行挖掘,从中寻找游戏显著统计特征,找到流失玩家和非流失玩家的差异,试图以数据找到游戏用户流失/留存的原因。

北京深极智能科技是一家专注游戏领域数据挖掘、网游聊天频道广告智能识别与过滤、使用深度强化学习改进游戏制作过程的人工智能创业公司。在本文中,他们的数据挖掘团队从客观数据出发来研究游戏留存数据,属探索性质,所得结果是初步和粗浅的,但相信此研究方向对于国内游戏制作量化决策的意义。

1. 研究对象与初步结果

本实验中使用北京深极智能科技有限公司数据挖掘组汤州林在论文中的同一数据,即一款成功的ARPG手机网游K(避免广告嫌疑,下文简称“游戏K”)前期的埋点数据数据进行用户流失分析。埋点数据中包含玩家ID,动作时间戳,动作,玩家关键属性,即玩家在游戏中所获得的金币,钻石,所在的等级等特征,见下图。

研究1.jpg

图1:游戏K埋点数据样本

为了研究卡顿对产品留存影响,我们还研究了另外一款页游S,与游戏K进行了对比,具体实验过程和明确结论在本文第5.3小节。

实验取得了初步的成果,使用XGBoost进行分类,最终得到首日用户流失分类准确率为76%,次日用户流失分类准确率为75%。我们对提取出的关键特征进行了深入的分析,并提出了若干建议,以大量的玩家行为数据所呈现出的规律为决策提供依据。

2. 数据预处理与属性选择

2.1 数据清洗

我们选择了游戏K 2016.10.10 0:0:47至2016.10.13 0:0:0的埋点数据,剔除起始日期不在10日的玩家,并以自然天进行分割,得到第一,二, 三天的数据,在这三天的数据中分别获得第一天,第二天,第三天玩家的特征和标签。特征包含行为特征和关键属性特征,标签为流失或者非流失。为简化分析,本研究中没有考虑玩家一天流失回流、二天流失回流等行为比例。

在原始数据中,发现操作动作数量小于16的玩家流失较多,这一部分的玩家很可能是由于对目标游戏的题材不感兴趣而流失,这部分的玩家对游戏的分析无意义,故剔除之。

在第一自然天中总共有17965个玩家,其中有7142个非流失玩家,10823个流失玩家,剔除动作数量小于16的玩家,得到非流失玩家6958个,流失玩家9326个,比例约为1:1.34,大致符合1:1,故不进行采样,第二天游戏玩家大约有50%会流失,所以未进行采样,在第三天中,由于数据本身的原因(第四天的数据中只统计了很小的时间段内),未进行分析。

2.2 玩家行为特征

将数据以自然天分割之后,全部的数据中总共有4867个动作,剔除一部分冷门动作,冷门动作指操作过该动作的玩家数量很少的动作,这些动作基本都是玩家自身固有的聊天动作,基本上这样的聊天动作只会有一个玩家操作,在本实验中选择的最小动作支持度是5,即在所有玩家的所有点击动作中,操作该动作的玩家数量小于等于5则会被剔除,由此得到2675个动作,并得到玩家的动作序列,为消除动作序列长度对分类准确率的影响,以词袋模型处理玩家的动作序列,并由此得到玩家动作序列的TF-IDF矩阵。

在玩家的每一个动作序列的每一个动作的频率计算如下:

tf_{i,j}=\frac{n_{i,j}}{\sum_k{n_{k,j}}} (2.1) 

上式中, n_{k,j} 表示动作i在动作序列j中出现的次数, tf_{i,j} 表示动作i在动作序列j中的频率。,体现了该玩家对于动作i的偏爱程度。

每一个动作的 idf_i 计算如下,D表示玩家的动作序列集合,计算玩家的总数量与操作该动作的玩家数量的比值。

idf_i=\log{\frac{|D|}{j:t_{i}\in{D_j}}} (2.2)

idf_i 值体现了动作i在所有动作序列中的区分程度。

每一个动作序列的每一个动作的 tfidf_{i,j} 值即为该动作在玩家序列中的频率,和该动作的 tf_{i,j}值的积,计算公式如下。

tfidf_{i,j}=tf_{i,j}*idf_i (2.3)

tfidf_{i,j} 值体现了玩家对于动作序列j中i动作的偏好程度,同时也兼顾了动作i在所有玩家动作序列中的区分程度。

2.3 玩家关键属性特征

根据数据中的信息计算玩家的派生属性,由于我们已经剔除了游戏中的脏数据和一些极端数据(不符合统计规律),故使用平均值来进行试验,派生属性包含玩家动作时间间隔的平均值,动作之间的平均时间间隔计算如下,N表示动作的变化次数。

动作的平均间隔=\frac{\sum{动作间间隔}}{N} (2.4)

派生属性还包含玩家的战力,等级,金币,钻石,黑钻,体力的平均增长速度, 即战力,等级,金币, 钻石,黑钻,体力的变化值与时间的比值,平均增长速度计算如下,N表示特征的变化次数。考虑到游戏玩家行为的特殊性(睡觉、休息),我们对时间变化量超过五分钟的也统一按照五分钟来处理。

某特征平均增长速度=\frac{\sum{\frac{某特征变化量}{时间变化量}}}{N} (2.5)

派生属性还包含动作时间间隔的最大值,动作种类,游戏时间,是否是vip用户,战力,等级,金币,钻石,黑钻,体力的最大值,最小值,以及变化次数。

  • 玩家动作时间间隔的平均值可以反映出玩家在游戏中动作的连贯性,可反映出玩家对于该游戏的熟练程度。

  • 玩家动作时间间隔和动作时间间隔的最大值可反映出游戏是否有卡点。

  • 玩家的战力,等级,金币,钻石,黑钻,体力的平均增长速度可以反映出玩家对于游戏是否领会,同时也反映了玩家对于游戏的熟悉程度。

  • 玩家的战力,等级,金币,钻石,黑钻,体力的最大和最小值可以反映玩家在游戏中的获得感和失落程度。

  • 玩家战力,等级,金币,钻石,黑钻等的变化次数可以反映玩家在游戏中的活跃程度。

  • 动作的种类,和玩家在游戏中的时长反映了玩家对于游戏本身的喜爱程度,用户是否是vip用户,由于只有6%的VIP用户会流失,所以用户是否是vip用户也反映了用户对于游戏的喜爱程度。

在以上派生属性中,玩家的动作种类,玩家游戏的总时长,玩家战力,等级,金币,钻石,黑钻,体力的最大值与游戏时长有一定的关联,单独使用玩家关键属性特征进行分类,得到的分类准确率为64%。

3. XGBoost算法介绍

a) 集成学习

通过对比经典监督学习中不同的算法,综合考虑模型的效果和可解释性,我们最终选择了集成学习[2]中的XGBoost算法来对本文涉及的游戏埋点数据进行机器学习。

研究2.jpg

图2:集成机器学习

如上图所示,集成学习通过构建并结合多个机器学习器来完成学习任务,常可获得比单一学习器显著优越的泛化性能。

根据个体学习器的产生方式,目前的集成学习方法大致可以分为两大类,即个体学习器间存在强依赖关系,必须串行生成的序列化方法,以及学习器间不存在强依赖关系,可同时生成的并行化方法,前者的代表是Boosting,后者的代表是Bagging。

b) XGBoost

在本文中我们将使用集成学习中Boosting方法中的梯度提升树的改进型,XGBoost算法来进行分析,XGBoost显式的将树模型的复杂度作为正则项加在了优化目标函数中,可防止模型过拟合,同时在迭代过程中,允许使用列抽样,也起到了防止过拟合的作用,增强了模型的泛化能力。XGBoost通过计算每一个节点特征分割的基尼系数得到特征权重,并根据权重的大小,自动抽取特征中较为重要的特征,更注重模型的可解释性。

4. 实验流程

对于前面清洗出的数据,以自然天进行分割,得到第一,二,三天的数据,在这三天的数据中分别获得第一天,第二天,第三天玩家的特征和标签,通过前面所述XGBoost算法进行机器学习。具体参数设定如下:使用k折交叉验证和网格搜索得到最优的参数为学习率0.1,最大树的个数为20,树的最大深度为3。

实验流程如下图

研究3.jpg

图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附近浮动。

由分类器所提取出的关键动作中主城类动作如下表:

研究4.jpg

表1

在主城类动作中,技能类动作,以及奖励,消费类动作区分度较高,非流失玩家平均点击动作“明日领取”,“钻石商城”的次数与流失玩家的比值大于4.6, 玩家点击“明日领取”可以在第二天获得相应的装备,这个动作使得玩家对于游戏充满了期待,建议增加相应活动对玩家的诱惑性,同时增加此类动作的展示,使其在游戏中更加醒目。

由分类器所提取的关键动作中关卡类动作如下表:

研究5.jpg

表2

关卡类动作中,动作“关卡,获得新道具”和“关卡,守护水晶关卡点击给水晶充能”流失玩家和非流失玩家点击次数的比值与平均比值4.6接近,说明这些动作所造成的潜在的影响影响了玩家的去留,如道具的吸引程度较大,符合玩家的预期,建议增大道具的诱惑性。

关卡类动作中,暂停类动作区分度高,暂停类动作具有一定的偶然性,因为玩家在游戏中可能被别的事物打扰。其中“关卡结束,返回主城”动作的留存比较高, 在游戏的实际体验中,过了一个关卡,可以选择继续进行或者返回主城,返回主城之后,缺乏指导,导致玩家不知道如何继续,建议游戏在玩家返回主城之后,增加引导。

由分类器所提取得关键动作特征中奖励类动作特征如下表:

研究6.jpg

表3

在奖励类动作中,非流失玩家的平均点击次数与流失玩家的比值均大于4.6,建议加大游戏中对于奖励的诱惑性,以吸引更多的玩家留下。

由分类器所提取的关键动作特征中,装备类特征如下表:

研究7.jpg

表4

以上装备类动作中,可以发现非流失玩家平均点击次数与流失玩家的平均点击次数都大于4.6,其中“/list/icontent/c1/bgbg”中非流失玩家平均点击次数与流失玩家的平均点击次数远超4.6值得注意,这表明非流失玩家对于装备类动作的偏好程度要大于流失玩家,建议增强游戏中装备的醒目程度,并增强装备的感官体验,以装备来吸引玩家。

5.1.2 玩家关键属性

由分类器所提取的玩家关键属性特征如下:

研究8.jpg

表5

最大时间间隔对玩家的流失与否无明显关联,最大时间间隔本身具有一定的偶然性。

分析上述几个特征,由于这几个特征都和时间有很大的关联,如玩家玩的时间越长体力的变化次数和最大的体力自然越大,而玩家玩的时间越长,说明玩家对该游戏的喜爱程度越深,自然越不易流失,这也符合我们的一般认知,玩家的战力,等级,金币,钻石,黑钻,体力的最大值和变化次数,动作的种类与玩家的游戏时间都有有潜在的关系,所以剔除掉时间因素得到其余派生属性的特征的重要性如下:

研究9.jpg

表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说明流失玩家更偏好该动作。

由分类器所提取的关键动作特征中,主城类动作如下所示:

研究10.jpg

表7

在主城类动作中,“冒险”,“好友提示”,“竞技”类动作,非流失玩家的平均点击次数与流失玩家的比值均大于3.23,表明非流失玩家更加偏好这类动作,其中“好友提示”体现了玩家在游戏中的社交性,如果一起玩的人更多,会导致玩家更愿意留下,建议在游戏中,更多的增加游戏的社交属性。

“主城,收缩按钮”,“主城,右下方收缩按钮”流失人数较多,而这两个动作在首日流失分析中,流失人数同样也很多,通过进行卡点分析,玩家在首日和次日的动作随后的平均时间间隔为3.4秒,“主城,收缩按钮”随后的平均时间间隔为2.64秒,“主城,右下方收缩按钮”随后的平均时间间隔为2.01秒,均小于平均时间间隔,可排除卡点对这两个动作的影响。

由分类所提取的动作类特征中,装备类动作如下表:

研究11.jpg

表8

在以上装备类动作中,E列的值均大于3.23,说明非流失玩家更偏好游戏中的装备,建议将这些动作所展示的装备设置的更加醒目,更加具有美感和诱惑性,能够更多的吸引玩家。

由分类器所提取的关键动作特征中游戏进行中的动作特征如下:

研究12.jpg

表9

在以上动作中:

  • "角色战败,点击此处继续”动作的流失玩家较多,而且E列的值小于3.23,同样“角色战败,再来一次”动作E列的比值同样小于3.23,流失玩家更偏好点击这些动作,表明,流失玩家在进行游戏时,战败的可能更大,同时对于战败也更加敏感,符合预期,建议游戏适当的降低难度。

  • "竞技场,自动战斗”动作流失玩家玩家较多,而且E列值小于3.23,表明流失玩家更偏好进行自动战斗,建议游戏增加玩家战斗时的场面,使战斗场面更具美感,增强游戏的感官体验,以吸引玩家。

  • “恭喜获得提示,点击关闭”,“第一章第七关,进入后,引导员出现,点击引导员或对话框”两个动作E列的值均小于3.23,说明流失玩家更倾向于获得提示,这也反应了流失玩家对于游戏熟悉度不够,建议适当加强引导。

  • “网络连接中,点击屏幕”动作的流失人数较多,说明因为网络的原因使得玩家缺乏了耐心,继而导致流失,流失玩家更偏好点击,因此技术优化提升游戏流畅度在游戏前期很重要。

5.2.2 玩家关键属性

由分类所提取的关键属性如下表:

研究13.jpg

表10

剔除时间影响之后的关键属性如下表所示:

研究14.jpg

表11

在第二自然天中,非流失玩家的动作间的平均间隔小于流失玩家,同时非流失玩家的战力平均增长速度,钻石的平均增长速度都高于流失玩家。

5.3 卡点分析

在网游中,技术原因或网络原因导致的客户端卡顿,对于游戏玩家体验和留存有很大影响。本小结试图量化评估此影响。

针对分类器所提取出的关键动作进行深入的分析,探究卡点与动作留存比之间的关系,

对游戏进行卡点分析,即对玩家的动作留存比和随后的时间间隔平均值(即卡顿时间)进行相关性分析,动作留存比定义如下。

动作留存比=\frac{点击该动作之后流失的玩家数量}{点击该动作的玩家数量} (5.1)

我们计算动作留存比和动作随后的时间间隔之间的皮尔逊相关系数。针对两个变量X和Y皮尔逊相关系数计算公式如下:

\rho_{X,Y} = \frac{cov(X, Y)}{\sigma_X\sigma_Y} (5.2)

其中cov(X,Y)为变量X,Y之间的协方差,计算公式如下,其中n表示变量取值的个数。

cov(X,Y)=\frac{\sum_{n}^{i=1}(X_{i}-\bar{X})(Y_{i}-\bar{Y})}{n-1} (5.3)

公式(5.2)中Xσ表示变量X的标准差的计算公式如下,E(X)表示变量X的数学期望。

\sigma_X = \sqrt{E(X^2)-E^2(X)} (5.4)

绘制首日玩家动作留存比和卡顿时间曲线如下图:

研究15.jpg

图4:首日玩家动作留存比和卡顿时间曲线

所得到的首日玩家动作留存比和动作卡顿时间的相关性为0.09,表明游戏卡点对首日玩家流失的影响较小。

绘制次日玩家动作留存比和卡顿时间曲线如下图:

研究16.jpg

图5:次日玩家动作留存比和卡顿时间曲线

所得到的次日玩家动作留存比和卡顿时间的相关性为0.10,表明游戏卡点对次日用户流失的影响较小。由此可得,游戏K在技术层面已充分调优,卡顿对于玩家流失的影响可忽略不计。

作为对比,北京深极智能科技公司数据挖掘组对另外一款网游产品S进行了同样的卡顿时间-流失分析,数据如下:

研究17.jpg

表12:游戏S卡顿时间与留存比数据

绘制曲线如下图:

研究18.jpg

图6:游戏S前期动作留存比和卡顿时间曲线

可以算出,流失/存留比与卡顿时间相关性为0.929, 是高度正相关。这说明游戏S的前期,卡顿是玩家流失的主要原因,因此我们得出结论:游戏S需要聚焦技术调优来提升留存,暂不用考虑美术或策划设计因素。研发商因此调整了原定的用修正英雄属性来提升留存的策略,该游戏下一次测试数据表明,流失/存留比与卡顿时间相关性降低到0.71,技术原因造成的卡顿对流失的影响降低了。

不同游戏前期的卡顿以及卡顿对留存的影响是不同的,本小节提供了一种量化度量办法,研发商可以用来确定卡顿的影响,从而决策是否需要进行技术调优。

6. 总结与后继工作方向

本文的思路和算法取得了初步结果,可以帮助游戏研发商借助客观数据挖掘改进游戏。但我们研究也存在一些问题,需要在后继研究中改进:

  1. data leaking问题没有很好的解决,影响了分类准确率。

  2. 从思路上来说,玩家点击的不一定是他们感兴趣的(比如,游戏强引导让玩家不得不点),而玩家脱离强制引导后,没点击的行为才是一个强行为,其意义更重大。(感谢阿里云数据处理专家王函的宝贵意见,见文献[3]的评论部分)

  3. 在我们的分析过程中,没有考虑玩家动作之间的相关性,而关联动作挖掘其实很重要。

参考文献

[1] 李航,统计学习方法,清华大学出版社,2012.3

[2] 周志华:机器学习,清华大学出版社,2016年

[3] 汤州林, 景春臻, 陈鹏达:基于机器学习的游戏付费用户特征挖掘, 基于机器学习的游戏付费用户特征挖掘

[4] Nielsen, Didrik, Tree Boosting With XGBoost - Why Does XGBoost Win "Every" Machine Learning Competition? Tree Boosting With XGBoost - Why Does XGBoost Win "Every" Machine Learning Competition?

关于作者:

  • 北京深极智能科技公司数据挖掘组 景春臻 汤州林 陈鹏达

  • 北京深极智能科技公司游戏AI组 马恒 郭祥昊 (微信号)gxh_bj

Alex Matveev
2022-06-06 16:27:13
不合规
审核中
@苏某某: 她在音乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想
乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想,没有系统了解过此类音乐的她怎么会喜欢上 呢?后来听完《美少女战士》原声带后才发现,“原来我在那么小的时候
评论全部加载完了~