Data trainees voorspellen winnaar Champions League via machine learning

Enkele weken geleden werd de aftrap voor het grootste voetbalfeest van het jaar gegeven: de Champions League. Toevallig schoot rond hetzelfde moment ook het gloednieuwe data traineeship van Ormit Talent uit de startblokken. Wij grepen deze kans aan om onze passie voor data en voetbal te combineren in een ambitieus dataproject: voorspel de winnaar van de Champions League 2021-2022. Wij? Data trainees Jonathan Kemel en Tom Martens, nice to meet you!

Onze opdracht

Wint Chelsea voor de tweede keer op rij, maakt Manchester City zijn titelambitie eindelijk waar of krijgen we een verrassing van formaat? De volgende Champions League-winnaar voorspellen, doe je niet met de natte vinger. Het succes van een ploeg hangt af van meerdere factoren zoals hun eerdere prestaties, marktwaarde en ratings. Maar ook de bevolkingsgrootte en rijkdom van het land waarin de ploeg speelt, heeft haar impact. Daarom kozen we voor twee benaderingen: Jonathan baseerde zich op de recente resultaten, Tom ontwikkelde twee modellen op basis van het ploegprofiel. Voor onze data-analyses maakten we gebruik van verschillende machine learning technieken.

UEFA_Champions_League_logo_2.svg

Jonathan’s model: data prediction op basis van recente ploegresultaten

1. Data verzameling

In eerste instantie heb ik voor iedere deelnemer alle competitieresultaten van de laatste vier jaar gebundeld. Aangezien de resultaten van vorig jaar het meeste vertellen over de vorm waarin een ploeg verkeert, heb ik die het zwaarst laten doorwegen. Maar een goal in de Premier League betekent natuurlijk iets anders dan een doelpunt in de Jupiler Pro League. Daarom heb ik de marktwaarde van iedere competitie berekend en in het model geïntegreerd. Bijvoorbeeld: de Belgische competitie kreeg een coëfficiënt van 0,74 voor gescoorde goals en 1,21 voor tegengoals. Voor de Engelse competitie bedroeg de coëfficiënt 1,29 voor gescoorde goals en 0,79 voor tegendoelpunten. Dat betekent dus dat Engelse ploegen meer doelpunten scoren en minder goals tegenkrijgen dan gemiddeld. Voor Belgische ploegen geldt – helaas – het omgekeerde.

2. Data analyse met Python

Nadat alle poules waren samengesteld en het wedstrijdschema bekend was, heb ik per match voor iedere ploeg de kans op winst, gelijkspel of verlies bepaald. Om daartoe te komen, heb ik eerst berekend hoeveel goals elke club in eigen competitie gemiddeld scoort en slikt. Zo bekwam ik per ploeg vier waardes: het aantal keer ze voor eigen publiek scoren (“home scored”), het aantal keer de bezoekende ploeg de netten laat trillen (“home conceded”), het aantal keer ze op verplaatsing scoren (“away scored”) en het aantal keer de tegenstander scoort als ze op verplaatsing spelen (“away conceded”). Om het onderscheid tussen de competities te bewaren, werden deze variabelen vermenigvuldigd met de marktwaardecoëfficiënt.

Met die resultaten trok ik terug naar de poules, waar ik per wedstrijd voor beide teams berekende hoe groot de kans was dat ze een bepaald aantal goals zouden scoren. De limiet was ingesteld op 10 doelpunten per ploeg. Zo kon ik een nieuwe dataset opstellen die weergeeft wat de kans per uitkomst is. Bijvoorbeeld: voor de wedstrijd PSG versus Manchester City, was er 29 % kans dat er een gelijkspel werd behaald, 24 % kans dat PSG won en 46 % kans dat Manchester City won. Door deze kansen te vermenigvuldigen met het aantal punten dat iedere ploeg zou krijgen (3 voor winst, 1 voor gelijkspel en 0 voor verlies) en deze formule voor elke wedstrijd te herhalen, kon ik haarfijn de groepsresultaten bepalen. Aangezien er inmiddels een aantal wedstrijden zijn gespeeld, heb ik de groepsresultaten op de foto geüpdatet met de actuele uitslagen.

CL_jonathan_1

Voor de knock-outfase heb ik – rekening houdend met de huidige Champions League regels – zelf de loting bepaald. Per ronde werd op basis van dezelfde formules de kans op verlies en winst berekend. Ingeval van gelijkspel heb ik iedere ploeg 50 % kans gegeven om door te stoten, omdat penalty’s nu eenmaal een loterij zijn.

CL_jonathan_2

3. And the winner is …. 

Uit de analyse blijkt dat Manchester City in de finale van Bayern München zal winnen. Die pronostiek komt mooi overeen met wat goksites voorspellen. De vraag blijft natuurlijk hoe het knock-outschema er na de loting zal uitzien, omdat het goed mogelijk is dat Manchester City en Bayern München elkaar al vroeger treffen. Zodra ik die info heb, kan ik nog accuratere voorspellingen maken. En wie weet blijft Club Brugge wel alle pronostieken aan diggelen slaan. In voetbal kan alles, de bal blijft rond 😉

