Sistema de Classificação Glicko-2: Bug or exploit?


13

Originalmente , eu publiquei isso no StackOverflow , pois poderia ser um bug nas implementações, mas alguns sugeriram que eu publicasse em matemática. Acabei de encontrar essa troca de pilha e pensei em quem melhor? Alguns de vocês devem saber de imediato que isso parece preciso ou não, sem a necessidade de depuração. Quaisquer links para calculadoras on-line ou métodos alternativos de classificação são bem-vindos.


O Glicko-2 é um sistema de classificação usado no xadrez, mas pode ser usado em muitas outras situações. O Glicko-2 é uma melhoria do Glicko-1, que abordou problemas da classificação ELO mais antiga.

O que torna o Glicko-2 especial em comparação com a versão 1 é que ele incorpora um maior desvio de classificação (RD) quanto mais tempo alguém fica inativo. Faz isso com a noção de uma constante do sistema relacionada a períodos de tempo / classificação.

Um exemplo escrito do autor é encontrado aqui: http://www.glicko.net/glicko/glicko2.pdf .
Dentro deste documento, ele explica:

O sistema Glicko-2 funciona melhor quando o número de jogos em um período de classificação é moderado a grande, digamos uma média de pelo menos 10 a 15 jogos por jogador em um período de classificação. O período de tempo para um período de classificação fica a critério do administrador.

Partindo do pressuposto de que um grupo de jogadores de xadrez ativos joga de 10 a 15 jogos em média em um período de 1 mês, o administrador atualiza as classificações no final de cada mês.


Eu precisava de uma implementação em PHP do sistema de classificação Glicko-2 e me deparei com o seguinte:

Implementação do Glicko-2 JavaScript

  • O JavaScript teve um pequeno erro, no qual não o deixava corresponder ao exemplo de redação técnica, o autor o achou próximo o suficiente e não se incomodou em depurar.

Implementação do Glicko-2 PHP

  • A implementação do PHP foi afetada por muitos bugs, mas isso não era aparente, a menos que você fizesse mais de um período de classificação (do qual a revisão técnica nunca mostra os valores esperados)

Calculadora Glicko-2 no Excel

  • Finalmente, a calculadora do Excel parecia livre de erros e a mais profissional, feita por alguém da comunidade de xadrez. Depois que o bug do JavaScript foi resolvido, o JavaScript e a Calculadora do Excel se aproximavam muito (embora não fossem perfeitos, poderiam estar dentro de um erro de arredondamento)

Corrigi os bugs (e enviei problemas / correções aos autores) que encontrei nas versões PHP e JavaScript para corresponder o mais próximo possível à Calculadora do Excel


Agora estou 99% confiante de que tenho uma implementação precisa do Glicko-2 (entre os três) para análise e foi aí que me deparei com algo estranho e o tópico desta discussão.

Dado o padrão sugerido para o Glicko-2 para um novo player:

Rating:      1500
RD:           350
Volatility:  0.06

Se você enfrentar um oponente médio da classificação 1378 e RD 99 ( Fonte ) apenas uma vez a cada período de classificação (1 mês) pelos próximos 12 períodos (1 ano), terá acumulado uma classificação presumida de Classe Nacional A (1800-1999) de 1852 quando, na realidade, você venceu apenas 12 jogadores com classificação média em um período de 12 meses.

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        〃

Se você enfrentar 2 oponentes médios a cada período de classificação, poderá chegar à Classe A Nacional por cerca de 4-5 meses, enfrentando apenas 8-10 oponentes médios.

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        〃


Essas suposições são precisas? Há algum erro na minha calculadora?

Se não for um bug, quais são algumas maneiras de combater isso além disso:

  • Considere "classificação verdadeira" como o limite inferior do desvio (Rating - RD)
  • Não mostrar a classificação do usuário inativo
  • Não mostrar usuários com menos de N jogos


Respostas:


9

Eu trabalhei em uma implementação do Scala há alguns meses atrás, embora ela tenha sido um pouco polida - devo voltar para finalizá-la. Eu pelo menos obtive alguns resultados razoáveis ​​com isso.

Se você vencer todos os jogos, sim, sua classificação aumentará bastante, mesmo se você jogar apenas contra jogadores de baixa classificação. A probabilidade de você vencer todos os jogos contra esse adversário provavelmente é sobre o que um jogador da classe A alcançaria (embora provavelmente esteja um pouco inflado devido ao RD relativamente alto).

A melhor maneira de combater, na minha opinião, é não considerar alguém com um RD acima de um determinado valor uma classificação estável - ou seja, considerá-lo "provisório". Além disso, para ganhar um título, pelo menos na USCF, eles têm um sistema de normas, no qual você deve executar em um determinado nível em um torneio de 4 jogos ou mais (4 vezes, acredito), o que faz a probabilidade de jogar contra um ~ 1378 por todo o torneio [quatro vezes] muito improvável.

Seu objetivo é usar isso no xadrez? Qual é o seu caso de uso?

Atualização: o FICS lida com isso considerando apenas pessoas com um RD de <80 ativo. (Eles ainda usam o Glicko-1, acredito.) Http://www.freechess.org/Help/ficsfaq.html#Q005.003

A propósito, o Glicko-1 também usa decaimento de RD / tempo. A principal melhoria do Glicko-2 foi o fator "volatilidade", que permite que pessoas com resultados irregulares ou resultados estáveis ​​sejam calculadas de maneira ligeiramente diferente. Eu acho que é uma pequena alteração no Glicko-1 que causa um cálculo extra considerável - mas como você, eu ainda estava interessado em calculá-lo. Na verdade, pedi ao próprio Glickman alguns pontos de dados adicionais para teste, mas ele estava ocupado demais para fornecê-los na época.


Para sua informação, um título em nível de classe da USCF exige a obtenção de uma norma em 5 torneios.
DM
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.