Ich habe die Standard- ELO- Implementierung entwickelt, die hier zu finden ist , aber das Problem, auf das ich stoße, ist, dass meine Spieler in einer "Saison" nur zwischen 10 und 40 Spiele haben werden. Da meine erste Saison bereits abgeschlossen ist (ich starte gerade mein EIGENES Bewertungssystem für mein Spiel), weiß ich, wie hoch der Rang der ELO-Bewertungen meiner Spieler sein sollte oder zumindest sehr nahe daran. Mein Problem ist, dass ich nach der Implementierung dieses Basisalgorithmus einige Ausreißer habe, die weit entfernt sind.
Da ich nur 10 bis 40 Spiele habe, war mein erster Gedanke, um diese Situation zu beheben, eine Schleife um diesen Prozess zu implementieren, wobei die ELO-Bewertung des Endergebnisses aus einem Zyklus genommen und als Ausgangspunkt für den nächsten Zyklus (für jede Person) verwendet wurde Spieler). Wiederholen Sie diese Zyklen dann, bis die durchschnittliche oder maximale Abweichung der ELO-Bewertungen von früheren zu aktuellen Zyklen nicht größer als X ist. Dies hat dazu beigetragen, einige der großen Ausreißer zu beheben. Es gibt immer noch einige kleinere Ausreißer, mit denen ich mich immer noch nicht wohl fühle ...
Als Beispiel habe ich 7 Divisionen, für Division 1 wird der Typ, der basierend auf seinem ELO auf Platz 1 stehen sollte, auf Platz 5, für Division 2 auf Platz 3. Die Top 10 für jede Division liegen tatsächlich ziemlich nahe beieinander, mit Ausnahme dieser Art von Ausreißern.
Wie kann ich meinen Algorithmus ändern oder wie kann ich versuchen, die Ausreißer zu reduzieren?
Randnotiz Nr. 1. Für die Division 1 wird der Typ, der die Nummer 1 sein sollte und die Nummer 5 wird, vom anderen Bewertungssystem für die gesamte Saison auf Platz 1 eingestuft. Ich weiß nur nicht, wie das berechnet wird (und es kann nicht berechnet werden, es könnte darauf basieren, ich weiß, dass x Spieler so gut ist, also ist er auf Platz 1).
Randnotiz Nr. 2. Ich habe den Algorithmus geändert. Ich möchte die Gewinne / Verluste danach "gewichten", wie dominant sie waren. Wenn Spieler A Spieler B mit 20: 0 schlägt, möchte ich, dass dies stärker gewichtet wird, insbesondere wenn die Bewertungen sehr nahe beieinander liegen. Wenn die Bewertungen jedoch weiter voneinander entfernt sind (wobei a bereits größer als B ist), sollte die ELO-Änderung nicht erfolgen so viel sowieso, da erwartet wurde, dass sie überhaupt gewinnen. Also habe ich, anstatt den k-Faktor / Wert von 400 wie in der ursprünglichen Formel zu verwenden, diesen geändert 100 + ((score difference) * 2)
. Der maximale k-Faktor wäre also 140 (20-0 ist der größte Gewinn, multiplizieren Sie mit 2, addieren Sie zu 100).
Welche andere Strategie könnte ich implementieren, um Gewichtsergebnisse einzubeziehen und einige dieser Ausreißer zu korrigieren?
Ohne die Daten vor mir zu haben (alles ist zu Hause), werde ich versuchen, das Szenario zusammenzufassen ...
Erste Liga
#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
Wobei der Typ Nr. 5 gerade die Nummer 1 besiegt hat, um das Turnier zu gewinnen, und sein "Werk" vollständiger zu sein scheint als der Typ Nr. 1 (auch bekannt als er gegen ihn gespielt hat und stärkere Gegner besiegt hat als der Typ Nr. 1). Vielleicht liegt es daran, dass der "gewichtete" k-Faktor dies abwirft, weil # 5 viele Siege hatte, die nur um 2 bis 5 Punkte lagen, während # 1-Siege mit einem höheren Vorsprung lagen, sagen wir 5 bis 10 Punkte.
Vielleicht muss ich nur mit meinem "gewichteten" k-Faktor herumspielen, um zu sehen, ob ich meine berechneten Ergebnisse näher an die tatsächlichen Ergebnisse bringen kann ...
Antworten:
Folgendes habe ich getan, um das Szenario der Ausreißer zu lösen. Ich simuliere meine gesamte Saison neu und weiß, welche Spieler am Ende der regulären Saison und des Turniers zum Saisonende eingestuft werden sollten. Wenn es im Saisonende-Turnier "Überraschungen" gibt, wird es natürlich nicht genau herauskommen, aber ich denke, dies hat mir die besten Ergebnisse gebracht, die für ALLE Spieler funktionieren.
quelle