Author: Peter Harrington
Aimed at: Python programmers
Pros: Practical approach
Cons: Not enough deep theory
Reviewed by: Mike James
Machine learning is a hot topic and a book that promises to put it in action has a lot to accomplish.
The big problem with machine learning books is that there is no clear cut definition of what the subject is all about. It is very tempting for authors to confuse the issue by simply presenting standard statistical techniques and calling them machine learning. Classical stats is a prerequisite for studying machine learning, and it is often useful in tackling the same problems, but to qualify for inclusion in the machine learning circle a book needs to do more than discuss traditional statistical methods.
This particular book gets a good balance between advanced topics and practical application. All of the examples are in Python which isn't a bad choice of a language because it has many handy libraries that will do the computation for you .
The first part of the book is on classification. After a quick introduction to the subject, and to Python, the book moves on, in Chapter 2, to consider the most fundamental of all non-parametric classifiers - the k- nearest neighbour classifier. What is good about this introduction is that it gives you some theory, complete with equations, and then shows how it can be used to implement something, in this case a dating site and handwritten recognition.
Chapter 3 deals with decision tree theory and splitting data sets based on entropy. Then we have an introduction to the Bayes classifier., logistic regression, support vector machines and Ada boost. All of the introductions are well done and while by no means exhausting the topic of classification this first section does a reasonable job of providing some of the flavour. It is all a mixture of theory, heuristics and practical application.
Part 2 of the book is on forecasting and here we move into some classical statistics with a look at regression. It doesn't stay classical for long, moving on to ridge regression and Chapter 9 deals with tree-based regression. It is a very quick look at a very big subject, but again it is a good sampler and has a few good examples.
Part 3 is on the equally huge topic of unsupervised learning and it starts off with k-means clustering. Chapter 11 is on the Apriori algorithm and Chapter 12 on FP-trees. In this case you could argue that the subject hasn't been covered as well because there are so many approaches left out, but the ones that are selected are particularly appropriate to the sort of preference and product-suggestion algorithms that are currently so valuable.
The final part of the book is a collection of general topics. Chapters 13 and 14 are on principal components and the singular value decomposition respectively. At this point I wondered why discriminant analysis wasn't introduced, but a book has only a finite number of pages. The final chapter is on using Hadoop and map reduce to process big data. If you mean to do real machine learning with lots of training data, you will find this final chapter worth the price of the book.
This isn't a complete survey of machine learning but it isn't a bad summary of machine learning as it is commonly used in building more intelligent web sites. It doesn't avoid the theory but it also doesn't go deeper than it needs to. If you really want to understand what is going on you will need to look up a lot of the ideas in other books or web sites. My only real complaint about the book was that it didn't provide a bigger framework to allow you to organize this complicated subject - but then many an academic book attempts the same and fails.
The final verdict has to be that if you are interested in applied machine learning, and are happy working in Python, then just go and buy a copy of this book. It won't be the last book on the subject you will need, but it will be one that more than gets you started and you will return to it in the future. Recommended.