3

Glicko-2 是国际象棋中使用的评分系统,但也可用于许多其他情况。Glicko-2 是对 Glicko-1 的改进,它解决了旧 ELO 评级的问题。

与版本 1 相比,Glicko-2 的特别之处在于,它包含的评级偏差 (RD) 越高,某人不活动的时间越长。它使用与时间/评级周期相关的系统常数的概念来做到这一点。

在这里可以找到作者撰写的示例:http ://www.glicko.net/glicko/glicko2.pdf 。
在这份文件中,他解释说:

Glicko-2 系统在评级期中的游戏数量中等到大量时效果最佳,例如在评级期中平均每位玩家至少 10-15 场比赛。评级期的时间长度由管理员自行决定。

假设一组活跃的棋手在 1 个月的时间段内平均下 10-15 场比赛,那么管理员将在每个月底更新评分。


我需要一个 Glicko-2 评级系统的 PHP 实现,并且遇到了以下问题:

Glicko-2 JavaScript 实现

  • JavaScript 有一个小错误,它与技术编写的示例不匹配,作者发现它足够接近,并没有费心去调试。

Glicko-2 PHP 实现

  • PHP 实现存在许多错误,但这并不明显,除非您进行了超过一个评级期(技术文章从未显示预期值)

Excel 中的 Glicko-2 计算器

  • 最后,Excel 计算器似乎没有错误并且是最专业的,由国际象棋界的某个人完成。解决 JavaScript 错误后,JavaScript 和 Excel 计算器彼此非常匹配(虽然不完美,但可能在舍入误差内)

我已经修复了错误(并向作者提交了问题/补丁),我可以在 PHP 和 JavaScript 版本中找到与 Excel Calculator 非常匹配的版本


现在我有 99% 的信心认为我有一个准确的 Glicko-2 实现(在它们三个之间)进行分析,这就是我遇到一些奇怪的事情的时候,也是本次讨论的主题。

给定 Glicko-2 为新玩家推荐的默认值:

Rating:      1500
RD:           350
Volatility:  0.06

如果您在接下来的 12 个周期(1 年)的每个评级周期(1 个月)内只面对评级为 1378 和 RD 99(来源)的平均对手一次,您将累积假定的国家 A 级(1800-1999)评级 1852实际上,您在 12 个月内只击败了 12 名平均评分的球员。

Month   Rating      RD      Volatility      Class
1       1625        259     0.059999        National Class B
2       1682        225     0.059998        〃
3       1718        205     0.059997        〃
6       1784        174     0.059994        〃
12      1852        148     0.059988        National Class A
24      1922        127     0.059976        〃

如果你每个评级周期面对2个平均对手,你可以在4-5个月左右到达国家A级,面对8-10个平均对手。

Month   Rating      RD      Volatility      Class
1       1672        215     0.059999        National Class B
2       1733        183     0.059997        〃
3       1770        166     0.059995        〃
4       1797        154     0.059993        〃
5       1819        146     0.059992        National Class A
6       1836        140     0.059991        〃


这些假设准确吗?我的计算器有错误吗?

如果它不是一个错误,那么还有什么方法可以解决这个问题:

  • 将“真实评级”视为偏差的下限(评级 - RD)
  • 不显示非活动用户的评分
  • 不显示游戏少于 N 的用户
4

1 回答 1

9

这可能看起来违反直觉,但这实际上是一个正确的结果。如果你一直在玩普通玩家,但你总是赢,无论时间段如何,你都在证明你的排名很高(不是平均排名,即使你的对手是平均水平)。一个平均水平(具有“真实”平均等级)的玩家,与完全相同的“真实”等级(平均水平)的对手应该在大约 50% 的时间里获胜和失败。一个“真实”排名非常高的玩家,在玩普通玩家时将赢得更大比例的时间,这取决于他们的排名相差多远,但可以说这是一个足够高的排名,他们应该赢得 90%的时间。这意味着每与普通玩家进行 10 场比赛,这位排名靠前的玩家应该输掉其中 1 场。

您有效地建模的是一个排名足够高的玩家,可以在与普通玩家的每一场比赛中获胜(超过 12 或 24 场比赛没有输球),这意味着如果他们继续获胜,他们的得分将继续无限上升,因为他们从来没有输过。他们展示了一种能力(直到发生损失)应该有足够大的排名分离以接近 100% 的预期胜率。

于 2013-10-04T23:14:33.030 回答