基于时间序列的玩家行为模式分析数据管道关注共 7367字,需浏览 15分钟 ·2022-05-24 05:01 导读:本篇是2022年度网易数据分析大赛等奖作品分享,来自于网易雷火用户体验研究中心。大家好,我是来自网易雷火用户体验研究中心的周壹,首先感谢网易数帆的同事们组织了此次数据分析大赛,我的小组参赛的题目是《基于时间序列的玩家行为模式分析》。我将从三个方面给大家介绍:第一部分,这个分析的背景与难点;第二部分,所采取的解决方案与实际案例;第三部分,相关成果与贡献。1背景1. 项目背景随着大数据技术的不断发展和行业竞争日趋激烈,用户的精细划分成为重要课题和前进方向。更精确、立体的用户划分、用户画像正发挥越来越重要的作用,数据驱动的游戏产品迭代正在不断发挥活力,游戏与数据分析的关联越来越紧密,精确的游戏用户行为分类的重要性越来越凸显,并在诸如精准营销与个性化推荐等具体应用上发挥至关重要的作用。在这个大趋势与大背景下,当我们部门代理《一起优诺》这款游戏时,如何在这款产品上通过精确的用户分类来实现个性化推荐并寻求增长,就成为了一个关键的课题。并且在用户时间碎片化、移动端设备硬件提升的大环境下,免费休闲游戏的市场得以蓬勃发展,《一起优诺》在全球范围内已经有过亿的用户。使得这一课题,不仅是为了解决一个当下的运营策略问题,更是可以为更长远、更全局的游戏运营提供有价值的观点与方法。2. 项目难点个性化推荐的核心是将进行用户分类,并精细化推荐策略,而在工作展开的过程中,我们发现,传统的用户分类方法在《一起优诺》中的表现不佳。具体来说,这类免费游戏、尤其是移动端的卡牌类等休闲游戏,因为游戏机制与体量的轻量化,玩家的上线、游戏行为更加离散而随机,即更多呈现利用碎片化的时间进行游戏,也相对缺乏长期贯穿的养成目标;同时玩家的游戏模式相对集中,即绝大部分游戏行为也围绕几种模式的卡牌游戏展开。上述特点就令其与在很多讲述游戏玩家分类的论文里所举例的MMORPG游戏有很大的不同,在那里,游戏内的能力养成(如等级、装备)、社区结构(如公会、小队),以及核心目标(如副本、排名、成就)对用户的游戏行为起到至关重要的影响,并且玩家在游戏塑造的世界中可以进行探险、社交、公会活动、任务、副本、游戏内金融活动等等各种具体的目标与行为。具体到用户分类中,传统的用户分类方法,更多通过用户的汇总数据来进行。一般来说,汇总数据指历史上全部(或最近一段时间)的某项数据的总和、均值或最新值。例如使用玩家的历史总付费金额度量玩家的VIP等级,使用玩家的最新人物等级或装备评分等度量玩家的战斗力,使用玩家某赛季的最高段位来度量玩家的竞技水平等。此外,例如在MMORPG中常见的玩家间亲密度、修炼等级、成就点数等,都是属于汇总数据。在MMORPG中,玩家的行为维度可以非常之多,利用这些维度的汇总数据,配合恰当的算法,可以很清晰地分类出不同游戏类型的玩家,如PVE爱好者、PVP爱好者、剧情爱好者、公会领导者、独狼玩家、社交达人等等;并且MMORPG中,玩家的行为数据是较为连续的,具有一定目标的玩家,在投入期间会尽可能不错过每一次重要的日常或副本,并且一些高难度的具体目标也会需要长期而持续、循序渐进地投入才能实现,这都让用户会留下完整详实的数据轨迹以便进行分类。而在《一起优诺》,正如上文所说,作为休闲卡牌游戏,玩家的相关数据具有两个特点:维度相对较低;序列稀疏性相对较强。这就使得,如果使用汇总数据,度量一个玩家的特征可能会过于宏观,这就会导致玩家的分类过于粗略。并且我们注意到这样一个问题:拥有相同用户汇总数据背后的行为逻辑可能全然不同。下面的图中,举例了四种典型的用户行为序列,他们都表示“在一个月时间内进行了20局游戏”。如果以累计局数(一般来说也与角色等级强正相关)看待的话,他们是同一个类型的玩家,但显然在考虑了时间轴的特性,这四类玩家的行为模式是截然不同的。 一切基于汇总数据进行的用户分类都可能有这种缺陷,而休闲游戏中数据的低维度与稀疏性这两个特点则强烈地放大了这一局限。3. 技术途径对此,相比使用汇总数据,我们使用用户各个行为的“时间序列”来对用户进行分类。这样就可以一举解决上述的问题:既可以区分拥有相同汇总数据而具体行为模式不同的用户,又可以极大扩展用以分类用户的数据的维度(如一个月的游戏局数在汇总的角度是一个维度,在时间序列是30个维度)。不仅是游戏产品,对于很多用户行为需求较为单一且集中的互联网产品,都普遍存在汇总数据维度过少、用户分类过于宏观的问题,都可以使用这一思想拓展分类的精确性。同时在这里我们指出,虽然这个方法是先针对《一起优诺》这款休闲卡牌游戏使用,但并不是只对这类产品生效。在下面的具体解决方案部分可以看到,我们的方法中拥有足够调节的参数自由度,使其可以广泛适用于普遍的产品,只要希望在某些具体的维度上将用户的更细致的、考虑时间先后变化的行为模式也区分出来,都可以使用这种方法。使用包含这套用户分类方法的个性化推荐方案在《一起优诺》中取得了显著效果;后续发展出来的雷火UX推荐系统,当前已经在雷火系的多款游戏中接入并提供持续的推荐服务,根据所服务产品的机制与类型不同,在付费上可以带来百分之几至百分之十几左右的提升;在游戏代币回收上可以带来百分之几十甚至更高至数倍的提升。并且能带来AB测试所需的流量成本大幅减小的优势。2解决方案1. 时间序列距离对于时间序列聚类,最重要的核心就是度量时间序列的相似性或者说差异性,即定义两个序列的距离。两个序列之间的距离,即是两个用户的行为模式之间的差距大小,也最终决定了用户行为模式的分类结果。也就是说,距离的定义要根据我们希望得出怎样的行为模式区分来确定。也由此,当分析的侧重点不同时,就需要用到不同的距离定义。 上图即为典型的时间序列之间的距离定义方式。不同的时间序列的距离定义的侧重点不同,有些更适合区分曲线的整体升降趋势、有些则会逐点精确计算距离从而擅长捕捉细节上的差异的贡献。具体在这里所需要的用户分类上,我们关心的不仅是用户行为序列的形状,也是用户行为序列的量级。即时间序列的形状差异和数量差异都会对距离有所贡献,形状差异越大、数量差异越大,序列的距离也就越大。但我们又不希望距离对细节过分地方大——典型的例子是,如果用户A倾向于在每周六进行游戏,而用户B倾向于在每周日进行游戏,同时用户C倾向于在工作日进行游戏,那么显然用户A、B与用户C之间的差异是远大于用户A、B之间的(工作日、周末的区分)——而逐点计算差异的欧式距离并不能实现这一目标。同时,具体在我们所分析的游戏中,当目标序列较为离散、较多呈现为孤立的数值峰,所有基于逐点计算差异的距离定义方式性能都会受到很大限制,他们只有在序列空值较少、整体变化较为连续的情况下才有较好的表现。针对这个情况,我们的距离定义应当能够满足:1)序列绝对值起到最大贡献,对齐的度量是时间与数值的绝对值,而不是形状或趋势;2)稀疏序列的数值峰的间距能够体现到距离中,间距越近距离越小,也就是说能对序列数值的平移有一定的容忍性,并且将容忍的程度体现在最终距离大小里。根据这些需求,我们引入平滑化序列的欧式距离(SEUD): 如此,基于平滑化序列的欧氏距离,即可以解决上述的两个问题。不仅如此,通过对平滑系数的调节,可以控制序列绝对值、间隔容忍程度各自对距离的贡献大小,提供了一个额外控制的自由度。使得方法的潜力更大,能够对不同类型的产品提供更有针对性的调整,也能对后期算法的扩展调优提供更多的选择。在这里我们选取若干游戏内的典型用户行为序列并计算之间的距离。 上图左侧为几种游戏玩家的行为序列,柱状图为原始序列,折线为平滑后序列,横轴为用户新增之后经过的天数,纵轴为对应天数内发生对应行为的数值。此图中,对应数值为当天进行的游戏局数。其中样例2为样例1的等比缩减;样例4为样例3的后三个数据的一天平移;样例5、样例6为较为常见的用户典型行为。上图右侧为各个序列的距离在我们给出的六种定义之下的距离值,全部都已经经过归一化。图中可以看到,不同距离定义下,对序列相似程度的刻画差异非常大,这些距离定义有其不同的侧重点、不同的应用场景。对于我们所关心的区分要求来说,SEUD是最合适的:样例1与样例2,行为趋势(形状)一致但绝对量级不同,我们需要将两者区分出来;同时我们需要样例3和样例4的距离足够接近以体现其行为的相似性。除了上述提到的优点外,平滑算法还带来其他几个额外的优势:1)一定程度上去掉了噪音影响,避免了噪音对距离定义带来的干扰、进而干扰聚类结果。一些工作中使用对序列进行趋势分解来解决这个问题,而我们平滑后的序列本身已经进行了一定程度的噪音消除。2)基于欧式距离的算法,保持了高维向量在欧式空间的几何性质(有些距离定义,只能给出两个序列之间的距离值),使得可使用的聚类方法的选择更多样。3)相比某些对空值过于敏感的距离定义,SEUD更能容忍稀疏序列,能够应对更多的用户数据场景。2. 时间序列聚类正如上文所说,使用SEUD作为时间序列的距离定义,保持了欧式空间的几何性质,使得大部分聚类算法都可以应用,可以根据数据规模与产品特性选择。在这里我们展示使用k-means对玩家游戏局数、金币变化数这两个序列的聚类结果。所有的数据都对齐玩家新增的天数(而不是自然天数),包含前3周的行为(在我们的选取规则中,所有数据范围内的玩家的前3周都经历相同的大版本)。下面的案例作为演示,我们对玩家群体的选择经过某种规则的过滤与抽样。其中,游戏局数即玩家每日进行的匹配模式的局数,因为在《一起优诺》中,玩家的核心玩法就是游戏牌局,用户的一切行为,绝大部分的玩法(经典模式、欢乐模式、房间模式、剧情模式),最终都体现为牌局。从这个意义上说,我们使用每日的对局数,代替同类型研究中常见的每日在线时间,使其能更表示出玩家在游戏上的投入时间量度。而金币变化数,具体是指玩家每日中因为匹配模式的对局导致的金币变化的绝对值的总和。玩家可以通过对局获胜不断累积金币,并不断挑战更高倍率的模式,也可以通过日常任务或充值付费的方式获取金币。不断收获更多的金币、冲击更高数字的倍率模式也是游戏的核心追求之一。而因为倍率的设置梯度很大(1、2、4、8、20、40、80、200),玩家在对金币与倍率的追求上也会有很高的区分度,反映出不同的玩家类型特征,例如谨小慎微、一掷千金等等。如果说游戏局数非常适合度量玩家对“游戏时间的投入”,那么金币变化数就非常适合度量玩家对“游戏深度的投入”。 上图中为对游戏局数进行聚类的结果。这里我们对所有折线图采用了同样的纵轴比例,提供一个直观的对比。图中直观展现了聚类后的用户行为特性(聚类中心曲线、聚类组人数比例)以及聚类质量的好坏(方差、热力图)。图中各个类的顺序按照用户人数从多到少排列。从聚类中可以看出,用户在游戏时间的投入程度上,可以分为较为明显的6类:其中类1和类2都是以近似递减的方式失去兴趣类3和类4都是在进入游戏之后的最初几天有一个投入程度的突增,然后开始快速下降;类4与类5都是兴趣保持较为持久的用户。六个分类对应上述的三种模式,每个模式有两组,曲线变化形状类似,而依据曲线的绝对值被分到不同的类中。这个结果说明,我们采用的SEUD和对应的平滑系数选取,很好地在k-means中实现了我们的目标,即既能区分出用户序列的形状,又能区分出用户序列的量级。通过对各个类用户的曲线的走势以及他们人数占比的研究,可以帮助游戏设计者决定应该开发怎样的整体游戏新手阶段引导、难度梯度设计,来整体上延长玩家的的总体兴趣与投入时间,并且总体上兴趣最为集中的时间段中引导玩家们转化为核心用户。 上图中为对游戏金币变化数进行聚类的结果(因为该数值不同用户之间差异巨大,聚类时与图中均对原序列取对数),图中内容结构与上图一致。从聚类中可以看出,用户在游戏深度的投入程度上,同样可以分为较为明显的6类:其中类1表现为对金币的投入程度极端陡峭地下降,而在一周左右有一个很小的回升;类2至类4的行为模式较为类似,都是经过一小段平缓、缓慢下降之后,开始极快速地下降,区别在于这三类的初期缓慢下降阶段长度不同,持续越长的类人数越少,这表明更多的玩家是快速失去兴趣的,能越长久坚持兴趣的玩家,是越少的,也是这类产品的普遍规律;类5则是在整个21天内都是持续缓慢下降的玩家,可以说是在游戏最稳定、最有潜力的用户。类6的表现较为特殊,反应为最初快速下降,后来有一个明显的再提升阶段,并再次下降。在游戏中,我们既需要引导投入程度不高的玩家进行游戏深度上的投入,又要避免某些玩家在数值失去游戏目标追求。我们可以依据不同曲线的玩家的占比,设计出整体最优的引导方案,有针对性地延长整体玩家的兴趣衰减的时间,提升各个阶段的用户对产品的投入度。3. 付费行为关联对游戏产品的分析,最重要的核心目标之一就是付费。但如果我们只局限于观察聚类序列期限内的充值,而最终目标又是优化付费时,就会容易犯过拟合的错误。这也是我们上述的聚类对象没有选用付费数据的原因。对此,我们把付费数据分为两个部分,对于每一个观察样本中的用户,我们计算了他们在观察日期(新增开始21天),以及观察日期之后的所有生涯(直到他们流失),各自的付费数。这样,我们就不仅能验证我们的聚类结果的“关联现状”的能力,亦即使我们使用前21天的行为数据聚类、然后观察与前21天充值数据的关联;我们还能探索我们的聚类结果的“预测未知”的能力,即是使用前21天的行为数据聚类,然后观察聚类结果与21天之后用户充值之间的关系。 图中展示了两个时间序列聚类结果中,各个类对应的付费用户的付费分布情况。由此可以看出,首先,无论是局数聚类还是金币聚类,都是整体局数越多、整体金币数越多,对应的付费情况越好的(注意到金币聚类中,类5的数值时比类6大的,各个类始终按照人数比例排序)。但如果观察用户的短期与长期付费行为的差异,则两个聚类则表现出明显的不同,局数聚类的各个类,之后的付费都高于之前;而金币聚类则相反,这意味着,以游戏局数时间序列——或者说用户对产品的时间投入——对用户进行划分,更能把用户按照后续付费潜力区分出来,即玩家对游戏持续投入时间的程度更能反映长期的付费潜力。反之,金币变化数聚类——或者说用户对大数字的追求——则更能体现用户的短期付费潜力。如此,我们可以根据我们迭代目标的不同,使用不同的特征进行用户行为数据的时间序列聚类分析。4. 扩展讨论另一个常见的问题是,基于时间序列的聚类,与基于汇总数据(总局数、总金币数)的聚类,表现存在怎样的差异,以及他们对用户付费行为的划分的代表性是如何的。我们这里设计了一种可视化方案,即如下图。我们使用横轴表示用户在新增之后21天内的游戏总局数,纵轴表示用户同样情况下的总金币变化数(也同样做对数映射)。每一个矩形表示一个发生付费的用户,矩形的宽度表示用户在新增21天内的付费,高度表示用户在21天之后的总付费。当宽度与高度一致时,表示用户在前后两段时间内付费数一样,黑色实心正方形为一个此种情况下的比例示意。当之前或之后不发生付费时,为了避免矩阵不可识别,我们设置了宽度或高度的下限。 通过使用不同的颜色标记出聚类的结果,在这个可视化方案下,我们可以将五个维度的信息(游戏总局数、游戏总金币数、前21天付费数、21天之后付费数、聚类结果的所处类别)汇总在了一张二维图内。这种高度概览型的可视化图表可以让我们快速掌握游戏付费用户的特征分布。图里可以看到,无论是基于哪种时间序列数据的聚类,都表现出类似的性质:整体上具有分布的倾向性的同时,其各个类在二维平面上都存在一定程度的交叠。尤其是基于游戏局数的聚类,交叠非常明显。而如果是基于汇总数据的聚类,则这部分交叠是无法在这个平面上区分出来的,也就是说会损失相当一部分基于用户具体行为变化的用户行为信息。同时,此图中所设计的可视化方案,也可以看出,后续付费潜力高的用户(矩阵表现为高度比宽度大),多分布在游戏局数较多的一侧,而与金币数关系相对较少,这与我们上一部分的讨论是一致的。这种可视化方法,不仅可以验证上述时间序列聚类方法的有效性,也可以用于高速而直观地展示多个维度(横轴、纵轴、颜色标签)下的数据信息与用户行为(包含短期、长期付费行为)之间的关联。一个典型的例子是用于头部玩家、重点玩家的统计或监控,可以快速发现有无离散在聚集区之外的异常用户,并可以直观判断该异常点的状况(如是否后续付费乏力、是否属于活力快速下降的玩家类型)。3成果与贡献结合其他雷火UX积累的用户个性化分类与推荐的业务经验与配套业务,当前已经在雷火系的数款多人在线RPG与多人在线ACT游戏里接入并提供持续的推荐服务,所有接入的推荐系统服务,收益全部显著超越对照组,在游戏代币回收上,不同的产品在使用雷火UX推荐系统后可以带来百分之几十甚至更高至数倍的提升。同时,在进行AB测试时,如果先使用基于这套方法进行的用户分类来生成各个测试分组,就能大幅减少AB测试所需的流量成本。 图中即为该方法能大幅减少AB测试流量成本的原理示意。本质上是,此前的做法一般采取完全随机分组,这就需要依赖足够的用户流量来对抗统计随机性;而更加精确的测试组分配方法就可以降低所需的事例数的要求。本分析所创新的相关方法,发表在第二届计算与数据科学国际会议(CONF-CDS 2021,IEEE收录,DOI: 10.1109/CDS52072.2021.00070)基于用户行为序列进行用户精准分组匹配实现精准用户分组的AB测试的方案与技术,当前已经申请两个专利:《一种多分组AB测试管理与实时反馈系统》 (已获得专利发明证书) 《一种精确分组用户的实时AB测试投放与分析系统》 (已提交专利局)·················END·················推荐阅读我在字节做了哪些事写给所有数据人。从留存率业务案例谈0-1的数据指标体系数据分析师的一周超级菜鸟如何入门数据分析?欢迎长按扫码关注「数据管道」 浏览 25点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 网易:基于时间序列的玩家行为模式分析大数据科学0Python时间序列分析指南!Datawhale0SQL数据分析 - 时间序列俊红的数据分析之路0独家 | Python时间序列分析:一项基于案例的全面指南数据派THU0基于ClickHouse的用户行为分析实践程序源代码0Python数据分析案例之时间序列分析概述:什么是时间序列 顾名思义,时间序列就是按照时间顺序排列的一组数据序列。时间序列分析就是找出数据变化发展的规律,从而预测未来的走势。 时间序列分析有以下几种表现形式: ○长期趋势变化:受某种因素的影响...基于对比学习的时间序列异常检测方法数据派THU0基于对比学习的时间序列异常检测方法算法进阶0基于趋势和季节性的时间序列预测实战Python学习与数据挖掘0时间序列+Transformer!数据派THU0点赞 评论 收藏 分享 手机扫一扫分享分享 举报