In this project I created an GRU architecture to predict the outcome(Win, Draw, Lose) of the Premier League game. I recommend checking out my medium article about the topic.
The final dataset contains the combined features listed below from Premier League season 19/20 and 20/21. The format of sequential data is [sample, time step, sequence]. Each sample contains the features of the home team, away team, and odds from last 5 games. To make the form more visible I created the rating column for each team with the initial value taken from Premier League Fantasy dataset. The rating is updated with each game, based on the ELO rating formula.
Rn = Ro + K(W-We)
We = 1/(10**(-dr/400)+1)
Where,
- Rn -> new rating
- Ro -> old rating
- K -> constant weight according to the relevance of the game in my case I used 50, if dr is 1(K = 1.5K), if dr = 2(K = 1.75K), if dr > 3 dr = (1.75K + (dr- 3)/8)
- dr -> goals difference
- W -> game result( Win = 1, Draw = 0.5, Loss = 0)
- We -> calculated expected result
- Attacking style(AS) - taken from FIFA21 dataset
- Defensive style(DS) - taken from FIFA21 dataset
- Rating home (SOH) - initial ratings is from Premier League Fantasy dataset updated with each game using ELO rating equation
- Rating away (SOA) - same as above but for away games
- xG - quality of goalscoring chances (attack form)
- xGa - ability to prevent scoring chances (defense form)
- Ppda - passes allowed per defensive action
- Mtime - managers time calculated from the day he started to the date of the game
- Odds - bets on outcome of the game home win, draw, away win
Hyperparameter | Value |
---|---|
Batch | 16 |
Optimizer | Adam |
Learning rate | 0.0001 |
Dropout rate | 0.2 |
Epochs | 70 |
- Live line-ups
- Live form of the players
- Game schedule - add Champions League and other Tournaments
- Weather conditions
- Referee
- Relationship between teams
- Sentiment score