一种采用增量决策树进行外挂检测的系统的制作方法

文档序号:14074345阅读:262来源:国知局
一种采用增量决策树进行外挂检测的系统的制作方法

本发明涉及游戏外挂检测技术领域,特别涉及一种采用增量决策树进行外挂检测的系统。



背景技术:

多人在线角色扮演类游戏创建了来自全球各个角落玩家参与的虚拟社会世界。玩家之间可以相互交互,并在培养升级他们的游戏角色时花费大量时间、精力和金钱。调查发现仅2016年,全球多人在线角色扮演游戏带来198亿美元的收入。然而,正由于这种游戏的火热,它也成为了一些网络犯罪的温床。这之中很重要的一种行为是非官方允许、批准的现金交易,这种交易行为是用真实货币来对某些虚拟物品进行交易。一些高级的游戏外挂现在专门进行这一类相关的违规行为,获取利润,但却严重影响了游戏平衡,伤害游戏运营、游戏公司收入和玩家体验、游戏经济系统乃至整个游戏的可持续发展。

为此,游戏运营商采取了大量措施,常见的检测外挂的方法有三大种,分为客户端侧、网络侧和服务器端侧检测方法。客户端侧用类似嵌入在用户主机游戏客户端中类似杀毒软件的原理来检测外挂,然而现在一些精心制作的外挂已无法被这种探测到;网络侧需要对网络流量进行分析,这又会引起网络负载过大以及网络延迟等问题;服务器端检测方法通过对服务器上玩家的日志数据进行分析。这种方法是现在比较流行的方法,他们往往将外挂检测问题看作是异常检测问题。然而现有方法存在一些缺点,比如外挂设计愈发复杂,单纯算法输入输出对于分析人员理解困难很大;另外一方面,先进的外挂还有更新升级功能,使得外挂检测变得更难。这时候,可视分析技术的引进就显得尤为重要。

已经有一些关于异常检测的可视分析系统。例如jianzhao等人的#fluxflow系统将twitter用户的转发行为可视化,结合用户属性等上下文信息,来研究异常信息在twitter上扩散的特征。nancao等人的targetvue通过一个随着时间变化赋予用户嫌疑程度的模型来帮助分析人员了解社交媒体平台上潜在的社交机器人(比如那些发送垃圾广告的机器人账户),包括他们的交流活动、行为特征和社交互动等。这些系统通过整合人的领域知识来优化异常检测的过程,但仍然把算法模型的内部过程视作一个黑盒子,分析人员不能通过他们的系统来了解算法模型的相关信息。

虽然现有的方法提供了丰富的上下文信息,但研究人员仍然无法深入参与到模型构建的过程。因此,希望的系统能够允许用户参与到模型构建中去以更好的帮助理解模型,对于一些现象寻找潜在的解释。



技术实现要素:

本发明提供了一种采用增量决策树进行外挂检测的系统,可以帮助分析人员检测外挂,理解外挂检测模型,发掘外挂以及正常玩家的行为或者动作随时间变化的特征,还能让分析人员与模型交互,进行交互式可视分析探索。

一种采用增量决策树进行外挂检测的系统,包括:

数据预处理模块,对玩家动作的原始数据进行清洗和特征向量提取;

模型生成和交互模块,将所述数据预处理模块的特征向量作为模型的输入来生成模型并输出,同时接收反馈对模型进行调整;

高层视图可视化模块,主要用并排放置的冰柱图来表示随之间变化的决策树的树结构,根据模型生成和交互模块的输出模型生成动态树图、推荐和展示面板以及准确率/召回率折线图;

所述动态树图将决策树的树结构用一种紧凑的方式(采用冰柱图)展现,所述冰柱图里面每个节点表示一个决策树的分裂节点,多个冰柱图并列放置以体现决策树随时间的变化;

所述推荐和展示面板中,在推荐面板用可排序的表格展示在所述动态树图中选中(一棵或多棵)的冰柱图的所有节点(决策树的矩形)的信息,包括准确率、召回率、精确率和出现频次等;切换到在展示面板中若在动态树图选中一个节点,用雷达分布图的形式展示这个节点中包含玩家的情况;

所述准确率/召回率折线图与所述动态树图按照时间对应关系上下布置,表示随着时间的变化每棵决策树预测的准确率/召回率。

