First step on Machine Learning for software engineers

Before going into details of how an engineer shoud take the first step on Machine Learning (ML), I want to clarify that I am an embedded engineer who are amazed by the beauty of ML and have started learning it for just over a year. So everything I write in this blog is subjective to my point of view.

ML is a very interesting field to study. There is a fast growing need of engineers who have a computer science degree and want to step in this field as me for an example. However, it is not easy to have a clear study plan that you can actually understand the background of ML and then eventually become a ML engineer.

Although there are a lot of instructions, suggestions and even detailed roadmaps like this, I can’t even know where to start because of the redundance of information in those approches. In this blog I will share with you how to take the first step in Machine Learning as an engineer:

Theory

In my opinion, if you understanding theoritically a subject, you can learn much faster afterward. So first, you need to build your basic theory backgound of statistical learning (foundation of ML). Two books that are highly recommended is:

Those books are 2 textbook used in the course CS 189/289A Introduction to Machine Learning. They are available to download and you can follow the schedule of lectures to have a plan of reading those two books. There are also homeworks and lecture videos on youtube that are very useful. The first book introduces basic definition and popular methods, algorithms in Statistical Learning that are very accessible to beginers who are not specilised in statistic. The latter book covers all those things but in a higher level with detailed explanations and formulas that give you a great insight into what is behind all the different methods.

Another book that is helpful too: Patern recognition and Machine learning by Christopher M. Bishop

Practices

What I cannot create, I do not understand - Richard Feynman

The next step is to implement some or all of the algorithms in the books to fully understand how they work. You can also learn a lot of programming techniques required to implement efficiently those algorithms because the scale of ML. Practically you are equipped all the things you need to implement ML algorithms. I found a repository on github that has those algorithms implemented from scratch which I found very useful:

https://github.com/eriklindernoren/ML-From-Scratch

From this point onward you have solid theoretical and practical background to develop your own ML projects. If you use libraries like tensorflow, keras or Pytorch, it’s much easier to understand how models are created in those libraries and more importantly you understand clearly how every parameter in those models reflects on the final result.

Competitioins (optional)

If you want to improve your skills in ML by competing, kaggle.com is a pretty good place to start. One of the advantages of competting on kaggle is that you can build a profile as you compete. And that profile can play an important role in your career. However, most competitions on Kaggle require powerful PCs that can handle Gbs of data which are not available for individuals. So take those competitions as a resource to get ideas or to see how the top competitors solve real-world problems.

Planning

This books with 2 other books introduced above can be used together so you need a clear plan to finish all the books that I recommend. I personnally use kanbanflow.com to track my progress and I find it very useful. You will get a taste of achievements that will keep you moving forward.

Conclusion

I might add more infos to make this blog and extend it with some ideas on Deep Learning (especially Reinforcement Learning) so if you find this post helpful, pin it. I’m happy to get your feedback to make this roadmap more concrete so don’t hesitate to email me to: phan at tuanphuc dot com.

Written on February 27, 2017