GRG分析组 | 聚类简介第四部分:聚类算法

Posted DataEye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GRG分析组 | 聚类简介第四部分:聚类算法相关的知识,希望对你有一定的参考价值。


原文说明:该文由GRG研究组原创翻译,如需转载请注明出处。

GRG游戏研究组:立足游戏开发、运营,专注于全平台的游戏研究;从玩法、系统、数据等多维度进行全面剖析。


在聚类分析系列的第四部分,也是最后一篇文章中, 我们提供了几个实例来说明如何用游戏中玩家的数据进行聚类分析的操作实践,以及如何展现聚类分析的结果并使其可操作。泡一杯咖啡,找一把舒服的椅子,好好享受这一刻。

我们已经讨论了随意处理在聚类分析基础上的应用,以及在大量的模型、算法和游戏行为数据分析运算上相关的应用。鉴于人类决策力的权重,运行一个聚类分析看上去令人望而却步,现在已经到了可以用实例来说明整个过程如何在实践中具体操作的时候了。这表明准备、读取数据和运行聚类分析是可能的,甚至可以在没有专家协助的情况下操作。顺便说一下,这也适用于预测分析的情况, Dmitry Nozhnin曾撰写过一篇相关的文章《Predicting Churn: Data-Mining Your Game》。

本文以一款MMORPGTERA》(神谕之战)为例,运用基线算法,K-均值聚类(之前曾在本系列文章中的第二篇做过介绍)。简单地说,k-均值聚类试图划分为k个簇,每个簇与最近的平均值聚类,形成聚类原型(有关k-均值运算的相关问题可以查阅Daniel MacKay的书《信息理论,推理和学习算法》)。

再举一个例子,本文着眼于如何利用神经网络在以前的《古墓丽影》游戏发展玩家配置文件;本文采用聚类分析作为时间函数。最终,我们在这里展示玩家之间的迁移集群作为时间函数的一个形象例子,使用D3和桑基图。

这篇文章的内容会有些广泛,我们将聚类算法对数据运行实际发生不同阶段的时间控制在一段午休的时间左右。我们的内容将不包括数学本身(通常我们可以让软件对数据进行处理,计算)。

TERA

让我们首先介绍《TERA》。正如之前的文章中所提到的,理解游戏的分析过程比只看到游戏的分析结果重要的多。《TERA(阿勒堡雷亚大陆放逐领域的缩写)是一款MMORPG,由韩国的Enmasse娱乐公司于20111月在本土首先发布,次年在北美与欧洲发布。游戏目前以免费的模式运营,具有典型的MMORPG系统,如任务系统、锻造系统、PVP玩法及一个完整的经济系统。玩家可以创建一个或多个角色,可以从七个种族中选择(例如亚曼,巴拉卡,卡斯塔尼克)。此外,玩家还可以选择一个职业(例如剑斗士,枪骑士, 狂战士),每个角色在游戏中可以转职为特定的职业 (如高伤害输出的DPS职业或能够吸收大量的伤害的坦克职业)

TERA中一个玩家可以创建多个角色,因此,数据集可能代表的玩家数量低于角色数量。从行为聚类的角度来看,玩家账号和游戏角色之间的差异在这种情况下并不是很重要,我们感兴趣的是群组的游戏角色表现,而不是玩家账号。

数据集

分析数据来自TERA游戏公测时的数据(包含游戏内1-32等级的角色),并包含以下行为变量(或数据挖掘中的术语)。

任务完成:完成任务的数量
好友:在游戏中的好友数量
成就:成就获得的数量
技能等级:生活技能(挖矿、草药)相关的等级水平
杀怪数量:由玩家杀死的怪物数量(包括做一个场景中击杀的小型、中型、大型怪物)
被怪物击杀:玩家角色被怪物击杀的次数

物品获得:玩家在游戏中所拾取的物品的总数量
拍卖使用: 玩家通过拍卖行所拍卖或购买的物品次数和数量
角色等级: 1级到32级的范围。在这个例子中我们将关注等级为32级的玩家角色(如果我们采用所有等级的玩家数据进行聚类分析,会给我们带来不同角色等级的变量值。例如:32级的角色将完成1000左右的任务,而一个1级角色,仅有2个任务)




公会与毁灭者。官方截图可以在这里找到:http://tera.enmasse.com/



数据准备和分析

不幸的是行为遥测就好比茅坑里的石头又臭又硬。再加上本系列第三篇文章提到的特征选择,可能是具有高度挑战性的。 这些都是分析师试图简化分析过程,并最终消除过程中每个环节所面临的关键问题(Nils Pihl在这篇《Opinion: Big Data in the Game Industry》文章中有进行描述)。在当前情况下,仔细地通过数据集潜在的行为特征,选择那些接近游戏的关键技术,因为这里的目标是获得玩家们如何处理他们高等级游戏角色的方式,方法。我们在职业不平衡上尤其感兴趣,例如,有一群玩家表现得很糟糕(或令人质疑的好……)。任何不完整的数据都会被清洗, 进行各种类型数据的分析,试图发现某些奇怪的异常值并对每一特征数据(行为变量)进行分布检验。

规范数据入库

