To master Machine Learning (ML) one has to be good at maths, programming and domain knowledge. Domain knowledge (Eg: how to deal with images, audio, financial time series etc) changes from one class of problem to another, so let us focus on first two.
Why Maths?: we need maths to understand the machine learning algorithms/ models or to implement new ones. There are large number of models which are already built. Even when we are using existing models we need to understand the internal working of the algorithm so that we can tune the hyper parameters. Single model may not give best results for all the problems (no free lunch). Which model to use for the given problem is very important and to choose the right model, one needs to understand the internal working.
Thankfully you don’t need all the maths but only some subbranches:
Why Programming? Programming is needed to use ML models (or build new one), get the data from various sources, clean the data, choose the right features and to validate if the model has learned correctly. Thankfully you don’t have to be an expert programmer. Some programming languages are preferred for doing ML than others because they have large number of libraries with most of the ML models already implemented.
Languages suited for ML
I recommend beginners to start with Python and learn only the required math from book and online courses. Some good books in ML and Deep Learning (DL).
Books:
Courses:
For advanced level you need to get the intuition of how the models work (not just reading math equations). For that you need to spend lot of time working on various ML/ DL problems. At the end of the day ML is more of an art, you become good by practice. You also need to read lot of papers.
Papers:
If you read and implement lot of good papers (say 100 :) ) you will become an expert in ML/ DL. After this point you can create your own algorithms and start publishing your work.