I am trying to choose a ML algorithm and use it in my final year project, the class I am in has just started and we are studying K-Means and DBSCAN.

My supervisor for the project suggested a Neural Network algorithm but we are not studying this in the ML module I am enrolled in.

I am wondering which Neutral Network model or other ML algorithm I should use for my project.

The goal of the project is to predict soccer results there will be plenty of control variables (Home/Away: goals/for and against, wins,draws,loses, referee results, each teams starting 11 with plenty of stats for each player ....).

I am wondering which model would be the best to use and is a Neutral Network model the best route to go?


2 Answers 2


Welcome to the wonderful world of ML.

I'd use XGBoost. It's simple to get started. It can be kind of a pain to install on windows, but this might help. As I recall, on linux it's a breeze.

It's what's called a "decision tree", so it takes all your inputs and learns a series of thresholds (if x>y and z<7, they'll win). This has several advantages, especially for a beginner in the field:

  • it's very tolerant to poorly formatted data (non normalized)
  • most of the hyperparameters are pretty intuitive
  • it has a tendency to work fairly well out of the box.

It will be daunting, the first time you implement just about any algorithm it's challenging. Just keep your head down and perserveere.

If you do want to go with a NN (which is also an excelent choice), I recommend using tf.keras. There's excellent beginner tutorials by this guy. This is an, arguably, more useful library, but it can also be tough to get started. If you watch a few tutorials, though, you'll be fine.

You will quickly find that the choice of model is often the easy part. It's the data preprocessing, training/validation, etc. that is a pain. So, If I were you, I would just pick a model and get started ASAP; your objective is to learn, not to make a perfect model.

Some other things you'll probably need in your tool belt:

  • python in general
  • pandas for storing and manipulating data
  • numpy for messing around with data types
  • matplotlib.pyplot for plotting
  • sklearn for miscellaneous stuff (or more, if you look into it)

To get started with your project I suggest to do some research in order to identify relevant papers. Reading through the abstracts, intros and conclusion sections will quickly give you an understanding which models are state-of-the-art.

There has been some research on match prediction using neural networks. However, most papers apply gradient boosted decision trees and these, usually, outperform other approaches (however, there are no standardized benchmarks for this task which makes it harder to compare methods).

Besides the type of model, feature engineering is very important for this task. Only using basic features does usually not provide good results. Instead, you need to derive more complex features which have predictive values (e.g. running scores, ELO, PI score). To gain an initial understanding which features might work best you can refer to the relevant literature. Depending on the type of sports you will need to think for yourself which features may have predictive value (e.g. for football there are many papers. But for less prominent types of sports you may rely more on your intuition, i.e. it helps to know the form of sport).

You can find some additional information in this answer incl. links to a couple of papers to read.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.