Beyond the Ball: Player Positioning & Soccer Outcomes

PROJECT 2026 Golam Hisham

Course project for COMP375 (Machine Learning) at Rhodes College. Metrics like Expected Goals and Expected Threat evaluate actions from the ball’s location and type alone. They ignore where every other player is on the pitch. This project tests whether spatial features from StatsBomb’s 360-degree freeze-frame data actually improve prediction, and when they add noise instead of signal.

We ran a 2×2 study on Euro 2020 and Euro 2024 data (102 matches, about 380K events) for two tasks:

  1. Possession outcomes (multiclass): Predict whether a possession ends in final-third progression, a shot, or a turnover.
  2. Shot creation (binary): Predict whether a shot occurs within a short horizon after an on-ball event.

For each task we compared interpretable baselines (decision trees for Q1, logistic regression for Q2) against PyTorch MLPs, and flat features (ball location, distance to goal, etc.) against flat + spatial features (teammates and opponents within radius, defensive compactness, numerical superiority, and similar).

Spatial features helped on possession outcomes: both model families gained accuracy and macro-F1, with decision trees beating MLPs on this tabular task. They did not help on short-term shot prediction: adding spatial data actually degraded PR-AUC and F1 relative to flat features alone. On the imbalanced shot task (4.9% positive rate), balanced class weights were essential to avoid trivial predictions.

The repo includes preprocessed parquet datasets, training notebooks, evaluation scripts, figures, and a full writeup in final_report.md.

I’m now extending it with graph neural networks over player-position graphs, and a vector database for finding similar possessions by embedding.

Back to Work