Programming Collective Intelligence
이 책은 요즘 유행하는 웹 2.0을 표방하는 서비스에 적용할 만한 패턴분류(Pattern Classification) 또는 기계학습(Machine Learning) 이론을 소개하고, 이를 활용하여 재미있고 유용한 서비스를 구현하는 방법을 설명한다. 책의 구성은 단순하다. 챕터마다 특정 알고리즘을 소개하고 그것을 적용할 만한 웹서비스를 제시한 뒤 실제 구현 코드를 보여주면서 마무리 짓는 형식이다.
등장하는 알고리즘의 면면을 살펴보면, Recommendation, Decision Tree, Neural Network, Bayesian Classifier, Optimization, Clustering, Support Vector Machine, Feature Extraction 등으로 아주 화려하다. 하지만 위의 알고리즘을 모두 제대로 공부할 수 있겠다는 기대로 이 책을 펼친다면 실망하기 십상이다. 이 책은 그저 이런 알고리즘들의 기본 개념과 특징을 쉽게 설명하여 어떤 용도에 쓰면 적절할지 감을 잡게 해줄 뿐이다. 깊이 이해하려면 기계학습 관련 책을 붙들고 공부해야 할 것이다.
눈에 띄는 한 가지 특징은 보통 이런 내용을 다루는 책에서 당연스럽게 사용하는 수식을 전혀 찾아볼 수 없다는 점이다. 그 대신, 파이썬 프로그래밍 언어로 작성한 코드가 그 자리를 차지하고 있다. (복잡한 알고리즘은 공개된 라이브러리를 가져다가 사용하는 정도로 그치기도 한다.) 아마도 저자가 -수식이 간결 명료하기는 하지만- 프로그래머에게는 익숙한 코드를 보여주는 것이 각 알고리즘의 동작을 설명하는 가장 좋은 방식이라고 생각한 듯하다.
또 다른 장점으로는 책 곳곳에서 소개하는 유용한 오픈 API 목록들을 들 수 있다. 책의 설명과 파이썬 예제 코드를 이용하면 그런 API에 대한 초기 접근성을 낮춰서 쉽게 가져다 쓸 수 있겠다는 생각이 들었다.
책의 성격이 애매하달 수도 있지만 내가 보기에 저자는 대상 독자층을 잘 선정했다. 수업 시간에 기계학습 이론을 배운 사람에게는 ‘오.. 이런 식으로 활용할 수도 있구나’라는 아이디어와 함께 구현 시 갖다 쓸 수 있는 코드 및 레퍼런스를 제공한다. 반대로, 이론적인 내용에 약한 프로그래머에게는 다양한 알고리즘의 개념을 쉽게 설명하면서 실제로 적용할 때 고려해야 할 요소들을 잘 정리해준다. 이 책은 군더더기 없이 깔끔하게 그 목적을 달성하고 있다.