Elo评分系统:玩家加入游戏时的起始值如何保持稳定

51

我在游戏中实现了Elo评分系统。玩家数量没有限制。玩家可以不断加入游戏,因此玩家数量可能会逐渐增加。

由于这个事实: 如果A队打败B队,则A的Elo赢得等于B的Elo失去。

因此,我遇到了一个关于评分系统起始值的问题:

  • 我应该为每个玩家使用起始值“0”吗?所有Elo值的总和将保持不变。但是,由于玩家数量正在增加,所以可能会出现某种形式的 Elo通货紧缩,对吗?
  • 我应该使用大于0的任何起始值吗? 在这种情况下,所有Elo值的总和将不断增加。 因此可能会出现Elo通货膨胀的问题。 问题是:Elo点数会失去价值,但起始值始终保持不变。

我该怎么办?你能帮我吗?谢谢!


3
你在下面说你不想让Elo分数变成负数。那么你不能从0开始计算。如果你从0开始计算,当你强制将分数裁剪为大于等于0时,所有Elo值的总和将不再是恒定的。 - Alok Singhal
2
是的,没错。但是即使从1000开始也不能防止数字变成负数,不是吗? - caw
7个回答

66
您可以从零开始,增加一个修正因子到显示的得分以使其保持在零以上,或者您可以从1000开始 - 这两种方法是相同的。是的,使用1000作为开始值,系统中的总ELO点数将会增加,但每个玩家平均所获得的分数始终是相同的 - 1000。Elo的起始值始终是当前平均值。ELO是一种零和游戏,由A玩家失去的点数将被B玩家获得。
当您将起始值设为1000时,您实际上是在说平均玩家=1000分。对于一组初始玩家(测试版用户?),这是正确的,在该组中平均值=1000。但是,如果这个游戏是需要随时间改进的游戏,则您封闭组的平均玩家相对于那些没有玩过的人来说技能水平更高。
现在,当您向新玩家分配1000分时,您实际上是在说新玩家的平均水平等于现有的高技能平均水平。这是不正确的,他们可能比您原来的封闭组要差很多。因此,新玩家会失去分数,而高技能玩家会获得分数=>通货膨胀。你需要做的是准确地评估新玩家的技能水平,并为他们分配一个更符合其实际技能的排名。这可以通过为其前x场比赛分配“临时排名”来完成,直到您对其技能有了感觉。当他们获得临时排名时,只会改变他们的ELO得分,而不是他们所玩的人的得分。一旦他们进入真正的系统,他们带入计分ELO的分数将大致等同于他们的实际技能,他们不会剧烈上升或下降=>没有通货膨胀或通货紧缩。
简而言之:临时排名。

2
非常感谢!这样我就可以给每个玩家1000个起始点。但是新玩家在前X场比赛中只有临时分数。到目前为止,正确吗?在这些X场比赛中,他们只能像平常一样获得或失去积分,但他们的对手不会。对吗? - caw
5
是的,没错。接着在几场预备比赛后,他们应该会有一个反映其真实能力的等级评定。将他们升级为普通球员身份,并从此以后像对待其他人一样对待他们,使用这个等级评定。 - Andrew
2
这是与国际象棋中使用的ELO系统相同的系统,他们不会得到负面评价。如果你从同一起点开始,你也不应该得到负面评价。你离平均值越远,就越难保持距离,有一个有效的极限。在国际象棋中,“平均值”=1200,“特级大师”=2500,因此,如果您能够将分数移动1300个单位,则为特级大师。要获得负面评价,您需要将分数移动1200个单位以上,成为表现糟糕的“负面”特级大师。这将非常困难,我怀疑它是否会发生。 - Andrew
我会选择1200,或跟踪那些从临时积分过渡到真实积分时通常在哪个水平,并给他们平均值。基本上是尝试衡量新玩家的水平。 - Andrew
我正在尝试应用ELO系统来评价菜肴。我也遇到了负分的问题。由于这是一个食品网站,我不希望他们最终得到一些负面评价。有什么想法可以解决这个问题吗? - Harsha M V
显示剩余6条评论

