I often get asked “How do I get started with Machine Learning? What do I learn first?” and I really want to help out, but there is a big problem here: I think this is the wrong question to ask.
Let’s tackle why I think this is the wrong question and what you can ask yourself instead:
Table of Contents
- 1. The WHY: What is your goal?! Why do you want to learn?
- 2. The WHEN: How much time do you have? When are you going to study?
- 3. The HOW: Find the best study plan for your existing knowledge and interests
1. The WHY: What is your goal?! Why do you want to learn?
You will never learn “all of machine learning”.
The field is massive and even if – by some miracle – you would be able to learn all of it, the field is constantly growing in all specialties, you would never be able to read all new research coming out.
As disappointing as this might be, it’s important to realize this. Because if “learning it all” isn’t the goal, then what exactly is your goal? There are 3 topics I recommend considering when deciding on your goal:
1.1 Do you really want to learn?
Be honest with yourself and go into this challenge with a realistic mindset. It’s a bit like running a marathon: Lots of people think “Oh I’m going to run a marathon one day” or “One day, I’m going to write a book”. But to get to that goal, you would have to run every 2-3 days for months. You will have blisters and cramps, you will have to run by rain and by sunshine. It will take up a lot of time and you will have to sacrifice other things for it. And suddenly running a marathon doesn’t sound that appealing to many.
Getting good at machine learning is also a marathon. You will not get a job in 3 months with zero prior experience. You should be ready to:
- learn to code quite well in (likely) Python
- study quite abstract topics of math – linear algebra, calculus, numerical optimization methods
- study statistics and probability – A/B tests, random variables, distributions, etc.
Machine learning is an advanced field, meaning it builds upon a foundation of these 3 fields together. If you don’t like these areas of study, you will likely give up very soon, so be honest with yourself.
If you have never tried to code for example, you can of course try it out for a while & see if you like it 🙂
1.2 Do you want this to be your career or just a hobby?
This will massively influence which type of skills you need. If you are aiming for a career, do some further research into data science vs machine learning vs data analyst and see what best fits your interest. Do specific research into your country. Job requirements are very different depending on country and job.
For example, in Germany where I live, it is very uncommon to be a Data Scientist without a master’s degree in some STEM field. It doesn’t have to be computer science, it could be Psychology or Physics for example, but all my colleagues have a masters degree or even PhD. It is very rare to be a Data Scientist with only a Bachelors degree. So please do your research if your goal is a career in this field!
If it’s just as a hobby, you’re way more free in your studies and can choose to focus more on your preferred areas of study.
1.3 Which specialty are you interested in?
If you’re just starting out, this might be an overwhelming question, but hear me out.
If you’re thinking about machine learning, what are you thinking of? Here are some examples:
- optimizing marketing and customer retention for businesses – often done by using clustering and classification models
- predicting sales and demand for retail companies – that’s the area of time-series modeling
- planning optimal supply chains or delivery routes – this overlaps a lot with mathematical optimization and graph theory
- working with images and videos, like in self-driving cars which (hopefully) recognize a human walking in front of their cameras – that’s deep learning and Computer vision
- using models like ChatGPT (except likely smaller) and working with text understanding and generation? – that’s also deep learning, but the area of NLP short for Natural Language Processing
Knowing what area you’re personally interested in will help you to pick courses and learning resources. If you work with your interests instead of against them, you will be much more likely to stick with your studies long term.
2. The WHEN: How much time do you have? When are you going to study?
Of course, some goals like getting a Machine Learning Engineer Job with no prior knowledge, will take longer than others, but even so it’s smart to consider how much time you have to get to your goal. Both personally, so how long until you get bored, how many other hobbies do you have etc and also externally:
2.1 When do you expect results? Months, years…?
Very different timelines. You might still be in school or university and want to work towards a career in ML, then you likely still have years of time and possibly already some knowledge around math or coding.
If you want to quickly pivot your career and change jobs within the next few months into ML, then hopefully you already have strong foundations in coding and statistics. It will probably be better to get a ML-adjacent position, maybe as a developer, and improve your ML skills on the side.
Machine learning is not a field to be studied in a few weeks with no prior knowledge. Like I said earlier, many people in this job have a master’s degree. That’s 5 years of full-time studying + internships. And that still only nets them a junior position. If you already know how to code very well, and have a good math foundation, you can probably understand and use a few small models in about 3 months of studying.
2.2 How many hour per week, how many hours per day do you have to study?
Once you’ve established your long-term timeline, let’s think about concrete implementations.
Studying once per month is not enough. It’s like learning a language, you will have forgotten everything you studied by the next time you sit down to open your notes.
I recommend at least a few hours every week. You should spend some time learning new theory and also experimenting with this theory by doing exercises or testing with code. Example: reading or consuming a course for 1-2 hours and then practicing for 1-2 hours.
- little time for studying: pick only one simple course at a time, just barely above your current knowledge. This way you will progress through the course without needing to repeat lessons too often and won’t feel stuck or overwhelmed.
- full-time studying: you could likely get away with doing more difficult courses or even taking two at a time (a coding course + a math/stats course for example).
3. The HOW: Find the best study plan for your existing knowledge and interests
With everything you just learned about yourself and your study goals, you are now best equipped to make a plan and pick study materials.
Without knowing you, I can’t give concrete recommendations because this depends a lot on your prior knowledge and your learning style. But in general I recommend the following approach to ML:
3.1 On choosing from the 3 main areas
As seen above in Section 1, machine learning consists of 3 areas, and in my personal opinion, you can start with either of these depending on what you like:
- math, so linear algebra all around matrices, calculus around derivatives & some parts of adjacent fields like numerical analysis & optimization
- coding: getting good and comfortable with (probably) python + basic algorithms and data structures
- probability and statistics: distributions, hypothesis testing, correlation/independence of variables etc.
Many guides recommend “coding first”. I think this is because many students are easily overwhelmed by math and theory. If that’s you, go ahead of get comfortable with coding first.
Personally, I hate applying things I don’t understand. I want to know why and how things work. So I prefer theory first and then applying it.
Pick for yourself: Choose whatever makes you more excited or whatever seems most approachable as a first step.
3.2 Why you should combine topics
In university we actually studied math and coding in parallel to each other from the very start. I experienced this as very helpful. So if you have enough time, I would recommend this as well.
The reason is that you can try out the theory in code and see it “in action”. At the same time you will always have relevant projects and exercises to practice coding on and somewhat avoid the “Help, what projects can I code to practice Python?”-issue.
Especially for statistics it’s very useful to visualize and calculate properties using code (hence why so many stats students learn R as a scripting language).
Alright, so now shoo! Go and make a study plan and get going 🙂