如何基于机器学习来挖掘游戏付费用户特征?

来自 游戏葡萄 2017-11-22
资讯

[ 游戏葡萄原创专稿,未经允许请勿转载 ]

如何基于机器学习来挖掘游戏付费用户特征?

前言

网络游戏制作是脆弱的,考察目前国内游戏制作过程和修改过程,往往发现其决策缺乏客观中立的数据依据,以策划的经验和拍脑袋为主,产品成功总体概率很低。北京深极智能科技近日发布了一篇基于游戏数据挖掘的文章,试图以大量的玩家行为数据呈现出规律作为决策提供依据。

付费率与付费深度,是网络游戏的关键指标之一。如果能够根据用户的游戏行为数据挖掘出用户在游戏当中的倾向,研发商可根据两类用户的行为与属性差异,针对性修改游戏,把更多的非付费玩家转化成付费玩家,提升产品付费率;或者根据用户的行为给用户给予适当优惠用以刺激消费,这样可以提高收入。

本文使用机器学习技术中一类监督学习技术—树提升,从一款成功的 ARPG 手机网游K(以下简称游戏 K)埋点数据中进行数据挖掘,解决基于数据的付费用户与非付费用户特征自动学习与预测问题,取得了初步成果,分享给游戏行业,推进网游制作决策量化与科学化。

1. XGBoost 算法原理介绍

游戏 K 数据中有每个用户在游戏中前 4 天的点击动作、动作时间戳、钻石、金币、黑钻、战力、玩家设备型号、IP 地址等数据,半年总数据达到 8TB。

我们通过对比各种经典监督学习算法,综合考虑效率与算法准确率,最终选用了 XGBoost 算法[3]。

XGBoost 是一个设计高效、灵活并且可移植的优秀的分布式决策梯度提升库,它通过一组弱分类器(决策树)的迭代计算实现准确的分类效果,实现了梯度提升框架下的机器学习算法,已经在实践中证明可以有效地用于分类和回归任务的预测挖掘。此算法对于处理游戏 K 海量游戏玩家行为日志数据非常合适。

1.1 决策树

本方法的基础是决策树,决策树是一种基本的分类与回归方法,可以认为是一种 if-then 规则集合。决策树由节点和有向边组成,内部节点代表了特征属性,外部节点(叶子节点)代表了类别,决策树的学习就是利用已经有的数据学习各种规则对未来未知的数据进行预测。

但决策树算法过于简单,对于一些比较复杂逻辑关系的数据,决策树无能为力,或者容易出现过拟合,尤其是在网络游戏中单玩家可以执行的动作超过 4000 个,各种属性十分复杂之情形下。

1.2 集成学习

通常一个基模型很难保障预测精度,常见的解决思路是采用树的集成模型,把多个树的预测综合在一起。假设有 K 个树,树集成模型为:

研究21.jpg

其中fk 是函数空间 F 里面的一个函数,而 F 是包含所有分类树的函数空间。树集成模型参数包括每棵树的结构以及叶的得分,可以简单地使用函数 fk 作为参数,Θ= { f1, f2, f3,....,fK}。目标函数包含损失函数和正则化项:

研究22.jpg

其中:

研究23.jpg

XGBoost 的正则化项 ? 包括 L1 和 L2 正则。优化目标函数实际上是求解分类树的结构和叶分数,立即训练所有的树是不容易的,这要比传统的优化问题困难得多。

XGBoost 采用增量训练(Additive Training):每一步我们都是在前一步的基础上增加一棵树,而新增的这棵树是为修复上一颗树的不足,我们把每 t 步的预测用 fi (t ) 表示,这样我们就有了:

研究24.jpg

利用上面的增量学习的方法,训练 XGBoost,用牛顿法训练每一颗树。

XGBoost 在代价函数里面加入了正则项,用来控制模型的复杂程度,正则项里包含了树的叶子节点个数、每个叶子节点上输出的 score 的 L2 模的平方和。从 Bias-variance tradeoff 角度来讲,正则项降低了模型的 variance,使学习出来的模型更加简单,防止过拟合,这也是 xgboost 优于传统 GBDT 的一个特性。XGBoost 借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算。XGBoost 在特征粒度上面并行计算权重,在我们的游戏数据当中有大量的特征,我们去并行计算每个特征的信息熵,加速了训练过程。

2. 埋点数据挖掘与分类过程

对游戏 K 的数据挖掘过程流程如下:

研究34.jpg

具体步骤与相关数据如下:

