Predicting non-penalty goals from season stats · Big-5 European leagues · Martin Ngoh
Transfer fees are high and a wrong signing costs millions. This model predicts a player's non-penalty goals from season statistics, so clubs can narrow the search for forwards.
Deduplicate 21k records, rename 30+ columns, cap outliers at the 99.9th / 5th percentile
129 scatter plots vs goals, 129×129 correlation heatmap, descriptive statistics
log(x+1) on the target and all numeric features, one-hot encode categoricals, PCA at 0.95 variance
8 models, grid search on tree & boosting models, 80/15/5 train/val/test split, k-fold CV
MAE, MSE, RMSE, R². Best: Lasso, R² = 0.680
The target is log(non-penalty goals + 1), so every error below is on that log scale.
| Model | MAE | MSE | RMSE | R² | |
|---|---|---|---|---|---|
| Lasso (Elastic Net, L1) | 0.198 | 0.062 | 0.249 | 0.680 | Best R² |
| Linear Regression | 0.193 | 0.063 | 0.251 | 0.675 | Best MAE |
| XGBoost | 0.229 | 0.077 | 0.277 | 0.604 | Good |
| Neural Network | 0.241 | 0.085 | 0.292 | 0.560 | |
| CatBoost | 0.243 | 0.090 | 0.300 | 0.535 | |
| LightGBM | 0.247 | 0.088 | 0.297 | 0.545 | |
| Decision Tree | 0.276 | 0.115 | 0.339 | 0.407 | |
| Random Forest | 0.281 | 0.109 | 0.330 | 0.438 |
Lasso and Linear Regression beat every tree-based and neural model. Lasso had the best R² (0.680) and RMSE (0.249), Linear Regression the best MAE (0.193).
Player statistics explain 68% of the variance in log non-penalty goals on the test set, with a mean absolute error of 0.198.
Random Forest had the highest error (MAE=0.281) and the Decision Tree the lowest R² (0.407). Trees may be overfitting the log-transformed, PCA-reduced features.
5-layer network (50→40→30→20→10) with early stopping converged at epoch 28 of 1000. Test MSE=0.0854, no gain over linear models.
21,863 raw records reduced to 2,786 unique players, then to the 829 with 2+ non-penalty goals for modelling.
Linear Regression 5-fold CV: mean RMSE 0.279 ± 0.015. Low variance, so the model generalises.
Small test set (42 players), and only players with 2+ non-penalty goals. On the log scale an RMSE of 0.249 is about a 28% multiplicative error.