Machine Learning

Machine Learning (ML) is everywhere in our society. From email spam filtering to vaccine development to navigating to a destination by car with minimal traffic en route. With technological advancements such as the internet and digitalization, our world has become incredibly data-intensive. ML can make our lives easier and our world more interpretable and responsive to information. Learning the concepts and skills to use ML is highly valued in the 21st century. Investing the time to immerse yourself and become competent in this field will bring you huge rewards.

ML is a subdivision of artificial intelligence (AI). It refers to the ability of machines to recognize and learn features in data and develop the abilities to solve problems, in the same sense that the human brain autonomously learns over time. Machine learning has been around since the 1950s: the “learning machine” built by Alan Turing, IBM’s first checkers playing program, and the invention of the perception by Frank Rosenblatt. The underpinning statistical methods behind machine learning, such as the least-squares method, Bayes’ Theorem and Markov chains, have been around for around 100 years to centuries. What makes ML truly exciting in the modern era is the combination of model innovation, the arrival of huge databases for training algorithms and powerful computers able to train models within small timeframes. What we are capable of doing now was the stuff of dreams in the 20th Century.

Timeline infographic describing history of machine learning from 1950s to present day.
A Brief History of Machine Learning Infographic. Visit my blog post for more information on ML History.

ML allows data scientists to leverage data-driven algorithms to produce accurate results and build efficient and automated solutions from trained models. As you get started, I would recommend gaining an intuitive understanding of statistics and predictive modeling. There are two books that are essential for building a solid foundation:

  1. Introduction to Statistical Learning – This book provides a great introduction to statistical learning methods, which are essential tools for gaining insight into vast and complex datasets. It is a very clear book with plenty of straightforward explanations. If you want to grasp the theory and mathematics behind ML techniques this is the book to get.
  2. Applied Predictive Modeling – This book Is intended for a broad audience as an introduction to predictive modeling and how to apply them. It has intuitive explanations with an emphasis on problem-solving with real data. Practice truly makes perfect and the more you see techniques applied to real data, the more expertise you will gain. It is recommended to have some knowledge of basic statistics such as correlation and linear regression analysis.

Visit my blog post on machine learning book recommendations for a wider selection of books. Each course will have practical applications, examples, and assignments with which you can progress as fast as you want to. The courses will use the standard open-source programming language Python and R. They will focus on explaining concepts mathematically and while staying engaging and intuitive. When you choose a course to complete, remember it is fine to be uncomfortable or to find the material difficult. It helps to bounce between examples and reading material, and most of all, be confident that you can learn machine learning.


  1. Machine Learning – Andrew Ng
  2. Deep Learning Specialization – Andrew Ng
  3. MicroMasters Program in Machine Learning – Columbia University
  4. Machine Learning A-Z: Hands-On Python & R In Data Science – Kirill Eremenko, SuperDataScience Team
  5. Practical Deep Learning for Coders –

Machine Learning – Andrew Ng, Coursera

Front page of Andrew Ng Machine Learning course on Coursera
Front page of Andrew Ng Machine Learning course on Coursera

Pricing: Free to audit, $79/month for certification

Course material (spread over 11 weeks) :

  • Introduction
  • Linear Regression with One Variable
  • Linear Algebra Review
  • Linear Regression with Multiple Variables
  • Octave/Matlab Tutorial
  • Logistic Regression
  • Regularization
  • Neural Networks: Representation
  • Neural Networks: Learning
  • Advice for Applying Machine Learning
  • Machine Learning System Design
  • Support Vector Machines
  • Unsupervised Learning
  • Dimensionality Reduction
  • Anomaly Detection
  • Recommender Systems
  • Large Scale Machine Learning
  • Application Example: Photo OCR

This course is the touchstone of machine learning education. It is an introductory course created by Andrew Ng, one of the world’s best-known machine learning exports who co-founded Google Brain, Coursera, and was the VP of the Chinese research engine Baidu.

