Metodika výpočtu EloST (Elo-stolní-tenis)

Verze 5.1.3, 10. 4. 2019

Obecný popis

EloST pracuje s daty soutěží ČAST od sezóny 2011/2012. Pro úvodní nastavení bylo využito iterační metody, která je založena na obdobných principech, jako zde popsána průběžná metoda výpočtu. Následně je propočítán vývoj Elo na datech od sezóny 2011/12 průběžnou metodou, která je definována níže. V současnosti se načítají každou hodinu nově odehrané zápasy a okamžitě jsou převáděny do aktuálních Elo výsledků.

Model EloST

V modelu hodnocení výkonnosti stolních tenistů EloST je každý hráč reprezentován třemi hlavními hodnotami, na základě kterých probíhá vývoj a jako jediné vstupují do výpočtů po odehraném zápase:

  • Elo: hlavní prezentovaný koeficient výkonosti hráče, podle Elo je řazena většina žebříčků. Na základě vývoje tohoto koeficientu v čase je odvozen doplňkový ukazatel Elotrend (viz níže), který ale nevstupuje do žádných výpočtů a slouží pouze pro řazení některých žebříčků.
  • Elomax: maximální předpokládaná výkonnost hráče. Ve výpočtech figuruje jako vstupní hodnota síly soupeře, pokud zvítězil soupeř.
  • Elomin: minimální předpokládaná výkonost hráče. Ve výpočtech figuruje jako vstupní hodnota síly soupeře, pokud soupeř prohrál.
Na základě výsledku zápasu se přepočítají hráči jeho tři hlavní koeficienty podled soupeřova Elomax nebo Elomin. V případě vstupu zcela nového hráče do modelu jsou nastaveny hlavní koeficienty na hodnoty: Elo = 1, Elomax = 2 399, Elomin = 1. Tím je zajištěno, že v systému nový a neznámý soupeř nebude ovlivňovat hráčovo Elo, protože hráč buď porazí soupeře s Elomin = 1 nebo prohraje se soupeřem s Elomax = 2 399, což s nadsázkou představuje prohru s Petrem Korbelem nebo výhru nad dvouletým dítětem. Tím jak novému hráči postupně přibývají zápasy, se rozpětí jeho Elomin a Elomax zmenšuje a on se postupně stává plnohodnotným soupeřem. A naopak, pokud hráč dlouho nehraje, rozpětí Elomin a Elomax se v čase zvětšuje.

Stručný princip

Elo rozdíl koeficientů soupeřů určuje pravděpodobnost výsledku. Pokud výsledek odpovídá očekávání, tak se Elo hráčů nemění. V opačném případě se Elo mění tím více, čím dále byl výsledek od původního předpokladu. Srdce algoritmu je právě funkce, která určuje na základě rozdílů Elo soupeřů pravděpodobnost výsledku zápasu. Rozložení pravděpodobnosti je vidět na grafu gr. 1, přičemž červená křivka je rozložení používané u standardního algoritmu Elo a modrá křivka je rozložení, které je používáno naším algoritmem EloST a které lépe odpovídá systému soutěží stolního tenisu v ČR.

gr. 1
rozložení pravděpodobnosti EloST
Na ose y je pravděpodobnost výhry v procentech a na ose x je Elo rozdíl obou hráčů.

Například pokud je Elo rozdíl soupeřů 150 je předpoklad výhry hráče s vyšším Elo okolo 90%, pokud skutečně vyhraje, stoupne mu koeficient jen nepatrně, pokud prohraje sníží se daleko výrazněji.

Od verze 4.0 se křivka rozdělení Elo bodů liší od pravděpodobnostní křivky. Pokud skončí zápas překvapivým výsledkem, není již počet rozdělovaných Elo bodů omezen. Dochází tak například k rychlejšímu nastavení správných hodnot u nových hráčů v sytému. Zároveň došlo ke snížení přidělování Elo bodů v případě, kdy se utkají vyrovnaní hráči, takže vývoj Elo není tolik rozkmitaný.
Porovnání rozdělení Elo bodů je patrné z grafu gr. 2.

gr. 2
porovnání rozdělení Elo v3 a v5
Rozdělení do verze 3.1 je reprezentováno modrou křivkou, od verze 5.1 odpovídá rozdělení červené křivce.

