Wednesday, January 09, 2008

Programming Collective Intelligence Review

Last week I wrote about the three books that O’Reilly sent me, and reviewed Data Visualization. In that review, I promised that I’d be reviewing the other two shortly. Here’s the first of those reviews.

Programming Collective Intelligence isn’t a book that lends itself well to review. Not that it’s a bad book, but because it takes a while to get through and really grok the material. This is a dense volume, which uses a lot of code to get its point across. That’s a good thing, because this is important (if difficult) material.

The book begins with a 5 page introduction and wraps up with a 32 page summary 9(and two appendices taking up 24 pages) which sandwich 270 pages (10 chapters) of great material covering:

  • recommendation systems
  • data clustering
  • searching and ranking
  • optimizing collaboration problems
  • filtering
  • decision trees
  • price models
  • advanced classification
  • data extraction and characterization
  • genetic programming

I’ve learned a lot from this book already (I’ve skimmed the whole thing, and read the first three chapters in some depth), but I can tell it’s going to take some sustained work to really get the most from it. I know that members of the Seattle.rb are organizing a study group, and are planning on translating the code examples from python to Ruby as they go—perhaps we should work on something similar here in Utah or maybe in a google group on-line.

So far, I’m finding the book well written with clear examples. I love the exercises at the end of each ‘content’ chapter. I also think Toby did a great job finding sample problems for each of the topics he covers (and pointing out other way in which the approach might be applied).

2 comments:

Anonymous said...

I'm reading this book too. I found most recommendation engines available are written in Java. It would be cool to see a Ruby implementation

willCode4Beer said...

... or use jRuby to exploit the ones that have already been written

;-)