The course depends on linear algebra, calculus, probability theory, statistics, and information theory. But you do not need in-depth knowledge of these fields to start learning. If you need to learn or refresh your understanding of these concepts, refer to the book companions at the start of this post, Khan Academy or go through the 3Blue1Brown video series, The course is very interactive and requires participation in quizzes and assignments.

The course stands out from other typical machine learning courses in that it uses the programming language Octave instead of Python or R. Given that the material is of a very high standard, it is worth using Octave to learn the fundamentals of machine learning. You can prioritize learning Python and R in parallel or after completing this course. By investing roughly three to four months of your time, you will gain a broad knowledge base upon which you can build into more specialized topics like deep learning.

Deep Learning Specialization – Andrew Ng, Coursera

Front page for Deep Learning Specialization, Andrew Ng on Coursera
Front page for Deep Learning Specialization, Andrew Ng on Coursera

Pricing: Free to audit, $49/month for certification


  • Neural Networks and Deep Learning
  • Improving Neural Networks, Hyperparameter Tuning, Regularization, and Optimization
  • Structuring Machine Learning Projects
  • Convolutional Neural Networks
  • Sequence Models

This advanced course by Andrew Ng and builds on the base made with the “Machine Learning” course above. The course focuses on understanding and applying neural networks. Unlike the Machine Learning course, the programming language used for the course material is Python, together with the TensorFlow library for neural networks. It is suitable for deep learning beginners with fundamental Python skills. The assignments after each week’s lecture require you to write code based on what you have learned during the lecture. You will get to grips with the inner functionalities of neural networks as opposed to just calling a framework and running a black box. Each course has a roughly four-week syllabus, which would require an investment of two to four hours a week.

The mathematics required for this course are the same as for the Machine Learning course. However, a book companion specifically for Deep Learning is invaluable. I recommend Grokking Deep Learning by Andrew Trask. This book contains a comprehensive introduction to the inner workings of neural networks, complete with code snippets. It is not an advanced mathematics book but provides the majority of the mathematics required to understand deep learning truly.

This course is highly recommended as an affordable and high-quality way to learn about one of the most exciting trends in machine learning.

MicroMasters Program in Machine Learning – Columbia University

Front page of MicroMasters Machine Learning Course, Columbia University
Front page of MicroMasters Machine Learning Course, Columbia University

Pricing: Free to audit, $300 for certification

Course material:

  • Maximum likelihood estimation, linear regression, least squares
  • Ridge regression, bias-variance, Bayes rule, maximum a posteriori inference
  • Bayesian linear regression, sparsity, subset selection for linear regression
  • Nearest neighbour classification, Bayes classifiers, linear classifiers, perceptron
  • Logistic regression, Laplace approximation, kernel methods, Gaussian processes
  • Maximum margin, support vector machines, trees, random forests, boosting
  • Clustering, K-means, EM algorithm, missing data
  • Non-negative matrix factorization, latent factor models, PCA and variations
  • Markov models, hidden Markov models
  • Continuous state-space models, association analysis
  • Model selection, next steps

This course is mathematically rigorous and specifically for advanced machine learning students. If you want a focus on mathematics to gain an understanding of the significant areas of machine learning, this is the course for you. You should have prior exposure to machine learning concepts before attempting this course. This course requires the active use of a book companion, as there is an assumption of considerable fluency in probability and statistics. I would suggest the two companions described at the beginning of the post, in particular The Elements of Statistical Learning. I would also add Machine Learning: A Probabilistic Perspective to your group of companions.

There are four programming projects, weekly quizzes, and a final exam. The projects and quizzes are in either Python or Octave. It is a demanding course and requires a passion for the material and the mathematics behind it to get the most out of it.

Machine Learning A-Z: Hands-On Python & R In Data Science – Kirill Eremenko, SuperDataScience Team

