昨天,小码农向大家详解了ELO排名背后的数学和逻辑原理:Ted为啥排世界第七?——层层解密ELO排名算法,这可能是魔坛最硬核的文章!
尽管大家纷纷表示“够硬核,我选择看都不看”,但对于“Ted为啥排世界第七?”这个问题的答案,热心水友众说纷纭,甚至做出了“塞了钱的”这样令人啼笑皆非的推断。
大家稍安勿躁,小码农茶已喝完,接下来就继续为大家详细解读ELO积分的排名规则和原理,是如何造成大家眼中这些种种“反常迹象”的。
下面,我们回到昨天的两个问题:
为什么VortiX的排名会比LawLiet还高?
为什么退役多年的Ted会排在现世界第七?
为什么Ted现在排第7?
上图是Ted和Focus的Elo分数对比图,绿色线是Focus的历史Elo分记录,红色线是Ted的历史Elo分记录。紫色的阴影部分是我根据Whole-History Rating模型大概画的,Ted从2019年WCG第一次有Elo分数后, 95%可信的实力Elo分数区间。
从数学模型上,系统认为了Ted在2019初次有Elo分数之后虽然消失了两年,但是仍然非常稳定的处在他95%可能的分数变化区间内。
说人话就是,如果你2019年WCG打爆了120(虽然是BO1),算法认为你再怎么菜/再怎么练习,提高95%的概率,你的新分数都不会偏移出这个紫色的区间(我们可以对比Focus,他也没偏离出这个区间)。
所以,首先我们可以大致认为,如果只根据数学模型来看,对Ted目前的数据评估,是没有太大问题的。之后,我们再来看看其他的原因。
小码农认为,导致Ted的排名高主要原因有3个:
warcraft3.info的Elo排名系统没有记录Ted2019年WCG预选赛之前的场次
Ted的盘数非常非常少
warcraft3.info没有对不同比赛区分不同的权重
原因1和2可以放在一起看,Ted的Elo分是2019年WCG突然冒出来的,他在当时赢了120,BO老师,冰兽,小KK等选手,直接让他的Elo评分定格在2336分。之后很长一段时间内,完全没有任何数据,直到他在大魔王杯S2里面2:0赢了小15。
这就出现了一个问题,这个选手的数据不足。他的分数从2019年到现在的可信区间就很大,算法认为这个人消失了很久,突然回来还赢了个高手,他的可信分数增减区间非常大,所以给了一个可能高估的加分值,导致了他的分数瞬间暴涨到前10水平。
对比Moon这样一直在打、数据很多的选手,算法对他的可信区间估计是很紧逼的,哪怕现在Moon数据里面有一场输给了48级选手肥柴,他也不会马上掉个400分。但是Ted的盘数太少、不确定性非常大,导致了分数偏移值/波动值很大。
另外一个可能比较主观的问题就是,比赛该不该加权重,应该怎么加权重?什么比赛算是表演赛,而什么比赛不算是表演赛?
有水友说,根据奖金多少来定一个比赛算不算T1比赛不就好了么?那么特逗杯S3 8万奖金算T1比赛吗?还有,欧美的比赛,2000美金奖金=差不多1.5万人民币,那么我们是把这2000美金看成是纯粹的2000?还是直接对比15000?
这里面涉及了非常多的主观判断和复杂的偏离了数学模型的现实问题,很难给出答案。Warcraft3.info的程序员自然也就不会写这么一个模型在里面。
为什么VortiX的排名会比LawLiet还高?
首先不可否认的是,VortiX确实是很强的一个选手。
从他最近的战绩来看,他在Tod资助的Tag Team比赛里面赢了Sini、Pink、Soin,而在这之前,他在ESL里面战胜了HawK和XlorD。
当然了,我们不能完全排除Tod的Tag Team里面网速对亚洲选手的影响,在这里,我们不会讨论Pink,Sini和Soin输了是不是完全只是因为网速影响等等。
Elo算法设计的时候是为国际象棋设计的,默认是双方非常公平的(除了先后手的区别),有一些系统尝试过分析网速对胜率的影响,但是还没有一个非常科学公正的数学模型理论分析,多少微秒的ping对一个选手的水平有多少百分比的影响。
比如,如果0 ping的时候我的水平是2000分,那么200 ping的时候我的水平会是多少分?现在没有一个很好的估计体系,所以我们的warcraft3.info的程序员也就没有把这个写进程序里面。
所以,忽略网速,VortiX确实赢了很多亚洲选手。但同时,他大部分时候都是赢下的欧美选手。而欧美区和亚洲区的选手,特别是A级或以下的选手之间少有交手。
这就导致了这样的情况:VortiX不停赢欧美区的其他A级选手,而这些欧美A级选手缺少了和亚洲A级选手交手记录,不能计算这些欧美A级选手在全世界范围内相对客观的排名,所以VortiX的分数也就同样的缺少了亚洲选手的参照,可能出现虚高现象。
回到之前的Elo算法框架介绍,Elo只会考虑对战的两个选手,计算分数的时候并不会考虑其他选手的影响。所以亚洲选手如果和欧美选手非常少交战,两边的分数是不能直接影响的,只能通过间接的偶尔的跨区对战来推算。
我们只能期待他多和亚洲选手对战,这样系统就能更加准确地估计他的排名位置。
小码农认为,比较好的一个暂时的解法是,我们不要直接把亚洲选手和欧美选手用分数对比,而是分开两个表看。欧美选手只和其他欧美选手对比得到该选手在欧美区的相对排名,亚洲选手同理。
比如现在欧美区的相对排名是:
Happy>VortiX>Foggy>Hitman>CrunCher>HawK。
而亚洲选手的相对排名是:
Lyn>Eer0>Moon>Infi>FoCuS>LawLiet>Fortitude>Michael>Fly100%>Chaemiko。
总体来说,小码农认为,warcraft3.info的程序员,把这个算法套在魔兽上面的时候,一些或是设计者难以想到的、或是魔兽3这个游戏本身的特殊环境,所共同导致的局限,造成了这些“诡异排名”现象的出现。这些局限包括但不限于:
换族之后大部分选手的水平都和主族的水平差很远,但是目前的排名输赢只考虑这个选手赢了还是输了,没考虑选手用的是不是主族。
欧美魔兽圈和亚洲魔兽圈几乎是两个独立的生态圈,因为ping的问题,这两个赛区基本都只和自己赛区内的其他选手对战,欧美区和亚洲区选手特别是二线选手的对战数量不足。
表演赛没有被剔除。问题在于是怎么定义一个比赛算表演赛?有的人觉得这是个表演赛,有的人觉得这就是正规比赛?
其他的一些问题
Ted高排名带给选手的机会
Ted的高排名只有反效果吗?如果他一直打表演赛他会一直涨到Elo第一名吗?
作者认为不会,因为他现在分数是虚高的,那么很自然,他就是一只等着被瓜分的“白切鸡”。选手可能都会开始期待打Ted并在他身上刷分。
某A级选手突然赢了个前10的虚高选手,那么他的排名就会突飞猛进的增长。久而久之,Ted的排名分数就会降回正常水平。
Elo分数的通胀问题
这是在国际象棋Elo排名中被讨论了很久的问题,如果你10年前是1800分,那么和一个10年后的1800分的人对比,你们俩的实力一样吗?如果整个选手团体集体提高了那么可能你如果分数不变其实就已经变弱了。当然在魔兽的elo系统里面没有考虑这个问题,因为这个问题复杂,程序员也都是用爱发电,没有特别深入的研究。
为什么TH000在Elo排名里面找不到
这是warcraft3.info定下的一个规则,如果一个选手3个月没有任何新的数据,自动除名,但是分数保留,当有了新数据的时候再重新加到表里面。
祝愿蛋总早日康复
那么,有更好的排名算法吗?
实际上,这就是作者平时工作中天天做的事情……作者是做语音识别的,我们经常会提出一些假设。比如:如果我们改了一个语音交互的一个步骤,用户会更加喜欢吗?还是会更加反感?
这个时候我们就是定义很多数值,包括比如“成功的交互数”,“用户放弃语音的概率”等等。然后我们就做实验,比如让2%允许做实验的用户分成两组,1%对照组和1%实验组,看看成功率之类的有没有提高。
哪怕提高了0.1%,当数据量是每天几亿的时候影响也就很大了。
所以作者认为,我们要改良这个Elo系统,是彻底可行的,缺少的是资金,码农的数量,和数据分析师。假设这是NBA,那么将会有成千上万个分析师,码农在严密的进行各种实验,分析数据的准确性。
回到魔兽3的ELO,当水友提出一个假设,例如:“我觉得按奖金来排名对预测一个选手的胜率更为准确”,那么我们不能直接就把这个假设直接想都不想就替换掉,我们必须要做一系列的实验,证明这个假设在预估选手胜利的概率中是比现有的Whole-History Rating系统下的Elo算法更为准确的。
哪怕只是更准确0.1%,也是进步。
举个例子,我们尝试用奖金给出2020年选手的排名。
2020年奖金的排行榜为:
对比2020年12月31号的ELO分数排名:
我们还是要记住,Elo排名的要求是,如果我们已经知道两个选手的分数,当两个选手对战的时候,高分的选手在他/她们之间的对阵之中胜率将会更高。
所以我们对排名有两个要求,第一是评估实力,第二是预测胜率。
这个是比较好统计的,但是需要用到爬虫爬,我们来看两个例子,Moon vs Fly 和 Infi vs Lyn。
这是我用爬虫爬出来的他们在2020年全年场次结果:
Moon胜Fly的场次:
Fly胜Moon的场次:
Infi胜Lyn:
Lyn胜Infi:
首先我们分析Moon vs Fly。
奖金方面Moon得到81280美金Elo排名4分数2472,Fly得到51180奖金,Elo排名7分数2433。其中Moon胜Fly11场,负Fly7场,胜率61.1%。
当我们按照奖金比例判断胜率,那么Moon和Fly是8:5左右,61.5%非常准确,当我们按照Elo判断的胜率Moon应该是56%,可以参考Elo的胜率评估公式。这证明了奖金对于Moon和Fly的对阵是有更高的预测性的,一个几乎无偏差,一个偏差5%。
但是我们这个时候来看看Infi vs Lyn。
奖金方面Infi得到96340美金Elo排名2分数2480,Lyn得到38230美金Elo排名3分数2479。其中Infi胜Lyn 6场,负Lyn 11场,胜率35.29%。
这个时候我们按照奖金比例可得Infi对阵Lyn胜率为96340:38230=71.59%;而按照Elo分数判断他们只差一分基本50%。这个时候奖金排名偏差36.3%,Elo排名偏差14.71%。
我们可以把选手之间的奖金排名预计胜率的偏差值,和Elo排名预计胜率的偏差值进行对比和统计。
因为时间有限,我只做了大致的几个分析,我的结论是奖金排名几乎完全和Elo排名没法比……差距实在太大了……Elo在预测胜率的偏差值方面远远优于奖金排名,特别对于非前10选手的偏差尤为明显。
这里面还有两个问题:
按奖金排我们只能每年/每季度之类的定一个排名,排名更换非常慢,不能反映即时实力。
汇率问题,这个在顶尖选手里面一般看不出来,因为顶尖的比赛全球选手一般都参与,但是对于二线选手来说,欧美一个小杯赛如果1000美金,那国内一个小杯赛可能500块人民币……难道说国内的比赛赢10个才相当于欧美赢一个么…显然是不合理的。
或许我们能找出一个如何给赛事的奖金定权重的方案使得预测胜率偏差值最小,而这个就需要大量的实验和数据分析师,线性回归分析,和机器学习分析来求解了~ 我暂时也没有这么多时间分析这个问题。
希望作者能抛砖引玉,让水友中的大神们有时间可以做做实验组对照组,并给出详细的数据,证明假设的有效性。如果我被说服了,我会义不容辞的帮忙反馈给warcraft3.info的程序员并帮忙实现这个新的排名。
总结
Warcraft3.info的Elo排名也是集结了很多欧美热爱魔兽的人的智慧结晶的,用了非常多的数学论证和现代的排名算法进行了优化。
我们不可否认这个排名是必定有缺陷的,但是时至今日,因为资金/人力物力的局限性,没有一个有效的实验体系,来证明另外一个排名系统能更加准确的反映当选手A比选手B高分的时候,选手A和B对战的时候A的胜率更高。
作者希望大家以后能科学和理性的讨论Elo排名,而不是随便一句“我觉得这个排名就是搞笑的,还不如按奖金排”然后不管了,大家拿出自己的兴趣和热爱,或许有一天这个排名系统就能达到一个大家认为的最理想的排名了。
如果真的有人看到这里的话……举个爪吧,竟然还没睡着?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.