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

Verze 2.2.2, 22. 10. 2016

Obecný popis

EloST pracuje s daty soutěží ČAST od sezóny 2011/2012. První dvě sezóny byly využity pro prvotní natavení Elo iterační metodou. Od sézony 2013/2014 jsou elo koeficienty počítány níže definovaným postupem. V současnosti se načítají jednou denně nově odehrané zápasy a okamžitě jsou převáděny do aktuálních Elo výsledků.

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. Pro Elo(body) je rozložení pravděpodobnosti vidět na níže uvedeném grafu, přičemž žlutá křivka je rozložení používané u standardního algoritmu Elo a červená 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.
rozložení pravděpodobnosti EloST
Na ose y je pravděpodobnost výhry 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. Základní vzorec bez doplňujících vah a koeficientů, které budou popsány níže, vypadá následovně:
vzorec EloST

Pro co nejvěrohodnější nastavení Elo vstupují do hry další váhy a koeficienty, které mají například za úkol rychlé počáteční nastavení nového hráče nebo naopak eliminaci změn pokud má hráč soupeře, který ještě nemá Elo dostatečně zkalibrované. Kompletní vzorec s použitím těchto rozšíření naleznete níže v sekci "Postup výpočtu".

Hlavní rozdíly mezi verzemi

  • verze 2.2.1 (16.10.2016) -> verze 2.2.2 (22.10.2016)
    • oprava drobné chyby při výpočtu Eb
    • do výpočtů jsou nyní zahrnuty i dohrané zápasy, které nebyly započítány do výsledku utkání
  • verze 2.2.0 (13.10.2016) -> verze 2.2.1 (16.10.2016)
    • změna koeficientů ovlivňující zrychlený vývoj Elo u nových hráčů:
      • wc = 4 (bylo 3)
      • wr = 4 (bylo 1.5)
      • Zcp = 20 (bylo 30)
      • Zrp = 10 (bylo 15)
  • verze 2.1.0 (15.5.2016) -> verze 2.2.0 (13.10.2016)
    • změna u výpočtu rychlejšího vývoje Elo u dětí a dorostenců do 20-ti let; koeficient wv se nyní používá vždy, nejen když má hráč odehráno málo zápasů, nevyskytuje se tedy při stanovení Zrm, ale přímo ve vzorci pro výpočet koeficientu rozvoje kh a ks.
    • Eb - balanční korekce Elo se nyní stanovuje z průměru Elo pro hráče, kteří odehráli za poslední rok alespoň jeden zápas; dříve se pracovalo s průměrem všech hráčů, ale obvyklý případ, kdy nový slabý hráč odehraje několi zápasů (jako novému hráči mu hodně klesne Elo) a následně ukončí další účast v soutěžích je tak častý, že tento jev příliš ovlivňoval průměrné Elo; tato změna plošně snížila Elo všem hráčům
    • Eb - balanční korekce Elo se nyní použije pouze pokud zvýší Elo(body) nebo Elo(sety) směrem k vyrovnání rozdílu mezi Elo(body) a Elo(sety) hráče; je to jediná vazba mezi Elo(body) a Elo(sety), která má relativně zanedbatelnou hodnotu, ale v celku zabraňuje divergenci Elo(body) a Elo(sety)
    • změna hodnoty koeficientu rozpětí: kp = 350
    • změna hodnoty a použití koeficientu kt v hlavním vzorci pro výpočet Ehn
  • verze 2.0.0 (18.4.2016) -> verze 2.1.0 (15.5.2016)
    • největší změna proběhla v úpravě iterační metody, zajišťující prvotní nastavení Elo
    • změna nastavení koeficientů a vah: kr, kt, wc
  • verze 1.2.0 (2.4.2016) -> verze 2.0.0 (18.4.2016)
    • největší úpravou je změna rozložení pravděpodobnosti výhry, viz hlavní vzorec níže a křivky rozložení výše
    • zrušení rozdílných koeficientů podle soutěží, nyní jsou všechny zápasy hodnoceny stejně, což zásadně zvyšuje spravedlivost systému
    • změna nastavení koeficientů a vah: kp, kt, wc
  • verze 1.1.1 (31.3.2016) -> verze 1.2.0 (2.4.2016)
    • zavedení balanční korekce Elo Eb
    • změna nastavení specifického koeficientu kt
  • verze 1.1.0 (18.3.2016) -> verze 1.1.1 (31.3.2016)
    • jediný rozdíl je změna způsobu výpočtu wv
    • wv=(20-Vm)/4 + 1 -> wv=(20-Vm)/10 + 1
  • verze 1.0.0 (11.3.2016) -> verze 1.1.0 (18.3.2016)
    • změna kategorií u koeficientu kp
    • změny koeficientů ovlivňující rychlost vývoje Elo u neaktivních hráčů: wc, wr, Zcp, Zrp, wv