玩家动作的原始数据是按照各种不同动作来存储的,每天每种动作一个文件(比如2017年1月1日,登录日志),该游戏一共有上百种动作。统计了在感兴趣的时间段内,每个人在不同时间片上的动作的频次。注意这里的时间段既可以是自然的时间(年月日时分秒),也可以是游戏时间(1级、2级…分别做了什么动作,对应的频次是什么)。这样每个玩家每个时间片都有一个对应的特征向量。另外由于动作数量实在太多,对动作进行了一个分类(任务相关,属性相关,战斗相关,物品相关)。这个分类既可以是用户(比如游戏分析专家)自己指定、亦可以是某些现有文献中的一些完备的归纳分类方法。

决策树展现了一个决策的流程,从根节点往下每个非叶节点都是一个判断的条件,根据进来的实例会判断它的某个属性是否满足这个非叶结点的条件。实例一直走到叶节点以后,叶节点会给出一个分类的标签,来告诉你这个实例属于哪一类。传统的决策树的训练过程,就是不断地递归地对已经生成的决策树的叶节点,根据某些指标(比如信息增益、gini指数等等)来决定这个叶节点下面的子节点用什么属性来作为分裂。

如图1所示,决策树是指,比如要考虑今天出不出去爬山,会有这样一个决策流程。这里每个方框都是一个节点,他下面有几个判断条件,根据不同条件作出决策。可以通过矩形来代表树的节点,不过每个节点都还有几个选项,比如湿度高或湿度正常,大风或微风,沿着树一直往下直到叶节点就有了判断结果所以不爬的路径有(天气:雨)→不爬,(天气:晴)→(湿度:大)→不爬,(天气:阴→有风:大风)→不爬。

本发明可以采用的模型是一种利用高斯离散化的hoeffding自适应决策树(hoeffdingadaptivetreewithgaussiandiscretization)。这是一个在线算法,他利用hoeffding界的特性,使得决策树可以做到在线训练,即数据来了就可以拿来训练,并且只在决策树中使用一次;而不是像传统决策树那样需要一整批数据,每个数据都要被用于判断分裂条件多次。

hoeffding界说的是,一个随机变量,范围为r,在n次独立观测后真实均值偏离其估计值以概率1-δ不会大于当在判定一个节点要用那种属性做分裂时候,找到信息增益最大的和第二大的两个属性,计算他们信息增益的差,若大于这个∈,则能保证一个积极的树节点分裂效果。这样一个界能够帮助在只有部分或者少量数据时候,训练树出来,而不必要非得等到所有数据都来全了才做训练。这种决策树被称为hoeffding决策树。

在这个方法基础上,本发明又利用现有技术做了一些改进。首先,由于hoeffding决策树只支持离散值属性,采用了稳健的增量式高斯离散化方法,使得支持连续值属性。其次,数据中还存在了概念漂移的特点,所谓概念漂移是指这样一种情况:数据生成可能并不是平稳的,其生成过程可能会发生变化。对应到游戏数据中,外挂的行为也可能会发生一些变化,因为外挂公司会察觉到自己的外挂被封号以后,改变某些特点,以防止继续被查封外挂。对此,采用了adapativewindowing(adwin)的技术,这种方法在原本的hoeffding决策树中加入了一个窗口以及对应的估计器、改变探测器等等,来发现上面提到的概念漂移现象。

这样整个方法,便称之为利用高斯离散化的hoeffding自适应决策树。对的数据利用这个方法,随着数据不断的流入,决策树会不断的生长,当探测到某些明显变化时,决策树一些子树会发生替换、变成另外一棵子树。于是得到了一棵随时间变化的树,并且在每个时间片上,一个人都会有一个判断为是外挂或者是正常人的判断结果(0正常玩家,1外挂玩家)。

具体的,模型建立过程如下:

步骤1:初始化决策树的状态:

建立一个根节点,在根节点初始化一个统计量,名为aijk,这个统计量是adwin方法(在步骤2)的一部分。对每一个实例(实例(x,y),x也就是一个时间段内某一个人的动作的特征向量,以及其是否是外挂的判定值y,0为正常人,1为外挂),用已生成的树先测试,然后进入下面步骤2的hoeffding自适应树生长步骤。

步骤2:决策树的生长

