For starters, you need to take a course which approaches machine learning bit more formally than Prof. Andrew Ng’s course.

**1. More formal Machine Learning class **

Prof. Abu-Mostafa teaches learning theory and kernel machines really well. You can also do the assignments using any language.

**2. A course on optimization**

By now, you must have noticed that every Machine Learning algorithm invariably uses optimization of a objective function. Having optimization in your toolbox makes you very valuable as a Machine Learning practitioner. A introductory course in Convex Optimization will get you familiar with optimization vocabulary and enough math, so that you can learn more things in optimization by yourself.

**3. Learn Probabilistic Graphical Models**

If you plan to work in Computer Vision or Natural Language Processing, you will invariably come across one or the other kind of a graphical model. Learning different inference techniques and learning principles will be handy when you are trying to understand a new graphical model. Algorithms course that you studied earlier comes in very handy for this course.

Sampling based inference, specifically MCMC (Markov Chain Monte Carlo) could be quite puzzling to understand at first.

- Beginners introduction to MCMC. (Watch just Lecture 1). Foundations of many Probabilistic Graphical Models actually comes from Statistical Mechanics. It’s a really good introduction to the topic, in a intuitive way.
- More formal introduction to MCMC.
- MCMC for Machine Learning. If you prefer written treatise of the same topic.

**4. Deep Learning**

If you are fascinated by larger goal of AI, you may find Deep Learning interesting. Deep learning approaches hold many records on many data-sets that researchers care about. Prof. Jeff Hinton, one of the authorities on the topic has an excellent course.

- Neural Network for Machine Learning It has very good videos on historical parts of Deep Learning.
- Neural Network Class by Prof. Hugo Larochelle, the course page also contains references to recent research in Deep Learning.

Stanford has 2 excellent courses on Applied Deep Learning in the following areas:

- Convolutional Neural Networks for Visual Recognition covers Convolution Networks for object detection in great detail and recent developments in Deep Learning for Vision.
- Deep Learning for Natural Language Processing covers Word Vector Representations, Recurrent Neural Networks, Recursive Neural Networks and finally, very recent developments in Deep Learning techniques for NLP.

**5. Choose your application area**

After you complete studying, Machine Learning hits so far, you may want to get yourself familiar with one of the application areas. Depending on your inclination you can choose between

- Natural Language Processing
- Computer Vision ( never studied computer vision, so not sure which one is a good online class)
- Applied Machine Learning. Many Data Scientist jobs require you to know Map-Reduce. To acquire those skills you can take these Introduction to Databases and followed by Mining Massive Datasets.

Well, after all this, you are destined for greatness in Machine Learning. I wish you good luck from the bottom of my heart

]]>- a toddler in programming.
- little / no knowledge of algorithms.
- studied engineering math, but it was rusty.
- no knowledge of modern optimization.
- zero knowledge of statistical inference.

I think, most of it is true for many engineering graduates (especially, in India !). Unless, you studied mathematics and computing for undergrad.

Lucky for me, I had a great mentor and lot of online materials on these topics. This post will list many such materials I found useful, while I was learning it the hard way !

All the courses that I’m listing below have homework assignments. Make sure you work through each one of them.

**1. Learn Python**

If you are new to programming, I recommend that you learn python. It’s an easy language to learn and lot of courses that I’ll suggest in this post use python in their assignments. You need to be able to get things done, not just learn the syntax .

Here are few excellent resources to learn python:

- Google’s Python Class – This is a short course. But teaches you all you need to know to code up something quick.
- Introduction to Computer Science – This is a 3 week long course. If you have never coded in any language before, you may want to take this course instead.

**2. Learn / Brush up your Multivariate Calculus**

Every Machine Learning algorithm requires optimization. Foundation for which is a solid knowledge of Multivariate Calculus and Linear Algebra. I love this course, if you like Math, I’m sure you will too !

If you have not taken any calculus before, then you may want to consider taking Calculus One.

** 3. Learn / Brush up Linear Algebra**

~~We all know how to multiply matrices, take inverses and calculate determinants. To understand Machine Learning algorithms, that’s not enough ! You need sound understanding of geometric interpretations of these operations. Prof. Gilbert Strang lectures are an excellent resource to learn Linear Algebra the right way.~~

**4. Take a course in probability theory and statistical inference**

It is vital to understand probability theory well, to understand why any machine learning algorithms work ! I haven’t taken this version of the course. But the contents of the course below look very relevant.

**5. Take a basic course in Algorithms**

Solid understanding of algorithms is essential to any computational discipline. Prof. Tim Roughgarden has an excellent introductory course on the topic.

**6. Take basic machine learning course**

Now, you are ready to tackle 2 most basic machine learning courses available online.

- Introduction to Artificial Intelligence – Gives a broader view of the field of artificial intelligence.
- Machine Learning – An excellent course, thought by Prof. Andrew Ng. You need to learn MATLAB / Octave for programming assignments.

Now, you can participate on Kaggle after learning scikits-learn.

Just with the skills you have learnt so far, you may be able to land a handsome paying job with the sexy title “Data Scientist” ! You can impress your cocktail party friends!

But, you have a long way to go ! You are nowhere near calling yourself **“an expert”** in Machine Learning. You won’t be able to pick a paper from ICML / NIPS conference and understand it !

If you want to separate yourself from the crowd ! If you want to be able to understand, implement and may be some day suggest an improvement to advances in Machine Learning read my 2nd post on the same topic !

Like Prof. Peter Norvig says “Teach yourself programming in 10 years”, if you want to be a world class expert, you need to learn more than syntax !

]]>