近日,《绝地求生》(绝地求生)MET亚洲邀请赛中国区7支队伍全部退赛的消息震惊全场网络。原因很简单:“有人作弊,官方不管。”《绝地求生》(PUBG)官方随后也宣布,因无法保证MET亚洲系列赛:PUBG经典赛的公平竞争,特此声明,取消MET亚洲邀请赛为PGC转让赛区席位资格。线上线下一片哗然。这是继《绝地求生:刺激战场》更名为《和平精英》并改变世界观后的又一爆料。MET亚洲邀请赛由PUBG官方授权。不健康的气氛。撇开主办方的消极怠工和疏忽不谈,那些涉嫌作弊的战队和选手,已经失去了作为一名优秀电竞选手的自尊心。难道他天生就会为了胜利不惜一切代价吗?还在担心等级不够吃不到鸡吗?作为普通玩家,我们应该如何预测玩家和游戏的走势来增加吃鸡的概率呢?下面小欣欣就来告诉大家如何通过机器学习预测,边看比赛边成为吃鸡高手,如何在绝地求生中更好更快吃鸡成功。《绝地求生》(PUBG)是一款现象级的电脑游戏,每月有数百万活跃玩家。主要背景和规则是:每场比赛,100名选手乘坐飞机,被送到一个岛上的不同地点。他们必须寻找物资、武器,并与其他玩家战斗,直到最后一个人活着。每个玩家都可以选择与最多三名其他玩家组队或单人游戏。与此同时,玩家也必须在不断缩小和移动的“毒圈”中游走。接下来,我们将尝试完成机器学习中的特征工程,包括错误分析、特征空间评估、集成和调试处理。具体的实验工具是Weka和Lightside。注意!这篇文章不会教任何代码,但可以展示机器学习过程的综合案例,包括数据清洗、数据集拆分、交叉验证和特征设计。注意!前方高能!第一步:数据收集数据集传送门:https://www.kaggle.com/c/pubg...Kaggle中的数据集为本次实验提供了超过445万个实例和28个特征。每场比赛都有比赛ID,每支球队有球队ID(范围从1到4),每个球员都有球员ID。我们格式化数据以确保每个实例只计算一名球员的赛后统计数据。特征包括玩家在游戏中的表现,比如帮助队友的次数、击杀数、步行距离等,还有一些外部的排名特征来代表玩家在游戏中的表现。每场比赛的最终排名百分位数为0-1(1为第一,0为最后),我们将其重构为最终预测的类别。本文选择“团队”模式。玩家可以匹配1-4人的队伍与其他队伍对战,因为数据集中的很多特征都与队伍的表现有关。我们将代表每个玩家的实例转换为代表每个组的实例,并取特征的均值和一些标准差。在每场比赛中,随机抽取两支球队,看哪支球队的排名更高。在训练和测试集中,将最终排名百分位数转换为“获胜预测”,以显示排名较高的团队,以进行二进制预测。此外,还加入了一些有意义的特征进行对比,这些特征的差异也作为数值,比如队伍规模的差异、击杀等级的差异、行走距离的差异、获得装备数量的差异等。在数据清洗方面,删除了不合理的数据,如同一场比赛重复球员、负排名、4人以上球队等。同时对数据集也进行随机拆分,拆分比例为:交叉验证集70%,开发集20%,测试集10%。我们要预测的是在一场比赛中随机选择两支球队,哪支球队会获胜。因此,这个预测的类别是winnerPrediction。清理数据后,共有6576个实例,具有65个特征。“第二队”和“第一队”各占每个拆分数据集中获胜预测的大约50%。第2步:数据探索首先对开发集进行探索性数据分析,以更好地理解数据。这里有一些有趣的发现。玩家更喜欢单人还是组队?团队规模的分布非常相似,以1人小队和2人小队为中心。似乎大多数玩家更喜欢单人或双人。是不是拿第一枪的队伍更容易吃鸡?用队伍2的击杀等级减去队伍1的击杀等级,得到击杀等级的差值分布,数据分析表明该差值呈正态分布。因此,下图右侧,Y轴为正时,Team2排名靠后,下图左侧,Y轴为负时,Team2排名靠前。红色区域为二队获胜,蓝色区域为一队获胜。下图显示,在大多数情况下,击杀率较高的团队击杀的可能性更大。哪种策略更好,移动还是隐蔽?用团队2的步行距离减去团队1的步行距离,得出步行距离差的分布,也是正态分布。因此,当图形右侧的Y轴为正数时,二队的步行距离大于一队的步行距离,而当图形左侧的Y轴为负数时,步行距离第二队的人数少于第一队。红色区域为二队获胜,蓝色区域为一队获胜。下图显示,在大多数情况下,移动距离越远的队伍越容易吃到鸡。Step3:数据误差分析与检验我们选择从逻辑回归入手,因为所有的特征都是数值数据,预测也是二元的,权重模型会很实用。然而,用树模型分析65个特征是费时费力的。分析的基线性能如下(准确度0.8905,kappa系数0.7809)。等级差异分析有些实例预测2队获胜,但实际上1队获胜。先查这部分例子,也就是把leveldifference从大到小排序,再看权重比较大的feature。我们发现步行距离差异具有较大的水平差异和特征权重。步行距离差是同一场比赛中二队的步行距离减去一队的步行距离,负数表示二队走的少,正数表示二队走的多。这意味着步行距离越长,就越有可能吃鸡(这在游戏中很重要,关系到玩家的生存时间)。但也有例外。可能某支球队喜欢猛烈投篮,经常在场上跑位,导致很快被淘汰,而另一支球队则打得比较谨慎,大多躲在一个地方,最终存活的时间更长。为了更进一步,我们还下载了CSV文件中的预测标签,查看了预测二队获胜和一队实际获胜的实例,然后将步行距离的差异从大到小排序,看看如何第二队走了很远。长时间但失败的游戏的特例。我们发现,有时2队确实比1队走得更远,但1队的车辆行驶得更远(在游戏中,玩家可以选择驾驶他们找到的车辆)。如下图黄色图标示例所示,许多团队没有其他团队走得那么远,而是行驶了更远的距离。同时,行驶距离也是第二大横向特征差异。因此,单独测量步行距离或驾驶距离并不能很好地指示总行驶距离。这两个特征似乎都有问题,需要更合适的表示。因此,我们提出了3个结合步行距离和行驶距离的新特征:团队1和团队2的总移动距离和两队之间的距离差。我们在开发集上测试了新的特征空间,并取得了适度的改进。虽然并不显着,但预测第2队获胜但第1队实际获胜的实例数量减少了5,并且预测更正为第1队。但是,当应用于交叉验证集时,性能会下降。最合理的解释是这种改进在开发集上过度拟合,并没有推广到新的数据集。垂直差异分析接下来是通过检查垂直绝对差异进行的另一项误差分析。由于新的开发集引入了更多错误,导致预测团队1获胜但团队2实际上获胜的情况,我们的目标是了解团队1和团队2在这些情况下的相似之处。杀戮中排名第一的特征垂直方差较小,但特征权重较高。此排名仅反映Team1的击杀排名。Team1的平均击杀排名为34胜负43。唯一的例外是,有时第一队的击杀排名达到34,但仍然输了。前面说了,有时候一个队伍更喜欢先开枪,所以他们杀的敌人多,排名高,但同时被杀的风险也大。这里的含义是逻辑回归擅长全局分析,但也会遇到一些边缘情况。因此需要一种可以忽略极端异常并且一次只查看较小数据集的算法。决策树是一个很好的模型,但是由于总共有68个数字数据特征,因此构建模型需要花费大量时间。但是如何结合决策树和逻辑回归的优点呢?逻辑模型树(LMT)是一个不错的选择,因为它可以捕获非线性模式和较大的方差。于是我们开始尝试LMT并将结果与??其他两种算法的结果进行对比,最终发现在开发集上有明显的提升。将模型应用于交叉验证集也产生了显着的改进。集成Boosting算法可以在迭代过程中对之前模型错误分类的实例进行特殊检查,因此在本研究中,Boosting是提高准确率的好方法。于是尝试在开发集中使用搭载LMT分类器的AdaBoost,但是性能下降了。由于特征空间相对复杂,我们接下来尝试减少可能是坏指标的特征。尝试属性选择分类器并使用主成分作为属性估计器,因为主成分可以降低特征空间的维度,同时保留尽可能多的信息。但最终性能仍然下降。然后再次尝试cfs子集评估器,因为许多特征是相关的(例如杀伤等级和杀伤分数)。该估计器可以选择性地保留特征之间有用的关联并防止特征重复,但性能仍然不如基线性能。接下来,我尝试了另一个不错的估计器——SVM属性估计器,因为它使用了向后选择的方法,适用于较大的特征空间,但是Weka和Lightside不支持这种方法。FeatureSpaceEvaluation除了之前尝试过的wrapper方法外,我们还想知道filter方法是否可以提高性能,因为filter可以独立于算法选择特征。再次尝试属性选择评估器,再次使用主成分作为评估器。三个不同的空间分别是原始特征空间(68个特征)、40个特征和20个特征,做了一个实验来测试这三个特征空间。但是另外两个新的特征空间会降低性能。我们测试了其他的estimators,结果没有变化,最后决定保持原来的特征空间。调试过程我们要调试LMT算法中的两个参数。最小实例数的默认值是15,但是我们想把它改成50,看看增加更多的节点分裂实例是否可以提高每个节点的准确率,从而提高整体性能。Boostingiterations的默认值为-1,表示没有迭代。我们想将默认值更改为3,以测试它是否提高了分类准确率。因此,我们测试了以下四种设置:(1)节点分裂实例的最小数量为15,Boosting迭代值为-1(即不迭代);(2)实例数为50,Boosting迭代值为-1。(3)实例数为15,Boosting迭代值为3。(4)实例数为50,Boosting迭代值为3。注意设置(1)为默认设置。使用准确性作为性能的衡量标准。Phase1:(1)90.81(2)90.81(3)91.05(4)91.05设置(3)精度最高,比设置(4)更简洁,所以设置(3)是最理想的设置。Stage2:根据Stage1的数据,设置(3)是最理想的设置。在第2阶段,设置(3)仍被视为每个折叠功能的理想设置。在这种情况下,没有进行任何重要的测试,也没有证据表明这种优化是值得的。似乎每个节点实例的最小权重对模型性能影响不大。但是,增加迭代次数可能会提高多次尝试的准确性。如果设置(3)用于全新的数据集,我们估计最终性能约为91.66分类精度,这是从5倍函数性能测试中获得的平均精度。第4步:最终评估最后,使用设置(3)使用LMT在交叉验证集上训练模型。从错误分析中添加了3个新特征后,我们保持特征空间不变。最终测试集的最终性能是:精度为0.9179,接近调试处理中的估计值,Kappa系数为0.8359。树状图观察上图,可以发现模型的起点是步行距离的差异,从行驶距离和移动距离的差异的某个值分裂出来,证明了我们新特征在错误中的重要性分析。虽然有些节点只与一个团队相关,例如2-killStreaks,但许多其他节点共享两个团队之间的差异,甚至使用winPoints的标准差。这也证明了在添加组合特征的同时保留原始特征的实用性。经过我的仔细计算,这个项目分析还是存在一些缺陷:首先,只测试了其中一种游戏模式的数据,测试结果不一定适用于所有模式。其次,不是预测排名,而是将项目范围转换为二进制分类。我们从一场比赛中随机挑选两支球队,并尝试预测哪支球队会获胜。这样就去掉了其他球队的表现,同时也去掉了一些相关的差异和因素,这些差异和因素在真实比赛中也可能会影响胜负预测。综上所述,我们通过机器学习预测发现了一些影响比赛结果的重要因素,可以利用机器“快、狠、准”地预测一场比赛中的吃鸡选手和比赛走势,成为名副其实的行业龙头专家,吃鸡大师。留言点赞,关注我们,分享AI学习开发的干货。欢迎关注全平台AI垂直品类。
