Nowadays Machine Learning is one of the coolest topic when dealing with data analysis and software development, and everyone who can throw some Machine Learning related concepts in a conversation is seen immediately under a brighter light.
Indeed Machine Learning is a really powerful tool, and can help solve a lot of problems. But how many out there thought, at least once, that a particular problem could be solved through some Machine Learning algorithm, and started to try out different things blindly, using the huge variety of available Machine Learning libraries, without really understand what was happening under the hood?
I am not saying here that we have to re-invent the wheel. If there are already libraries which do what we need to do it's perfectly fine to use them. What I am saying is that, when I first started trying out myself some of the Machine Learning tools, I realized that I had very few control on what the algorithm was doing, and I did not have enough knowledge to be able to determine whether my algorithm was working correctly and, if not, to understand where exactly the problem was.
My background as a Physicist here came to rescue me and so I decided to take a step backward and start with an introductory course on Machine Learning. I took this course on Coursera. It was really helpful, because it clarifies the different Machine Learning approaches and specifies which one to use when. In addition to that, the math under the hood is explained quite well, with a lot of intuitive ideas to help you get a feeling of what is happening, even if you do not have a very strong mathematical background.
Machine Learning is such a broad topic, and the things that come into play in a Machine Learning algorithm are so many, that it can be quite hard to plan a Machine Learning pipeline just googling around when we find ourselves stuck on a problem. In particular, it can happen that we spend months trying out different strategies to improve our learning algorithm, when maybe, with just a basic knowledge of what is going on under the hood, we could have immediately guessed the right direction to take in order to fix the problems.
Of course I do not consider myself an expert on the subject now, but for sure I have gained a much better insight on how a Machine Learning algorithm is supposed to work, and I am feeling much more confident to apply this knowledge to my own project!
For these reasons, if you are thinking about giving Machine Learning a shot for one of your projects, I suggest to spend some time first to play a bit with your data in order to have a feeling of what you are working with, and then to take a basic course, or read an introductory book on the subject. I am sure it will help you clarify your ideas and point you in the right direction to implement a successful Machine Learning algorithm yourself!