All projects

Coursework

Soccer Result Prediction

A match-outcome prediction pipeline combining sequence models, tree ensembles, sentiment, and betting data.
When
Oct 2023 – Dec 2023
Type
Coursework

What I built9

  • Increased prediction accuracy by 12% using LSTM, RNN, and Random Forest with XGBoost.
  • Incorporated sentiment analysis and game bet data for improved predictions.
  • Split the data by date, never at random: a shuffled split lets the model see future matches while predicting past ones, which inflates accuracy and would have made the 12% meaningless.
  • Built rolling-window form features (last five results, goal difference, rest days, home and away splits) computed only from matches already played at prediction time.
  • Treated the betting odds as a benchmark rather than a feature at first, because the market is a strong baseline and a model that cannot beat implied probability is not adding information.
  • Compared the sequence models against the tree ensemble on the same folds: LSTM captures form streaks, XGBoost handles the sparse categorical features better, and the ensemble of both beat either alone.
  • Scored on log loss rather than accuracy for the final comparison, since a three-outcome match with a draw rewards calibrated probability over a confident guess.
  • Checked calibration explicitly with a reliability plot, which is where the sentiment features helped least: they moved confidence without moving correctness.
  • Handled the draw as the genuinely hard class, reporting per-class recall instead of hiding a model that never predicts one behind a decent overall number.

Tools

  • Python
  • Deep Learning
  • Data Science
  • Statistics
  • XGBoost
Next projectFitLife Health Tracking App