I think there are two ways to look at the question whether SVD/PCA helps in general.
Is it better to use PCA reduced data instead of the raw data?
Often yes, but there are situations where PCA is not needed.
I'd in addition consider how well the bilinear concept behind PCA fits with the data generation process. I work with linear spectroscopy, which is governed by physical laws that mean that my observed spectra $\mathbf X$ are linear combinations of the spectra $\mathbf S$ of the chemical species I have, weighted by their respective concentrations $c$: $\mathbf X = \mathbf C \mathbf S$.This fits very well with the PCA model of scores $\mathbf T$ and loadings $\mathbf P$: $\mathbf X = \mathbf T \mathbf P$
I don't know of any example where PCA has hurt a model (except gross errors in setting up a combined PCA-whaterver model)
Even if the underlying relationship in your data doesn't suit that well to the bilinear approach of PCA, PCA in the first place is only a rotation of your data which would usually not hurt. Discarding higher PCs leads to the dimension reduction, but due to set up of the PCA, they carry only small amounts of variance - so again, chances are that even if it is not all that suitable, it won't hurt that much, neither.
This is also part of the bias-variance trade-off in the context of PCA as regularization technique (see @usεr11852's anwer).
Is it better to use PCA instead of some other dimension reduction technique?
The answer on this will be application specific. But if your application suggests some other way of feature generation, these features may be far more powerful than some PCs, so this is worth considering.
Again, my data and applications happen to be of a nature where PCA is a rather natural fit, so I use it and I cannot contribute a counter-example.
But: having a PCA hammer does not imply that all problems are nails...
Looking for counterexamples, I'd start maybe image analyses where objects in question can appear anywhere in the picture. The people I know who deal with such tasks usually develop specialized features.
The only task I routinely have that comes close to this is detecting cosmic ray spikes in my camera signals (sharp peaks somewhere caused by cosmic rays hitting the CCD). I also use specialized filters to detect them, although they are easy to find after PCA as well. However, we describe that rather as PCA not being robust against spikes and find it disturbing.
you will find a nice summary given by user @ttnphns here: https://stats.stackexchange.com/q/22520.
In particular:
- If you center columns (variables) of $\mathbf{A}$, then $\mathbf{A′A}$ is the scatter (or co-scatter, if to be rigorous) matrix and $\mathbf{A′A}/(n−1)$ is the covariance matrix.
- If you z-standardize columns of a matrix $\mathbf{A}$ (subtract the column mean and divide by the standard deviation), then $\mathbf{AA′}/(n−1)$ is the Pearson correlation matrix: correlation is covariance for standardized variables.
In general you should always center your data when performing PCA. As explained here, not centering your data can give misleading results.
Best Answer
As I continue to investigate this subject I found out that there are different methods to compare features, I am going to post some of them, just in case someone has the same problem than me:
1.-Kolmogorov-Smirnov compares the maximum distance between two cumulative distribution functions and returns a value meaning the similarity between the functions. If you compare the feature from sample A and B gives you an idea, if they are close is not a good feature.
2.-Compute overlap between distribution functions, the bigger the overlap the worse the feature is to differenciate the classes, code:
3.- Previous methods are bit more homemade, scikit also includes some module for feature selection using different methods to compare features and let you know which one is better, Scikit feature selection
I tried these 3 methods, including several variatons of the scikit feature selection, and they always matched in which was the best feature, so I guess everyone of them is working properly.
Thanks a lot and I hope this ends up being helpful!