Efficient and Collaborative Methods for Distributed Machine Learning