游戏行为分析的一个典型问题就是混合数据类型。当我们要同时分析多个变量(或行为特征)的时候,这种情况是非常常见的,如多元回归。这样做通常需要采用标准化策略,然而,这个分析过程中常常被忽视,并具有潜在的灾难性后果。

这个我们已经在前面的文章中已经有所反馈,很容易犯错,如,聚类分析使用标准分析或统计软件包,但是这些自动化的流程并不是那么理想。数据挖掘(仍然)需要人工入库和人工决策。

标准化策略名称如Min-Max和方差归一化(或零均值化,ZMN)。这可能听起来很晦涩 (分析师喜欢将简单的事情复杂化),它真正的意思是,我们试图把数据在它们变化的范围和类型中将其转换为一种格式,不会搞乱聚类分析。例如,如果有一系列数据的变量范围值在3-10,还有一组变量的范围从0-1,后者的影响要大得多因为它是一个二进制值。在这种情况下,它可以使所有的变量为0-1之间的优势。数据挖掘正如字面上那样充满了各种各样的标准化数据的方法,通过几个简单的例子,zmn规范场值是根据均值和标准偏差值所决定的。最小最大化数据转换成一个确定的范围内归一化最小值(α)和归一化最大值(β)。在这里看到更多关于这些过程。在选择或标准化非常依赖的情况下,我们发现最小值和最大值的标准化是非常敏感的,当正在处理的数据集离群时,我们建议使用方差归一化。下面为我们目前使用方差归一化的结果(使用这两种技术的结果并没有相差太大)。

阈值定义

在聚类分析中人工决策的关键要素是确定集群的数量。事情是这样的,一个集群算法可以给你想要尽可能多或尽可能少的集群,这个时候,每个数据点都是一个集群!这取决于决定阈值时就确定是否是一个集群。有一个获得最佳数量的集群分析方法,分别为均方误差估计,交叉验证和正流行的碎石图;但实际上,决定有多少集群在一个数据集是人工运算分析的结果。有时,它带来更好的信息来使我们用更多或更少的集群。这取决于特定目标的分析。在实践中,我们尝试不同数量的集群,来看最好的和最易判断的结果。大多数分析或统计软件包会自动生成一些适应性情节,当运行一个集群分析并帮助解释。TERA,不论我们从哪一级别范围来看,发现6 – 7是最适合的集群。这可能并不奇怪,作为一个玩家的应有的自由度,通过游戏方式影响到游戏角色的分级,请继续往下看。

TERA中的集群行为及特征

利用k-means的方法分析6个集群。我们发现一个集群中最高的值在所有或大部分的行为变量中,并且还存在另一个不理想的值。剩下的四个集群所包含玩家数据表现一般,但具有不同的高或低分数,即他们在游戏中所关注的内容不同。

精英玩家:在所有因素中获得高分,而且并不经常被游戏AI击败。这些玩家在植物采集和矿物采集中的技能表现非常低。这表明这些玩家更关注于其他的技能表现,无关痛痒的生活技能并不会影响到这些玩家在游戏中的表现(植物和矿业提供资源和装备,然而,资源也可以通过完成任务或拍卖行来收集)。这些玩家的直接利益,并不是仅仅归因于他们的投入,同样来源于他们强大的社交网络(大量的好友):维系与他们之间的关系并通过合作来确保一个可持续发展的团体。

休闲玩家:在所有因素中得分最低的玩家(包括死于怪物的击杀次数),比例达到39.4%。这些玩家,即使等级已经到达32级,他们在游戏中的表现依然很渣,游戏中任何一件事对这些群体的人来说都是极具风险。

除开这各有趣的集群之外,还有2组集群表现出比较好的分值,普通玩家高玩,后者的分数是除了精英玩家外的佼佼者。调查其特性,比如游戏时间,可以知道如何帮助这些玩家步入精英的行列。这两组的玩家在植物采集和矿物采集的技能中表现很差;然而,他们匹配后面两组数值,工人1和工人2。这些分值与普通玩家和高玩的区别类似,虽然矿物采集和植物采集技能并不高,但具有相对较高的为战利品数量,即他们通过打怪拾取更多的物品。

Tera6个集群中,只有两个集群的玩家似乎花时间学习非战斗技能,这可能表明一个设计问题(记住,这些测试的数据并不能代表当前的游戏)。资源收集这样的技能是MMORPG的经济基础,只有大约25 - 35%(取决于级别)的角色在非战斗技能中具有较高的等级,新的原材料的流通可能是不够的。另外,从成本效益的角度来看,核心游戏特性,比如,非战斗技能应该是被大多数玩家所利用的基础技能。

致谢

Acknowledgements

我们感谢几位同事分享他们的见解并反馈在这篇文章中,其中包括 Christian Thurau, Fabian Hadiji Shawn Connor






注:本文为GRG原创翻译,如需转载,请注明出处,谢谢合作




以上是关于GRG分析组 | 聚类简介第四部分:聚类算法的主要内容,如果未能解决你的问题,请参考以下文章

部分聚类算法简介及优缺点分析

谱聚类算法总结

携英第四期丨机器学习之密度聚类算法

机器学习算法聚类分析-2 聚类算法的分类,层次聚类算法的选择

机器学习笔记:K-means聚类算法的Python实现

聚类方法简介