Top Machine Learning Libraries & Algorithms to learn in 2020

Machine Learning Algorithms and Libraries
Machine Learning Algorithms and Libraries

Machine learning is rising and its demand in the industry is more than ever, it’s important to keep up with the research and what all tools, libraries and important algorithms to learn.

Below is a curated list of the top machine learning libraries and algorithms you must learn.

“Artificial Intelligence is the new electricity,” By Andrew Ng

Let’s start with the top Machine learning libraries you must learn:

NumPy

It is the first library in this list as it one of the most important libraries in machine learning. If you have ever used python for data science, you must have heard about it. Most of the data science tasks which need data to be stored in memory use Numpy. Going by the formal definition, NumPy is a package in Python used for Scientific Computing.

But why NumPy arrays? Can’t we achieve the same results with python lists or any other data structures? The answer is yes as well as no. Yes, we can build such arrays and do the necessary operations but we prefer NumPy for a lot of good reasons. Some listed down below:

  • It’s easier to create and work on n-dimensional arrays in NumPy
  • Uses much less memory to store data
  • Finding elements in NumPy array is way too simpler

Installing NumPy using pip:

Pandas

Pandas is the most extensively used library for data analysis and data engineering.
It is an open-source python library built on top of NumPy.

An easy way to think about pandas is that it’s a python’s way of looking at Microsoft Excel.
You can read data from almost all file types using pandas and perform operations on the data.

Installing pandas using pip:

Matplotlib

Matplotlib is a plotting library for the Python programming language and its numerical mathematics extension Numpy. It is one of the most powerful tools for data visualisation in Python. This library helps in generating plots, histograms, power spectra, bar charts, error charts, scatterplots, etc., with just a few lines of code. Hence, it makes easy things easier and hard things possible to achieve.

Installing matplotlib using pip:

Scikit- learn

It is considered as a gold standard in machine learning. A Python library that consists of many supervised and unsupervised machine learning algorithms. It’s built upon some of the libraries we have already discussed above, like NumPy, Pandas and Matplotlib. One can just simply pass NumPy arrays and pandas data frames directly to the ML algorithms of Scikit-learn which is possible because of how robust the algorithms are in these libraries.

It’s an extensive, well-documented, and accessible, curated library of machine-learning models
Here is a chart of the scikit-learn algorithm cheat sheet which I found on the internet and found really useful.

Image Source: scikit-learn algorithm cheatsheet

Some of the robust set of algorithms provided include:

  • Regression: Fitting linear and non-linear models
  • Clustering: Unsupervised classification algorithm
  • Decision Trees: Tree induction and pruning for both classification and regression tasks
  • Neural Networks: End-to-end training for both classification and regression. Layers can be easily defined in a tuple
  • SVMs: for learning decision boundaries
  • Naive Bayes: Direct probabilistic modelling

Installing scikit-learn using pip:

Tensorflow:

It is an end-to-end open-source platform for machine learning developed and maintained by Google. It’s one of the most popular frameworks for machine learning. Apart from running and deploying models on powerful computing clusters, TensorFlow can also run models on mobile platforms (iOS and Android). TensorFlow demands extensive coding, and it operates with a static computation graph. So, you will first need to define the graph and then run the calculations. In case of any changes in the model architecture, you will have to re-train the model.

The TensorFlow Advantage:

TensorFlow is best suited for developing DL models and experimenting with Deep Learning architectures. It is used for data integration functions, including inputting graphs, SQL tables and images together.

PyTorch

It is my personal favourite library for machine learning. It’s an open-source machine learning library based on the Torch library, used for applications such as computer vision and natural language processing, primarily developed by Facebook’s AI Research lab. While the frontend serves as the core ground for model development, the torch, distributed” backend promotes scalable distributed training and performance optimisation in both research and production.

  • PyTorch allows you to use standard debuggers like PDB or PyCharm.
  • It operates with a dynamically updated graph(unlike TensorFlow), meaning that you can make the necessary changes to the model architecture during the training process itself.

The PyTorch advantage:

  • It is excellent for training, building, deploying small projects, and prototypes.
  • It is extensively used for Deep Learning applications like natural language processing and computer vision.

Installing PyTorch: https://pytorch.org/get-started/locally/

Let’s discuss some of the top Machine learning algorithms to learn:


1. Linear Regression

Linear Regression is the simplest, and widely used supervised machine learning algorithm for predictive analysis in machine learning. In short, it’s an algorithm to predict a target variable by fitting and reaching to the best linear relationship between the dependent and the independent variable.

The idea is to find the red curve, the blue points are actual samples. We can connect all points using a single, straight-line using linear regression. This example above uses simple linear regression to minimise the square of the distance between the red line and each sample point.
This might seem a basic algorithm but is quite powerful for some simple tasks.

“Almost all of statistics is linear regression, and most of what is left over is non-linear regression,” By Robert I. Jennrich (University of California at L.A.)

Here I list some of the practical applications of linear regression:

  • Housing prices prediction
  • Wine quality prediction
  • Sales prediction and many more

2. Logistic Regression

As opposed to Linear Regression being a regression algorithm, Logistic Regression is a classification algorithm, used when the response variable is categorical. The logic behind Logistic Regression is to find a relationship between features and the probability of a particular output.

e.g. Handwritten Digit Recognition

The word “regression” in this algorithm arises a question that how is it different from linear regression. Well, the difference is quite a bit.

  1. Outcome
    In linear regression, the output or the dependent variable is continuous. Its values can be any of the infinite possible values. In logistic regression, the outcome or the dependent variable has only a limited number of possible values. For example, 0–9 digits in the handwritten digit recognition problem.
  2. The dependent variable
    Logistic regression is used for categorical variables. For example, yes/no, true/false, red/green/blue, 1st/2nd/3rd/4th, etc. On the contrary, linear regression is used for continuous output variables. For example, prices, weight, etc.

3. Feed-Forward Neural Networks

I think everyone has heard about deep learning by now. It’s the new breakout in machine learning. Let’s talk about the most basic deep learning model.

Below is the image of a basic feedforward neural net with just one hidden layer (with 3 neurons) and an output layer.

Feedforward neural networks, also known as multilayer perceptrons are the foundations of most deep learning models (like CNNs and RNNs). These networks are mostly used for supervised machine learning tasks where we already know the target function i.e. the result we want our network to achieve. These are extremely important for practising machine learning and form the basis of many commercial applications in machine learning areas such as Computer vision and Natural Language Processing.

4. Convolutional Neural Network

In deep learning, a convolutional neural network is a class of deep neural networks, most commonly used in computer vision. It takes in an input image, assigns importance to parameters (weights and biases) to various aspects/objects in the image and be able to differentiate one from the other.

The convolutional neural network is the core of computer vision algorithms. You must have heard of self-driving cars? Well, it’s algorithm is a CNN architecture. The pre-processing required in a ConvNet is much lower as compared to other classification algorithms.

In primitive methods, filters are hand-engineered, with enough training, on the other hand, Convolutional neural networks have the ability to learn these filters/characteristics while training process. Its architecture is similar to the neurons in the Human Brain and was inspired by the organisation of the Visual Cortex.

To learn more about Machine Learning, read here.

By Alok Singh