Glicko评分系统

Glicko评分系统（英文：Glicko rating system）及Glicko-2评分系统（英文：Glicko-2 rating system）是评估选手在比赛中（如国际象棋及围棋）的技术能力方法之一。此方法由马克·格利克曼（英语：Mark Glickman）发明，原为国际象棋评分系统（英语：Chess rating system）打造，后作为等级分评分系统的改进版本广泛应用。格里克曼在此算法中的主要贡献是“评分可靠性”（Ratings Reliability，简称RD），即评分标准差（Ratings Deviation）。 Glicko与Glicko-2评分系统被发表至公有领域。诸多在线游戏服务器（英语：Game server）（如《Pokémon Showdown》、《Lichess（英语：Lichess）》、《自由互联网国际象棋服务器（英语：Free Internet Chess Server）》、《Chess.com》、《在线围棋服务器 （页面存档备份，存于互联网档案馆）》、《絕對武力：全球攻勢》、《絕地要塞2》、《刀塔霸业》、《激战2》、《Splatoon 2》及《皇舆争霸》）和多个竞技性编程比赛都采用此种评分方法。Glicko所使用的算法可在其网站上找到。 算法中，评分可靠性用于测量选手的评分，一评分可靠性（评分标准差）相当于一标准差。举个例子，一名评分为1500分的选手，其评分可靠性为50，表示有95%的可能性这名选手的真实实力约在1400至1600分（1500分的两个标准差）之间。选手的实力区间需增加并减去评分中的两个评分标准差来计算。在比赛结束后，选手的实力评分的波动根据评分标准差来计算：当选手的评分标准差较低（选手的评分已较为准确）或其对手的评分标准差较高时（对手的真实实力无法确定）时，选手的评分波动也较小。评分标准差将在比赛后减小，但将在一段时间不活跃后渐渐增大。 Glicko-2是Glicko评分系统的改进版本，引进了评分挥发度σ（Rating Volatility）的概念。澳大利亚国际象棋联盟（英语：Australian Chess Federation）采用稍加修改版的Glicko-2评分系统。 下列评分流程仅适用于Glicko评分系统，不适用于Glicko-2。 若选手没有评分，则其评分通常被设为1500，评分标准差为350。 新的评分标准差（ R D {\displaystyle RD} ）可使用旧的评分标准差（ R D 0 {\displaystyle RD_{0}} ）计算： R D = min ( R D 0 2 + c 2 t , 350 ) {\displaystyle RD=\min \left({\sqrt {{RD_{0}}^{2}+c^{2}t}},350\right)} t {\displaystyle t} 为自上次比赛至现在的时间长度（评分期），350则是新选手的评分标准差。若选手在一个评分期间内进行了多场比赛，此算法会将进行的比赛作为一场看待。评分期根据选手进行比赛的频繁程度，可能长至七个月，短至几分钟。常数 c {\displaystyle c} 根据选手在特定时间段内的技术不确定性计算而来，计算方法可能通过数据分析，或是估算选手的评分标准差将在什么时候达到未评分选手的评分标准差得来。若一名选手的评分标准差将在100个评分期间内达到350的不确定度，则评分标准差为50的玩家的常数 c {\displaystyle c} 可通过解 350 = 50 2 + 100 c 2 {\displaystyle 350={\sqrt {50^{2}+100c^{2}}}} 的方式计算而来。 或 c = ( 350 2 − 50 2 ) / 100 ≈ 34.6 {\displaystyle c={\sqrt {(350^{2}-50^{2})/100}}\approx 34.6} 在经过m场比赛后，选手的新评分可通过下列等式计算： r = r 0 + q 1 R D 2 + 1 d 2 ∑ i = 1 m g ( R D i ) ( s i − E ( s | r 0 , r i , R D i ) ) {\displaystyle r=r_{0}+{\frac {q}{{\frac {1}{RD^{2}}}+{\frac {1}{d^{2}}}}}\sum _{i=1}^{m}{g(RD_{i})(s_{i}-E(s|r_{0},r_{i},RD_{i}))}} 其中： g ( R D i ) = 1 1 + 3 q 2 ( R D i 2 ) π 2 {\displaystyle g(RD_{i})={\frac {1}{\sqrt {1+{\frac {3q^{2}(RD_{i}^{2})}{\pi ^{2}}}}}}} E ( s | r , r i , R D i ) = 1 1 + 10 ( g ( R D i ) ( r 0 − r i ) − 400 ) {\displaystyle E(s|r,r_{i},RD_{i})={\frac {1}{1+10^{\left({\frac {g(RD_{i})(r_{0}-r_{i})}{-400}}\right)}}}} q = ln ⁡ ( 10 ) 400 = 0.00575646273 {\displaystyle q={\frac {\ln(10)}{400}}=0.00575646273} d 2 = 1 q 2 ∑ i = 1 m ( g ( R D i ) ) 2 E ( s | r 0 , r i , R D i ) ( 1 − E ( s | r 0 , r i , R D i ) ) {\displaystyle d^{2}={\frac {1}{q^{2}\sum _{i=1}^{m}{(g(RD_{i}))^{2}E(s|r_{0},r_{i},RD_{i})(1-E(s|r_{0},r_{i},RD_{i}))}}}} r i {\displaystyle r_{i}} 表示选手个人的评分； s i {\displaystyle s_{i}} 表示每场比赛后的结果。胜利为1，平局为 1 2 {\displaystyle {\frac {1}{2}}} ，失败为0。 原先用于计算评分标准差的函数应增大标准差值，进而反应模型中一定非观察时间内，玩家的技术不确定性的增长。随后，评分标准差将在几场游戏后更新： R D ′ = ( 1 R D 2 + 1 d 2 ) − 1 {\displaystyle RD'={\sqrt {\left({\frac {1}{RD^{2}}}+{\frac {1}{d^{2}}}\right)^{-1}}}} 国际象棋评分系统（英语：Chess rating system） 存档副本. [2019-08-22]. （原始内容存档于2020-11-11）.  Justin, O'Dell. Finding the perfect match. [16 January 2015]. （原始内容存档于2020-11-11）.  Australian Chess Federation Ratings By-Law (PDF). [17 January 2019]. （原始内容存档 (PDF)于2020-03-11）.  存档副本. [2019-08-22]. （原始内容存档于2020-12-12）.  格里克曼教授的 Glicko 网站 （页面存档备份，存于互联网档案馆） 微软借鉴Glicko中的多个理念开发出的TrueSkill [1]（页面存档备份，存于互联网档案馆）评分系统 forwardloop/glicko2s （页面存档备份，存于互联网档案馆） Glicko-2的JVM实现 RobKohr/glicko（页面存档备份，存于互联网档案馆） Glicko-2的JavaScript实现 mmai/glicko2js （页面存档备份，存于互联网档案馆） Glicko-2的客户端JavaScript及Node.js实现 deepy/glicko2 （页面存档备份，存于互联网档案馆） Glicko-2的Python实现 sublee/glicko2 （页面存档备份，存于互联网档案馆） Glicko-2的Python实现 PlayerRatings （页面存档备份，存于互联网档案馆） Glicko的R语言实现，由亚历克·斯蒂芬森（Alec Stephenson）及杰夫·索纳斯（Jeff Sonas）撰写 scala-glicko2（页面存档备份，存于互联网档案馆） Glicko-2的Scala实现