Predict future sports matches.
Note: Currently only works if data.json is located in the same folder as guru.
[
{
"date": "2019-08-31T19:30:00-04:00",
"home": "Detroit",
"away": "Philadelphia",
"result": [
1,
0
]
},
.. more matches here with Some(result)
.. and matches with None aka null
{
"date": "2019-10-26T22:04:00-04:00",
"home": "LosAngeles",
"away": "California",
"result": null
},
]
Matches in the file that have a result provided are used for the training of the network.
Matches with no result (must be "null") will be predicted.
$ guru 0.3579
Wait, see the results, go bet and become rich.. :)
I am testing the Network in three ways:
- Testing against seen Training Data
- Testing against unseen Test Data
- Testing against unseen future Football Matches with validation after the game day.
Each of the tests above can be interpreted in two ways:
- Can the network predict the exact result of a match.
- Does the network identify the outcome of the match correctly. Home-Win, Draw, Away-Win
The results of Tests against seen Training data can be cranked up to a 100% success rate for both the result and the outcome of the match, by lowering the error rate. This leads to overfitting, it does lead to slightly better results of the Tests against unseen Test Data, not worth the disadvantages of overfitting.
The results of the Tests agains unseen Test data typically range between 16-34% for the prediction of the correct result and 50-78% for the prediction of the correct winner or the draw for a match.
The Data consists of all matches of the NISA Showcase Season 2019, all matches of the NPSL regular season, if the clubs were playing against a club that's playing in NISA or the NPSL Members Cup, and all matches of the NPSL Members Cup 2019.
On Oct 8-11, the network predicted the matches for the 10th week of NISA and NPSL Members Cup season. The Match Detroit : Michigan was on Oct 8, the result was included into the training set for four remaining matches in the week on Oct 12
Match | Predicted Result | Actual Result |
---|---|---|
Detroit : Michgan | 5 : 0 | 2 : 0 |
Stumptown : Chattanooga | 0 : 1 | 2 : 2 |
Milwaukee : Michigan | 2 : 0 | 2 : 1 |
New York : Detroit | 0 : 1 | 1 : 2 |
Atlanta : Miami | 0 : 2 | 2 : 2 |
The tests on seen training data resulted in 29% correct results predicted and 76% correct winner/draw predictions. The tests on unseen test data resulted in 29% correct results predicted and 82% correct winner/draw predictions.
On Oct 15 the following upcoming matches for Oct 16 were predicted:
Match | Predicted Result | Actual Result |
---|---|---|
Chattanooga FC | 1 : 0 | Stumptown Athletic |
Oakland Roots SC | 2 : 0 | Los Angeles Force |
California United Strikers | 3 : 0 | 1904 San Diego FC |
Michigan Stars FC | 0 : 1 | Detroit City FC |
Napa Valley 1839 FC | 0 : 3 | New York Cosmos B |
Detroit City FC | 1 : 0 | Milwaukee Torrent |
Out of 5 matches the Network wasn't able to predict the correct result once. However it was able to predict the correct winner in 4 of 5 matches. Only the match Stumptown vs. Chattanooga was a predicted win for Chattanooga, but ended in a 2:2 draw.
The prediction of the outcome of a future match on real world data is in the range of what the test results on unseen data suggested. In this particular example 60%. Due to the small number of matches a second false prediction, the success reate would drop to 60% (3 out of 5 matches).
It is expected that on a game day with much more matches, the success rate would remain in that range.