Clojure for Machine Learning book review
Book goes through pretty much all standard machine learning topics, including: linear regression, various classification algorithms, clustering, artificial neural networks and support vector machines. Author also briefly covers large scale machine learning on top off Hadoop and Map Reduce. Too bad other more modern BigData solutions were not represented. This book starts with a brief introduction to matrices and linear algebra. Not being an expert in the field I spotted few embarrassing mistakes. E.g. "For matrix A of size m x n and B of size p x q [...] if n = p, the product of A and B is a new matrix of size n x q" – in this notation the size of A times B is m x q, not n x q. Few pages later formula for calculating inversion of 2x2 matrix is broken (incorrectly transposed). For a book filled with math I would expect reviewers or proof readers to double checks easily available formulas.
Please keep in mind that Clojure for Machine Learning is not a best choice to learn Clojure, it expects you to know basic constructs. Moreover Clojure code was not always perfectly idiomatic. Using
+ 1rather than
incfunction, nesting of functions instead of composing or threading (
->macro) them, abuse of atoms to introduce mutability or using
reduceinstead of conceptually simpler
apply +to add up vector of numbers. In one place we see sorting just to take first element – where simply taking minimum would be enough, cutting running time from O(nlogn) to O(n). However author does a good job explaining the code and in general it is quite pleasant to read. Many examples are written on top of
ml-cljlibrary, sometimes spiced with Incanter for visualization. But when the algorithm is not very complex, author implements it from scratch in plain Clojure. I found that really enjoyable.
I was reading an e-book on a dated Kindle Keyboard. The experience was rather good, however math formulas were stored in bitmap format and not scaled properly, thus when inlined in text they were much bigger than ordinary font, resulting in lots of empty space between lines. This is just cosmetics, maybe related to my device. Also one or two times the book references colours on pictures, which doesn’t work well on a black and white e-book reader.
Despite few issues, I found this book rather complete and moderately easy to read, taking subject into account. If you want to discover machine learning and have no prior Clojure knowledge, start from learning Clojure first. But if you happen to use Clojure already and need to improve your understanding or find good reference, definitely check out Clojure for machine learning. You can tell an author is an expert in the field and different aspects are explained well. You will not find many complete recipes, but a solid foundation instead.
Disclaimer: I received a free copy of this book from Packt Publishing and was asked for a review.
Tags: books, clojure, machine learning, review