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 实现,并且遇到了以下问题:
- JavaScript 有一个小错误,它与技术编写的示例不匹配,作者发现它足够接近,并没有费心去调试。
- PHP 实现存在许多错误,但这并不明显,除非您进行了超过一个评级期(技术文章从未显示预期值)
- 最后,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 的用户