Heterogeneous machine learning: characterization, generation and comprehension