gpt4 book ai didi

Python Trueskill (ELO) 分数下滑

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:02 34 4
gpt4 key购买 nike

为什么随机人群和随机获胜者,分数慢慢漂移到 0。我知道分数可能是随机的,但为什么总是负漂移?

import trueskill as ts
from random import choice

r = []
for i in range(10):
r.append(ts.Rating())


def avg(r):
ratings = [(a.mu, a.sigma) for a in r]
mus = list(zip(*ratings))[0]
sigmas = list(zip(*ratings))[1]
avg_mu = sum(mus) / float(len(mus))
avg_sigma = sum(sigmas) / float(len(sigmas))
return avg_mu, avg_sigma


for j in range(20000):
p1_ix = choice(range(len(r)))
p2_ix = choice(range(len(r)))
p1 = r[p1_ix]
p2 = r[p2_ix]
r[p1_ix], r[p2_ix] = ts.rate_1vs1(p1, p2)
if not j % 1000:
print(avg(r))

最佳答案

您使用的是 TrueSkill 算法,而不是 ELO。 TrueSkill 有一种不同的更新技能等级的方法。虽然 ELO 是一个零和系统,但 TrueSkill 依靠不确定性参数(由游戏数量及其结果决定)来调整技能等级。因此,如果一场比赛中的两名球员具有相等的不确定性值,则 TrueSkill 只是零和游戏。

您运行的模拟创建了玩家具有截然不同的不确定性参数的情况。这一点,再加上您违反了更高评分的玩家将更频繁地获胜的假设,将导致一些奇怪的行为。更好的模拟是有几个循环调度。这样每场比赛的比赛次数就会更加相似。如果您运行下面的代码,平均评分将保持在接近 25 的水平。

import trueskill as ts
from random import choice, shuffle
import numpy as np

r = []
for i in range(10):
r.append(ts.Rating())


def avg(r):
ratings = [(a.mu, a.sigma) for a in r]
mus = list(zip(*ratings))[0]
sigmas = list(zip(*ratings))[1]
avg_mu = sum(mus) / float(len(mus))
avg_sigma = sum(sigmas) / float(len(sigmas))
return avg_mu, avg_sigma


for j in range(4444):
# Create array of all possible matchup combinations
possible_matches = np.array(list(itertools.combinations(list(range(len(r))), 2)))
# Shuffle the matches to create a random-order round-robin schedule
np.random.shuffle(possible_matches)
for match in possible_matches:
# Shuffle the order of the players in each match to randomize the result
np.random.shuffle(match)
p1_ix = match[0]
p2_ix = match[1]
p1 = r[p1_ix]
p2 = r[p2_ix]
r[p1_ix], r[p2_ix] = ts.rate_1vs1(p1, p2)
if j % 222 == 0:
print(avg(r))

此外,请务必注意 TrueSkill 不受 0 的限制,因此如果您运行足够长的时间,您的模拟将导致负分。但是,我无法完全解释为什么它总是产生负漂移。直觉上,我认为它会以相等的概率随机地向正向或负向漂移。我的猜测是,存在某种阻尼因素,使得玩家不太可能在技能等级高得离谱的情况下随机逃跑。

关于Python Trueskill (ELO) 分数下滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47406700/

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