首先,把上面(x,y)先沿着已有的决策树通过一条决策路径归到某一个叶子节点,更新所有这个路径经过的节点以及叶子节点的估计器aijk。如果当前叶子节点l有一个可替换树talt的话,这棵可替换树也执行对应的hoeffding自适应树生长步骤(就是当前这一步的hoeffding自适应树)。计算每个动作的信息增益g(当然也可以是其他决策树中常用的指标),这一步的作用是评估叶节点现在的条件是否适合作分裂。

信息增益的计算方法是这样的:首先有一个常见的概念,称为信息熵,对于一个分布,比如有个数据集有三个类别a,b,c,每一类别占的比例为p(a)=0.2,p(b)=0.3,p(c)=1-0.2-0.3=0.5,则信息熵h=-∑ipilog(pi)。在这里,就是0.2log(0.2)+0.3log(0.3)+0.5log(0.5)=0.301。一般来说,熵越小,越有序:比如当数据集只有一个类别时,熵为0,这是熵的最小值,表示数据集完全有序。在此基础上,还有一个条件信息熵,h(y|x)=∑x∈xp(x)h(y|x=x)。这里的y便是判断为是否是外挂,这个条件熵是对划分的一个描述,x是某种动作,比如游戏中进入副本的次数。对于某种动作的划分前后的熵的差值,h(x)-h(y|x)即为信息增益。上述的i就是一种遍历方式,i就代表a,b,c这三个类别,常见的是若集合n={1,2,3,…,n}那么∑i∈ni就等于1+2+3+…+n。

计算信息增益时,必须用到一个离散化的步骤,如果这种动作的值是连续值而不是离散值的话,这样才便于分裂。这里采用一种稳健的增量式的高斯离散化方法,运用这种方法以后,将连续值离散化,进行下面的分裂。如果信息增益最大的那个属性的信息增益,减去第二大的那个信息增益的值大于那么对最大信息增益那个动作进行分裂,并且对每个分裂分支都初始化一个估计器。分裂采用二分的方法,即将连续值区间划分为大于分裂点和小于等于分裂点两部分。这里用到了一个hoeffding界的概念,其含义是一个随机变量,范围为r,在n次独立观测后真实均值偏离其估计值以概率1-δ不会大于如果变化检测器(changedetector,也采用adwin作为变化检测器)发现了数据产生的分布有了变化,若叶子节点l没有可替换树,则在叶子节点创建一个可替换树talt;如果已经存在可替换树更精确,那么就把当前节点l替换为可替换树talt。

步骤3:adwin方法

初始化滑动窗口w,方差,总数。

a、当一个新的实例到来的时候,添加进窗口w;

b、对于窗口w的任意分割,w=w0+w1,如果不满足,则扔掉窗口里的最后一个元素,直到此式子满足为止,其中,(n0和n1的调和平均数),是窗口w0和w1里的数据平均值,n0和n1是窗口的长度。

c、如果步骤b有扔掉的实例,那么作为变化检测器,告诉外部程序数据分布已经发生了变化。

根据上面的模型,并且在每个时间片上,一个人都会有一个判断为是外挂或者是正常人的判断结果。嫌疑度就用到当前时间片所有的判断结果的值的平均值。比如一个人在时间片1至7的判断结果是0,0,0,0,1,1,0,那么把他在第7时间片的嫌疑度定为2/7。

在推荐和展示面板中的推荐标签中的表格,每一列代表一种信息,准确率、召回率、精确率和出现频次等;每一行代表选中的冰柱图中的某一个节点。表格内的灰色带长度和它的值在这一列中的相对大小成比例。单击表格抬头,即准确率、召回率、精确率和出现频次,便可以将所在列进行由高到低或者由低到高的排序。

雷达分布图的算法:

投影是一些高维的点(就是多维向量,之所以说高维是因为一般超过三维的东西就不能直接画出来了,人不能想象四维以及四维以上的东西,所以要把他转换成低维度的,画出来让人看),想把它变成二维的在平面上画出来,每个点代表一个玩家在某时间段的多维的特征向量。

约束1:要保证在高维空间的距离和在低维度空间的距离尽量接近。这里的距离一般就用欧氏距离,是这么计算的,假设举个例子有两个4维度的点,x1(x11,x12,x13,x14),x2(x21,x22,x23,x24),他们距离就是他们投影下来变成二维的点的距离则就是平时熟知的那种距离表达方式。

约束2:另外考虑到是个雷达投影,是圆的,并且点到圆心距离是嫌疑度指数的大小。所以这个投影就多了这样的一个半径的约束条件。

