These days, many people want to master machine learning. But the intimidating curriculum offered by most teachers puts many newcomers off.
In this guide, I will turn the curriculum on its head. I will tell you what I think is the fastest and easiest way to get a solid understanding of machine learning.
Table of contents
The curriculum I propose is a repeating cycle of steps:
Step 0. Dive into machine learning
Step 1. Explore a project similar to what you yourself want to create
Step 2. Learning a programming language
Step 3: Explore libraries from top to bottom
Step 4. Creating an interesting project for you in a maximum of one month
Step 5: Identify the biggest knowledge gap and fill it
Step 6: Repeat steps 0 to 5.
This is a cyclic learning plan because step 6 is the GOTO to step 0!
I must say that my curriculum may seem strange to you. But I put it to the test when I taught machine learning to students at McGill University.
In general, I have tried many curricula, starting with a theoretically more advanced bottom-up approach. But practice has shown that it is the pragmatic top-down approach that is discussed in this article that gives the best results.
My critics often point out that people who don’t start with basics like statistics or linear algebra will be bad at machine learning and won’t know what they’re doing when modeling.
Theoretically, yes, it’s true, and that’s why I started teaching machine learning from the bottom up. But in practice it turned out differently.
It turned out that students who learned to model at a high level were much more likely to delve into low-level things on their own, as they saw the direct benefit that this would bring to their higher-level skills.
Starting from the bottom, they would not be able to find this context. This is why I think most teachers lose their students.
So, with all that said, let’s move on to the training plan itself!
Step 0. Dive into machine learning
The very first part of learning something is learning the boundaries of the area and where in it is the piece that interests you personally.
By knowing the size of the industry, you will know that you are not missing out on anything more interesting. This allows you to concentrate better. Also, knowing what the terrain you are walking on looks like, it will be easier for you to mentally draw a path to the goal you need.
To properly immerse yourself in ML and hone your curriculum, you need to answer three questions in order:
What can be done with ML?
What do you want to do with ML?
How will you do it?
These questions will allow you to focus on something very specific and accessible to study, as well as see the big picture.
Let’s look at each of these questions in more detail.
What can be done with ML?
This is a very broad question, the answer to which will constantly change. The great thing about my curriculum is that in each iteration, you will spend some time learning what is possible in that area.
This will allow you to refine your machine learning mental model. You probably won’t have a full idea of what’s possible here at first. But it doesn’t really matter. A rough understanding is better than nothing.
What do you want to do with ML?
This is the most important question. You can’t do everything well, even in machine learning, even in any other field. You have to be very picky about what you want to spend your time on.
One way to make this choice is to make a list of your interests and arrange them in descending order. Then just choose the most interesting topic and pin it somewhere where you will see it all the time. You will study it and nothing else, at least until your interest rating changes.
Yes, keep in mind that this rating may well change. If you were very interested in a topic, but after a closer acquaintance it ceased to be so interesting, you can do something else. That’s what planning is all about in the beginning.
If you are equally interested in several areas, I strongly recommend devoting one cycle to only one of them. All things are related in one way or another. Digging into one topic will help you see those connections, but jumping from topic to topic will not.
If I was now going to learn something new on my 100th iteration of this cycle, I would dive into graph neural networks and their application to supply chain management.
How are you going to do what interests you?
Now that you’ve decided what interests you and where it fits in the overall context, take some time to figure out how people do it.
This will help you figure out what not to focus your energy on. Let’s say you realize that most people don’t use HTML, CSS and JavaScript in their daily work, related to machine learning. So don’t focus on these technologies either!
As for what people still use, the spectrum here is quite wide. There are many programming languages and tools, and their choice depends on the application. There are tools in C++, Java, Lua, Swift, JavaScript, Python, R, Julia, MATLAB, Rust… and the list goes on.
However, most machine learning people use Python and its packages. Python is a relatively easy to understand programming language with a thriving ecosystem. This means that people who build machine learning tools are more likely to build them with Python interfaces.
In fact, tools are usually not created in pure Python, because this language is quite slow. But thanks to the interface, the user does not realize that in fact he has a C ++ library wrapped in Python in front of him.
If you didn’t understand the last part, that’s all right. Just keep in mind that Python and its libraries are the safest bet to learn.
Tools used for machine learning
The usual set of tools for those wishing to learn machine learning is as follows:
- Python for high-level programming
- Pandas for working with datasets
- Numpy for Numerical Computing
- Scikit-learn for ML models (no deep learning)
- TensorFlow or Pytorch for deep learning ML models
- High-level deep learning libraries like Keras and fast.ai
- Git basics for working on a project
- Jupyter Notebook or Google Colab to experiment with code
Of course, there are many more tools available! Keep them in mind, but don’t chase the latest libraries. The technologies mentioned above are good enough for most projects.
However, there are also specialized libraries that you may need to add to your stack.
Say, to study graph neural networks and their application in supply chain management, all these packages are suitable. However, there are more specialized packages in Pytorch that would speed up my development of graph neural networks. For example, the Pytorch geometric library.
So my stack will look like this:
Python + Pandas + Pytorch + Pytorch geometric + Git + Colab