Základní vzorec bez doplňujících vah pro začínající hráče:
vz. 1
vzorec EloST základni
vz. 2
vzorec EloST základni, substituce 1
vz. 3
vzorec EloST základni, substituce 2
vz. 4
vzorec EloST základni, substituce 3
Přičemž, Sh je skóre hráče v intervalu <0,1>; Eh a Es jsou Elo hráče a soupeře; Ehn je výsledné Elo hráče; definice a nastavení konstant k_ naleznete níže.

Elo(stabil)

Elo(stabil) je doplňkový ukazatel, který byl zaveden pro sestavování více vypovídajících finálních a nasazovacích žebříčků. Ukazatel vychází z vývoje hráče zejména za poslední období, ale zároveň nepodléhá tak velkým výkyvům jako Elo, proto například několik proher v posledních zápasech sezóny nebude mít velký vliv na výslednou hodnotu ukazatele.

Elo(stabil) je stanoveno exponenciálním vyrovnáním s periodou 20, tzn. s koeficientem alfa = 2/(20+1). Představit si to můžete jako vážený průměr Elo po všech zápasech, přičemž nejnovější hodnota má váhu alfa, která se u starších zápasů postupně snižuje. Konkrétně je vzorec výpočtu Elo(stabil) pro n-tý zápas: Elo(stabil)n = Elo(stabil)n-1 + alfa * (Elon - Elo(stabil)n-1).

Elo(stabil) má oproti Elo(trend) několik výhod:
1. při určitých speciálních situacích může Elo(trend) výrazně nadhodnotit nebo podhodnotit výkonost hráče;
2. Elo(stabil) rychleji reflektuje dlouhodobé změny výkonosti hráče;
3. Elo(trend) je významně ovlivněno vypadáváním rok a více starých zápasů, což na hráče působí matoucím dojmem, Elo(stabil) má hladký, předvídatelný a snadno uchopitelný průběh.

Elo(trend)

Doplňkový ukazatel Elo(trend) vychází z vývoje hráče za poslední rok. Blížší info: Elo(trend) - lineární regrese.

Hlavní rozdíly mezi verzemi

  • verze 5.1.2 (8.3.2019) -> verze 5.1.3 (10.4.2019)
    • Zavedení nového ukazatele Elo(stabil), vhodného pro nasazovací žebříčky.
  • verze 5.1.1 (27.11.2018) -> verze 5.1.2 (8.3.2019)
    • Rozšíření období iterační metody o rok 2018 (přesně do 28.2.2019), protože některé okresy začly publikovat výsledky na STISu až od sezóny 2018/19.
    • Úprava obecného popisu metodiky
  • verze 5.1.0 (20.9.2018) -> verze 5.1.1 (27.11.2018)
    • Oprava chyby u načítání kontumovaných utkání.
  • verze 5.0.4 (15.5.2018) -> verze 5.1.0 (20.9.2018)
    • Úprava vzorce a konstant, která má za výsledek menší změnu Elo u velmi překvapujících výsledků. K této úpravě bylo přistoupeno hlavně vzhledem k započítávání nedohraných zápasů, například z důvodu zranění.
    • Započítávání WO zápasů, pokud byl započat.
    • Změna pro výpočet váhy ws. Tato změna zajistí, aby v případě hráčů s velkým rozdílem Elomin a Elomax nedocházelo k úpravě Elo, která překračuje hranice Elomin a Elomax.
  • verze 5.0.3 (1.5.2018) -> verze 5.0.4 (15.5.2018)
    • Oprava chyby v algoritmu a zavedení konstanty wrk, obě změny ovlivňují pouze nováčky v žebříčku.
  • verze 5.0.2 (12.4.2018) -> verze 5.0.3 (1.5.2018)
    • Oprava chyby při importu kontumaci ze STISu.
  • verze 5.0.1 (5.4.2018) -> verze 5.0.2 (12.4.2018)
  • verze 5.0.0 (2.4.2018) -> verze 5.0.1 (5.4.2018)
    • Vzhledem k nevhodnému načasování změny Elo(trend) na konci sezóny a na základě konzultací se zástupci oddílů i zástupci ČAST bylo přistoupeno k návratu k původní verzi algoritmu pro výpočet Elo(trend).
    • Pro výpočet hodnoty změny použité v žebříčku Skokan roku byla zaveden podmínka Elomax - Elo <= Rmax, viz níže
  • verze 4.0.1 (10.1.2018) -> verze 5.0.0 (28.3.2018)
    • Zavedení intervalu spolehlivosti Elomax, Elomin
    • Díky intervalu spolehlivosti, mohou začínat noví hráči s hodnotou Elo = 1
    • Prodloužení období pro iterační metodu do 31.12.2017
    • Odstranění závislosti výpočtu Elo na věku hráčů
    • Odstranění závislosti výpočtu Elo na počtu odehraných utkání
    • Změna výpočtu Elo(trend), viz Elo(trend)
  • verze 4.0.0 (30.11.2018) -> verze 4.0.1 (10.1.2018)
    • Oprava drobné chyby při zpracování pořadí zápasů. Chyba se projevovala u hráčů, kteří odehráli málo zápasů (méně než 15) a zároveň hráli dvě utkání v jeden den.
  • verze 3.1.1 (15.9.2017) -> verze 4.0.0 (30.11.2017)
    • Přepracování hlavního vzorce:
      • rychlejší vývoj nových hráčů v systému
      • hladší průběh vývoje Elo, díky snížení koeficientu kr
    • Změna koeficientů:
      • kr = 12 (bylo 16)
      • wc = 5 (bylo 8)
      • wr = 2.5 (bylo 2)