2.1 实验数据

利用游戏 K 的 2017 年 8 月 4 日-8 月 10 日数据,一共有 97203 个用户,其中 VIP 用户共有 4448 人。VIP 用户就是付费玩家,而非 VIP 用户就是非付费玩家,两类玩家组成了对数据的分类标签,用于监督学习训练,该数据量为 25.2GB, 而半年其他日期数据可作为验证数据集。

2.2 数据清洗

清除了一部分从一开始 VIP 字段就为 1 或者以上的用户,这类用户一共有 379 人,这类数据为噪声数据所以清除。

很多流失用户在游戏开始时,只有很少的点击动作,而这类流失的用户的点击动作基本相同,都是在引导阶段就流失,而这类用户大部分因为不喜欢这一类游戏故而流失,而这类用户的点击不能够提取有效的用户偏向信息,故而剔除,约 9000 人。

有少部分用户的起始日期不在 8.4-8.10 这个范围故而清除,约有 100 人。

有一部分用户动作发生的时间戳不对故将这类用户清除约有 90 人。

2.3 特征提取

1)动作点击概率

在游戏 K 的数据中,使用用户点击的所有动作作为用户的特征,在这一周的数据里共有接近 8000 个动作,删除了有 data leaking 嫌疑的动作,比如带有 VIP,recharge,yueka,chongzhi 等字眼的动作,并且将用户点击动作的概率差别较大的动作做为特征。最终抽取出约为 2000 个动作,也就是 2000 个特征。其中:

1511341527603628.jpeg

2)其它信息的提取

使用用户的金币变化率,黑钻变化率,钻石变化率,战力变化率为特征。其中每个变化率的计算公式如下:

1511341528928356.jpeg

需要特别注意的是:以上变化率不是随时间的变化率,而是以玩家点击动作量的变化率。

2.4 使用 XGBoost 提取关键特征

XGBoost 会提取出对分类有指导意义的特征,并且对特征的重要性进行排名。XGBoost对每一个特征都会有一个分类重要性的衡量,这个重要性在数学上就是每一个特征在 XGBoost 训练出来的所有决策树中的信息熵的平均值。

2.5 分类过程

分类器的量化评价标准是分类的精确率(precision)和找回率(recall)和准确率(accuracy),其定义如下:

研究26.jpg

分类的具体过程如下:

1)选取游戏 K2016.8.4-2016.8.10 的数据,提取了用户在成为 VIP 用户之前的所有的动作数据(成为 VIP 之后就不能够提取了,因为成为 VIP 用户之后动作数据就不太一样了),每个动作使用点击概率量化,采用这个指标可以防止游戏时间长度不同带来的 data leaking 的问题,而且从某种程度上来说,该值表明了用户的倾向。

2)为了防止用户点击动作类别的差异性带来的 data leaking 的问题,剔除了只玩了不到两个小时的的用户。

3)因为付费用户和非付费用户数量上的差异性,采用了重采样的方法获得了平衡的数据,最终训练集当中的付费用户为 6042 人(实际为 3021 人),非付费用户 7095 人。测试数据集当中付费用户为 896 人,非付费用户为 5023 人。

最终将上面获得的特征数据放入 XGBoost 进行训练,当仅仅有动作特征时最终的测试指标如下:

研究27.jpg

当加上用户的金币变化率,黑钻变化率,钻石变化率,战力变化率时最终的测试指标如下:

研究28.jpg

2.6 结果及结论

在分类之后 XGBoost 提取了 200 个对分类有指导意义的动作,并且统计了动作的二级前缀,最终得到前七个有意义的结果如表 1。

研究29.jpg

表1: 动作前缀及次数和所属界面

使用点击概率的原因是 VIP 用户点击次数天然就大于非 VIP 用户,使用点击次数也会产生时间上的信息泄露。点击概率消除这中信息泄露,本身也表明两类用户点击的倾向程度,在数值上更有表达能力。

点击概率比值: 将付费用户的动作点击概率除以非付费用户的动作点击概率,如果大于 1 就说明此动作付费更倾向于点击。

用XGBoost 提出来的对分类有指导意义的动作,也就是对应的重要性较大的动作的VIP点击概率,非 VIP 点击的概率,VIP 和非 VIP 点击概率的比值以及动作的意义如下面的三个表所示:

研究30.jpg

表2:与装备有关动作

研究31.jpg

表3:聊天动作

研究32.jpg

表4:Richman 相关动作