Front page for Kirill Eremenko, SuperDataScience Team, Machine Learrning A-Z on Udemy.
Front page for Kirill Eremenko, SuperDataScience Team, Machine Learrning A-Z on Udemy

Pricing: £39.99 with frequent deals

Course Material:

  • Data preprocessing
  • Regression
  • Classification
  • Clustering
  • Association Rule Learning
  • Reinforcement Learning
  • Natural Language Processing (NLP)
  • Deep Learning
  • Dimensionality Reduction
  • Model Selection & Boosting

This extensive course boasts over 280 lectures aimed at all levels of students. Both Python and R are used for the course materials, presenting a chance to develop skills in both languages. Interactive problem sets exist, where you can submit your solution to the instructors via the Q&A section or private message and have your answer evaluated and discussed. As it is a top-rated course, there is a comprehensive Q&A section, so any issues you come across, whether technical or course-related, are likely to have been addressed there. The learning curve is steep for this course. Topics that would have their course, e.g., Deep Learning or NLP, are discussed as a module. Therefore, reading around the course material is advised if you are an entry-level learner. I would suggest this course if you want to familiarise yourself with machine learning concepts and the most popular programming languages.

Practical Deep Learning For Coders –

Front page for Fast AI Practical Deep Learning for Coders
Front page for Fast AI Practical Deep Learning for Coders

Pricing: Free

Course Material:

  • Introduction to random forests
  • Random forest (RF) deep dive
  • Performance, validation, and model interpretation
  • Feature importance, tree interpreter
  • Extrapolation and RF from scratch
  • Data products and live coding
  • RF from scratch and gradient descent
  • Gradient descent and logistic regression
  • Regularization, learning rates, and natural language processing (NLP)
  • More NLP and Columnar data
  • Embeddings
  • Complete Rossmann, ethical issues

This course is a great addition that is completely free and is taught by Jeremy Howard, the founder of The course does not cover a broad range of topics compared to the Andrew Ng courses and has more focus on Random Forests, validation, ethics, and natural language processing. Therefore it is recommended to go through one of the more general courses beforehand. The content is based on the University of San Diego’s data science program and is lecture driven. There are practical problem sets and a discussion board to get feedback and support. This course does not provide certification or graded assignments. In addition to the course material, you will learn how to use the fastai open-source library, built with PyTorch. This library is used extensively in NLP problems, which is a rapidly growing area of machine learning. You will have the opportunity to develop and deploy machine learning models on cloud providers like AWS.

Using a course with a fully baked development environment can be a drawback. A lot of the practice required to understanding model building exists in library wrappers. So if you prefer to get your hands dirty, you may want to find projects to work through on Kaggle.

It is possible to gain surface-level knowledge of machine learning by following some lectures and completing a set of assignments. But for machine learning to be understood requires reading beyond course materials and finding explanations that you can grasp fully. In tandem, you want to apply the concepts by starting projects as soon as possible; this will ensure you get out of your comfort zone and boost your retention of information. I have listed a video below that explores some advice for learning machine learning by yourself.

This field requires a passion for it to thrive in it. Once you have gained an understanding of the fundamentals, start keeping up on the latest developments in machine learning. Find the fields that interest you the most and sign up for the relevant blogs that deliver news on them. I have provided several resources here, included “Papers with Code” and “Google AI Blog” that will have all the cutting edge developments. If you immerse yourself in your area of interest, you will continue to learn by osmosis. Furthermore, if there is a project you are working on and technique development occurs that could be of benefit to you, more than likely, you can implement the techniques and be part of the machine learning community by sharing your results.

Machine learning is transforming the world in the same way as electricity did. It is one of the most exciting fields to be in and provides incredibly fun applications and projects to build. It exists as one component of data science together with statistical data analysis, data wrangling, and visualization. If you want to combine all of these skills, click here to go through the best data science courses.

Feel free to share this post if it will be of use to someone you know.

Have fun learning and enjoy your journey!