# Predicting football match winner based only on the outcome of previous matches between the two teams

I'm a huge football (soccer) fan and interested in machine learning too. As a project for my ML course I'm trying to build a model that would predict the chance of winning for the home team, given the names of the home and away team. (I query my dataset and accordingly create datapoints based on previous matches between those 2 teams)

I have data for several seasons for all teams however I have the following issues that I would like some advice with. The EPL (English Premier League) has 20 teams which play each other at home and away (380 total games in a season). Thus, each season, any two teams play each other only twice.

I have data for the past 10+ years, resulting in 2*10=20 datapoints for the two teams. However I do not want to go past 3 years since I believe teams change quite considerably over time (ManCity, Liverpool) and this would only introduce more error into the system.

So this results in just around 6-8 data points for each pair of team. However, I do have several features (up to 20+) for each data point like full-time goals, half time goals, passes, shots, yellows, reds, etc. for both teams so I can include features like recent form, recent home form, recent away form etc.

However the idea of just having only 6-8 datapoints to train with seems incorrect to me. Any thoughts on how I could counter this problem? (if this is a problem in the first place)

• The home field advantage seems pretty important to me based on the studies I have read (I'm an engineer/economist and a BVB fan). You might also consider PKs; they don't change the long-term match outcomes on average (read Soccernomics ), but may heavily influence an individual match. – gregmacfarlane Apr 18 '13 at 12:37
• If you really only want to use the names of the teams, you could use the kind of rating system which is used for chess or other two-player games, for example [Elo][1] or [Trueskill][2]. There was also a [Kaggle contest][3] about this. You could perhaps start with one of these systems and then enhance it using the other covariates. [1]: en.wikipedia.org/wiki/Elo_rating_system [2]: en.wikipedia.org/wiki/TrueSkill [3]: kaggle.com/c/chess – Flounderer May 18 '13 at 22:42
• The only think that you will know prior to a match is the previous results and the ranking. You wont have info about shoots, corners ets, hence you need to create features that are plausible and given. – Tom Zinger Mar 8 at 14:15

TeamA vs TeamC: 1-0