Machine Learning: A Theoretical Approach