The Guerrilla Guide to Machine Learning with Julia

This post is a lean look at learning machine learning with Julia. It is a complete, if very short, course for the quick study hacker with no time (or patience) to spare.

Sure, there are lots of tutorials and overviews on gaining the insight you need into picking up machine learning, but many (most?) of them take the long view: get a foundation first, learn the basics next, then learn a bit of complementary theory before getting too far ahead of yourself in practical terms, take a step back, try your hand at a few examples, undertake a project on your own... This is all great advice, and a great approach to learning... well, almost anything.

Orangutans now?
These aren't the right animals to attempt this joke with... this doesn't even make any sense.

But let's say you're not starting from scratch. Or you're a savant. Or you don't have the patience to go through all of the motions. Let's say you want to hit the ground running and scramble under pressure to learn everything right now. The best approach? Ideally, no, but I'm in no position to judge. I work best under pressure, and can sympathize with the impatient among us who just want to get on with things.

Let's be clear: this is assuredly not the path to achieve greatness quickly. With learning machine learning -- much as with machine learning itself -- there is no free lunch. However, getting a practical overview for the purposes of testing the waters and deciding whether learning more about the topic is what you are after, or if you already posses a solid theoretical understanding of much of these (or related) concepts, the way of the guerrilla may be for you.

With that in mind, here is a bare bones take on learning machine learning with Julia, a complete course for the quick study hacker with no time (or patience) to spare.

Preparing and Learning Julia

First thing's first: let's learn Julia. For starters, have a look at this slide collection from the computer science department at the University of Toronto, which provides an overview of the language and covers syntax basics.

Then, get an answer to the question 'Why Julia?' in the below video.

For a more detailed introduction to the language, watch this introductory video from David Higgins which better explains Julia from the perspective of a Python developer.

Alternatively (to any or all of the above videos), watch Huda Nassar provide a more thorough introduction to Julia. It's nearly 2 hours in length, but is definitely long on details.

Machine Learning Crash Course

For a very crash course on machine learning itself, watch Melanie Warrick's "How to Get Started with Machine Learning" talk from PyCon 2014.

Julia for Data Analysis


Next is learning some Julia for data analysis. Simon Byrne's video on Julia for data analysis is a good place to start for exactly this.

Machine Learning with Julia

It's always good to approach machine learniing in a new language/library/framework/etc. with both a basic and familiar task, and so employing k-Nearest Neighbors to character recognition seems to fit this criteria. Read An Introduction to Machine Learning in Julia, which covers just this, and even goes a bit further to discussing parallelizing code on GPUs, which Julia does not make difficult.

Then, check out Mike Innes' video on Machine Learning with Julia, with a broad overview of the state of affairs.

Another interesting video is Josh Day's discussion of the OnlineStats.jl library, which is "a Julia package which provides online algorithms for statistical models."

Advanced Analytics & Scientific Computing in Julia

For a more advanced take on Big Data analytics using Julia, watch this video by Ehsan Totoni, covering the use of a particular framework called the High Performance Analytics Toolkit (HPAT), which aims for efficient large-scale analytics in the Julia ecosystem.

Finally, check out this video overview of ArrayFire.jl, an ArrayFire wrapper, which brings easy GPU acceleration to Julia.

Looking For More?

Here are a few additional resources in the direction of mastering machine learning in Julia:

Hopefully this is enough to get the motivated hacker up and practicing with machine learning in a few days. It's not a complete course, however; understanding the underlying statistical building blocks of machine learning takes years, and becoming proficient in the practical will take hundreds of hours of doing. However, no one said you can't get your hands dirty and have some introductory fun on the way to perfecting a new craft.