In the first days of 2014 we would like to give you some more information on free online education. This time we’ve decided to cover the Machine Learning course given at edX. We are grateful to Natalia Konstantinova who agreed to share the review with us.

As MOOCs are becoming a new trend in education, an increasing number of courses are appearing online: some are adequate, some are good but only a few of them can be classified as outstanding. I think I was lucky to take one of those outstanding ones. It was a course focused on Machine Learning (ML) offered by edX platform – Learning From Data. I will try to provide some details about the course organisation, subjects covered and also discuss some highlights of the course.

About the course

The course summary states: “Introductory Machine Learning course covering theory, algorithms and applications. Our focus is on real understanding, not just “knowing.”

The idea of the course is to make it as close as possible to the real course taught to students at Caltech (California Institute of Technology). The FAQ mentions that “this is a Caltech Parallel Session – Caltech students are taking the exact same course on campus at the same time. They watch the same video lectures and do the same homework as everyone else”. Therefore the edX course gives you an opportunity to experience how it feels to be a student at Caltech.

The course is well structured and teaches you not just what package to use for ML, but rather explains the basics of ML theory, for example, why it is possible to learn from data. It covers a range of linear models, neural networks, RBF and SVMs and also shows how linear models can be applied with non-linear transformations. Even though this list can seem a bit limited given the amount of ML models appearing now, the course focuses on fundamental concepts such as training and testing, cross-validation, overfitting, regularisation and VC dimensions, that are very important for all ML models. Good understanding of these basic concepts helps to build on these foundations when studying new ML techniques and paradigms in the future.

Homework

The course was graded based on 8 homework tasks (total 80%) and the final exam (20%). However, the worst two homework grades were discarded. So as the description of the course mentions “if a week (or two) is too theoretical for you, too programming-heavy for you, or just not your week, don’t despair!”.

Homework tasks were due every week and 11 days were given to complete the exam. Unlike Coursera courses, there were no soft deadlines – every Monday at 21:00 UTC solution keys were posted online and no submissions were allowed after that. This approach made the course resemble a real life University course where you have to come to class and report your progress every week – there was no way to skip the assignment. I guess some people found it to be quite annoying, but for me it was a great motivation to finish everything on time and start studying new material for the next week. There was no “trial and error” – you were given only one chance to submit the answer for a homework question, so you had to think carefully before making your final choice.

Work load

Each week students had to cover two 1-hour lectures followed by QA sessions (typically about 20 minutes each). Then there was time allocated for homework. Homework questions were very wisely designed to motivate you to experiment, program, test, debug and explore different configurations. The amount of work needed for the course was initially estimated as 10 hours per week, but in reality, as observed by many students, the course was more demanding. One of the participants of the course (an experienced Java software engineer) posted the time he was spending each week to deal with the course:

Credit for the picture goes to Pramodh Nanjayya, who created it with a help of Tableau.

Examples of Homework

To give you a taste of homework questions:

Or:

You can see the whole list of questions and solutions online. Some of the questions were easy and did not take much time to answer, but some required you to code, e.g. questions about Lloyd’s algorithm for k-means or perceptron.

For example, the following question made you spend more time to understand Neural networks (NN):

It is clear that it would not be possible to answer it correctly without proper understanding of the way NN are structured and how backpropagation works. And merely guessing will not help you – you have only one try!

Students were free to use any programming language they wanted and a quick discussion after the end of the course revealed that the diversity of languages was impressive: Python, R, Matlab, C, Java, Javascript, Haskell, Scala, Julia, C#, Octave, Mathematica and Perl. The combined solutions collected by some of the students showed that the biggest preference was given to Python, R and Matlab. This can be explained by the fact that these languages are concise and feature a lot of ML libraries.

Several free tools were made available to enrolled students to enhance their learning experience. One of them was SKIES, a collaborative learning app for iPad, and another one LIONsolver that allowed easy visualisations.

Some criticism

Of course, MOOCs are just appearing, so there are a lot of things that can be improved on. Students posted some feedback after the end of the course and the main points that were mentioned are listed below:

1. Only one attempt was given when submitting homework – if you fail – that’s it.

However, it made people think carefully and not rely on mere luck. Students were also posting ‘sanity checks’ (results with slightly different parameters than those requested in the homework) on the forum that helped to check for bugs in your implementation.

2. It was difficult to estimate the level of difficulty from the initial description of the course.

All people who also took ML course by Ng (reviewed recently at NLP People) said that the Caltech one was more challenging and provided a better insight into ML fundamentals.

3. No submission of code was required.

However, we had freedom to use a programming language(s) of our choice.

4. Some people considered 1-hour lectures to be too long.

As for me I liked the feeling of being part of the audience – it reminds you of the real life university environment.

5. People wanted MORE!

All of us were sad that the course has ended and just wished it was longer and covered more topics. Maybe in the next edition!

Summary

The instructor, Prof. Yaser S. Abu-Mostafa is not only a brilliant lecturer with a splendid sense of humour but also a very inspiring person. His participation in the forum discussions was outstanding: he posted more than 1500 messages on the forum during the course. No questions were left unanswered. After the end of the course the forum was full of people saying big ‘Thanks’ to Professor.

This course not only provided knowledge about ML with additional hints to use in real life applications (“rules of thumb”), but also inspired many people to learn more about ML. As a result of this course, many people signed for Kaggle competitions in data analytics, also several communities were created in social networks to stipulate further sharing of knowledge.

The course has finished, so if you got inspired you will have to wait for the second edition, however, all the lectures are available online. A video library focusing on various aspects of ML was also compiled from the lectures of the course.

I wish all online courses could provide such a high quality standard of education! Keep an eye on the next edition of this course – highly recommended!

About the author:

Dr Natalia Konstantinova got her PhD in Information Extraction for Interactive Question Answering from University of Wolverhampton (UK). Her interests lie in the field of NLP (Natural Language Processing), machine translation, information extraction, dialogue systems, speech, data analytics, machine learning as well as project management.

Blog