Vissza a rulettkerékhez
Mind játékőrültek vagyunk. Ki tippmixel, ki kaszinóba jár, ki tippel az abcd-s zh-n, de valaki csak leül a tv/laptop elé Pool-meccset nézni, hogy megkapja a maga adrenalinfröccsét. És mind tudni szeretnénk a jövőt. Valaki elmegy a jósdába, más a tudatmódosítókra esküszik, sokan csak a megérzésükre, és vannak, akik előveszik a ceruzát vagy épp a szervergépet, és számolnak. Így van ez egy Liverpool-mérkőzés előtt is. Számol a statisztikus, reagál a fogadóiroda, és tippel a szurkoló. Az elsőről szól ez a mai poszt a Soton-beharang felütéseként. (GlenTheMathematician posztját olvashatjátok alább, csak épp a taccs enyhén nehéz napokon megy át.)
Monte Carlo szimuláció. Annyira kurva menő hangzása van, hogy aki már látta leírva, egy pillanatig akár még az is megfordulhatott a fejében, hogy a statisztika nem unalmas. De hát tudta ezt a szerelmünk tárgyának egyik ősatyja is, Neumann János, aki nyilván a Monacoban rulettező nagybácsi után nevezi el a sokadig korszakalkotó módszerét, ha már épp a Manhattan név foglalt volt valami másra néhány fizikus melós által. A Monte Carlo szimuláció azóta sokat fejlődött, ma már sokszor MCMC (Markov-láncos Monte Carlo) néven találkozhatsz vele, a lényege viszont mit sem változott. Csak az, hogy közben lett olyan a technika, hogy a telefonod simán elvégez egy ilyet pl. arra, hogy ki nyeri meg és miért a PL-t. (A simán itt erős szó, de kisebb MCMC szimulációkat lazán tud bármelyik olcsó tapifón is.) Konkrét példán szeretném bemutatni a Monte Carlo szimuláció megvalósítását nektek, igyekezve azt érthető keretekben tartani. Alapvetően ebből és ebből a cikkből táplálkoztam, ahol kimondottan a Premier League-re csináltak ilyen dolgokat.
Szóval van a nagy eszmei kérdésünk így november idusán: hol és milyen valószínűséggel végzünk év végén, meglesz-e a top4, esetleg 27 év után megtörik-e a jég. Kétféleképp tudunk választ adni: 1) érzésre, 2) megpróbáljuk modellezni, és bevetni a legjobb tudásunkat. A Fonat berkeiben a második a népszerűbb, és ezzel is megyünk tovább.
Nézzük, hogyan megyünk neki egy ilyen kérdésnek aggyal:
- lépés: Egy meccs valószínűségei
Fogjuk meg, amit ismerünk. Jelenleg van egy 11 fordulós táblánk, ismerjük az összes eddigi meccs kimenetelét, de még korábbiakat is az előző idényből. És persze van még végtelen (de tényleg) mennyiségű big datánk: sérülések, pihenőnapok, bérek, egyéni mutatók, stb. Ebből kellene nekünk előbányászni egy számot, hogy melyik csapat kit, mikor és otthon vagy idegenben milyen valószínűséggel ver meg, a mai körülmények mellett. Erre már önmagában lehetne végtelenül bonyolult modelleket és szimulációkat csinálni, de most ne ragadjunk le az egy meccsen mi az odds kérdésnél. A fenti cikkek egyébként foglalkoznak ezzel is, és pl. az elmúlt 19 meccs rúgott és kapott góljaiból számolt Poisson-eloszlásokkal egész jól becsülték átlagban a kimeneteleket. De most nem ez a lényeg az MCMC megértéséhez, hanem csak tegyük fel, hogy ezt valahogy kiszámoltuk. A fogadóirodák (nagy része) egyébként az igazán rafkós: nem számol lófaszt sem, hanem megnézi hányan mire fogadnak, aztán úgy állítja be a valószínűségeit (oddsait), hogy ő minden eredmény esetén nyerjen összességében. Szóval ja, amúgy nyissatok fogadóirodát, mert szögegyszerű pénztermelő, matek sem kell hozzá sok.
- lépés: Milliárdnyi szcenárió helyett egyetlen
Tehát megvan, hogy hogyan számoljuk egy-egy meccs valószínűségét. Ha már csak egy picit is bonyolultabbak vagyunk, akkor múltbeli adatokra épít ez a számításunk. Pl. a fenti modell csak az elmúlt 19 meccs rúgott-kapott góljaira, de persze ennél sokkal több mindent lehet felhasználni, ahogy azt említettem is. Ha viszont múltbeli adatokat használunk fel, akkor ha mi most lejátsszuk (szimuláljuk) fejben a 12. fordulót, akkor ahhoz hogy a 13.-at is lejátszhassuk, már tudnunk kell a 12. eredményeit. De hát arra bizonyos valószínűségekkel lehet a kimenetel 2-1, 3-5, 0-0, meg mindenféle. Mondjuk tegyük fel, hogy 10-10 a legextrémebb eredmény, ami előfordulhat; akkor összesen erre az egy 12. fordulóbeli meccsre van 11×11 (a 0-0 miatt – csöpi), azaz 121 világállapotunk (szcenáriónk). Mind a 100-ra külön kell kiszámolnunk a 13. forduló valószínűségeit, hiszen nem mindegy, hogy ott a Poolra az előző meccsből 2 vagy 5 rúgott gólt veszünk be. És ezt mind a 20 csapatra. Továbbgörgetve a 38. fordulóig. Ez az, amit analitikusan, vagyis matematikailag precízen levezetni tovább tartana, mint elgyalogolni a napig. És itt jön a képbe a Monte Carlo szimuláció.
Annyi a lényege ennek a dolognak, hogy nem vezeti le ezeket a végtelenségig szaporodó szcenáriókat, hanem a 12. fordulóra kiszámolt valószínűséggel lejátssza a meccseket. Minden meccsre kidob a gép (Excel vagy bármi, ami tud bizonyos eloszlású véletlen számokat generálni) egy eredményt. És ezzel az egy megvalósult szcenárióval számolja ki a 13. meccs valószínűségeit a Poolra és mások meccseire, majd ezekkel ismét generál egy-egy eredményt minden meccsre a fordulóban. És így tovább a 38. fordulóig. Ezek az egyszeri számolások analitikusan is egyszerűek, és kiszámíthatóak egymás után szép sorban, végig egy szcenáriószálon futva a milliónyi helyett.
- lépés: Szimuláció
Oké, tehát a 2. lépésben egyszer lejátszottuk az összes hátralévő meccset úgy, hogy persze azok egymás után mind befolyással voltak egymásra, ahogy ezt korábban szerettük volna. FIFAban lenyomtunk (akár szimuláltunk) egy idényt, kidobta a gép az eredményeket. Viszont ha valószínűségekkel dolgozol, akkor nem elég egy szcenárió, mert ha egy lottószelvény véletlen pont viszi az ötöst, akkor az nem azt jelenti, hogy mindig így tesz. Mondjuk nyomja le ezt a processzt a gép 1000-szer. Ekkor fogjuk ezt az 1000 38. forduló utáni szimulált PL-eredményt és például megszámoljuk, hogy 384-szer lett bajnok a Pool. Ez azt jelenti, hogy a mi modellünk szerint jelenleg 38,4% eséllyel leszünk bajnokok. És mindenféle ilyen számítást lehet végezni, amiből számos példát szoktak többen is linkelni a kommentmezőben. Mostanában az 1. lépéshez divat az xG módszert használni, ahogy azt 11tegen11 is megtette a múlt héten:
11tegen11 xG modelljét használva 1. lépésben ezt az eredményt dobja a Monte Carlo szimuláció a bajnokra. Az a helyzet, hogy ez egyáltalán nem irreális, de 11 fordulónál vagyunk, míg az okosak a cikkekben a 19-es határt javasolják. (Ergo felejtsd el a 10 meccs után nézünk rá a táblára mantrát, hehe. 19 meccsig Excelhez nem nyúlsz baszd meg!)
That’s it, folks. A cikkek amúgy legalább 1.000.000 szimulációt javasolnak, akkor már azért eléggé megbízható a cuccos a PL esetén. (A megbízhatóság matematikai részleteiért lásd: a két cikk, vagy bármi írás, ami a tapasztalati szórásról szól.) Sőt olyan kurva nagy mákunk van, hogy egy ausztrál cég közzé tett egy Excel VBA-ban írt Monte Carlo szimulációt is az 5 nagy ligára, melyet elértek: itt. (A dolog szépséghibája, hogy a kódot titkosították, úgyhogy az sajnos nem publikus. De játszani jól lehet vele, bár rá kell szánni az időt, hogy átlássuk az Exceljüket.)
Statisztika óra vége, remélem volt, aki túlélte horkolás nélkül. Szerettem volna kicsit közelebb hozni a közösséghez a Monte Carlo szimuláció fogalmát, ha már annyit látjuk. (Legutóbb pl. a Magyar Narancs hasábjain.) Akinek túlságosan konyhanyelv volt, vagy akinek nem eléggé, azoktól bocsesz, jobban belemélyedni a cikkekkel ajánlott.
Könnyedebb levezetésként a mai meccsről is essen azért szó.
Szóval a Southamptonhoz megyünk idegenbe, ami azért sosem olyan könnyű. Főleg a hírhedten szar válogatott szünet utáni formánkkal, bár úgy néz ki a Klopp-brancs ezen a téren is talált valamit. Meglátjuk mit fognak kitalálni a brazil kontingens nélkül, akiket bár közös erővel hozott haza a három idei bajnokesélyes csapat, én egyáltalán nem vagyok benne biztos, hogy teljesen fittek lesznek szombat délutánra.
Ami sajnos borzasztó rosszkor jön, mert ez egy Soton. Röhögsz, de tényleg, egy igazi kicsi vagy egy igazi nagy ellen könnyebb szívvel tudnám kiküldeni fiainkat a 433 nélkül: gyémánt a lá Studge-Origi. Ha már ugye főszereplők voltak a heti körkérdésben. Gyanús, hogy jönni fog a Spurs elleni Ligakupa-meccsen látott újrafelfedezett ékszerformáció. Ha már úgy, akkor viszont a kovalenskötést támogassuk meg jobban: Canci végre élvezheti a védekező munkát – Hendo visszamehetne szeretett b2b pozíciójába, hogy Ginivel együtt köpjék ki tüdejüket – playmakerbe pedig, na, na ki? hát persze, hogy Lallana. És bassza meg, ez az írás persze, hogy a világ meglétéhez esszenciális nemzetközi barimeccs előtt íródott, úgyhogy most pótlólagosan javítani kényszerülök: szóval ki a fakkom legyen 10-esben, ha Lali szülési szabadságon van? Cou majdnem biztosan nem játszik, pedig egyértelmű megoldás lenne. Firminot is megnézném, de azért nem az az igazi Studge-indítás osztogató, ahogy Mané sem. Szóval vagy kitalálnak ide Buksicék valami félvér megoldást, vagy mégis 433 (még inkább 4123), Studge-Origi-Mané megoldással. Talán a legkisebb rossz, és idén már működött egyszer.
Félős meccs ez, de hát melyik PL-meccs nem az. Kell az az adrenalinfröccs. A tabellára nézve azt hihetnénk, hogy annyira nem hozzák Puellel a korábbi évek eredményeit a déliek, de igazából a támadóstatisztikáikat messze alulteljesítik. És hát a statisztika csúnya dolog, mert a valósággal közelednek egymáshoz.
De mi meg baszd meg, bajnokesélyesek vagyunk egy 11tegen11 MCMC szimulációban!