A couple of weeks ago I finished the machine learning Coursera class by Andrew Ng. This has been a recommended supplementary class by some of my schoolmates doing a machine learning focus at Carnegie Mellon. My roommate had just taken it and as the only person on the team that actually followed through on the class, she was put on a machine learning project. I had someone to take it with, so I spent some weeknights and some weekends working on it.

I thoroughly enjoyed the class.

The assignments in the class are in MatLab/Octave. It’s not a programming class that will land you a job. I’ve only come across one company that uses MatLab as their primary programming language, and they only hire Ph.D. graduates and dropouts from prestigious universities. MatLab’s syntax is straight-forward enough that you don’t have to spend a ton of time other than checking their online documentation or looking up some online solutions to, say, how to add an entire column to your matrix. Also, if you use a good text editor like Sublime Text or VSCode, there will be plugins you can install that give you code snippets for things like for loops.

If you’re new to programming, think of it as a calculator language like what you had to do with high school in your TI-83/4/9. Vectorized calculations are preferred over traditional programming syntax like for loops. As far as I know, with most of machine learning programming languages, vectorized calculations using matrices is much faster than using for loops to calculate the values of each item.

I’ve done a tiny bit more math in college than the average engineering student. I chose classes that were more math based (Signal analysis, mathematical modeling, etc.) and took a few more than required in electrical engineering and obtained a math degree. I found the introduction to linear algebra class to be easy to grasp but still struggle to remember the order to do matrix multiplication. It’s very comforting to go back to doing MatLab in assignments, where you can spend more time thinking about the actual math and less time on learning coding patterns, which is a valuable yet different skill. Your mileage may vary on your experience, but I’ve put my background out there to give more context.

This class teaches basic machine learning concepts like linear/logistic regression, supervised/unsupervised learning, neural networks. The underlying concepts were easy to grasp because Andrew explained them very well. I walked away from this class understanding how different training models work, how machines predict housing prices based on past data, how picking different affecting parameters matter, how to adjust the algorithm to get better values, and how machines take numbers in image form and recognize them using many iterations of the image. I learned that there are two types of prediction, one resulting in values (linear regression) and one resulting in types (logistic regression). I could draw parallels from my previous knowledge like analog/digital signals and continuous/discrete. I learned that telling the computer what the correct answer is called supervised learning, and giving the computer some data and asking it to find patterns is called unsupervised learning. I learn that instead of one formula that gives you results, you can add hidden layers to a machine learning process, giving you intermediate values that humans don’t really understand and propagate those values in more algorithms that give you an answer at the end, that’s called a neural network.

There are also things that this class isn’t. Unlike a similar class from a rigorous college-level curriculum, this class doesn’t go into mathematically proving why or how these algorithms work, but you don’t need to learn that to get started in the field. It also doesn’t introduce you to libraries that you can use. Libraries tend to over-simplify. The Applied Machine Learning class from a college like CMU would let you use libraries, where you compare different training models and try to get the best results. This is not what this class is about. It doesn’t tell you how to choose the latest buzz-worthy machine learning technique, like whether to use Naive Bayesian or KNN. In fact, it doesn’t even tell you what those things are, which are questions my friends have been asked in machine learning engineer interviews. This class alone doesn’t have everything to prep to be productive as a machine learning engineer.

I was talking about this class with a friend on an Uber POOL ride, and being in San Francisco, we got matched with an actual machine learning engineer. She overheard the conversation and we started talking. She had it as a masters concentration, took all the classes available on Coursera, and recommends the classes from the University of Washington. Her complaint was Andrew’s class isn’t actually enough for you to start working in the field as there are other skills you need.

I have no immediate intention of becoming a machine learning engineer, so I’m quite satisfied with what I learned. There are other things I can do from now on, like learning actual libraries, make some interested programs and continue learning the next couple of classes offered by Andrew Ng, like the deep learning classes. As I go along I will report my findings here.

wow

wow2