Unsupervised feature reduction for anomaly detection with autoencoders
I have used stacked auto-encoders to reduce our 40 features step by step to 5 features and then output back to 40 features (some of my features were all zeros/ non deviating features). Training this on original (assumed to have no outliers) gives you a network which has learnt an abstract representation of the 40 features with 5 features.

When outliers show up these values are different and the network was unable to construct these particular data points back and the error scores for these values should be typically higher.

I used this with Deeplearning4j with SparkDl4jMultiLayer with KLDivergence loss functions on all layers except output layer with MSE loss functions. with Sigmoid activation function.