I started Andrew Ng’s famous Coursera Machine Learning course in 2015 after deciding to leave engineering and pursue a career in machine learning. I almost finished it, but then I actually got a job doing ML at a startup, life got crazy, and I never completed the final few weeks of the course.
I recently decided to revisit and finish it. Here are some of my thoughts:
- A large number of very well-known ML people got their start with this course. That’s pretty incredible.
- This course was exceptionally encouraging when I first started learning ML. I can’t overstate just how much Ng’s enthusiasm and encouragement increased my confidence that I could chart a new course in ML.
- The material in this course still holds up well in 2020. He doesn’t cover the latest algorithms or tools, but that’s not the point. The point of this course is to teach fundamentals and provide intuition around the foundational, classical ML algorithms.
- When I started learning ML, I found the MOOC format a nice complement to the other learning modalities I was using at the time. Some people are fine with just reading books (I read a lot of books also), but I found taking a combined approach of doing MOOCs, reading (mostly O’Reilly) books, and implementing algorithms/examples on my own very effective. Ng’s course was an important axis of my transition into ML, but by no means the whole story. I’ll write more about this another time.
- It’s really good to spend time contemplating the basics. I’ve written before (borrowing from Feynman) about how time spent on basic ideas is never wasted, and revisiting this material now was stimulating in a new way.
- Here is the course syllabus. The course provides a high level overview of linear regression, logistic regression, regularization, neural networks, support vector machines, some unsupervised learning techniques like k-means clustering and principal components analysis (PCA), basic anomaly detection approaches, collaborative filtering/recommender system basics, and a lot of more generic advice about ML system design, intuition around approaching ML problems, and techniques for improving the performance of algorithms.
- I wish the course discussed tree-based methods like decision trees, random forests, and boosting algorithms. I have always been fond of these approaches and have had good success with them. The course is time-constrained, sure, but I would have rather seen this replace support vector machines, for example.
- As someone who has been working in ML for quite a few years now, I loved hearing his anecdotal intuitions around model improvement and decision-making. I especially liked the concept of ceiling analysis, which was new to me.
- Do the programming exercises. If you have experience with linear algebra programming (Matlab, Python/numpy), the programming assignments are going to be really easy. You won’t implement any algorithms from scratch, rather you will fill in gaps in pre-written code (such as cost function, forward/backpropagation steps, etc.).
- Don’t forego the programming exercises just because they’re in Octave. Octave is extremely easy to learn and everything you need to know there can be easily googled (for loops, matrix operations, control flow).
- You’re unlikely to become an expert in any of the above just from this course, but it’s a very good orientation to the field and jumping off point.
- A lot of people wonder whether this course (or one like it) is enough to land a job in machine learning. The answer is probably “no”, and in fact for sure “no” if you have no prior technical background, don’t know linear algebra or how to program, and don’t have an existing network of software/data science people. But if you are really good at Python/math, already do technical/software/data-adjacent work, and know people, it might be enough to get your foot in the door. Although it’s not a huge time investment, completing a MOOC like this is more than nothing and can be listed on your resume/LinkedIn, unlike books you have read. If a career in ML is your goal, it’s not a bad place to start.