19

本站使用Elo评分系统,起始评分为1200。

来源于http://gameknot.com/help-answer.pl?question=29

GameKnot评级系统基于Elo评分系统,K值固定为20,并进行以下修改:

前20局用于建立玩家在网站上的评级。在前20局中,玩家的评级被计算为所有对手评级的平均值,获胜加400分,失败减400分,平局同理。与临时评级玩家比赛时,加/减200分。玩家的评级在前20局期间为临时性的,之后变成确定性的。前5局玩家的评级被视为等于1200分。

如果超时结束棋局,则只有当游戏中至少进行了3步棋时超时才算作获胜(无论实际进行了多少步棋,输掉的玩家总是会被计算)。

在游戏开始和结束时,两个评级中较高的评级用于计算游戏后的评级调整。

举个例子,如果在你的前20场评级游戏中,你打了3局,赢了一个临时评级为1200的玩家,赢了一个已确定评级为1400的玩家,输给了一个已确定评级为1600的玩家,则你的评级将为:( (1200 + 200) + (1400 + 400) + (1600 - 400) ) / 3 = 1467

或者,如果在你的前20场评级游戏中,你打败了一个临时评级为1200的玩家,赢了一个已确定评级为1400的玩家,输给了一个临时评级为1600的玩家,并与1500打平,则你的评级将为:( (1200 + 200) + (1400 + 400) + (1600 - 200) + 1500 ) / 4 = 1525


4
Elo系统是基于两位选手或者两个团队的等级差异而设计的,实际值并不重要。你可以从任何数字开始。我为Facebook Scrabble联赛运行一个系统,起始值为5000,只是为了将其与其他Scrabble评分系统区分开来。
通货膨胀不是由于被高估的新手输给经验丰富的玩家而导致的——随着时间的推移,这一切都会平衡。通货膨胀是由于低于平均水平的评分离开系统所导致的。这在网络游戏中往往会发生,不同于现实中的国际象棋,在那里通货紧缩是一个问题,因为高评分的玩家退役并将他们的分数从系统中带走。
但是你需要担心通货膨胀吗?唯一重要的时候是如果你希望将当前玩家的表现与历史人物进行比较——这不是在线玩家可能面临的问题。即使你担心通货膨胀,也很容易纠正。找到所有当前玩家的平均评分并将其与起始数字进行比较,如果太高,降低每个人的评分使其回归正常。根据我的经验,每个评级周期降低1或2个点就可以起到作用,并且可以解释很多被击败并不再回来的新手。
许多系统为新手提供更高的K值,以便他们更快地找到自己的水平。
另一种方法是在新手进行第一个评级周期之前不对其进行评级,此时根据Elo预测结果计算评级。如果你将所有未评级的玩家放在一起,这是不可能的(我认为);如果你在比赛中有多个新手,那么这就涉及到递归。这也破坏了Elo的零和原则,并且取消了您衡量通货膨胀的能力。然而,与使用此系统的人交谈后,我被告知在实践中“一切都会平衡”。
我还要补充一点,我们有一位坚定的玩家,在过去四年中玩了732场比赛,除21场外全部输掉了,他的Elo仍然约为4100分。他每轮失去的评分点数迅速接近零。

3
我不知道它是否有用,但Mark Glickman's Ratings Page讨论了关于Elo评级、其下降等问题(请参见其中的最后几段)。另外,请查看他的评级系统——Glicko system,该系统似乎考虑了比赛频率并讨论了评级可靠性。最后,请参阅他的研究页面,其中有很多关于评级及其可靠性的论文。

希望这有所帮助。


