Machine Learning

Machine learning involves the use of computers to perform an algorithmic analysis of data in order to discover relationships in that data, often with the goal of making predictions about future data. While it grew out of early work in artificial intelligence (AI), it is in many ways just a form of computer-aided, applied statistics. The goal of machine learning is to gain a more nuanced understanding of relationships within the data, and make better predictions about future outcomes, than could be done by a human with pencil, paper, and a calculator.

Often machine learning has an air of mystery about it. It is either thought of as a highly specialized field that requires advanced degrees in multiple disciplines, or it is viewed as the dirty work of AI systems that will (inevitably, or by design) ruin the world for humans. I was in the former group. 

However, I actually started working with machine learning without knowing it. I thought I was just using computer code and statistics to understand musical data better. Then I realized I was using techniques that fell under the umbrella of machine learning. It was that realization that gave me the motivation and confidence to dive into what I had previously thought was a nut too tough for me to crack without a computer science background. 

If you are good with numbers, are comfortable with computers, and have experience analyzing anything with care and nuance, machine learning should be within your grasp. All it takes to learn it is time and a few good resources. In fact, I think that learning the code and the math is the easy part. It's developing the analytical mind that knows how to frame the question, how to choose the appropriate technique to answer the question, and how to interpret the results that is difficult.

Getting started

There are a few good introductory articles to get your feet wet. I find that engaging several different introductions, all of which emphasize something different and/or explain things from a different angle, is the best way to get a bird's-eye-view of the field. Here are a few of those articles.

It is also worth checking out this list of ten free books about machine learning.

And when you're ready to get down to brass tacks, here are two massive, open online courses to help you dive in.

Following are resources and examples for specific machine learning application types. There are many more types than are listed here (see my slides for a talk, Demystifying Ed-Tech Algorithms, for a fuller list). These are the ones for which I have found significant, application-specific resources. Otherwise, the above courses and overview articles will touch on the others.

Cluster analysis

Cluster analysis is an unsupervised classification approach that helps a researcher understand what populations are represented in a dataset. Often a dataset is not a sample of a single population, but a messy mixture of exemplars of a variety of populations (musical or literary genres, customer types, handwritten letters, anything that can be classified).

The Clustering Process, by Ameen Kazerouni, is a slightly cheeky explanation of cluster analysis in a business informatics setting.

Deep learning and neural networks

This is an area I hope to dig into soon. Following are resources that either helped me better understand on a general level what deep learning and recurrent neural networks are, or that look like valuable resources to come back to.

Getting Started with Deep Learning: A Hands-on Guide for Complete Beginners, by Akina M.

Neural Networks and Deep Learning, a free ebook by Michael Nielsen.

The Unreasonable Effectiveness of Recurrent Neural Networks, by Andrej Karpathy.

Deep Learning, another free ebook, by Ian Goodfellow, Yoshua Bengio, and Aaron Courville.

TensorFlow, an open-source tool from Google for deep learning in Python.

Examples

Obama-RNN ― Machine generated political speeches, by samim.

Do androids dream of cooking? - a set of recipes written by a trained neural network.

char-rnnMulti-layer Recurrent Neural Networks (LSTM, GRU, RNN) for character-level language models in Torch.