上面的表格当中都是用户的动作类信息,没有引入其他信息。除了上面提到的动作特征外,加入了每个用户成为付费用户之前的金币,钻石,黑钻,战力的变化率,这四个属性的变化率的计算如特征提取第 2 点中描述,相关属性的变化率如下表所示:

研究33.jpg

表5:道具变化率

最终将上面的四个表格中获取的动作特征放入决策树中进行训练和预测,正确率能够达到 85.01%,说明上面的提取动作相对比较有代表性,非常值得去统计上表当中的相关指标。

实验中 VIP 的召回率为 0.83,相对比较高,其中将非付费用户分类成付费用户,从某种程度上来说可以对这部分用户进行差异化服务(打折,活动等),从而提高收入。

在表 1,2,3 中,某个动作的点击概率的计算是付费用户或者非付费用户的的点击数量除以该类用户的总的点击数目,表示了该类用户对该动作倾向程度,点击概率的比值就是付费用户点击的概率除以非付费用户的点击概率,如果概率比较大于 1 表示付费用户更倾向该工作,小于 1 表示非付费用户更倾向该动作。

2.7 结论及分析

由上面的分析,得到结论如下:

1)通过分析表 1 和 2 可知:

从表 1 能够发现付费用户行为偏好中,“锻造”行为占优。而锻造与游戏的核心追求--装备密切相关。

表 2 当中的动作的概率比值都大于 1,而且很多都大于 1.5,表示 VIP 用户比较喜欢装备和物品之类的道具,而且从没有标明动作具体意思的动作的表面意思(比如 /itemList/icontent/c1/item2it/mc_list/icontent/c2c2 能够显然看出这个是与物品相关的动作而且从统计上面可知这个动作是 VIP 非常倾向的),能够看出付费用户非常喜欢装备,而且用概率值量化的倾向程度说明付费用户的倾向程度超过了非付费用户的 1.5 倍。

综合以上数据,我们建议加大游戏对装备的视觉展示、顶级装备的前期试用等手段,进一步培养玩家对装备的认知与追求,提高游戏的付费率。

2)通过分析表 3 可知:

付费用户的动作的概率比值大于 3,说明 VIP 用户非常喜欢该类动作,也就是说,VIP用户比非 VIP 更喜欢聊天,而且倾向程度是所有动作差距最多的,相差甚远,这可能是因为付费用户比较喜欢在游戏里的社交,说明在游戏中加入社交元素有利于玩家付费。

3)通过分析表 4 可知:

表 4 中的动作都是与游戏中的 Richman 有关,在表 4 中:点击 Richman 按钮是个区分度非常高的动作,很多用户在这个动作发生的时间段进行了付费,猜想这些动作是游戏当中非常优惠的活动。通过与游戏 K 的策划沟通知道,Richman 是游戏当中非常优惠的活动,这个活动能够花费不多的钻石而获得游戏里面的顶级装备,而这个顶级装备在商城里购买时,需要消耗大量的钻石。

通过数据分析发现,装备是这个游戏的核心追求,建议增加游戏对此类功能的开放次数,提高付费率。

4)通过分析表 5 可知:

付费用户道具的变化率(也就付费用户平均每次点击获得的道具或者战力数量)都是高于非付费用户,付费和非付费变化率比值都大于 1.3,甚至钻石的变化率比值大于 2。

这是因为此类游戏玩家喜欢 ARPG 类的游戏,对这类游戏比较熟悉,或者这类玩家属于滚服玩家,所以当发现某一些用户的熟练程度比较高时,那么他很有可能成为付费用户,所以可以给予适当的优惠,从而刺激消费,提高收入。

3. 总结

我们采用 XGBoost 分析游戏埋点行为数据,取得了有意义的结果,通过付费用户分类,可以发现不同用户的倾向,可以发现付费用户行为特征,从而提高付费率。

本文的方法和结果都是初步的,一些更深入的特征挖掘没有进行。例如,我们没有考虑玩家动作之间的相关性,且参与分类的特征数量较小。我们下一步计划是挖掘动作的组合,且在特征提取之时加入更复杂的特征以及特征组合,并使此过程自动化。

参考文献

[1]Nassim Nicholas Teleb: 反脆弱,中信出版社,2014 年

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

[3]Nielsen, Didrik, Tree Boosting With XGBoost - Why Does XGBoost Win "Every" Machine Learning Competition? https://brage.bibsys.no/xmlui/handle/11250/2433761

关于作者:

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

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

文章评论
游戏葡萄订阅号