考虑用极坐标来表示投影以后的二维平面的点:

pi=(ri·s(ki),θi)

极坐标就是(ri,θi),前者是半径后者是圆心角。转换为xy坐标(笛卡尔坐标)就是(ricosθi,risinθi),但是这里多了个东西,这里的s(ki)之所以存在是因为“要保证在高维空间的距离和在低维度空间的距离尽量接近”,这里是尽量接近,其实有点难做到因为还有个半径约束条件,所以这是极坐标的一个扰动项。这里soft是一个参数,指导扰动的大小,这里用的0.2,也可以根据需要进行选择。

模仿多维标度法(multidimensionalscaling,mds)的投影计算方式,使得投影完的点和点之间距离与本来高维空间距离的差异最小化,也就是最小化这个函数:∑ij(distij-||pi-pj||)2

这里||pi-pj||也是一种距离,这里就用欧式距离,之所以这么表示是为了区分上面的distij。把极坐标代进去,最后上面这个要拿来最小化的函数就变成这个样子。

然后用梯度下降法就能得到ki,θi的值,进而就可以在二维圆面上画出来了,其笛卡尔坐标系下坐标(即xy坐标)为(ris(ki)cosθi,ris(ki)sinθi)。

雷达图上点到圆心的距离一般是表征危险度的,但是上面也说到了,由于约束1约束2要同时满足,所以就会有些点会偏离一点实际的准确的嫌疑度指数的位置。于是有时候有可能会看到一些点(一簇的点),离圆心比较近但是又不是完全在圆心上,这些点就可以作为观察的对象。

优选的,所述雷达分布图中有很多的点,每个点代表一个玩家在当前时间的状态,每个玩家各种动作频率作为多维向量,并带有一个是否为外挂的标记(0或1,0表示正常玩家,1表示外挂);

将这些多维向量投影在二维的圆面上,用于展现玩家之间关系,以及玩家的危险程度;

在所述圆面上,玩家之间的欧氏距离尽量保持原来多维向量的距离;而玩家到圆心的距离用1减去嫌疑度表示(嫌疑度是0~1之间的值,为到当前时间段模型输出玩家标记值的均值);

优选的,所述点为圆点,设有透明度。所述点是半透明的,这样如果点聚集越多的地方颜色就会越深。这样的一种设计其实是借鉴了军用雷达的设计,因为雷达是越接近圆心越危险的。

优选的,所述高层视图可视化模块还包括树的缩略图,作为所述动态树图的缩略图,布置在所述动态树图和所述准确率/召回率折线图之间。(针对决策树多的时候有用);树的缩略图,可以作为时间轴来看,用户可以在上面刷选不同的缩略图,这样上方的树也会限制到这些被框选的树范围中。

优选的,还包括细节视图可视化模块,包括个人面板和分组面板;多列相互关联的交互视图;

所述个人面板用于展示个体玩家行为、动作及嫌疑度随着时间变化的情况;

所述分组面板用于展示选中的两组玩家(比如一组是外挂玩家,一组是正常玩家;或者是在雷达分布图中选中的两组)属性的值的分布随着时间变化的情况。

为了更好地展示数据,方便用户找出外挂玩家,优选的,所述个人面板中每个人每个时间段用一个矩形框及其内部条形图表示,每个人随着时间变化信息用一整行来表示,每个条形图的一条代表一种行为下各种动作的数量值累加,每个条形图有4条代表玩家行为在此被分为4种类型。

为了更好地展示数据,方便用户找出外挂玩家,优选的,所述个人面板上双击某个颜色的条形图,则展示分类在这个行为下的动作的详细的每一种动作的折线图,展现每一种动作随时间变化的情况。

为了更好地展示数据,方便用户找出外挂玩家,优选的,在所述分组面板中,每行代表一种动作、两组玩家随着时间变化的情况,每组玩家是一个横置的条形,展现最大值和最小值的区间。

本发明系统的操作内容如下:

用户交互

焦点与上下文:在树缩略图(时间轴)上刷选,上面动态树显示范围也会随之改变。在动态树图中鼠标框选几棵树,这几棵树会被横向的扩大,而未被选中的会被横向缩小,这样方便观察细节。并且推荐面板会随之展示选中的树中的节点的各种信息。在雷达分布图中双击以后,开启局部径向放大模式;在鼠标周围的点会在径向被放大,而别的点会被对应的进行压缩.

