Show HN: Euro 2016 predictions using Bayesian inference
kickoff.ai
kickoff.ai
We innovated on two aspects of the traditional Elo model, in which every team has an independent parameter:
1) We actually model the strength of players instead of teams. This makes it possible to learn from games that were played in championships between clubs, and transfer this knowledge to games between countries
2) There is a not-so-widely-known connection between Elo-type comparison models and Gaussian process classification. We leverage this, and get a full posterior distribution for each team's strength. (Information on the uncertainty of our estimates helps a lot in coming up with sensible predictions)
If anyone wants to know more (explanations on the web page are very superficial at the moment), please drop me a line!
Interesting but perhaps needs some tweaking to match the expected starting lineups.
It will be interesting to see how things change when you get the official lineups. As I'm sure you are aware, teams often rest their 'star' players in friendlies immediately prior to a tournament in order to minimize the risk of injury.
Either by having the player agree to a draw, or by killing every piece that is not the kings.
In short: at its core, the "Elo assumption" postulates that every team can be represented by a real number (that can be interpreted as the strength of the team), and that the probability of the outcome depends on on the difference in strength. In the vanilla Elo model, the outcome is binary, but it's easy to make it ternary.
http://research.microsoft.com/pubs/193839/sbsl_ecml2012.pdf
A few years ago I had a similar idea for trying to build team models, so you can make a better guess at the performance of national teams, since they don't play very often, or for league teams due to transfers at the start/during the season, but hadn't got as far as you :)
Nice that you had some similar ideas :-)
Predicting outcome possibility in football is a very complicated story, I doubt it can be solved in a simple way like elo ranking the players or teams.
That said, the knock-out phase might be more suitable for that model.
Kudos for the effort anyway, and nice UI.
I'd also be interested in knowing a bit more about point 2 as well.
The actual lineup does impact the predictions - we will update the lineups before the start of each game, when the lineup is anounced.
In a future version, we would like to make it possible for visitors to change the players in the team, and automatically update the prediction.
Another obvious question is that have you checked your model against the odds on betting sites that provide "Draw-no-bet" bets since you are not yet taking into account draws?
Some things to take into account though:
- Friendly games are sometimes about fitness rather than winning at all costs
- Weather greatly effects results. For example, in heavy rain and high wind, the likelihood of the game yielding more than 2.5 goals reduces massively.
- How does the algorithm take into account substitutions?
- If a team in the group has already won 2 games, they may have already won. In that case they may rest many players or try new tactics
- Not all leagues (and levels of those leagues) are taken into account
Very much looking forward to seeing where this goes!
- about friendly games: agreed, in the future we'd like to downweight them (as well as downweight older games over newer ones)
- about substitutions: at training time, we look at the number of minutes each player has spent on the field. At test time, we assume there will be no substitution. Could certainly be improved :-)
- about teams that are already qualified: true, our model does not encode all these contextual factors, and arguably they are very important for certain games. If the lineup changes (e.g. star players resting) it does impact the prediction.
But the great thing about football is that interesting as this is, I won't be placing any bets off the back of it. Too many variables in human nature, playing conditions, external factors, and maybe even luck. It's what keeps the game interesting and millions watching.
It would be interesting as a question to wonder what parts of human behaviour can be predicted accurately in this way though!
That's what makes betting on it fun! If you can reliably predict who's going to win it's not gambling :)
See Greece in WC 2010 as an example of this as a deliberate strategy.
MAKE ME RICH! \o/
If you studied how a pundit would judge outcomes for these games, I'm sure they'd be talking about current form, whether the players play well together, tactics, playing styles etc. Take England for example, they've given Rooney a far higher score than either Vardy or Kane, even though any sane pundit is clammering for Rooney to not start, saying the other strikers are on far better form and that Rooney's presence detracts from the overall performance of the team.
As a technical project it's pretty cool, I just doubt its accuracy. I guess we'll soon find out!
I don't know if you can model this taking in account single players, even if their performance in previous games could be an indicator about the strength of the team. We will see soon how the model fares.
I'm no statistician but "soon" seems unlikely; wouldn't you need a lot of results in order to judge how good these predictions are? I'd like to know if the model can use data capped at any time period, so that matches from the past can be judged against what the model would predict.
However, I'm no statistician myself too but if the goal is to predict only 12 results how do we evaluate the predictions of the model? There should be a difference between 0 and 12 successes.
http://eeecon.uibk.ac.at/wopec2/repec/inn/wpaper/2016-15.pdf
https://twitter.com/Goalimpact/status/740657055841816577
It's true most predictive models work at the team level, but it's interesting to point out that one of the more successful models over the last season was Chad Murphy (@soccermetric)'s MOTSON, an SVM trained over a bunch of stats per player:
As the researchers said multiple times, they're going to be updating their algorithms all of the time and take into account the things they've missed in the current version.
Except when you're the lowest-ranked team, and starting your group with a match against the favourite. In that case, you're likely to play for damage control (e.g. aim for a draw, don't concede too many goals).
You know the saying, "all models are wrong, but some are useful" - our model is clearly too simple to encode many of these complex patterns, but we believe that's alright!
Do you have the prediction for the final rankings and the winning %? Some predict France and Germany are in top 2.
I really hope your model is right :)
EDIT: could it be you are underestimating the weight of player age?
Concerning the predictions, they depend on the starting 11 for each team. We took the most recent ones, i.e. during the last friendlies, which are probably not the ones that will actually start the game!