Skip to content

Instantly share code, notes, and snippets.

@dkapitan
Created January 12, 2021 08:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dkapitan/600335a50752a89c11d8aa3607ac9b8a to your computer and use it in GitHub Desktop.
Save dkapitan/600335a50752a89c11d8aa3607ac9b8a to your computer and use it in GitHub Desktop.
Medium article: Tree of Machine Learning Algorithms

The Tree of Machine Learning Algorithms

Inevitably, when I teach introductory courses on machine learning at the Jheronimus Academy of Data Science, I get questions like:

  • Which algorithms are most suitable for my task/project/problem?
  • Which open source libraries should I use?
  • What is the intuition behind algorithm X, and how does that compare with algorithm Y?

Notwithstanding the wealth of information that is available in the creative commons, it is hard to see the forest for the trees. I found myself doing the same websearches over and over again, and I thought: 'Surely there must be a better way?'.

Inspired by the concept of a phylogenetic tree, the Tree of Machine Learning Algorithms is a labour of love that aims to address those questions and serve as an ultimate cheat-sheet for finding your way in the world of machine learning algorithms. By aggregating, redacting and visualising I have used the functionality offered by Kumu (love it!) and linked the following three elements:

  1. type of learning, being the different approaches and the type of task or problem that a class of machine learning methods is intended to solve.
  2. algorithm, being a finite sequence of well-defined, computer-implementable instructions to perform the machine learning computation.
  3. library, being the practical implementation in a certain programming language and the actual tool that we use.

While machine learning approaches are traditionally divided into three broad categories of supervised learning, unsupervised learning and reinforcement learning, other perspectives have been developed which don't fit neatly into this three-fold categorisation.

Furthermore, to satisfy my own need for order and clarity, I wanted to integrate algorithms that originate from the statistics domain like time-series forecasting and rule-based learning. I have taken a heuristic, hand-waving approach in linking the different types of learning, favouring usability and explainability over academic rigour. As many algorithms rely on more than one concept, relationships are visualised as a graph rather than a strict hierarchy. Keys (custom fields in the Kumu app) are used to further characterise each algorithm, thus enable searching with algorithms are suitable for a given task. I have added the seminal paper(s) for each algorithm including the publication date to provide a feel of the evolution of the field of machine learning.

Kumu has very neat features to navigate the tree:

  • Search for keywords (keyboard shortcut s)
  • Use focus to focus on one or more elements, connections, and loops, temporarily hiding the rest of the map. Focus is activated in one of two ways, by clicking and holding on any element, connection or loop or by selecting an element, connection or loop and then clicking the focus icon on the right side of your map. Once focus is activated, you can walk in and out by degree using the up and down buttons.
  • Hold shift and click to select or click-and-drag to select multiple elements at once.
  • Double-click on any element to view the original paper or most relevant resource for that element.

This project is under active development. Stay tuned as more content is added. Feel free to drop me a note on d.kapitan@jads.nl if you would like to contribute or leave your comments in the Disqus section at the bottom of each page. This short presentation explains the structure and guidelines for editors (work in progress).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment