了解“英雄联盟”比赛预测模型,该模型以其独特的输入功能可显示约70%的准确性。

为什么要在电子竞技游戏中研究获胜预测?
公众的第一个反应是金钱,的确如此,也许可以通过一个足够成功的预测模型来赚钱,但这也许只是从很小的角度看。
通过解剖模型可以看到更多的信息。成功的获胜预测模型可以准确地告诉我们比赛胜利的成因。
例如,假设在预测模型中使用的数据点之一是玩家身高。如果通过预测模型发现球队的平均身高越高,则球队赢得比赛的可能性就越大,那么我们可以从预测模型中得出与我们的信念相反的事实,即球员身高对于获胜至关重要一场联赛!这可能会从根本上改变全球职业联赛电子竞技团队的搜索系统。
您可能会问,为什么首先要关心电子竞技产业。好吧,在2019年的英雄联盟世界冠军赛中,11月10日同时有4400万人观看了决赛,并且有1亿独特观众在线观看了比赛。该数字超过了当年的超级碗收视人数。随着该行业的日益普及,这一数字有望不断增长。

研究电子竞技背后数字的最后一个原因是可访问的数据。关于此主题存在一些争论,因为RiotApi(一种用于获取比赛数据的api,可通过RiotGames(英雄联盟的发布者)获得)提供了有限且不准确的数据,这可能是大多数研究论文针对同一游戏类型的原因基于联盟的竞争对手DotA2。但是,数据是免费的。与其他传统运动(例如足球)相比,这是一个巨大的优势,在传统运动中,有意义的数据只能通过Opta等公司的昂贵订阅来获取。
关于电竞比赛预测的先前研究
如前所述,很少有关于英雄联盟比赛预测的先前研究,但与DotA2比赛预测相反。由于这两款游戏属于同一类型且玩法相似,因此这些研究值得探索。

例如,论文Dota 2 Win Prediction使用偏移,对位,协同作用和反击等功能提供了73%的准确度预测器。使用同现网络发现英雄协同数据,并使用逻辑回归的方法。这些结果令人惊讶,但对这些先前的研究进行了某些改进,可以取得更好的结果。
首先,论文都将每个英雄视为输入或数据预处理过程中的单独矢量。这样一来,可以“考虑每个辐射与英雄对比赛结果的个别影响”,也有可能是选手对预测模型进行过于狭窄的训练。例如,预测模型将无法看待奥恩作为一个版本强势英雄,即使他有着巨额的伤害。它将错过定义单个冠军的特征,而无法与其他类似的冠军一概而论。

其次,论文都没有考虑玩家控制英雄的技巧。很明显,与控制完全相同的英雄的普通玩家相比,控制英雄的专业玩家对游戏结果的影响更大。因此,尽管英雄的影响力,协同作用和反击都很重要,但玩家的技能也很重要。这可能是提高预测能力的附加功能。
数据集
RiotApi的问题在于,在旅途中很难获得一定数量的比赛数据。有必要查明参考的选手,查看他的比赛历史,然后继续对出现在他的比赛历史上的对手的比赛历史,以递归方式收集比赛数据。
即使获取了数据,也必须对其进行过滤以确保正确标记冠军的位置。
RiotApi还对每2分钟强制执行100个请求的速率限制,再加上数据损坏的可能性很高,这意味着不得不在自定义AWS EC2服务器上运行脚本几天,从而无休止地挖掘匹配数据。
在研究中,我们收集了1045个匹配数据,其中80%被用作训练集,10%被用作开发集,其余10%被用作测试集。
特征
模型与之前的研究真正不同的是对功能的选择。在模型中使用的功能是胜率。
关于英雄联盟游戏的一个显而易见的事实是,由一群拥有强大的优秀玩家组成的团队更容易获胜。这里的好选手更具体地说是指该选手善于控制一些强势的英雄,因为该选手具备成为冠军的潜力。
什么数据显示出以下两个特征?
- 玩家如何控制某个英雄
- 当前元数据中英雄的实力
第一项功能是由玩家与英雄的获胜率来体现的。例如,选择一个版本强势的英雄比如亚托克斯(*魔剑**)很可能获得较高的获胜率并carry队友。

