I am working on a soccer dataset. As we all know, soccer has a lot of different metrics related to the game. We have Key passes, Accurate Passes, Shots on Target, Saves, Clearances and so on... I have more than 200 columns which makes it infeasible to analyze every single player based on every stat.

There are some stats that are more important to one position that the others. For instance, I want to know the Shots on Target of a forward but not for goalkeepers. So, I'm thinking in a way to group important stats per position.

My first thought was using PCA and I would like to know what you think about it. Is it possible to get the principal component for the stats that I'm interested for every position?

Example: Goalkeepers have the following interesting stats: - Diving Save - Saves Inside Box - Saves Outside Box - Sweeper Keeper

Strikers: - Inbox Attempts - Key Passes - Shots on Target

I want to reduce the dimensionality of all these important stats and have a singular stat resumes how the player of that position is performing.

Is PCA the best choice or is there a better option?

Kind Regards

  • $\begingroup$ Are all your features categorical? $\endgroup$ – Grzegorz Oct 10 '19 at 16:43
  • $\begingroup$ No, all are numerical. $\endgroup$ – Luís Costa Oct 11 '19 at 12:37

I see. Yes PCA is a good tool that you can use on your choice of attributes. The tricky part is that PCA is based on variance. Hence, if you have 2 attributes which are more important and have low variance and then 5 more with a lot of variances then the latter will be predominant on the first PC (I guess some standardisation would help). Hence, maybe it makes more sense to incorporate some corresponding weights on each attribute, a weighted average for instance (dummy example, but may fit the cause).


PCA will change your data and you will not be able to interpret it in sane sense, you can just slice and dice the data and do many things by hand, PCA would be usefull if you would want to find "neighbouring" players in terms of raw statistics but it can be deceptive because PCA don't know which stats are important,

if you want to decrease dimensionality of data use neural network that predicts something and take N-1 th layer and this vector will be your transformed vector

reducing dimensionality is great (even with PCA) for clustering etc. but very sparse features will be dropped in process and you can lose information

  • $\begingroup$ Thank you. That's some useful info. I would like to cluster different players accordingly to stats. But I don't know if using PCA on all stats (more than 2 dozens), would help me $\endgroup$ – Luís Costa Oct 12 '19 at 21:53

It can be a good idea, but if you want to use PCA, you will have to use it carefully.

First of all, PCA will reduce dimension depending on the data observed in your dataset. Consequently, if it is biaised somehow, the projection will not work with different datasets. For instance, if you have a strong correlation between two features and a third one is independent, the principal component will not be the same vector as if features 2 & 3 were highly correlated.

Secondly, as PCA relies on variance, and your data is likely to be extensive, you will probably need to scale each feature (so that it is given the same importance a priori). But here's the trick: you will have to be clever in your scaling, depending on whether you want to process only this dataset (in this case, scale from min to max could be a good idea), or other datasets (in this case, scale from bounding values that you could encounter).

Then there are a few other things to care about:

  • Of course, you need to split your data for each type of player
  • Once your data is scaled, PCA will give the same importance to each feature, which may not be exactly what you are looking for
  • The projection on one single feature will not be interpretable anymore. It will basically allow you to describe a player by a single scalar value, but it does not mean that a "good" player will have a low or high score, it may be an intermediate value (but if the data describes the problem well and the projection is good, all good players should have approximately the same value)
  • Standard PCA does not work if "good" and "bad" players cannot be separated linearly in the feature space. In that case, it is possible to turn to kernel PCA or other more complex techniques.
  • The projection will retain part of the total variance, keep an eye on how much, because it describes how good your approach is. If it is not sufficient, why not keep more dimensions to describe your player?
  • $\begingroup$ Thank you very much for your reply. For scaling you mean standardization? The aim of this dimmensionality reduction is to apply clustering after this. Or to use the resulting stats in a radar plot. In the radar plot it would be nice to have each vertice corresponding to one principal component. Meaning: Imagine that I have tackles, interceptions, clearances, block - I want one measure to represent all these defensive stats. The same would be done to offensive stats, progression, passing and so on... Does this makes sense to you? $\endgroup$ – Luís Costa Oct 12 '19 at 21:48
  • $\begingroup$ By scaling, I mean applying a normalization factor, so that values range from 0 to 1 (or -1 to 1 depending on what you prefer). You approach makes sense to me. PCA can be used before a clustering approach, supervised learning or anything: it is just a data transformation. However, keep in mind that reducing dimension necessarily means that you lose some amount of information (variance). $\endgroup$ – Romain Reboulleau Oct 13 '19 at 5:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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