Dive into ML with this RoadMap!
Published: 2021-08-20 19:23:11

If you've been reading about the amazing advancements in the world of Artificial Intelligence and Machine Learning but feel overwhelmed by its complexity, this post is just for you! After reading this blog, you should have a clear understanding of how to embark on this journey of learning Machine Learning the right way, so stick with me till the end.

## Pre-requisites 

First things first, what are the pre-requisites of learning Machine Learning? Just knowing the programming languages are not enough; you must know the mathematics behind each algorithm too. The important topics one must familiarize themselves with are: 
1. Linear Algebra 
2. Calculus
3. Statistics

If you do not have a mathematical background, [Khan Academy](https://www.khanacademy.org/) is a good place to get started on the basics. This Coursera Specialization, [Mathematics for Machine Learning](https://www.coursera.org/specializations/mathematics-machine-learning) is also a good resource if you can devote long hours for MOOCs. Other resources are mentioned in these links below:

[For Linear Algebra](https://analyticsindiamag.com/7-top-linear-algebra-resources-for-machine-learning-beginners/)
[For Statistics](https://www.analyticsvidhya.com/resource-statitics/)
[For Calculus](https://machinelearningmastery.com/calculus-books-for-machine-learning/)

If you are unfamiliar with Calculus, I would recommend you to go through one of the books given in the link above and understand the basics of differentiation and integration as it is essential to the path to becoming a Machine Learning expert. 

## Coding fundamentals

Once you have gotten confident with your math, shift your focus to the coding part. Many languages are used for writing Machine Learning programs, like Python, R, Java and so on. However, python is the most recommended because of its several libraries and frameworks that have simplified the task of writing complex code. Another reason I would recommend Python is because there are far more Machine Learning tutorials written in python than there are in R. Thus, it is easier for a python programmer to get help from the data science community than an R programmer. However, R is also known for its various data visualization libraries. Thus, there is no harm in learning both languages and utilizing their best features. You can always learn one and move to the next. For a beginner, I would recommend python. 

There are several resources to learn basic python but my favorite one is this Coursera specialization, [Python for Everybody](https://www.coursera.org/specializations/python) by Charles Russell Severance of University of Michigan. If this does not suit you, you may try other resources given in this [link](https://mikkegoes.com/learn-python-online-best-resources/)

And voila, you finally have all the pre-requites you need to get started on your journey into the world of Machine Learning!

## Taking the first step

The first step is to complete these two renowned courses. One will teach you about the Mathematics behind each Machine Learning algorithm by none other than the great Andrew NG, and the other one will focus on the programming part. You may choose to do them simultaneously. Take your time with them as this will lay the foundations for this field.  
1. [Machine Learning by Andrew NG](https://www.coursera.org/learn/machine-learning?), Stanford University. You do not have to buy the course; you may audit it too. Just focus on watching all the videos in this course. There is also a YouTube playlist with all the videos in this course which I will link [here](https://www.youtube.com/playlist?list=PLLssT5z_DsK-h9vYZkQkYNWcItqhlRJLN). If you really are a ML-nerd, you'll be hooked on this course! (PS: if you do not know who Andrew NG is, google him RIGHT NOW, you won't regret it ;). 
2. The second course is [Python for Data Science and Machine Learning Bootcamp](Python for Data Science and Machine Learning Bootcamp) by Jose Portilla. This course can be a little heavy as it is introduces you to all the major programming concepts used in Machine Learning. So take your time with it and keep trying out the codes and functions taught in the course yourself, just listening to videos will not help much until you get your hands dirty. 

## Getting your hands dirty

While coding, if you get stuck with an error and you are unable to solve it, search the error on [stack overflow](https://stackoverflow.com/). There would definitely be someone who has been in your shoes before and has suffered through the error that you are facing now. Read through the answers and solutions that others have suggested to solve the error. On the off chance that the error you are facing is not encountered by anyone else, post your own query. Don't be shy; you'd be surprised at how beginner-friendly and helpful the data science community is. After all - everyone was once a beginner. 

## Applying what you learnt - Starting with some baby projects
After completing these courses, you can safely say that you now have a good understanding of the classical algorithms! You can now start working on some baby projects. Find datasets on Kaggle that interest you and put your newly learnt python skills to use. You may also try going through the code that other developers have written. However, some of it might be too complex - so do not be too hard on yourself if you are unable to understand all of it. With each dataset that you work with, you will learn new functions and concepts of data cleaning, data augmentation, preprocessing, data encoding and so on. 

The codes of some of the baby projects that I had made are on my GitHub. They should be easy to follow, not too complex. 

[HR Analytics Employee Retention using Logistic Regression](https://github.com/saxenamansi/HR_Analytics_Employee_Retention)
[Breast Cancer Classification using Decision Trees](https://github.com/saxenamansi/Breast_Cancer_DecisionTree_Classifier)
[Cleaning Student Profile Data](https://github.com/saxenamansi/Data_Cleaning_Preprocessing/blob/main/DataCleaningPreprocessing.ipynb)
[Preprocessing and Cleaning Stroke Data](https://github.com/saxenamansi/Healthcare_dataset_pandas_preprocessing)
[Recognizing Hand Written Digits using PCA and SVM techniques](https://github.com/saxenamansi/Recognizing_Hand_Written_Digits)
[Clustering Credit Card Data using Gaussian Mixtures and PCA](https://github.com/saxenamansi/Credit_Card_Data_Clustering)
[Clustering Geo-Locations using K-Means clustering](https://github.com/saxenamansi/KMeans_Clustering_Of_GeoLocationsns)
[Using Numpy and Matplotlib for Image Processing](https://github.com/saxenamansi/ImageProcessing_using_Numpy_Matplotlib)
[Data Visualization of Australian Wildfires](https://github.com/saxenamansi/MSTC_DataScience_Tasks/blob/master/Projects/Australian-fires%20(Visualisation).ipynb)
[Comparing the classification algorithms for Mushroom Classification](https://github.com/saxenamansi/MSTC_DataScience_Tasks/blob/master/Projects/Mushroom%20classification%20-%20project.ipynb)
[Comparing the classification algorithms for Credit Card Frauds](https://github.com/saxenamansi/C4-projects/blob/master/CreditCard%20fraud%20-%20classification.ipynb)
[Data Visualization and Comparing the classification algorithms for Household Electricity Consumption](https://github.com/saxenamansi/C4-projects/blob/master/Household%20-electricity-consumption.ipynb)
[Data Visualization and Comparing the classification algorithms for grades of Maths and Portuguese class students](https://github.com/saxenamansi/MSTC_DataScience_Tasks/blob/master/Projects/Math_Portugese_course.ipynb)

I would urge you to first try them yourselves, and then check my codes for reference. Whenever you come across a new function, read the documentation and check what it does. Make sure you understand all of it. 

And that's it! 

With this, you should now have a concrete understanding of the Machine Learning algorithms and how to use them. You should also be fairly acquainted with some data cleaning, data preprocessing and data visualization techniques. 

## Deep Learning - the path after Machine Learning

If you have found the journey up till now interesting, you may dive into the Deep Learning as well. The best way to do so is by getting started with this in-depth [Deep Learning specialization by Andrew NG](https://www.coursera.org/specializations/deep-learning). It will require some dedication as it consists of 5 courses, but it is very thorough and you will not need any material apart from this. 

## Your path from here to becoming a Data Scientist

When you start on this path of Data Science, you must be aware that in this domain, learning never stops. Once you complete the above specialization you can continue on this path by - 
1. Participating in Kaggle competitions.
2. Reading the best research papers in the topics from your interest. 
3. Doing more MOOCs from Coursera. I would recommend the courses from the DeepLearning.ai foundation.
4. Start working on your own projects. Try developing them into products for common users to use. You may also try publishing it in a reputed journal. 
5. Share your knowledge with the world - help other beginners on stack overflow and write blogs. 
6. Push your work to GitHub for others to learn from. 

Do like this post if it helped you. If you have any other suggestions or recommendations, let me know in the comments below.

Happy Learning! <3