Toms model: data prediction op basis van ploegprofiel

1. Data verzameling

Om het ploegprofiel te bepalen, heb ik verschillende datasets gecombineerd. Zo heb ik rekening gehouden met de bevolkingsgrootte en het bruto binnenlands product (bbp), aangezien rijkere landen vermoedelijk meer geld in voetbal investeren. De sterkte van elk team mat ik door de ploegratings van alle FIFA-games en resultaten van de Champions League vanaf 2005 te analyseren. Dit deed ik voor alle ploegen die sinds 2005 minstens de 8ste finales van de Champions League hebben gehaald. Sommige ploegen, zoals bijvoorbeeld Shakhtar Donetsk, bestonden nog niet in het spel FIFA 2005 waardoor hun FIFA-rating van dat jaar zou ontbreken in de dataset. Om dit op te lossen, heb ik voor deze ploegen de gemiddelde rating berekend van de jaren dat ze wel een FIFA-rating kregen. Met dat gemiddelde vulde ik de ontbrekende waardes in. Clubs zonder enige historische data zoals Sheriff, werden uit de analyse geweerd. Toen alle data verzameld waren, heb ik de modellen getraind via WEKA, een datatool die gebruikt wordt voor datamining (= verbanden zoeken in datasets).

2A. Data analyse met lineaire regressie

Voor het eerste model goot ik de variabelen ‘teamrating’, ‘populatie’, ‘aantal toeschouwers’ en ‘competitie’ voor ieder team in een formule. Het resultaat was een score waarmee ik de prestaties van iedere ploeg mooi kon inschatten. Hoe hoger de score, hoe verder de ploeg in het toernooi zal geraken.

3A. And the winner is …. (pt 1)

Volgens dit model mag Bayern München zich op 28 mei tot voetbalkoning kronen. De verliezende finalist is een andere Duitse traditieclub: Dortmund.

2B. Data analyse via nearest neighbours

Voor het tweede model paste ik de machine learning methode nearest neighbours toe. Hierbij gaat het model voor ieder team op zoek naar zeven clubs met een vergelijkbaar profiel. Op basis van de scores wordt dan het gemiddelde berekend en bepaald hoe sterk een ploeg zal presteren. Bijvoorbeeld: wanneer ploeg A veel gelijkenissen vertoont met teams die het goed doen in de Champions League, voorspelt het model dat ploeg A ver zal eindigen.

3B. And the winner is …. (pt 2)

Manchester City wint van Dortmund met groot overwicht. Daarmee ligt het resultaat in lijn met Jonathans model dat ook Manchester City als winnaar voorspelde. De statistieken zijn gunstig voor de Engelse kampioen!

Wie zijn wij?

Jonathan Kemel

Jonathan

Ik ben… een datageek met een groot hart voor de mens achter de data. Ik hecht veel waarde aan de input van collega’s en geloof dat het geheel altijd meer is dan de som van de delen.

Mijn sterkste dataskill is… het visualiseren van data waardoor de resultaten in één oogopslag helder worden voor anderen.

Andere assets zijn… mijn analytische geest en datadriven mindset. Cijfers en data naar begrijpelijke modellen en inzichten vertalen? Daar krijg ik een kick van!

Daarnaast… ben ik een echte sportfreak, op én naast het veld. Tom verslaan tijdens een spelletje FIFA? Been there, done that, nailed it.

Tom Martens

Tom

Ik ben… een teamplayer die graag bijleert en altijd klaarstaat om collega’s te ondersteunen met raad en daad. Anderen helpen geeft mij energie!

Mijn sterkste dataskill is… het vinden van verbanden in grote hoeveelheden data. Daardoor kan ik makkelijker relevante trends voorspellen.

Andere assets zijn… mijn oplossingsgerichte aanpak en gretigheid. In mijn dataprojecten zal ik vaak meerdere opties verkennen om tot de beste oplossing te komen.

Daarnaast… ben ik een enorme sportfanaat. Jonathan laten winnen tijdens een spelletje FIFA? Been there, done that, nailed it.

Zelf een boeiend dataproject op de plank liggen voor Tom of Jonathan?

Getriggerd? Lees ook zeker deze blogs

Business case VDFin: Naar slimmere dataverwerking met machine learning

Voor een dataproject deed VDFIN een beroep op een Data Chief van Ormit Talent.

Waarom data alleen niet genoeg is om succesvol te zijn

Heeft u grip op de impact die de crisis heeft op uw bedrijf? Wat vertellen uw gegevens u? Organisaties die investeren in een datagedreven transformatie hebben een antwoord op deze vragen. Zij zullen succesvol zijn in de toekomst die al is begonnen.

Consultancy zonder nadelen

5 redenen waarom je geen gewone consultant wil (en evenveel redenen waarom je een buitengewone consultant moet inhuren)

Business case Smart: Slimmer data management met business intelligence

Je datamanagement boosten? Smart did it! Via het data traineeship van Ormit Talent kwamen ze in contact met business intelligence analyst Jeremy.