mlpack: Or, How I Learned To Stop Worrying And Love C++

Abstract: mlpack is a general-purpose flexible, fast machine learning library written in C++. The library aims to provide fast, extensible implementations of cutting-edge machine learning algorithms. These algorithms are provided as simple command-line programs, Python bindings (and bindings to other languages), and also C++ classes which can then be integrated into larger-scale machine learning solutions. In this tutorial, I will introduce mlpack and discuss how it achieves its fast implementations via template metaprogramming and by implementing more
asymptotically efficient algorithms. Even though C++ is fairly unpopular for machine learning, I will show that it is possible to have easy, understandable, production-quality C++ machine learning code with mlpack. I will also give some examples of usage, including how we use mlpack inside of RelationalAI, and also talk about the future goals and development of the library.

Bio: Ryan Curtin is a Computer Scientist at RelationalAI. His Ph.D. work focused on fast algorithms for core machine learning tasks via the use of indexing structures such as kd-trees and other related structures. These accelerated algorithms enabled fast implementations of standard machine learning algorithms like nearest neighbor search, k-means clustering, and kernel density estimation; these implementations then formed the basis of the mlpack C++ machine learning library, which Ryan has maintained for nearly a decade. In his free time, he likes to restore broken pinball machines---and if they are ever restored to a working state, actually play them (thus helping them return to a non-working state).