Definice pojmů a symbolů

Eh - Elo(body) nebo Elo(sety) hráče
Ehn - nově vypočtená hodnota Elo(body) nebo Elo(sety) hráče
Es - Elo(body) nebo Elo(sety) soupeře
Ev - výchozí Elo udělené hráči nově vstupujícímu do systému
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 = Ev - průměr Elo všech aktivních hráčů; pokud by měla hodnota Eb zvýšit hráčův rozdíl mezi Elo(body) a Elo(sety) nepoužije se a nastaví se Eb = 0)
Elo - hlavní Elo, vypočtené jako aritmetický průměr Elo(body) a Elo(sety)
Elo(body) - typ Elo vypočtený na základě celkového výsledku zápasu ( prohra => Sh=0; výhra => Sh=1)
Elo(sety) - typ Elo vypočtený na základě výsledku zápasu na sety ( 3:0 => Sh=1; 3:1 => Sh=0,75; 3:2 => Sh=0,6; 2:3 => Sh=0,4; 1:3 => Sh=0,25; 0:3 => Sh=0)
kr - koeficient rozvoje (koeficient určuje o kolik se může maximálně změnit Elo)
kh - koeficient rozvoje po modifikaci pro hráče
ks - koeficient rozvoje po modifikaci pro soupeře
kp - koeficient rozpětí (koeficient 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")
kt - specifický koeficient pro typ Elo
Sh a Ss - skóre hráče a soupeře převedené do intervalu <0,1> - viz Elo(body) a Elo(sety)
Vh - věk hráče v době zápasu (rok narození - aktuální rok)
Vm - modifikovaný věk hráče (Vm=Vh pro Vh z intervalu <10,20>; Vm=10 pro Vh<10; Vm=20 pro Vh>20)
wc - váha pro výpočet úpravy koeficientu rozvoje s ohledem k počtu odehraných zápasů celkem
wr - váha pro výpočet úpravy koeficientu rozvoje s ohledem k počtu odehraných zápasů za rok
wv - váha pro výpočet úpravy koeficientu rozvoje s ohledem k věku hráče
Zr - počet hráčem odehraných zápasů za poslení rok (pokud je dnes 05.12.2016, pak od 05.12.2015 včetně)
Zrp - požadovaný počet odehraných zápasů za poslení rok, aby nedocházelo k navýšení koeficientu rozvoje
Zrm - modifikovaný počet zápasů za rok(Zrm = Zr, pro Zr < Zrp; Zrm = Zrp pro Zr >= Zrp )
Zc - počet hráčem odehraných zápasů celkem od 1.7.2013
Zcp - požadovaný počet odehraných her celkem, aby nedocházelo k navýšení koeficientu rozvoje
Zcm - modifikovaný počet zápasů celkem(Zcm = Zc, pro Zc < Zcp; Zcm = Zcp pro ZcZcp )

Nastavení koeficientů a parametrů

kp = 350
kr = 20
kt pro Elo(body) = 1 pro Elo(body)
kt pro Elo(sety) = 1.4
wc = 4
wr = 4
wv = 0.3 * (20-Vm) / 10 + 1
Zcp = 20
Zrp = 10
výchozí Elo pro nové hráče: Ev=1200

Postup výpočtu

Předpokládejme, že počítáme novou hodnotu Elo pro jednoho z hráčů po jednom zápase.
Vstupními daty zápasu jsou: datum, výsledek na body a výsledek na sety.
Vstupními daty u hráče i soupeře jsou: Elo(body), Elo(sety), počet zápasů za rok, počet zápasů celkem a věk.

  1. jsou vypočteny koeficienty rozvoje kh a ks:
    vzorec koeficient rozvoje
    ks1 vypočteme obdobně, pouze dosadíme soupeřovy hodnoty Zrm a Zcm.
    kh = kh1; pro kh1 >= ks1
    kh = kh1-(ks1-kh1); pro kh1 < ks1
    pokud by bylo kh < 0, počítáme dále s kh = 0
    ks vypočteme obdobně jako kh

  2. je vypočteno nové Elo(body) nebo Elo(sety) hráče:
    vzorec EloST
    Výsledek zaokrouhlíme na celé číslo.

  3. Předchozí dva body zopakujeme pro Elo(body) i Elo(sety). Výsledné Elo je vypočteno jako zaokrouhlený aritmetický průměr Elo(body) a Elo(sety).
    Elo = (Ehn(body)+Ehn(sety)) / 2

Závěr

Tímto postupem se zpracovávají všechny zápasy a hráči. V prvotní fázi byly všechny zápasy zpracovávány podle termínu a pořadí v utkání. V současné době se zápasy zpracovávají v pořadí, tak jak se postupně objevují ve výsledkovém servisu STIS. Tím je zajištěna dostatečná časová souslednost. 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í