Learn how to apply test-driven development (TDD) to machine-learning algorithms--and catch mistakes that could sink your analysis. In this practical guide, author Matthew Kirk takes you through the principles of TDD and machine learning, and shows you how to apply TDD to several machine-learning algorithms, including Naive Bayesian classifiers and Neural Networks.
Machine-learning algorithms often have tests baked in, but they can't account for human errors in coding. Rather than blindly rely on machine-learning results as many researchers have, you can mitigate the risk of errors with TDD and write clean, stable machine-learning code. If you're familiar with Ruby 2.1, you're ready to start.
Apply TDD to write and run tests before you start coding Learn the best uses and tradeoffs of eight machine learning algorithms Use real-world examples to test each algorithm through engaging, hands-on exercises Understand the similarities between TDD and the scientific method for validating solutions Be aware of the risks of machine learning, such as underfitting and overfitting data Explore techniques for improving your machine-learning models or data extraction
Hey, how’s it going? I’m Matthew Kirk, a software engineer based out of Seattle, WA. I’m also the author of Thoughtful Machine Learning, where I present doing test-driven software development with data in Ruby, and Thoughtful Machine Learning in Python (which is available for sale on February 4th, 2017).
I’ve been building web apps since 2009 and have always been “the data guy”, thanks to my applied math degree and my previous life as a financial quant.
In my career, I’ve been fortunate enough to speak around the world about software and work on interesting projects with later-stage startups. I’ve built social media sentiment engines, diamond recommendation tools, and e-commerce search algorithms...and always got frustrated with how my data projects never seemed to follow best development practices.
So instead of preaching to my coworkers, I wrote Thoughtful Machine Learning as a way to share my knowledge with the world.
There’s lots of machine learning books out there, and I recommend you take a look at all of them. But if you want the skinny, my books are for developers who don’t care about the nuances of academic theories of machine learning…and just want to implement something in their daily work.
If you ever want to chat machine learning, my email is matt@matthewkirk.com. I look forward to hearing from you.
Pros : Concise, Helpful examples Best Uses : Student, Novice
I am an academic who studies machine learning and a Python programmer. For those two reasons, I thought that Thoughtful Machine Learning wouldn't be right for me. However, I had another friend who was interested into getting into machine learning - so we decided we'd read through the book together, one chapter at a time.
That was a great idea.
This book is a short read, and a chapter a day is very easily digestible. With that chapter you get to explore ML topics from the standard Naive Bayes to things that aren't typically included in an entry level ML book like SVMs and HMMs. Matt does a great job of creating clear examples and uses non-academic language to explain things. His code doesn't rely on libraries and demonstrates the effectiveness of these techniques.
What that means is that if you're new to ML - this is a good way to get started into it. If you're old hat - it's a fresh perspective and a way to learn how to discuss these topics in fresh manner.
I am also a practitioner, and I thought it was a very novel thesis to include TDD with ML.
Well, if you're looking for a brief introduction to ML that book could be of some use for you. Unfortunately, it doesn't go far beyond that.
Code examples that are bundled with the book have-not been updated for a long time, therefore some of them don't work.
I reckon that If you had read a few blog posts from 2017 titled "Introduction to Machine Learning" with no Ruby code examples you would have known more than what this book teaches you.
An ok survey of common algorithms and techniques. Not very in depth analysis of each algorithm but didn't set out to provide one.
There was often very little explanation describing the code examples. Ruby is not always straight forward so the code itself does not tell the story. Some additional line comments walking through the steps would have been helpful.
Some topics provided significant description at an abstract level but seemed to jump to demonstration of using a library leaving the reader fuzzy about the how and why. (For example: Hidden Markov Models and Support Vector Machines).
it's actually a good summary and refresher about different machine learning techniques. I think examples lacked good explanation though, Abd I wish they used a more intuitive programming language, such as c++ or Java.