A general agnostic active learning algorithm