鼠标悬停在某个树中的节点上时,和它一致的节点会用连线连起来

在个人面板中单击灰点可以收缩(压扁成灰色带子)。在条形图展开时,双击某种颜色的条形图,可以展现更细节的这种行为下所有动作的情况,用对应颜色折线图表示。所有动作都用开头的动作的id标明。

搜索:在右上角搜索框可以输入一个或者多个玩家的id(多个中间用逗号隔开),然后会在左下角个人面板展现出来。

过滤:在个人面板中,单击某个颜色条形图,会将其余颜色的条形灰暗化,当前的颜色不变,方便分析人员单纯比较这种行为随时间变化以及人和人之间关系。

拖拽:个人面板中,为了方便比较,可以按住小灰点拖拽,交换位置,来比较分析人员感兴趣的两个或多个玩家。

视图联动:当鼠标悬停在节点上时,右边的展示面板对应的节点也会显示。

放大:当左键单击动态树图中的一个节点时候,对应的个人和分组面板都会展示;同时在展示面板会出现雷达分布图。

与模型交互:系统支持与模型交互的功能—剪枝。决策树剪枝是一个常见的交互,通过停止某些节点的分裂,来控制树生长的进程。

本发明系统的分析内容如下:

1、展现决策树的动态演变的过程,展现决策树的决策的流程,一个人会怎样被判断为外挂或者非外挂。

2、分析不同粒度的玩家行为、动作的演变情况。

3、对于分析人员交互有及时的反馈、提示,以及恰当的上下文的信息。根据这些信息,能帮助用户找到一些模式产生的原因。

4、分析人员可以与模型本身进行交互。分析人员的专业知识应该加入到决策分析过程中去,用于调节这个模型。同时也帮助分析其他的模式。

本发明系统的操作过程:

首先进入模型训练。

训练完以后,会产生一系列的树,在动态树图从左至右排好。

鼠标悬停在树节点,可以看到相同节点在不同树的存在;框选一块区域,可以看到被选中的树放大了,而周围树缩小了。树下面有一排小的树缩略图,可以把它当时间轴,有个可伸缩的时间选择框,帮助选中要在动态树图展示的树。

对于框选中被放大的树,右边推荐面板会展示树中节点的各种指标,如精确率,召回率,f1(计算方法为)和出现频次等等。

单击某个树中的节点,有边的展示面板会出现雷达分布图,展现在节点中出现的玩家一个玩家关系信息和玩家危险度信息。于此同时,个人面板和分组面板也会更新。其展示内容上面已有介绍。使用时,由于时间轴是对齐的,比较起来十分方便。同时各个层次的细节都会有所展现.同时在雷达分布图选取区域,个人面板则会对应展示区域内的玩家信息。

分组面板一般展示的是个人面板中外挂与普通玩家的在每个动作下频次分布的聚合信息。但若在个人面板中单击比较按钮,则可以在雷达图再框选一块,然后对应在个人面板也出现另一批人的细节视图,在这进行比较如下图虚线框部分。

本发明的有益效果:

本发明的采用增量决策树进行外挂检测的系统,利用动态决策树展现不同时段决策过程,分析外挂的特点、被判定为外挂的原因,发现其明显的区分于正常玩家的一些特征;并且由于模型特性,能发掘外挂演变的一些特性;此外用户还可以加入自己的知识对决策树进行剪枝,以及通过各个视图结合进行其他的分析过程。

附图说明

图1为本发明系统的高层视图可视化模块中的动态树图、树的缩略图以及准确率/召回率折线图的成像示意图。

图2为本发明系统的个人面板的成像示意图。

图3为图2双击条形图展示的动作的折线图的结果示意图。

图4为本发明系统的分组面板的成像示意图。

图5为本发明系统的推荐面板的成像示意图。

图6为本发明系统的展示面板的成像示意图。

图7为图1中选中的黑框内的三棵树的放大示意图。

图8为本发明系统的展示面板的某一种数据情况下的雷达分布图的成像示意图。

具体实施方式

下面结合附图详细描述本发明,本发明的目的和效果将变得更加明显。

如图1~7所示,本实施例的采用增量决策树进行外挂检测的系统的结构以及构造包括以下步骤和内容:

步骤1:可视设计:

