Logo ryp 的博客

博客

关于 Rating 系统

avatar ryp 2026-09-16 12:57:52

由于 @zxh_qwq 对 Rating 系统提出了疑问,认为他的 Rating 系统更优,我们不妨根据 WyOJ 的历史数据对比一下现有的 Rating 系统(Glicko-2)和他提出的 Perf 等差、向 Perf 移动 $\delta / 5$ 的简单 Rating 系统。 $$ \begin{array}{r|l|r|r|r|r} \text{排名} & \text{用户名} & \text{最终 Rating} & \text{最大回撤} & \text{期望} & \text{方差} \\ \hline 1 & \text{zrl123456} & 2421.10 & 88.69\ (3.77\%) & 2137.73 & 66332.17 \\ 2 & \text{ANDER_} & 2358.09 & 337.53\ (22.50\%) & 1700.67 & 117009.39 \\ 3 & \text{KSCD_} & 2303.37 & 0.00\ (0.00\%) & 1933.70 & 71649.81 \\ 4 & \text{Ame_wiki} & 2273.11 & 223.80\ (12.20\%) & 1903.81 & 70908.29 \\ 5 & \text{aaa} & 2238.02 & 0.00\ (0.00\%) & 1907.84 & 65392.64 \\ 6 & \text{Pigsyy} & 2182.06 & 0.00\ (0.00\%) & 1864.32 & 52585.94 \\ 7 & \text{lzx} & 2152.91 & 119.12\ (5.47\%) & 1920.19 & 56075.78 \\ 8 & \text{wfandy} & 2074.79 & 0.00\ (0.00\%) & 1789.83 & 44398.23 \\ 9 & \text{taccat} & 2061.42 & 307.53\ (14.83\%) & 1828.49 & 25156.47 \\ 10 & \text{wyz} & 2057.55 & 182.63\ (8.23\%) & 1825.61 & 48767.76 \\ 11 & \text{FiraCode} & 1971.40 & 117.74\ (7.85\%) & 1636.94 & 46000.45 \\ 12 & \text{Gejunyi} & 1968.54 & 389.44\ (20.33\%) & 1696.09 & 33460.92 \\ 13 & \text{zxh_qwq} & 1922.19 & 390.29\ (20.43\%) & 1734.50 & 98465.76 \\ 14 & \text{xyh13793601192} & 1907.44 & 0.00\ (0.00\%) & 1716.32 & 21605.07 \\ 15 & \text{_awa_wangjiawen}& 1902.52 & 341.02\ (19.45\%) & 1593.94 & 24096.83 \\ 16 & \text{Dtw} & 1879.18 & 78.66\ (5.10\%) & 1739.44 & 32269.68 \\ 17 & \text{rengpuiyang} & 1866.76 & 238.59\ (13.97\%) & 1619.42 & 18557.34 \\ 18 & \text{Little_Cck} & 1839.22 & 347.64\ (22.85\%) & 1448.36 & 24480.07 \\ 19 & \text{zibenlun} & 1837.13 & 104.57\ (6.97\%) & 1578.87 & 21080.86 \\ 20 & \text{tths01y} & 1796.99 & 43.14\ (2.61\%) & 1639.27 & 11342.89 \\ \end{array} $$

注意到,ANDER_ 超了 KSCD_ 和 aaa,Ame_wiki 超了 aaa。其余的各种问题,我没有心情细细观察。

我们可以非常简单、快速、轻松、自在极意地发现这个 Rating 系统存在许多缺点:

首先,他完全不考虑你对手是谁。只要你打了第一,Perf 就是 max_rating。只要你打了倒数第一,Perf 就是 min_rating。如果为了简单性,直接把对手是谁忘了,那你算的那还叫 Rating 吗。

况且,由于 Perf 的范围固定,导致不可能存在长期的上涨,所有人的 Rating 都趋于同一个范围。这就导致越高水平的人,虽然他理论上应该有更高的 Rating,但因为算法缺陷,他的 Rating 却始终被往下拉。

此外,这个 Rating 系统完全没有波动率,也就是 Glicko-2 中的 Vol,这就导致无法判断某个人最近的状态。Glicko-2 的极大好处之一就是,你可以快速地判断一个人最近是稳定发挥还是爆冷。

其次,水平相近的选手之间波动相当大。两个 Rating 接近、排名相邻的参赛选手,按他的算法,有一个巨大的 Perf 差。这会造成他们两个都长时间上不了分,尽管他们比排名靠后的选手厉害。

@zxh_qwq 指出,“比赛数很少,用大型算法‘不够优秀’,不如用这个。”我想知道,以在比赛少的情况下发挥显著好于常见的 Rating 系统而著称的 Glicko-2,咋就突然不够优秀了呢?况且这个算法有什么证据说明他对比赛少的情况友好?

@zxh_qwq 指出,“太复杂了不好”,这句话实现了时空穿越!因为 Glicko-2 显然完全优于以上这个 Rating 算法,而所谓的“复杂”只存在于我实现这一算法之前。既然我已经实现了这一能够完全偏序他提出的 Rating 算法的优越算法,还存在什么“复杂”可言呢?看来,时空穿越对他来说已经完全不是问题了。

@zxh_qwq 指出,“别再折腾了,就这样吧”。读完这句话,我仿佛陷入了梦境,身边的一切都飘渺起来,因为这句话让我陷入了一种震撼的境地:折腾的人,难道不是我吗?我耗费了好几天的时间,研究了各种 Rating 系统,最后选择并用了一中午实现了 Glicko-2,这些“折腾”,居然可以用一段语法都不正确的代码搪塞过去,“就这样吧”,吾今羽化而登仙矣!

评论

_ryp_
@zxh_qwq
ANDER_
@mike
quyuan
@ANDER_
zxh_qwq
我没啥好评价的,我又不会语法

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。

ryp Avatar
我拒绝零假设
活跃度 近 53 周
查看全年