If you want to get the lowdown on Coursera's Machine Learning course in one place, then you’ll LOVE this review.
Just curious about machine learning or this course, you'll love this review, too! 🙂
I personally took the course and reviewed the course structure, logistics, assignments and much more.
Check it out!
What is the course about?
This is not a review for Andrew Ng's CS229 course at Stanford.
This is a review for Andrew Ng's Coursera Machine Learning course which gives a tour of machine learning.
As tours go... the course doesn't go into depth for each topic, but the thing I like is where Professor Ng gives the intuition for the concepts. To me, this is invaluable!
In the assignments, you'll also learn and play around with a wide array of machine learning techniques that are used in real life.
What topics does the course teach?
Here's a rundown of the key topics covered in the course:
- Octave/Matlab basics
- Supervised vs. unsupervised machine learning
- Linear regression
- Linear algebra review
- Gradient descent
- Logistic regression
- Multiclass classification
- Neural networks
- Bias vs. variance
- Evaluating a machine learning algorithm
- Learning curves
- Handling skewed data
- Precision and recall
- Support vector machines (SVM)
- Dimensionality reduction
- Principal component analysis (PCA)
- Anomaly detection
- Low rank matrix factorization
- Collaborative filtering
- Stochastic and mini-batch gradient descent
- Online learning
- Map Reduce
- Optical character recognition (OCR)
- Ceiling analysis
Is the course self-paced?
No. This course is deadline-based. However, you can treat it as a self-paced course by ignoring the deadlines.
What happens if the deadlines are ignored?
Since the quizzes and programming assignments are graded, you'll get a lower grade. If you don't care about your grade or getting a certificate, the deadlines really don't mean much.
What is a certificate?
Coursera offers a certificate upon passing the course. Naturally, there is a fee associated with getting a certificate.
Did you take it self-paced?
I went at my own pace.
However, I completed the course in 9 weeks instead of the 12-week structure. I am familiar with some of the material, so I found the material for certain weeks easier.
How much effort is needed?
I devoted at least 30 minutes everyday for 61 days. Some days I invested more than 30 mins, but these were rare.
Can I take this course if I'm super busy?
Sure! But what's super busy?
I took this course in Fall 2015 with a full-time job and an infant who hasn't quite developed an interest in machine learning (yet).
Is that super busy?
To make it easier to conquer the course I did 2 things:
- I watched the video lectures at 1.5X speed. You can blast through a 10 min. video in a little over 6.5 mins. I still found the lectures very understandable at this speed.
- I watched the video lectures whenever I had some time on my iPhone. However, the mini-quizzes embedded in the video don't show up in the phone version.
How did you motivate yourself to complete the course?
I used Jerry Sienfeld's productivity secret: Don't Break The Chain. I did at least 30 mins of the course everyday for 61 consecutive days.
Quizzes and assignments
What are the assignments about?
I really liked the assignments.
Hands-on learning is frequently the best kind of learning, because that's when the concepts come to life!
Best of all:
With hands-on assignments, you'll need to problem solve on your own. You'll inevitably run into obstacles. No one can teach you how to work yourself out of these obstacles better than yourself.
Here's what you do in each assignment:
- Implement linear regression with one variable using gradient descent
- Implement linear regression with multiple variables
- Implement feature normalization
- Implement normal equations
- Implement logistic regression
- Implement regularized logistic regression
- Implement one-vs-all multi-class classification
- Implement neural network that uses feedforward propagation
- Implement a neural network that uses regularization
- Implement a neural network with backpropagation
- Implement gradient checking
- Implement regularized linear regression
- Implement learning curves
- Implement polynomial regression
- Implement support vector machine (SVM) with Gaussian Kernels
- Implement a spam classifier using SVM
- Implement K-means clustering
- Implement dimensionality reduction Principal Component Analysis (PCA)
- Implement anomaly detection
- Implement collaborative filtering recommendation system
Can I take this course without any programming background?
I think it will be difficult, but probably do-able.
Since I do have a programming background, I might not be the best person to answer this question.
In most of the assignments, I spent most of my time reading through the existing code and comments. In most cases, you'll write under 10 lines of Matlab code to complete the assignment. I think there may have been 1 assignment where I wrote a bit more.
Unfortunately, the course and programming assignments are taught in Matlab/Octave. The course doesn't assume any knowledge of Octave or Matlab.
Also, machine learning libraries like those found in R or Python are not covered.
But there's a silver lining:
Using Matlab/Octave, I could focus on the algorithm rather than dealing with all the matrix and linear algebra calculations. Matlab/Octave makes matrix operations super easy.
Since many of the programming assignments are about implementing algorithms from scratch, I ended up liking the choice of Matlab.
I don't think I'll use Matlab/Octave at work or for personal projects though.
Do I need to buy Matlab/Octave?
No, the course offers a time-limited educational version of Matlab for free. It will expire about 1 month after the course ends.
Octave is free software. Many students have used Octave with the assignments.
However, in fall 2015, the programming assignments seemed to be less buggy in Matlab.
Can I use R or Python for the course?
No, I don't recommend this.
I realize it sucks to pick-up a new language just for this course, but it will make the course way easier to follow along.
If you work or plan to work in anything remotely related to the software industry (that includes data scientists and machine learning specialists!), picking up new languages is super common.
The bottom-line is:
Don't get attached to a language. Get used to learning new languages. Use the language that helps you solve your problem quickly.
Here are 3 reasons to use Matlab/Octave for the course:
- The automated assignment submission and evaluation engine only works with Matlab/Octave.
- The assignments generally provide a lot of framework code, so that as a student, you focus on the concepts rather than wrestling with how to load data, plot data, etc. Using R/Python, you'll have to write this framework code on your own.
- If you're struggling with how to do something in R/Python, you'll be on your own.
Okay, let me repeat...
I'm not saying Matlab/Octave is the best environment. I'm only saying Matlab/Octave is the best environment for the course.
You'll learn the machine learning concepts which you can take to any environment or language.
Where can I get help?
Like all Coursera courses, there is a discussion forum where TAs and other students can interact.
I only used the discussion forums once or twice when I was stuck on an assignment.
I also used other solutions posted online.
I don't recommend just copying the solutions. I gave the assignments my best shot before looking at the solutions. On a few assignments, I got stuck for 1-2 days with an implementation that wouldn't pass the automated grader system.
That's when I would use the other solutions to get unstuck.
What are 3 things you liked about the course?
- The instant feedback from the quizzes and assignments is my favorite. Having this tight feedback loop for testing your understanding is awesome for learning.
- Prof. Ng frequently gives the intuition behind machine learning. The details and math can be worked out in time, but simplifying an algorithm and distilling it to its essence is something Prof. Ng does really well.
- I really enjoyed the sections on testing and evaluating a machine learning program. Evaluating the algorithm can just as hard or even harder than implementing the algorithm.
What are 3 things you disliked about the course?
- Many of the quizzes were a little too easy. I liked the quizzes that were more difficult, since they pushed me to really question and understand what I know or don't know.
- The lack of solutions for the quizzes is a bit frustrating.
- One of the assignments wouldn't run without some changes. I only found out about the changes in the discussion forum. This is frustrating and takes up time better spent doing the assignment.
Where can I find more reviews of the course?
As of December 2015, CourseTalk has over 100 reviews for this course.
What Do You Think?
Now I want to hear from you.
What do you think of this course or this review?
Leave a comment below right now to let me know. 🙂