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

与版本1相比,Glicko-2的特殊之处在于,它在有人不 Activity 的时间越长的情况下合并的评级偏差(RD)越高。它使用与时间/额定时间段相关的系统常数的概念来实现。

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



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

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

Glicko-2 JavaScript Implementation

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

  • Glicko-2 PHP Implementation
  • PHP实现中遇到许多错误,但是事实并非如此。
    很明显,除非您进行了多个评分期(
    技术文章从未显示
  • 的期望值

    Glicko-2 Calculator in Excel
  • 最后,Excel计算器似乎没有错误,并且使用最多
    专业,由国际象棋界的某人完成。一旦
    JavaScript错误已解决,JavaScript和Excel计算器
    彼此非常匹配(尽管不完美,可能在舍入误差之内)

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

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

    给定新玩家的Glicko-2建议的默认值:
    Rating:      1500
    RD:           350
    Volatility:  0.06
    

    如果您在接下来的12个周期(1年)中,每个评级周期(1个月)仅一次面对等级1378和RD 99(Source)的平均对手,则您将累积假设的 National Class 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个游戏的用户
  • 最佳答案

    看起来似乎违反直觉,但这实际上是正确的结果。如果您持续玩普通玩家,但无论何时,您总是赢了,则说明您的排名很高(即使对手是普通玩家,也不是平均玩家)。平均水平(拥有“真实”平均排名)的玩家,与完全相同的“真实”排名(平均水平)的对手对战应该会赢得并输掉大约50%的时间。拥有“真实”等级的玩家在玩普通玩家时会赢得更大比例的时间,这取决于他们的等级差距,但是可以说,这个等级足够高,他们应该赢得90%的时间。这意味着在与普通玩家进行的游戏中,每10场比赛中,这位排名较高的玩家应该输掉其中的1场。

    您有效地建模的是一个具有足够高的排名的玩家,可以在每场对普通玩家的比赛中胜出(超过12或24场比赛而没有损失),这意味着如果他们继续获胜,他们的分数将继续无限上升,因为他们从未输过。他们证明了一种能力(直到出现损失)应该具有足够大的排名间隔,以接近100%的预期获胜率。

    07-24 09:38