第二项功能是通过当前元/补丁中该特定冠军的获胜率来捕获的。众所周知,一个强大的选手具有很高的获胜率(从所有级别的总和中算起,通常等于或大于53%)。
我们为每个团队中的每个玩家收集此数据,以便神经网络的每个输入向量将大20个数据点,如下所示:
[0.5114、0.52、0.5275、0.619、0.5074、0.727、0.4999、0.517、0.5187、0.659、0.5034、0.0、0.5005、0.5、0.4448、0.257、0.5065、0.286、0.5199、0.544]
结果是我的输入功能只有20个大尺寸。与以前的研究中使用的输入功能相比,这非常小。
每2 * i | 0≤i≤9元素是当前元/补丁中冠军的赢率,而1 + i | 0≤i≤9是玩家控制特定冠军时的获胜率。
模型
如标题中所述,我们使用了香草深层神经网络, 即具有四个隐藏层的完全连接的前馈深层神经网络。使用tflearn库来构建模型,其中包括批量培训。尝试了各种参数和超参数,包括隐藏层的数量。尽管在四个或三个隐藏层之间的性能差异不大,但看起来似乎有四个隐藏层过多,但效果似乎最好。我不会透露确切的参数/超参数,因为通过设置自己的参数很容易重现结果。
结果
神经网络的性能取决于参数/超参数,但最具代表性的数字如下:
- 培训精度:0.7255
- 验证精度:0.6905
- 测试精度:0.7033
另外,由于在输出层使用了softmax激活,因此输出向量显示了网络在比赛中具有“信心”的程度,即大小为2的向量(例如[0.317,0.683]将显示出胜利或失败)该模型认为匹配项是损失)。输出向量中的数字不会直接转换为获胜或失败的“概率”,特别是因为使用了分批训练,但它们确实使每个事件都有可能。
因此,我收集了所有模型都具有0.8或更高“信心”的比赛,然后该比赛将获得胜利,然后获得了76.76%的准确度:对于某些比赛,我们可以肯定其结果。
大改进的空间
该模型的巨大前景在于,仍有很大的改进空间,因此有可能提高比赛预测的准确性。
红边/蓝边
当放置在英雄联盟比赛中时,每个玩家都被分配到红边或蓝边。传统上,赢率会有所不同,具体取决于所在的那一侧,尽管在当前补丁中并没有太大的区别(蓝色方为50.3%的赢率),但是这个数字会发生变化从补丁到补丁,都可以考虑。
团队协作比赛
协同作用是以前研究中包括的功能之一,并且完全由“获胜或不获胜”记录的74%的预测准确性负责。提出一种准确反映选手协同作用并将其作为输入功能的方法可以增强模型的准确性。
数据细化
在用于训练/开发/测试集的当前数据中,一些数据无法找到,因此留给了机会。这些都是因为我大量使用op.gg和其他英雄联盟分析网站来收集特定于玩家的冠军统计数据。
例如,如果在对数据进行处理时,python爬行脚本无法为玩家找到一些未在比赛使用的英雄获胜率,则该获胜率会自动分配为0.5值。这是一个合理的选择,因为在大多数情况下,由于缺少该特定英雄的记录而不会显示特定英雄的胜率,这意味着该选手和其他选手一样不怎么使用。
有了更多精炼的数据,漏洞更少,此神经网络模型的性能就将会得到改善。
比赛环节的特定成分
玩家之间的常见现象是有时玩家会进入“掷*子骰**”。这意味着当一名球员连续赢得数场比赛时,他认为他有可能在下一场比赛中再次获胜,反之亦然。在职业比赛的设置中,几乎可以肯定的事实是,一个团队根据球员的形式可能会有非常不同的表现。例如,LCK 2020年春季赛的KT Rolster在整个赛季的大部分时间里表现都很糟糕,但由于一些比赛环节的增加,KT在比赛的后两周又表现出了非凡的实力。这也可能是影响比赛预测的附加功能。
阵容搭配
例如,蓝方球队可能有一个治疗者冠军,两个坦克冠军和两个经销商冠军,这取决于补丁/元数据可能会影响该球队的获胜可能性。
另一个区别可能是“早期比赛”英雄和“后期比赛”英雄。这些标签根据英雄对游戏影响最大的时间来区分冠军,因此可能是代表球队组成的另一种方式。
通过附加功能和更好的数据来改进预测模型将增强模型的预测能力,可能超过先前研究之一设定的74%基线。
通过提出一个成功的模型并研究权重,我们有可能获得洞察力,证明与团队组成相比,掌握冠军的重要性如何。这不仅会影响专业团队的球探系统,而且还会影响他们的战略。冠军。
正如我现在在*队军**中服役一样,我在进行这项研究的速度/效率方面确实受到限制。但是尽管如此,我会继续做下去,然后继续发布我所得到的东西。