Preface
I’ve been working with data for my entire professional career. Following my interests, I’ve worked on ever-more-analytically sophisticated systems as my career has progressed, leading to a focus on machine learning and artificial intelligence systems.
As my work content evolved from more traditional data-warehousing sorts of tasks to building machine learning systems, I was struck by a strange absence. When I was working primarily with databases, I could rely on the rich body of academic and professional literature about how to build databases and applications that interact with them to help me define what a good design was. So, I was confused and surprised to find that machine learning as a field generally lacked this sort of guidance. There were no canonical implementations of anything other than the model learning algorithms. Huge chunks of the system that needed to be built were largely glossed over in the literature. Often, I couldn’t even find a consistent name for a given system component, so my colleagues and I inevitably confused each other with our choices of terminology.
What I wanted was a framework, something like a Ruby on Rails for machine learning, but no such framework seemed to exist.[1] Barring a commonly accepted framework, I wanted at least some clear design patterns for how to build machine learning systems; but alas, there was no Design Patterns for Machine Learning Systems to be found, either.