gpt4 book ai didi

php - Glicko-2 评级系统 : Bug or exploit?

转载 作者:可可西里 更新时间:2023-11-01 00:15:35 25 4
gpt4 key购买 nike

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

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

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

The Glicko-2 system works best when the number of games in a rating period is moderate to large, say an average of at least 10-15 games per player in a rating period. The length of time for a rating period is at the discretion of the administrator.

假设一组活跃的国际象棋玩家在 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 〃

如果每个rating period面对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 〃


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

如果不是bug,还有什么方法可以解决:

  • 将“真实评分”视为偏差的下限(评分 -研发)
  • 不显示不活跃用户的评分
  • 不向用户展示少于 N 款游戏

最佳答案

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

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

关于php - Glicko-2 评级系统 : Bug or exploit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12054514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com