数据预处理模块,对原始日志数据清洗和特征向量提取;

模型生成和交互模块,将上面的特征向量作为模型的输入来生成模型并输出;同时它可以接收可视化模块的反馈对模型进行调整;

高层视图可视化模块,主要用并排放置的冰柱图来表示随之间变化的决策树的树结构,包括:

动态树图,图1上半部分,主要部分,将决策树的树结构用一种紧凑的方式(冰柱图)展现出来,里面每个节点表示一个决策树的分裂节点;多个冰柱图并列放置,体现决策树随时间的变化,如图7所示。

推荐和展示面板,如图5所示,在推荐面板中用可排序的表格展示在动态树图中选中(一棵或多棵)树的所有节点的信息,包括准确率、召回率、精确率和出现频次等;如图6所示,切换到展示面板,若在动态树图选中一个节点,可以在这里展示该节点包含的玩家的之间关系及危险度等情况;每个树上的每个矩形(就是节点)相当于是一个动作,比如5300040是接受任务。其冒号后面带的数字,相当于上面说的选项。如果5300040次数大于6.4则归为一类,小于6.4归为另一类。

树的缩略图,图1中间部分,可以作为时间轴来看,用户可以在上面刷选不同的缩略图,这样上方的树也会限制到这些被框选的树范围中;

准确率/召回率折线图,图1下半部分,随着时间的变化,每棵决策树预测的准确率/召回率也会随时间变化,将这些值用折线图展示;

细节视图可视化模块,多列相互关联的交互视图,包括:

个人面板,如图2所示,用于展示个体玩家行为、动作及嫌疑度随着时间变化的情况。

在个人面板上双击某个颜色的条形图,则分类在这个行为下的动作的详细的每一种动作的折线图,展现每一种动作随时间变化的情况,如图3所示。

分组面板,如图4所示,用于展示两组玩家(比如一组是外挂玩家,一组是正常玩家;或者是在雷达分布图中选中的两组)属性的值的分布随着时间变化的情况。

原始数据是按照各种不同动作来存储的,每天每种动作一个文件(比如2017年1月1日,登录日志),该游戏一共有上百种动作。统计了在感兴趣的时间段内,每个人在不同时间片上的动作的频次。注意这里的时间段既可以是自然的时间(年月日时分秒),也可以是游戏时间(1级、2级…分别做了什么动作,对应的频次是什么)。这样每个玩家每个时间片都有一个对应的特征向量。另外由于动作数量实在太多,对动作进行了一个分类(任务相关,属性相关,战斗相关,物品相关)。这个分类既可以是用户自己指定、亦可以是某些现有文献中的一些完备的归纳分类方法。

决策树展现了一个决策的流程,从根节点往下每个非叶节点都是一个判断的条件,根据进来的实例会判断它的某个属性是否满足这个非叶结点的条件。实例一直走到叶节点以后,叶节点会给出一个分类的标签,来告诉你这个实例属于哪一类。传统的决策树的训练过程,就是不断地递归地对已经生成的决策树的叶节点,根据某些指标(比如信息增益、gini指数等等)来决定这个叶节点下面的子节点用什么属性来作为分裂。

这里采用的模型是一种利用高斯离散化的hoeffding自适应决策树(hoeffdingadaptivetreewithgaussiandiscretization)。这是一个在线算法,他利用hoeffding界的特性,使得决策树可以做到在线训练,即数据来了就可以拿来训练,并且只在决策树中使用一次;而不是像传统决策树那样需要一整批数据,每个数据都要被用于判断分裂条件多次。

hoeffding界说的是,一个随机变量,范围为r,在n次独立观测后真实均值偏离其估计值以概率1-δ不会大于当在判定一个节点要用那种属性做分裂时候,找到信息增益最大的和第二大的两个属性,计算他们信息增益的差,若大于这个∈,则能保证一个积极的树节点分裂效果。这样一个界能够帮助在只有部分或者少量数据时候,训练树出来,而不必要非得等到所有数据都来全了才做训练。这种决策树被称为hoeffding决策树。

