Before revision:  It uses an unsupervised learning technique, called Autoencoder, to learn the contention behavior implied by the profiles (collected from the older version of code).
After revision:  It uses an unsupervised learning technique, and hardware performance counters to learn the contention behavior implied by the profiles (collected from the older version of code).