I have just completed Andrew Ng’s Machine Learning course on Coursera (link) and in this article I would like to share what I have experienced.

The course contains various algorithms of machine learning such as neural networks, K-means clustering, linear regression, logistic regression, support vector machine, principal component analysis and anomaly detection.

More importantly for me, the course contains various real world applications of machine learning, such as self driving car, character recognition, image recognition, movie recommendation, image compression, cancer detection, property prices.

What makes this course different to other Machine Learning materials and sessions I have seen is that it is technical. Usually when people talk about machine learning, they don’t talk about the mechanics and the mathematics. They explain about what clustering does, but they don’t explain about how exactly clustering is done. In this course Andrew Ng explains how it is done in great details.

It is amazing how people can get away with it, i.e. explaining the edges of Data Science / Machine Learning without diving into the core. But I do understand that in reality, not many people are able to understand the mathematics. The amount of matrix and vector algebra in this course is mind boggling. I am lucky that I studied physics for undergraduate in university, so I have a good grounding in calculus and linear algebra. But for those who have never worked with matrix before, they might have difficulties understanding the math.

Unfortunately, we do need to understand the math in order to be able to complete the programming assignments. The programming is in Octave, which is very similar to Matlab. When I started this course, I have not heard about Octave. But luckily again, I have used Matlab when I was in uni. Yes it was 25 years ago, but it gave me some background. And in the last 20 years I have been coding in various programming languages, from C++, VB, C#, Pascal, Cobol and SQL, to Java, R and Python so it does help. It does help if you have strong programming experience.

The programming assignments do take a lot of time. It took me about 3-5 hours per assignment, and there are 9 assignments (week 1 to 9, there are no assignment for week 8 and 9). For me, the problem with these programming assignment is the vectorisation. I can roughly figure out the answer using loops, which takes many lines. But to convert into a vectorised solution (which is only 1 line), it takes a long time. Secondly, it takes time to translate the mathematics formula into Octave, at least in the first 3 weeks. And thirdly, it takes time to get it test the program and correct mistakes that I make.

The quizes (the tests) are not bad. They are relatively easy, far easier than the programming. Each quiz comprises of 5 questions and we need to get 4 out of 5 questions correct. We are given 3 goes for each quiz. If we still fails after 3 goes, we can try again the next day. Out of about 11 quizes (or may be 12) there is one which is difficult and I failed twice, but passed the third time. But that’s the only one which is difficult. The other are relatively straight forward.

The most enjoyable thing for me is the math. I have not got a chance to use the math I learned in uni since I graduated 25 years ago (well, except helping my children with their GCSE homework). The practical / real world examples are also enjoyable. The programming on some modules are enjoyable. Overall it was fun and interesting, and very useful at the same time. I have been to many IT courses: .NET, SQL BI, Teradata, TDWI, and Big Data, but none of them are as enjoyable as this one.

Because of this course, which makes me realise that Machine Learning is very useful and fun, I decided to apply for an MSc course in Data Science (containing big data and machine learning). So thank you Andrew Ng for creating this course, and patiently explaining the chapters and concepts, video by video. Thank you.

(Y)

Comment by sqlpoolblog — 26 October 2017 @ 7:18 am |

Very interesting article. Thanks for sharing your thoughts thru the blogs. I am following your blogs for a good number of years.

Just a quick question. What’s your advise for a BI developer who want to move into data science platform please ?. Should I aim for data engineer or similar roles to aim and prepare for. I am interested if there are any career path I can choose and workout ?. I welcome your inputs. Thanks Nat

Comment by sqlnat — 6 November 2017 @ 7:07 pm |

Thanks Nat, a very interesting question. Data Science is (in my opinion) Big Data + Machine Learning, please read my article about what Data Science is here: https://dwbi1.wordpress.com/2017/10/28/what-is-data-science/. I would advise to get into Big Data job first, and then move into Machine Learning.

Big Data and Machine Learning require two different skillsets, but it is easier for a BI or DW professional to get into Big Data, than into Machine Learning. And once we are doing a the Big Data, there is more chance that an opportunity for us to do Machine Learning work. This is because Big Data (especially Key Value store) is usually analysed using Machine Learning.

To take on a Big Data job, we need to be trained (or self learning) on Hadoop, Java, Spark. With “Hadoop” I mean the whole ecosystem including HDFS, JSON, Hive, Pig, Scala, etc. With Java, primarily I mean coding MapReduce using Java. There are a few Hadoop systems in the market, if possible use Hortonworks, Apache, Cloudera or HDInsight, rather than Cassandra, BigInsight, MapR, Datameer, Altiscale or Amazon, because of completeness/richness of tools and features. But if you are not in a position to be picky, anyone of them is good I suppose.

To move into Machine Learning, we need to learn various ML Algorithms and Python. You can get away without knowing R or MatLab, but you need to know Python (SciKit).

Comment by Vincent Rainardi — 7 November 2017 @ 8:13 pm |

hey good post .

are you taking the deeplearning course by andrew ng that follows this one?

Comment by ayyocode — 2 January 2018 @ 7:07 am |

Yes I am

Comment by Vincent Rainardi — 2 January 2018 @ 8:27 pm |