Zainspirowany wieloma artykułami dotyczącymi wykorzystania rozkładu Poissona do przewidywania wyników meczu, (np. 1, 2, 3, 4), postanowiłem podzielić się z Wami moją interpretacją tematu. Jest to o tyle interesujące, że implikując rozkład Poissona do zdarzeń rzadkich, jakimi są bramki w prosty sposób potrafimy określić prawdopodobieństwo danego wyniku meczu. Wydaje się to jedną ze statystycznie najprostszych metod przewidywania wyniku spotkania, a zarazem dająca dobre rezultaty, o czym się sami przekonacie.
W tym tekście przedstawię na czym polega rozkład Poissona, kiedy możemy go wykorzystać i czego potrzebujemy do oszacowania najbardziej prawdopodobnego wyniku danego meczu. Co ciekawe, wiedzę na temat prawdopodobieństwa dane wyniku możemy wykorzystać na wielu frontach, a wiedza na ten temat może stanowić punkt wyjścia do zaawansowanych analiz takich jak uczenie maszynowe. Tak naprawdę, to powinien być jeden z pierwszych wpisów na tej stronie, jednak niezależnie od tego, mam nadzieję, że sprawi Wam wiele przyjemności własne wykorzystanie tej metody. Sam zastanawiam się czy wykorzystać rozkład Poissona do stworzenia jednej z dodatkowych zmiennych w moich modelach uczenia maszynowego do przewidywania wyniku meczu.
Rozkład Poissona
Rozkład Poissona jest dyskretnym rozkładem prawdopodobieństwa, który określa prawdopodobieństwo liczby wydarzeń w określonym interwale czasowym, znając przy tym średnią wartość tych wystąpień. Innymi słowy, z pewną dokładnością przewiduje jak często wystąpi zdarzenie rzadkie w określonym zakresie czasu. Zdarzeniami rzadkimi w analizowanym przypadku są bramki. Możemy powiedzieć, że na podstawie rozkładu Poissona jesteśmy w stanie prze-konwertować średnią liczbę zdarzeń na prawdopodobieństwo wystąpienia danej ilości zdarzeń według rozkładu.
Przykładowy rozkład Poissona zaprezentowano poniżej. Na osi y odmierzone zostało prawdopodobieństwo, natomiast na osi x ilość zdarzeń w danym interwale czasu. Odczytujemy więc z jakim prawdopodobieństwem wystąpi dana ilość zdarzeń.
Na podstawie stworzonego modelu istnieje możliwość określenia ogólnej częstotliwości i prawdopodobieństwa wystąpień danej liczby goli w meczu. Do tego celu wykorzystany zostanie wspomniany wcześniej rozkład Poissona, który charakteryzuje się poniższym równaniem
gdzie:
λ – wartość bazowa, określana jako oczekiwana liczba zdarzeń w danym przedziale czasu,
n – liczba zdarzeń (prawdopodobieństwo) określona funkcją, przy założeniu,
że zdarzenia charakteryzują się matematyczną rzadkością wystąpień, są losowe
i niezależne.
OK, przyjrzyjmy się teraz konkretnym parametrom w przedstawionym wzorze. Naszym oczekiwanym wynikiem jest prawdopodobieństwo wystąpienia danej ilości zdarzeń w konkretnym przedziale czasowym.
- Pλ {X= 1}, będzie oznaczało prawdopodobieństwo wystąpienia jednego zdarzenia (jednej bramki), Pλ {X= 2} – dwóch, itd.
- e, zwana liczbą Eulera, jest stałą matematyczną i wynosi w przybliżeniu ~ 2,71828.
- n, wspomniana wyżej jest liczbą zdarzeń, która szukamy (modelujemy).
a więc, jedyną wartością, której potrzebujemy jest λ, i to niej poświęcimy szczególną uwagę na początku. Dla naszej analizy możemy przyjąć, że λ jest średnią liczbą bramek. Średnią liczbą bramek, ale właściwie czego? Całej ligi? Średnią liczbą bramek gospodarzy, gości? a może średnia liczbą bramek danej drużyny? Tak naprawdę od tego zależy nasze podejście do problemu. Jeżeli chcielibyśmy otrzymać prawdopodobieństwo strzelenia bramki niezależnie od spotkania i drużyny, wystarczy nam po prostu średnia liczba bramek, jednak taka wartość jest delikatnie mówiąc bezużyteczna. Znacznie bardziej ciekawszym i dającym dobre efekty jest podejście zaproponowane przez autorów wspomnianych wcześniej artykułów. Chodzi tu o średnią liczbę bramek, jaką oczekuję się, że drużyna zdobędzie w konkretnym meczu. Wartość tę określamy na podstawie historycznych meczów danej drużyny. Parametrem pomocnym przy oszacowaniu oczekiwanej liczby bramek w meczu będzie ofensywna (Attack Strength) oraz defensywna siła drużyny (Defence Strength).
Przechodząc więc do oszacowania tych wartości wybierany interesujący nas zakres danych. Jako, że w każdej z 4 największych lig w Europie jesteśmy już na zaawansowanym etapie sezonu możemy przyjąć, że historyczne dane będą obejmowały cały dotychczasowy sezon. Analizę przeprowadzę dla Ligi Angielskiej (EPL), jednak bez trudu można ją zaimplementować dla innych rozgrywek. Wybieram w tym momencie Premier League, głównie z powodu swojej popularności.
Oszacowanie ofensywnej i defensywnej siły drużyny
Przejdźmy więc do rachunków 🙂
Ostatnich kilka obserwacji z analizowanego zbioru przedstawia się następująco :
Gospodarz | Gosc | Gole_gospodarza | Gole_goscia |
Wolves | West Ham | 3 | 0 |
Bournemouth | Chelsea | 4 | 0 |
Liverpool | Leicester | 1 | 1 |
Southampton | Crystal Palace | 1 | 1 |
Tottenham | Watford | 2 | 1 |
Na początku należy określić średnią liczbę bramek gospodarzy i gości, co w naszym przypadku przedstawia się następująco:
Średnia liczba strzelanych goli przez gospodarza | 1.550000 |
Średnia liczba strzelanych goli przez gości | 1.291667 |
Bez zaskoczenia gospodarz strzela średnio więcej bramek niż drużyna gości (zachęcam w tym miejscu do sprawdzenia Gole – zdarzenia rzadkie). Podane dwie wartości poza średnią strzelaną liczbą bramek w meczu oznaczają również liczbę średnią liczbę traconych bramk w meczu, odpowiednio:
Średnia liczba straconych goli przez gospodarza | 1.291667 |
Średnia liczba straconych goli przez gości | 1.550000 |
OK, aby jednak oszacować siłę ofensywną i defensywną danej drużyny musimy porównać średnie wartości dla wybranej drużyny i porównać je z średnią dla całej ligi. Oszacujemy więc taki parametr dla wszystkich meczów najbliższej 25. kolejki Premier League.
Analogicznie do średniej liczby bramek powstałą następująca tabela. Kolumna Off_* oznacza średnią liczbę strzelanych bramek danej drużyny grając jako H – gospodarz oraz A- gość. Kolumna Deff_* oznacza średnią liczbę traconych bramek drużyny grając jako H – gospodarz oraz A – jako gość.
HomeTeam | AwayTeam | Off_sila_H | Off_sila_A | Deff_sila_H | Deff_sila_A |
Brighton | Watford | 1.363636 | 1.416667 | 1.090909 | 1.333333 |
Burnley | Southampton | 1.272727 | 1.000000 | 1.909091 | 1.833333 |
Cardiff | Bournemouth | 1.083333 | 1.090909 | 1.916667 | 2.272727 |
Chelsea | Huddersfield | 1.750000 | 0.727273 | 0.750000 | 1.909091 |
Crystal Palace | Fulham | 0.545455 | 0.666667 | 1.000000 | 2.500000 |
Everton | Wolves | 1.666667 | 1.000000 | 1.333333 | 1.181818 |
Tottenham | Newcastle | 1.818182 | 0.818182 | 1.000000 | 1.272727 |
Leicester | Man United | 1.181818 | 1.916667 | 1.090909 | 1.583333 |
Man City | Arsenal | 3.333333 | 2.000000 | 0.833333 | 2.000000 |
West Ham | Liverpool | 1.416667 | 1.916667 | 1.500000 | 0.583333 |
Teraz, aby skonfrontować odpowiednie wartości ze średnią ligową, podzielimy odpowiednio:
- Off_sila_H / Średnia liczba strzelanych goli przez gospodarza
- Off_sila_A / Średnia liczba strzelanych goli przez gości
- Deff_sila_H / Średnia liczba straconych goli przez gospodarza
- Deff_sila_A / Średnia liczba strzelanych goli przez gości
W efekcie, powstaje następująca tabela:
HomeTeam | AwayTeam | Off_sila_H | Off_sila_A | Deff_sila_H | Deff_sila_A |
Brighton | Watford | 0.879765 | 1.096774 | 0.844575 | 0.860215 |
Burnley | Southampton | 0.821114 | 0.774194 | 1.478006 | 1.182796 |
Cardiff | Bournemouth | 0.698925 | 0.844575 | 1.483871 | 1.466276 |
Chelsea | Huddersfield | 1.129032 | 0.563050 | 0.580645 | 1.231672 |
Crystal Palace | Fulham | 0.351906 | 0.516129 | 0.774194 | 1.612903 |
Everton | Wolves | 1.075269 | 0.774194 | 1.032258 | 0.762463 |
Tottenham | Newcastle | 1.173021 | 0.633431 | 0.774194 | 0.821114 |
Leicester | Man United | 0.762463 | 1.483871 | 0.844575 | 1.021505 |
Man City | Arsenal | 2.150538 | 1.548387 | 0.645161 | 1.290323 |
West Ham | Liverpool | 0.913978 | 1.483871 | 1.161290 | 0.376344 |
Już prawie, prawie możemy przejść do rozkładu Poissona, jednak przed tym działaniem, należy jeszcze oszacować przewidywaną liczbę bramek danej drużyny w meczu, a otrzymamy ją za pomocą prostego równania:
Off siła drużyny * Deff siła przeciwnika * średnia liczba strzelonych bramek w lidze
Po przemnożeniu otrzymujemy oczekiwane (średnie) wyniki spotkań najbliższej kolejki Premier League oszacowane na podstawie danych historycznych z całego sezonu:
HomeTeam | AwayTeam | Pred_H_Goals | Pred_A_Goals |
Brighton | Watford | 1.173021 | 1.196481 |
Burnley | Southampton | 1.505376 | 1.478006 |
Cardiff | Bournemouth | 1.588465 | 1.618768 |
Chelsea | Huddersfield | 2.155425 | 0.422287 |
Crystal Palace | Fulham | 0.879765 | 0.516129 |
Everton | Wolves | 1.270772 | 1.032258 |
Tottenham | Newcastle | 1.492935 | 0.633431 |
Leicester | Man United | 1.207234 | 1.618768 |
Man City | Arsenal | 4.301075 | 1.290323 |
West Ham | Liverpool | 0.533154 | 2.225806 |
Do tej pory jedynym aspektem statystycznym było obliczenie odpowiedniej średniej. Po tym etapie możemy przejść do rozkładu Poissona.
Rozkład Poissona
A więc mając już nasz parametr λ jesteśmy w stanie oszacować prawdopodobieństwo danego wyniki spotkania, a przede wszystkim określić najbardziej prawdopodobny wynik meczu. Do oszacowania tej wartości możemy wykorzystać wiele kalkulatorów rozkładu Poissona dostępnych w internecie. Wystarczy podać oczekiwaną liczbę zdarzeń oraz wybraną liczbę zdarzeń, której prawdopodobieństwo oszacowujemy. Po określeniu tych dwóch parametrów otrzymamy wartość prawdopodobieństwa wystąpienia danego zdarzenia.
Przykładowe kalkulatory Poissona:
- https://stattrek.com/online-calculator/poisson.aspx
- https://stats.areppim.com/calc/calc_poisson.php
- https://www.danielsoper.com/statcalc/calculator.aspx?id=79
Średnią w naszym przypadku będzie wartość z kolumny Pred_H_Goals lub Pred_A_Goals, natomiast zmienna jest szukana, modelowana liczba bramek w meczu, czyli n.
Przełóżmy więc teraz oczekiwaną liczbę bramek w meczu na wartość prawdopodobieństwa wystąpienia danej liczby bramek. Dla przykładu, dla meczu Man City vs Arsenal odpowiednie prawdopodobieństwa przedstawiają się następująco :
Liczba bramek | Man City | Arsenal |
0 | 1,36% | 27,52% |
1 | 5,83% | 35,51% |
2 | 12,54% | 22,91% |
3 | 17,97% | 9,85% |
4 | 19,33% | 3,18% |
5 | 16,63% | 0,82% |
6 | 11,92% | 0,18% |
7 | 7,32% | 0,03% |
W naszym przypadku Man City z największym prawdopodobieństwem strzeli 4 bramki, natomiast Arsenal 1. Niekoniecznie jednak taki wynik jest najbardziej prawdopodobny, gdyż zdarzenia te są statystycznie niezależne od siebie. Dlatego też aby określić najbardziej prawdopodobny wynik spotkania należy pomnożyć przez siebie odpowiednie wartości prawdopodobieństwa. Tabela z odpowiednimi wartościami przedstawia się następująco:
Liczba bramek Gospodarzy/Gości | 0 | 1 | 2 | 3 | 4 | 5 |
0 | 0,37% | 0,48% | 0,31% | 0,13% | 0,04% | 0,01% |
1 | 1,60% | 2,07% | 1,34% | 0,57% | 0,19% | 0,05% |
2 | 3,45% | 4,45% | 2,87% | 1,24% | 0,40% | 0,10% |
3 | 4,95% | 6,38% | 4,12% | 1,77% | 0,57% | 0,15% |
4 | 5,32% | 6,86% | 4,43% | 1,90% | 0,61% | 0,16% |
5 | 4,57% | 5,90% | 3,81% | 1,64% | 0,53% | 0,14% |
6 | 3,28% | 4,23% | 2,73% | 1,17% | 0,38% | 0,10% |
7 | 2,02% | 2,60% | 1,68% | 0,72% | 0,23% | 0,06% |
Jak się zatem okazało najbardziej prawdopodobnym wynikiem spotkania jest jednak wynik 4:1 na korzyść Man City. Poprawność tej prognozy zweryfikujemy jutro 🙂
Wnioski
Podsumowując, rozkład Poissona jest bardzo ciekawym elementem wyjścia w analizie meczów piłkarskich gdyż na podstawie historycznych danych jesteśmy z pewnym prawdopodobieństwem określić wynik spotkania. Oczywiście, bierzemy pod uwagę tylko i wyłącznie bramki, a to zbyt mało by determinować wynik meczu. Mimo wszystko, otrzymane wartości mogą stanowić kolejny puzzel w naszej układance Świętego Graal’a piłki nożnej. Ponadto, zastanawiam się poważnie nad wykorzystaniem analizowanych parametrów do stworzonych już wcześniej modeli uczenia maszynowego. Po przeanalizowaniu takiej możliwości oczywiście podzielę się z Wami moimi przemyśleniami na ten temat.
Na koniec zachęcam do samodzielnej zabawy z rozkładem Poissona, może znajdziecie ciekawe zależności. Oczywiście zachęcam do komentowania i dzielenia się ze znajomymi treścią. Konstruktywna informacja zwrotna jest bardzo potrzebna bo pozwala na ulepszanie naszych działań.
Do następnego wpisu!
Aktualizacja 04.02.2019
Wynik analizowanego spotkania Man City – Arsenal = 3:1. Przy naszym prognozowanym wyniku 4:1 wypadamy bardzo dobrze. Jestem bardzo zadowolony z takiego przebiegu zdarzeń, biorąc pod uwagę, że sama metoda nie wymagała zaawansowanej znajomości tematów ekonometrycznych a obliczenia nie były skomplikowane.
„OK, aby jednak oszacować siłę ofensywną i defensywną danej drużyny musimy porównać średnie wartości dla wybranej drużyny i porównać je z średnią dla całej ligi.”
W jaki sposób to wykonać? Na czym polega to „porównanie”? Jest to średnia ze średniej zdobytych goli przez H i średniej ligowej goli zdobytych przez H czy w jakiś inny sposób oblicza się ten parametr?
PolubieniePolubienie