ACGO排位分机制大揭秘
1、原理解释
积分机制是基于ELO积分(埃洛积分),该积分最早应用于国际象棋,理论核心是胜率差。ELO在解释选手对战的情况分为三个部分:
1. 根据战力差来计算对战胜率情况:多少分差对应多少胜率。
2. 选手根据对手情况和战斗结果所表现出来的水平分。
3. 选手完成对局后实际获得的积分增长。
1.1 预期胜率计算公式
Pi,j=11+10rj−ri400P_{i,j} = \frac{1}{1+10^{\frac{r_j-r_i}{400}}} Pi,j =1+10400rj −ri 1
公式中 ( P_{i,j} ) 代表选手 ( i ) 战胜选手 ( j ) 的概率,( r_i ) 代表选手 ( i ) 的当前积分值,( r_j ) 代表选手 ( j ) 的当前积分值。可以观察到:
* 当 ( r_j = r_i ) 时,( P_{i,j} = \frac{1}{2} ),即对手实力与自己相当,我方胜率恰好一半。
* 当 ( r_j > r_i ) 时,( P_{i,j} < \frac{1}{2} ),即对手实力强于自己时,我方胜率不足一半。
* 当 ( r_j < r_i ) 时,( P_{i,j} > \frac{1}{2} ),即对手实力弱于自己时,我方胜率高于一半。
并且 ( P_{i,j} + P_{j,i} = 1 ),即我方胜率加对方胜率等于1,均符合“常识认知”。
1.2 背后原理
该公式的背后原理(涉及概率论,此处笼统介绍)为:任何一名选手的即时表现都应该是符合正态分布的(围绕某一个水平上下波动),如下图:
实际上,可以依据上图,使用微积分来计算出两位玩家相互之间的胜率,其所对应的图像,与采用最小二乘法优化后得到的式子 ( P_{i,j} = \frac{1}{1+10^{\frac{r_j-r_i}{400}}} ) 拟合度较高,因此使用该式作为胜率计算的公式。
通俗地来说,这个公式与通过概率论计算的胜率情况非常接近,且计算相对简便,因此使用了该式作为概率公式。
1.3 预期排名公式
seedi=∑j=1,j≠inPj,i***eed_i = \sum_{j=1, j \neq i}^n P_{j,i} + 1 seedi =j=1,j=i∑n Pj,i +1
即将每个人打败选手 ( i ) 的概率累加起来,再加一作为选手 ( i ) 比赛的预期排名。
我们可以得到:
∑i=1nseedi=∑i=1n∑j=1,j≠inPj,i+n\sum_{i=1}^n seed_i = \sum_{i=1}^n \sum_{j=1, j \neq i}^n P_{j,i} + n i=1∑n seedi =i=1∑n j=1,j=i∑n Pj,i +n
由于 ( P_{j,i} + P_{i,j} = 1 ),故上式为:
=(n−1)⋅n2+n=(n+1)⋅n2= \frac{(n-1) \cdot n}{2} + n = \frac{(n+1) \cdot n}{2} =2(n−1)⋅n +n=2(n+1)⋅n
注意到最后的实际排名是 ([1,n]) 的一个排列,排名总和为 (\frac{(n+1) \cdot n}{2})。
会发现使用该预期排名公式后,预期排名能够显示出所有人之间实力对获胜概率的影响,并且所有人的预期排名总和与实际排名总和相等。
1.4 依据真实排名所计算出的表现分
比赛结束后第 ( i ) 名选手的真实排名记作 ( rank_i )。令 ( m_i = \sqrt{seed_i \cdot rank_i} ),即期望排名与真实排名的几何平均数。
之后我们使用二分算法来找到一个分数 ( R_i ) 作为选手 ( i ) 在这场比赛的表现分。( R_i ) 需要满足在该场比赛的预期排名计算时,如果把 ( r_i ) 替换为 ( R_i ),其他人的分数不变的情况下,计算出的 ( seed_i = m_i )。
实际上非常容易可以定性分析出,分数(实力)更强的人在同一场比赛中的预期排名应该更低(指的是数值)。这样就建立了一个分数-排名之间的单调关系,使得我们可以使用二分算法来找到 ( R_i )。
依此来计算表现分,既考虑到了真实排名的情况下,又能够依靠原始分计算出的预期排名来做一个对原始分的“锚定”效果,使得表现分有一个与原始分相接近的趋势。同时由于表现分的二分计算过程也是与预期排名公式中的原理相同,因此该分数也考虑到整场比赛所有人参与人的水平。
1.5 分数变化值
取表现分 ( R_i ) 与原分值 ( r_i ) 差值的一半作为选手 ( i ) 赛后的分数变化值。
即选手 ( i ) 的分数变化值 ( change_i = \frac{R_i - r_i}{2} )。
综合上述所有计算过程,会发现计算结果满足以下两个性质:
* 若赛前 ( r_A < r_B ),比赛结果 ( A ) 依然比 ( B ) 差,那么更新后 ( r_A \leq r_B )。
* 若赛前 ( r_A < r_B ),比赛结果 ( A ) 比 ( B ) 好,那么 ( rating ) 改变量 ( change_A \geq change_B )。
2、排位分是否上涨的因素
在上述算法的影响下,比赛排位分是否上涨,主要由对手的能力决定:
如果当前选手水平很牛逼,但是赛事的其他选手水平很菜,本场赛事结果中,即便当前选手获得了不错的成绩,也不会加很多排位分,因为elo算法认为这应该是理所当然的,因此用户没法通过大量战胜低等级的对手来提升排位分。
反之,一个菜鸡在满是牛逼用户的竞争中取胜,则会获得特别高的排位分。该算法能让用户的竞赛分值更趋向于其真实水平,从而使我们的排位分更具公信力。