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ń.

Rozkład poissona

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

poisson

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:

Ś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.