How I'm learning Machine Learning (without being a math genius)
Tags: machinelearning, python, career
Published: 2020-05-28 03:45:06

I remember a few months ago seeing projects with the incredible things that Machine learning is achieving. 

I fell in love. I said that I wanted to learn that. It doesn't matter if it's difficult. I want to learn, and I'm gonna learn it.

And let's be honest. We have all heard of Machine Learning Engineers salaries. Look at this.

![Machine Learning Engineer Salary](https://dev-to-uploads.s3.amazonaws.com/i/higfpwfwvxq9zfnmdjb1.png)

![Machine Learning Engineer Salary 2](https://dev-to-uploads.s3.amazonaws.com/i/7g8mbagw806ej0x4349n.png)

Great right? Well, first you need to learn ML, and that's when things get weird.

Excited I started reading papers, and you know what? Boom! Math everywhere! Fancy equations, linear algebra, vectors, and weird symbols.

That same night, I started to cry like a baby, but after cry, as a good techie, I decided to learn self-taught. 

Yes, I'm just another nerd trying to learn Machine Learning.

But I realized that sometimes learn difficult topics is boring. Specially in quarantine. So I'll try something different. Document my entire learning process.

Well, I'll try.

## The Learning Path
![Machine Learning learning path](https://dev-to-uploads.s3.amazonaws.com/i/tsv5f0mg42q0fh5rbtbz.png)

When you look for learning paths to Machine Learning in Youtube, you find 3 main videos. The [Siral Raval video](https://www.youtube.com/watch?v=Cr6VqTRO1v0&t=530s), the [Jabrils video](https://www.youtube.com/watch?v=I74ymkoNTnw&t=329s) and the [Daniel Bourke video](https://www.youtube.com/watch?v=MD3R9yatou0).

All of them are pure gold. So I decided to take the best of the 3 videos.

## Math
There's a lot of controversy on how much math you need to learn ML. But it's definitely needed.
Maybe some of you are damn genius with math and just need to remember a few things. But most mortals like me, need to relearn from scratch.

Ok, but what kind of math do I need to learn?. Easy. Linear Algebra and Calculus.

Here's the first point. **I'm not a math genius**. I'm bad at math. I'm really bad at math. My grades were terrible at university on Calculus I II and III. 

The thing is, can you learn Machine Learning without being a math genius?.

Of course that you can.

But with a little detail. Probably if you suck with numbers, is because you doesn't understand the essence of it. 
Do you remember that word? The [essence of Linear Algebra](https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) and [Calculus](https://www.youtube.com/watch?v=WUvTyaaNkzM&list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr). [3Blue1Brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw) with Grant Sanderson. 

He should've a Nobel Prize for education. Basically take the math and explains it with awesome geometry. As if you were a child. It's beautiful.

So for me, that's the first step. Understand the meaning and the essence of Linear Algebra and Calculus. Believe me, after that the things get easier.

![3Blue1Brown](https://dev-to-uploads.s3.amazonaws.com/i/dgyacxrshqzw7ph20fgo.png)

After completing and understands that videos, it's time to put it on practice with a course of one of the best university math teachers in the world. Gilber Strang in [MIT 18.06 Linear Algebra](https://www.youtube.com/watch?v=7UJ4CFRGd-U&list=PLE7DDD91010BC51F8).

Think, you're receiving the same education as students who paid thousands of dollars to be in front of that class. You don't have the diploma of one of the best universities of the world, but you can have the knowledge. And that's what matter at the end of the day.

After digest and practice that long course, it's calculus time. [Khan Academy](https://www.khanacademy.org/math/calculus-1) have an awesome course that'll teach you all the you need to feel comfortable with the weird equations that you are gonna deal with later.

## Statistics

Many people are confused with how similar ML is to Statistics. Actually they're closely related, and it's a key topic to understand ML well.

So make sure to pay attention and learn. 

And of course, to makes the things easier, MIT have a free course: [Probability - The Science of Uncertainty and Data](https://www.edx.org/course/probability-the-science-of-uncertainty-and-data).

If you read the curriculum, it may seem  like a basic course, but it's not. It cover the enough topics to have the foundations to understand probability. But perhaps and because we love learn, we can take this other course. [Statistics and probability of Khan Academy](https://www.khanacademy.org/math/statistics-probability). It's like a complement. So take it easy.


## Programming
If you're Software Engineer like me, this is the fun part. 

The programming language to learn is Python. The king for Machine Learning. Its simplicity makes it very easy to learn, at least the basics.

Here I'm gonna assume that you know programming, so I don't want to tell you one single course. There're many courses to learn Python. Even great books. So is your decision where to learn. 

Maybe you feel comfortable reading documentation, maybe you have a favorite Udemy teacher, or you have a subscription to an online learning platform. It doesn't matter. Only remember practice **algorithms** to have a better understanding of what's going on when writing ML.

Ok maybe you don't know programming and this will be your first line of code. In that case, I'd choose [Datacamp](https://www.datacamp.com/courses/intro-to-python-for-data-science). Feel free to make your research and watch their Python course.

## Machine Learning
We've come too far. We have learned mathematics, statistics, algorithms, we have cried a few nights. Everything for this moment.

The [Machine Learning course of Andrew Ng](https://www.coursera.org/learn/machine-learning?). Probably one of the best introductions to Machine Learning. It's not a basic course, so keep your notes close. Finally you'll learn how all the things works like a puzzle to create beautiful ML Algorithms. 

Another great resource is [Introduction to Machine Learning for Coders](http://course18.fast.ai/ml). Nice course with in-depth explanations of ML Algorithms.

My advice is to take both to have different points of view, and you can choose the one you understand the most.

I cannot leave out another course that I have heard that is excellent, but it's paid. The [Udacity Introduction to Machine Learning](https://www.udacity.com/course/intro-to-machine-learning--ud120).

Maybe you've some money saved, and you want to invest in yourself, I think it's a good time for invest it. It's your decision.

## Real world projects
After having come this far, you know ML, but it's not enough. You need to put it more in practice. And I think this is the right book. 

[Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow](https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1492032646/ref=dp_ob_title_bk).

Again, real world projects, but this time with some of the best ML libraries. But don't worry. If you're like me and don't like to rely on libraries without know what's going on. You already know. That's why this book it's at the end.

## Final words
Before let you out, there're some tips that I want to give you. 

1. Feel free to change the order of *some* points. Maybe you first want to learn Python, then Linear Algebra and then Statistics. It's ok.

2. Practice a lot after learn something.

3. Play with ML algorithms at any phase before know what's going on. Tweak settings to see what happens. Curiosity must be your weapon.

4. Be patient. I know, all of this take time and probably hurts. But at the end, it's worth it.

5. Kaggle. A lot.

6. Enjoy the process, not the end.