在这个方法基础上,又利用现有技术做了一些改进。首先,由于hoeffding决策树只支持离散值属性,采用了稳健的增量式高斯离散化方法,使得支持连续值属性。其次,数据中还存在了概念漂移的特点,所谓概念漂移是指这样一种情况:数据生成可能并不是平稳的,其生成过程可能会发生变化。对应到游戏数据中,外挂的行为也可能会发生一些变化,因为外挂公司会察觉到自己的外挂被封号以后,改变某些特点,以防止继续被查封外挂。对此,采用了adapativewindowing(adwin)的技术,这种方法在原本的hoeffding决策树中加入了一个窗口以及对应的估计器、改变探测器等等,来发现上面提到的概念漂移现象。

这样整个方法,便称之为利用高斯离散化的hoeffding自适应决策树。对数据利用这个方法,随着数据不断的流入,决策树会不断的生长,当探测到某些明显变化时,决策树一些子树会发生替换、变成另外一棵子树。于是得到了一棵随时间变化的树,并且在每个时间片上,一个人都会有一个判断为是外挂或者是正常人的判断结果(0正常玩家,1外挂玩家)。

根据上面的模型,并且在每个时间片上,一个人都会有一个判断为是外挂或者是正常人的判断结果。嫌疑度就用到当前时间片所有的判断结果的值的平均值。比如一个人在时间片1至7的判断结果是0,0,0,0,1,1,0,那么把他在第7时间片的嫌疑度定为2/7。

在推荐和展示面板中的推荐标签中的表格,每一列代表一种信息,准确率、召回率、精确率和出现频次等;每一行代表选中的冰柱图中的某一个节点。表格内的灰色带长度和它的值在这一列中的相对大小成比例。单击表格抬头,即准确率、召回率、精确率和出现频次,便可以将所在列进行由高到低或者由低到高的排序。

推荐和展示面板中的展示标签中的雷达图,雷达分布图中有很多的点,每个点代表一个玩家在当前时间的状态。每个玩家各种动作频率作为多维向量,并带有一个标记(0或1,0表示正常玩家,1表示外挂)。然后将这些多维向量投影在二维的圆面上,用于展现玩家之间关系,以及玩家的危险程度。在这个圆面上,玩家之间的欧氏距离尽量保持原来多维向量的距离;而玩家到圆心的距离用1减去嫌疑度表示(嫌疑度是0~1之间的值,为到当前时间段模型输出玩家标记值的均值)。

这样的一种设计其实是借鉴了军用雷达的设计,因为雷达是越接近圆心越危险的。这种设计借鉴了军用雷达的设计。

细节视图可视化模块中的个人面板,每个人每个时间段用一个矩形框及其内部条形图表示,每个人随着时间变化信息用一整行来表示。每个条形图的一条代表一种行为下各种动作的数量值累加,每个条形图有4条代表玩家行为在此被分为4种类型。

在个人面板上双击某个颜色的条形图,则分类在这个行为下的动作的详细的每一种动作的折线图,展现每一种动作随时间变化的情况。

在分组面板中,每行代表一种动作、两组玩家随着时间变化的情况,每组玩家是一个横置的条形,这个条形的左端右端分别展示了该组玩家某种动作的值的最小最大值。展现最大值和最小值的区间。

步骤2:用户交互

焦点与上下文:在树缩略图(时间轴)上刷选,上面动态树显示范围也会随之改变。在动态树图中鼠标框选几棵树,这几棵树会被横向的扩大,而未被选中的会被横向缩小,这样方便观察细节。并且推荐面板会随之展示选中的树中的节点的各种信息。在雷达分布图中双击以后,开启局部径向放大模式;在鼠标周围的点会在径向被放大,而别的点会被对应的进行压缩。

鼠标悬停在某个树中的节点上时,和它一致的节点会用连线连起来

在个人面板中单击灰点可以收缩(压扁成灰色带子)。在条形图展开时,双击某种颜色的条形图,可以展现更细节的这种行为下所有动作的情况,用对应颜色折线图表示。所有动作都用开头的动作的id标明。

搜索:在右上角搜索框可以输入一个或者多个玩家的id(多个中间用逗号隔开),然后会在左下角个人面板展现出来。

过滤:在个人面板中,单击某个颜色条形图,会将其余颜色的条形灰暗化,当前的颜色不变,方便分析人员单纯比较这种行为随时间变化以及人和人之间关系。

拖拽:个人面板中,为了方便比较,可以按住小灰点拖拽,交换位置,来比较分析人员感兴趣的两个或多个玩家。

视图联动:当鼠标悬停在节点上时,右边的展示面板对应的节点也会显示。

