Optimization for Machine Learning