Andrew Ng’s Machine Learning MOOC is still relevant in 2019 and here is why

Chouaieb Nemri
4 min readDec 20, 2019

Disclaimer: I am new to machine learning and also to blogging (First). So, if there are any mistakes, please do let me know. All feedback appreciated.

If you go to google and type “Best online Machine Learning classes”, chances are, Andrew Ng’s Machine Learning class offered at Coursera will be on top for most of the rankings out on the Internet. With more than 2.5 Million already enrolled, this MOOC (Massive Open Online Class) has been established as the reference online learning source and has become the starting point par excellence for everyone willing to start their Data Science / Machine Learning Journey.

Ng is an adjunct professor at the Stanford University and has worked on AI and Robotics related research problems for more than two decades. He offered this Machine Learning class for the first time on August 15th, 2011. On that same day, The New York Times featured his course (along with two other Stanford courses). The popularity of his Machine Learning course would lead him and Daphne Koller (another Stanford professor) to launch Coursera a few months later making them become the pioneers of online Education.

https://www.youtube.com/watch?v=e0WKJLovaZg

In a context where machine learning is evolving extremely rapidly, some practitioners as well as newcomers started questioning the relevance of this course today in 2019. The main points of criticism made the course are the following :

  • Hands-on programming assignments are to be done using Octave / Matlab Software while actual machine learning projects use Python and frameworks such us Scikit-learn, TensorFlow, PyTorch, Keras, etc …
  • Machine learning algorithms that have proven to give superior results on different types of problems using tabular data such us Random Forests and XGBoost are not discussed in the course.
  • Artificial Neural-networks are marginally discussed while state-of-art, Deep Learning techniques are by far outperforming classical Machine Learning models.

We will go through each of these claims to show that they don’t actually make sense.

1 — Hands-on programming assignments are in Octave instead of Python

So, to begin with, the main objective of the course is to provide the theoretical foundations of Machine Learning while simplifying (and sometimes overlooking) advanced concepts in statistics and linear algebra that are not directly necessary to the understanding of the functioning of Machine Learning algorithms. You can find below a non-exhaustive list of concepts covered by this class:

  • What is Machine Learning
  • Supervised Vs Unsupervised Learning
  • Classification problems / Regression problems
  • Cost functions & intuition behind them for both classification and regression settings
  • Gradient Descent (The most basic numerical method to define optimal Machine Learning model parameters given a cost function)
  • Bias-Variance Tradoff (High bias / High variance problems)
  • Linear Regression / Logistic Regression
  • SVMs
  • Artificial Neural Networks
  • Anomaly Detection
  • Recommender Systems (Collaborative Filtering)
  • Clustering (K-means)
  • Dimentionality Reduction (SVD / PCA)
  • Learning with Large Datasets

In order to have an solid understanding of what happens behind the scenes, it is important to actually implement these concepts instead of using built-in models and methods in libraries such as Scikit-learn. The programming tool to be used is not as important as understanding the computational thinking and the intuition behind the models. So doing stuff in Python doesn’t really have any added value here. But if you insist Gerges Dib did a great job at translating the programming assignments into Python. You can find his work in this GitHub repo. All the assignments have been tested and the submission to Coursera occurs with no problems.

2 — Random Forests and XGBoost are absent

No course is complete and no course is as complete as that of Andrew Ng. After finishing Andrew Ng’s class, you can find a lot of wonderful online resources on Random Forests and XGBoost. The first one that comes to my mind is that of Jeremy Howard’s fastai. The first lectures provide a deep and practice-oriented understanding of random forests. After just one hour of lecture, you should be able to be in the top 10% of many Kaggle Competitions. Thank me later ;).

3 — What about Deep Learning ?

First things first, Deep Learning Techniques are not always easy to interpret and they are often considered as black-boxes. Deep Learning Architectures differ dramatically depending on the applications (e.g. CNN (Convolutional Neural Networks) for images, LSTM (Long-Short Term Memory) for speech recognition, Tansformers for NLP etc …) And that makes the skills learnt in a given area hardly transferable to other areas. (i.e. things that work for applications involving images do not apply for NLP and vice versa). Thenceforth, you need to acquire a minimum experience in the world of AI before deciding which field to specialize into (i.e. Images, text, etc …). Moreover, if you are not aware of basic Machine Learning concepts such us over-fitting, cost-functions or how gradient-descent work, you’d hardly be able to answer basic Deep Learning questions such as ‘why we may need dropout for Neural Networks ?’ or ‘Which optimizer to choose for my model ?’. Deep Learning builds on top of Machine Learning knowledge and is actually a subset of Machine Learning. Last but not least, XGBoost and Random Forest are usually able to outperform deep learning Techniques for structured data.

Conclusion

So this article points out the importance of understanding the fundamentals of Machine Learning before using packaged functions. We introduced the Machine Learning course offered by Andrew Ng on Coursera as the best starting point for a beginner in the world of artificial intelligence. And last but not least, we discussed some advanced topics at the very high level. Again, for those who would like to do the ML Assigmnents in Python instead of Octave, you should take a look at this GitHub repo. Your questions and remarks are very welcome.

--

--