Glicko-2评分系统:错误或利用?


13

我最初将此内容发布在StackOverflow上,因为它可能是实现中的错误,但有人建议我发布到数学上。我刚刚找到了这个stackexchange,我想谁更好?你们中的有些人可能很快就知道了,这似乎是正确的还是不正确的,不需要调试。欢迎使用任何在线计算器链接或其他评级方法。


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

与版本1相比,Glicko-2的独特之处在于,它合并了较高的评分偏差(RD),这是某人不活动的时间越长。它使用与时间/额定时间段相关的系统常数的概念来实现。

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

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

假设一组活跃的国际象棋棋手在1个月的时间里平均玩10-15场比赛,那么管理员将在每个月底更新等级。


我需要Glicko-2评分系统的PHP实现,并遇到以下问题:

Glicko-2 JavaScript实现

  • JavaScript有一个小错误,其中没有让它与技术写作示例匹配,作者发现它足够接近,并且不费吹灰之力进行调试。

Glicko-2 PHP实现

  • PHP实现受到许多错误的困扰,但是除非您进行了多个评估期(技术文章从未显示其预期值),否则这是不明显的。

Excel中的Glicko-2计算器

  • 最终,Excel计算器似乎是无错误的,并且是最专业的,这是由国际象棋界的某个人完成的。解决JavaScript错误后,JavaScript和Excel计算器会非常紧密地匹配(尽管不够完美,可能会舍入误差)

我已经修复了我可以在PHP和JavaScript版本上找到的bug(并向作者提交了问题/补丁),使其与Excel Calculator的匹配程度最高。


现在,我有99%的信心,我有一个准确的Glicko-2实施方案(在这3个方案之间)进行分析,也就是当我遇到一些奇怪的问题以及讨论的主题时。

给定新玩家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个游戏


Answers:


9

几个月前,我从事了Scala实施工作,尽管还不够完善-我应该回头完成它。我至少从中得到了一些合理的结果。

如果您赢得了所玩的每场比赛,是的,即使您只与低评分的玩家对战,您的评分也会提高到很高。您将在与此类对手的对局中赢得每一场比赛的概率可能与A级玩家将达到的水平有关(尽管由于相对较高的RD,它可能会有点夸张)。

我认为,应对的最佳方法是,不要将具有一定数量的RD的人视为稳定的评级,即认为它是“临时”的。另外,为了获得冠军头衔,至少在USCF中,他们有一套规范的系统,在这种系统中,您必须在4场或更多比赛(我相信4次)的比赛中达到某个水平。在整个锦标赛中与〜1378对抗的比赛[四次]的可能性很小。

您的目标是将其用于国际象棋吗?您的用例是什么?

更新:FICS通过仅考虑RD小于80的人员来处理此问题。(我相信他们仍然使用Glicko-1。)http://www.freechess.org/Help/ficsfaq.html#Q005.003

顺便说一句,Glicko-1也使用RD /时间衰减。Glicko-2的主要改进是“波动性”因素,它使结果不稳定或稳定的人的计算方式略有不同。我认为这对Glicko-1来说是一个很小的调整,会导致大量额外的计算-但像您一样,我仍然对计算很感兴趣。我实际上向Glickman询问了其他一些测试数据点,但是他当时太忙了,无法提供它们。


仅供参考,USCF类级别的头衔要求在5场比赛中获得规范。
DM
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.