放大:当左键单击动态树图中的一个节点时候,对应的个人和分组面板都会展示;同时在展示面板会出现雷达分布图。

与模型交互:系统支持与模型交互的功能—剪枝。决策树剪枝是一个常见的交互,通过停止某些节点的分裂,来控制树生长的进程。

步骤3:分析任务

1、展现决策树的动态演变的过程,展现决策树的决策的流程,一个人会怎样被判断为外挂或者非外挂。

2、分析不同粒度的玩家行为、动作的演变情况。

3、对于分析人员交互有及时的反馈、提示,以及恰当的上下文的信息。根据这些信息,能帮助用户找到一些模式产生的原因。

4、分析人员可以与模型本身进行交互。分析人员的专业知识应该加入到决策分析过程中去,用于调节这个模型。同时也帮助分析其他的模式。

实际操作过程

首先进入模型训练。

训练完以后,会产生一系列的树,在动态树图从左至右排好。

鼠标悬停在树节点,可以看到相同节点在不同树的存在;框选一块区域,可以看到被选中的树放大了,而周围树缩小了。树下面有一排小的树缩略图,可以把它当时间轴,有个可伸缩的时间选择框,帮助选中要在动态树图展示的树。

对于框选中被放大的树,右边推荐面板会展示树中节点的各种指标,如精确率,召回率,f1(计算方法为)和出现频次等等。

如果单击某个树中的节点,有边的展示面板会出现雷达分布图,展现在节点中出现的玩家一个玩家关系信息和玩家危险度信息。于此同时,个人面板和分组面板也会更新。其展示内容上面已有介绍。使用时,由于时间轴是对齐的,比较起来十分方便。同时各个层次的细节都会有所展现。同时在雷达分布图选取区域,个人面板则会对应展示区域内的玩家信息。

分组面板一般展示的是个人面板中外挂与普通玩家的在每个动作下频次分布的聚合信息。但若在个人面板中单击比较按钮,则可以在雷达图再框选一块,然后对应在个人面板也出现另一批人的细节视图,在这进行比较如下图虚线框部分。

第一种检测外挂的方法:

首先在控制面板把动作都选上,并且这些动作分为了4类。模型运行后,可以看到一系列的树,这些树的结构在随着时间演化。树会慢慢生长,如果到了一定阶段效果不好了会有部分的子树被替换。能从上面获取一些信息,诸如外挂改变其行为模式的可能策略。

通过鼠标悬浮在树节点上看那些红线,可以发现有些节点是从头到尾一直出现的,有些是只出现一段时间就消失的。高层的节点一般会持续很久,说明这几个是比较好的可用于判别的属性,比如接受任务等,任务往往是获得财富的,获得财富有助于外挂的盈利所以外挂倾向于大量接受任务,所以这方面可能会有比较明显的判别效果。

挑选一个节点,那种持续一段消失的,想下是什么原因导致的。单击节点会在右边展示面板展现雷达分布图,如图8所示,看到上面有两簇点,(所谓一簇就是聚集在一团的点)。可以双击开启局部放大的交互,然后对这两簇点进行研究。

打开个人面板对比功能,看看这两批外挂在某个时间点开始以后,会有不太一样的行为和动作随时间的变化模式。在这个节点上本来是区分外挂和正常人的(默认只有正常人和外挂),由于新外挂出现,这种区分能力下降。在小组面板可以得到类似结论,如外挂和正常人区间覆盖了。

做出这样的一个猜想:因为有两簇外挂,或者说有不太相同行为模式的外挂,新入局的外挂动作模式可能不太一样,随着新入局外挂越来越多,原本可以用来区分的动作可能会渐渐失效(信息增益不够了),所以导致这种情况。

第二种检测外挂的方法:

对于那群都集中在雷达中间的外挂,看起来颜色很深。由于这些点都是透明度的,所以必须是叠在一起才会颜色很深。说明这里聚集了不少玩家。

不管是从投影结果来看,还是从实际选择数据(在雷达图上面框选)来看(个人面板的柱形图)都是高度一致的,外挂作为批量产物仍然比较近似。就算是观察个人面板的折线图也能得到类似的结论;而对于正常玩家相对就比较零散的分布了。

这里原因是外挂一般是批量产物,所以各方面比较相似也是合乎常理的。因为为了追求效益最大化,外挂设计时候会批量生产。而相对来说,正常玩家相对就比较零散的分布了。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1