谢谢。我想使用Elo算法。这是确定的。但我不知道从哪里开始:0还是任何正数(例如1000)。 - caw
如果你担心评分通货紧缩/通货膨胀,你将不得不对算法进行一些更改:例如变量k因子、注入评分点或两者兼而有之。我没有详细研究Glicko系统,但它处理了Elo算法的缺点。这是一个棘手的问题:祝你好运! - Alok Singhal
新想法:Elo分数的起始值始终为当前平均值。因此,如果我有0、300、200和150的用户,则第五个用户将获得163的起始值。这样做好吗? - caw
我认为最好使用点数注入、变量K因子或两者的组合。从统计学上讲,我无法证明(尚未)您的方法是否考虑了通货膨胀或通货紧缩。顺便说一句,Glicko系统是Elo算法,但也有一个可靠性因素,因此原则上您可以使用它。看起来它已经在许多地方使用了。 - Alok Singhal

2
  1. 玩家能看到这个分数吗?
  2. 玩家会理解Elo评分系统吗?
  3. 如果玩家的得分变成负数,他们会继续玩吗?

我会让每个人从一些正的初始值开始(10、100、1000,无所谓)。当两个相对实力的玩家进行比赛时,得分如预期般交换。你需要关注的是两个玩家之间的相对实力。

假设,在游戏的后期,我有25000分,而你只有100分。我打败了你,我什么也没得到,你也什么也没失去。为什么?因为我只是打败了一个新手。新玩家没有击败起始玩家的优势。此外,即使你处于某个积分范围内,你也应该实现一些限制,规定在一定时间范围内,你只能从某个玩家那里获得有限的积分。

显然,这将是在游戏寿命中不断调整的内容。


谢谢。玩家们看到分数,因为这是玩家排名的主要标准。你想说什么是“玩家是否理解Elo算法”? Elo分数不应变成负数。如果输了会变成负数,输家不减分,而胜者像往常一样加分。 - caw
你提到的关于25,000分和100分的问题:那就是通货膨胀了,对吧?所以我只需要避免通货膨胀。 - caw
2
无论如何,当一个新玩家进入游戏时,你都会有一定程度的通货膨胀 - 无论你是从0开始还是100。如果我有0,但不能变成负数,如果你赢得比赛,你将获得积分而不会扣除任何积分。这就是将总积分添加到系统中。因此,一旦你认识到必须有通货膨胀,现在你必须决定采取措施来遏制通货膨胀。根据玩家相对得分调整奖励/惩罚是调整的最佳方式。 - Jarrett Meyer
实际上,如果你正在使用ELO系统,那么如果25000分的玩家击败了100分的玩家,很少有分数会改变。但是如果100分的玩家击败了25000分的玩家,许多分数会改变。这是ELO系统的一个巨大优势。 - Chip Uni

2

也许可以将得分限制在起始点上方,并将损失的分数放入某个“口袋”中。

假设玩家从0开始。一个玩家有elo 0并且输了10分。他将不会失去任何东西,这些分数会进入某个“口袋”。现在,假设玩家赢了下一场比赛并获得了11分。他不会获得这11分,而是只会获得1分。现在他的“口袋”里有0分。


1

我认为互联网上大多数类似ELO的系统都会存在等级膨胀的问题。

假设所有新玩家的初始等级为零。LousyPlayer输了十几局游戏,他的等级远低于零。那么什么阻止他清除浏览器,在新的电子邮件地址下注册一个新账户,重新开始呢?

如果这是可能的,那么低排名的账户将被闲置,从而提高实际平均等级。


非常感谢,我没有想到这一点。所以我不能完全防止通货膨胀或通货紧缩,对吗? - caw
不行!当每个人都互相对战时,ELO系统运作得非常完美...但是当人们进出系统时就不行了。你应该看看其他游戏系统用来防止通货膨胀或通货紧缩的方法。 - Chip Uni
这可以通过更多的系统游戏化(成就等)来避免一定程度上 - 然后创建新帐户不太常见,因为玩家失去了他们的“自我特权”。这在许多游戏中都有应用。 - niilzon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接