While co-locating virtual machines improves utilization in resource shared environments, the resulting performance interference between VMs is difficult to model or predict. QoS sensitive applications can suffer from resource co-location with other less short-term resource sensitive or batch applications. The common practice of overprovisioning resources helps to avoid performance interference and guarantee QoS but leads to low machine utilization. Recent work that relies on static approaches suffer from practical limitations due to assumptions such as a priori knowledge of application behaviour and workload. To address these limitations, we present Stay-Away, a generic and adaptive mechanism to mitigate the detrimental effects of performance interference on sensitive applications when co-located with batch applications. Our mechanism complements the allocation decisions of resource schedulers by continuously learning the favourable and unfavourable states of co-execution and mapping them to a state-space representation. Trajectories in this representation are used to predict and prevent any transition towards interference of sensitive applications by proactively throttling the execution of batch applications. The representation also doubles as a template to prevent violations in the future execution of the repeatable sensitive application when co-located with other batch applications. Experimental results with realistic applications show that it is possible to guarantee a high level of QoS for latency sensitive applications while also improving machine utilization.