ukázat i starší změny

Definice pojmů a symbolů

Elo - hlavní bodová hodnota vyjadřující výkonost hráče
Elomin, Elomax - interval spolehlivosti bodové hodnoty
Eh - Elo nebo Elomin nebo Elomax hráče
Ehn - nově vypočtená hodnota Elo neboElomin nebo Elomax hráče
Es - pokud hráč vyhraje Es = Elomin soupeře; pokud hráč prohraje Es = Elomax soupeře
Ehs - pokud hráč vyhraje Ehs = Elomax; pokud hráč prohraje Ehs = Elomin
Er - rozdíl Elo mezi soupeři, definice viz vzorec vz. 2
Ers - substituční proměnná, definice viz vzorec vz. 4
Eb - balanční korekce Elo (u nových hráčů dochází k rychlejšímu rozvoji Elo a vzhledem k tomu, že statisticky větší procento hráčů nově vstupujících do systému své úvodní zápasy prohrává, dochází v průměru všech hráčů k vychýlení Elo od výchozí hodnoty, v zájmu zachování rovnováhy byla zavedena drobná úprava před každým výpočtem nového Elo ve formě Eb ve velikosti, která je přímo úměrná rozdílu (Ev - průměr Elo všech aktivních hráčů), změně Elo a nepřímo úměrná počtu zápasů hráče za rok; viz Balanční korekce
kr - konstanta rozvoje (konstanta ovlivňuje rychlost změn u předpokládaných výsledků nebo výsledků vyrovnaných soupeřů)
ks - konstanta sklonu (konstanta ovlivňuje rychlost změn u překvapivých výsledků)
km - konstanta maximálního sklonu (konstanta určuje maximální rychlost změn u velmi překvapivých výsledků)
kp - konstanta rozpětí (konstanta ovlivňuje velikost změny Elo v závislosti na výsledku a rozdílu vstupního Elo jednotlivých hráčů; viz 2. bod v sekci "postup výpočtu")
kk - konstanta kontrakce (konstanta ovlivňuje rychlost přibližování pravděpodobnosti k hraničním hodnotám 0% a 100% u zápasů hráčů s velmi odlišným Elo)
ws - váha sklonu (v závislosti na intervalu spolehlivosti se může hráč s širším intervalem vyvíjet rychleji), viz vzorec vz. 6
wr - rozdíl intervalu spolehlivosti wr = Elomax - Elomin - (Elomaxsoupeře - Elominsoupeře); pokud je wr > 225, pak je nastavená hodnota wr = 225
wrk - korekce rozdílu intervalu spolehlivosti wrk = (Elos - Elo) / (Elohs - Elo); pokud je wrk < 1, je nastavená hodnota wrk = 1
Sh a Ss - skóre hráče a soupeře převedené do intervalu <0,1> (1-výhra, 0-prohra)
Sh2 a Ss2 - skóre hráče a soupeře převedené do intervalu <-1,1> (1-výhra, -1-prohra), viz vzorec vz. 3
Zr - počet hráčem odehraných zápasů za poslení rok (pokud je dnes 17.06.2019, pak od 17.06.2018 včetně)
Zrp - požadovaný počet odehraných zápasů za poslení rok, aby byl hráč aktivní
Zc - počet hráčem odehraných zápasů celkem od 1.7.2011
Zcp - požadovaný počet odehraných her celkem, aby byl hráč aktivní
Rmax - požadovaný maximální rozdíl Elo a Elomin

Nastavení konstant

kp = 400
kr = 12
ks = 12 000
km = 10
kk = 2.25
Zcp = 10
Zrp = 5
Rmax = 75
výchozí Elo pro nové hráče: Elo=1; Elomin=1; Elomax=2399

Postup výpočtu

Předpokládejme, že počítáme nové hodnoty Elo, Elomin, Elomax pro jednoho z hráčů po jednom zápase.
Vstupními daty zápasu je: výsledek na body.
Vstupními daty u hráče i soupeře jsou: Elo, Elomin, Elomax.

  1. Vybereme správnou hodnotu Es a Ehs:
    - v případě výhry hráče: Es = Elomin soupeře a Ehs = Elomax
    - v případě prohry hráče: Es = Elomax soupeře a Ehs = Elomin
  2. Určíme váhu ws:
    - pokud platí Es = Eh, pak ws = 1
    - v ostatních případech zíkáme je ws dle vzorce vz. 5:
    vz. 5
    vzorec EloST váha w_s
  3. Vypočteme nové Elo nebo Elomin nebo Elomax hráče dle vzorců: vz. 6, vz. 2, vz. 3, vz. 4.
    vz. 6
    vzorec EloST
  4. K výsledku přičteme balanční koeficient Eb (viz Balanční korekce) a výsledek zaokrouhlíme na celé číslo.
  5. Bod 2. a 4. zopakujeme pro Elo, Elomin i Elomax.

Kromě změn na základě odehraných zápasů dochází navíc k automatické úpravě Elomin a Elomax v čase: jednou za dva týdny je každému hráči zníženo Elomin o hodnotu 1 a zvýšeno Elomax o hodnotu 1.

Zařazení do žebříčku

Po propočtení všech zápasů dochází k určení, zda je hráč aktivní a tudíž zařazený do hlavního žebříčku. Aby byl hráč aktivní musí splnit tyto podmínky:
  • Zc >= Zcp
  • Zr >= Zrp
  • Elo - Elomin <= Rmax

Výpočet hodnoty zmeny za rok (Skokan roku)

Pro výpočet hodnoty změny hráče za poslední rok je použito Elo, které bylo platné přesně před rokem, pokud ale v té době nebyla splněna níže uvedená podmínka, je použita první možná hodnota mladší než rok, u které byla podmínka splněna.
  • Elomax - Elo <= Rmax

Závěr

Tímto postupem se zpracovávají všechny zápasy a hráči. Systém načítá ze STISu nová potvrzená utkání jednou za hodinu a zpracovává je proto v pořadí, tak jak se postupně objevují ve výsledkovém servisu. Jednou týdně dochází ke kompletnímu přepočítávání všech zápasů, čímž jsou zohledněny případné dodatečné změny ve výsledcích a také je opraveno pořadí zápasů, pokud se stane, že pozdější zápas se objeví na STISu dříve. Kontumované zápasy nejsou do výpočtů zařazeny.

Systém Elo dává dobré výsledky v případě, kdy se hráči utkávají často mezi sebou navzájem, napříč oblastmi a kluby. Kdyby byly všechny zápasy odehrány v izolovaných skupinách nedávaly by hodnoty příliš smysl. Soutěže ČAST jsou naštěstí dostatečně provázány hráči, kteří nastupují ve více soutěžích najednou. Tímto způsobem vlastně hráči předávají svými výkony potřebné informace napříč všemi soutěžemi.

Hráči k porovnání:
0
porovnat hráčevyčistit porovnání