He desarrollado la implementación estándar de ELO que se puede encontrar aquí , pero el problema con el que me encuentro es que mis jugadores solo tendrán entre 10 y 40 juegos en una "temporada". Como mi primera temporada ya se completó (recién estoy comenzando mi propio sistema de clasificación para mi juego), sé cuál debería ser el rango de las clasificaciones ELO de mis jugadores, o al menos muy cerca de eso. Mi problema es que, después de implementar ese algoritmo base, tengo algunos valores atípicos que están muy lejos.
Como solo tengo de 10 a 40 juegos, mi primer pensamiento para remediar esta situación fue implementar un ciclo alrededor de este proceso, tomando el resultado final de la calificación ELO de un ciclo, y usarlo como punto de partida para el siguiente ciclo (para cada individuo jugador). Luego, repita estos ciclos hasta que la desviación promedio o máxima de las clasificaciones ELO de los ciclos anteriores a los actuales no sea mayor que X. Esto ayudó a resolver algunos de los grandes valores atípicos. Todavía hay algunos valores atípicos más pequeños con los que todavía no me siento cómodo ...
Como ejemplo, tengo 7 divisiones, para la división 1, el tipo que debería estar en el puesto n. ° 1 en función de su ELO, termina en el quinto lugar, para la división 2, el hombre que debe estar en el puesto n. ° 1 es el tercero. Los 10 primeros para cada división están bastante cerca, excepto por este tipo de valores atípicos.
¿Cómo puedo modificar mi algoritmo, o qué enfoque puedo tomar para tratar de reducir los valores atípicos?
Nota al margen # 1. Para la división 1, el tipo que debería ser el # 1, que termina en el # 5, en realidad está clasificado como el # 1 para toda la temporada por el otro sistema de clasificación. Simplemente no sé cómo se calcula ese (y puede que no se calcule, podría basarse en, sé que x jugador es tan bueno, por lo que está en el puesto n. ° 1).
Nota al margen # 2. He hecho una modificación al algoritmo. Quiero "ponderar" las victorias / derrotas por lo dominantes que fueron. Si el jugador A vence al jugador B 20-0, quiero que tenga más peso, especialmente si sus clasificaciones son muy cercanas, pero si sus clasificaciones están más separadas (donde a ya es mayor que B), entonces el cambio de ELO no debería ser eso de todos modos ya que se esperaba que ganaran en primer lugar. Entonces, lo que hice fue en lugar de usar el factor k / valor de 400 como lo usa la fórmula original, lo cambié para que sea 100 + ((score difference) * 2)
. Entonces, el factor k máximo sería 140 (20-0 es la mayor victoria, multiplique por 2, agregue a 100).
¿Qué otra estrategia podría implementar para incluir resultados de peso, así como corregir algunos de esos valores atípicos?
Sin tener los datos frente a mí (todo está en casa), intentaré resumir el escenario ...
División I
#1 Elo Rating of 2250
#2 Elo Rating of 2200
#3 Elo rating of 2190
#4 Elo rating of 2175
#5 Elo rating of 2170
Donde el hombre # 5 acaba de vencer al # 1 para ganar el torneo, y su "cuerpo de trabajo" parece más completo que el hombre # 1 (también conocido como el que jugó y venció a oponentes más fuertes que el hombre # 1). Tal vez sea porque el factor k "ponderado" está descartando esto porque el # 5 tuvo muchas victorias con solo 2 a 5 puntos, donde las victorias # 1 fueron por un margen más alto, digamos de 5 a 10 puntos.
Tal vez solo necesito jugar con mi factor k "ponderado" para ver si puedo obtener mis resultados calculados más cercanos a los resultados reales ...
Respuestas:
Esto es lo que he hecho para tratar de resolver el escenario de los valores atípicos. Re-simulando toda mi temporada, sabiendo lo que DEBE clasificarse cada jugador al final de la temporada regular y el torneo que finaliza la temporada. Obviamente cuando hay "disgustos" en el torneo de final de temporada, no saldrá exacto, pero creo que esto me dio los resultados más cercanos que funcionan para TODOS los jugadores.
fuente