# Why normalization kills my accuracy

I have a binary car sound classifier. I have a feature set that is extracted from audio with size of 48. I have a model(multi layer neural network) that has around %90 accuracy on test and validation sets. (without normalization or Standardization)

I see that the feature values are mostly around [-10, +10] But there are certain features with a mean of 4000. Seeing unproportional values within features I though some feature scaling might improve things. So using scikit-learn tools I tried:

   - Simply removing the means from features
- Normalizer
- Min max scaler
- Robust Scaler


And all these above ended up dropping my accuracy to ~ %50! (%100 recall, %50 precision)

So how is this possible? And what is the correct way to normalize my data?

• Don't have much experience with audio though, but you can create spectrogram for all and just run a CNN on top of it.. – Aditya Jan 6 '19 at 15:35

## 2 Answers

There could a skewed power envelope or non-stationary data. As a result, off-the-shelf feature scaling could attenuate the signal.

There are feature scaling techniques that tend to work better for audio signals, examples include: RMS level (Root Mean Square Level), Cepstral Mean Subtraction (CMS), RelAtive SpecTrAl (RASTA), kernel filtering, short time gaussianization, stochastic matching, and feature warping.

You should make sure you understand your raw data and the assumptions of each feature scaling technique before application. Accuracy-driven machine learning might lead to the wrong conclusions.

• Tnx. I heard all those names but not quite sure how to use them as feature scaling. During feature extraction i already normalize all sound samples to -22db for loudness, and apply a band pass filter between (500,9000). In this case i wont need RMS for scaling right? I use 38 Mfcc coefficients, and 10 other features like(zcr, chroma, tonnatz..etc) Which scaling technique recommend in this case? – Spring Jan 9 '19 at 12:07
• And what would you suggest instead of this? "Accuracy-driven machine learning might lead to the wrong conclusions" Tnx – Spring Jan 9 '19 at 12:10

Your results sound like your classifier is not working at all assuming your classes are evenly distributed.

Are you applying the regularization to the entire data set or the fields that have the larger magnitude? If to the whole data set, I would only apply to the fields with the greater magnitude.

While some NNs are sensitive to magnitude differences, I personally don’t find data regularization necessarily that helpful.

If you are looking for ways to improve performance, maybe testing different activation functions would be a good place to start.