몇 달전 트위터의 #dmlab 모임에서 오가는 대화 중에서, 데이터마이닝을 공부하고 싶다는 사람에게 누군가 ‘집단지성프로그래밍’이라는 책을 추천해주는 것을 보았다. 그 대화를 엿들은(?) 것을 계기로 나는 ‘집단지성’에 대한 책들을 찾아보게 되었고, 아래는 그 중 두 권이다.

집단지성 프로그래밍

이 책은 Python을 주요 언어로 사용하고, 아주아주 간단한 예시들을 통해 추천시스템(CF), 군집화, 검색엔진, 최적화, 스팸필터링, 의사결정나무, kNN, SVM 등에 대한 개념을 잡을 수 있다. A to Z까지 나와 있는 것은 아니지만, 이렇게 친절하게 코드까지 제공하는 책도 참 흔치 않다.

실전 예제로 살펴보는 집단지성 프로그래밍

이 책은 좀 더 최근에 출판된 것으로, Java를 주요 언어로 사용하고 있다. 위 책은 하나하나의 챕터가 독립적이어서 보고 싶은 챕터만 따로 뽑아서 볼 수 있지만, 이 책은 처음부터 따라가야 한다는 단점이 있다. 그렇지만 크롤링 등의 웹 데이터 수집에 관심이 있는 독자라면 참고해보기 좋은 책이다.

이 책에서는 ‘집단 지성’을 아래와 같이 설명한다.

개인들이 집단을 이루어 협업하거나 서로 경쟁할 때, 존재하지 않던 지능이나 행동들이 갑자기 나타날 때가 있는데 이런 현상이 일반적으로 알려진 집단지성이다. (중략) 사용자가 웹에서 의견을 표출할 때, 이는 다른 사용자에게 영향을 미친다. (중략) 웹 사이트들은 서로 밀접하게 연결되어 있기 때문에, 영향력의 범위는 점차 커져서 해당 집단 전체의 생각에까지 미친다. – p.5

우리 몸에 있는 작은 세포들이 모여 ‘인간’이라는 개체를 이루는 것과 같은 경우를 생각해보면 될 것 같다. 좀 더 머신러닝적으로는, 바보들이 모여 천재적 집합을 형성하는 ‘boosting’ 알고리즘과 같은 각종 시스템들이라고 생각해 볼 수도 있겠다. 또, 구글은 집단지성의 아주 훌륭한 예시라고 할 수 있겠다. 결국 각 웹사이트 간의 링크는 각 웹사이트들의 마스터가 만드는 것이고, 구글을 그 링크들을 이용해서 랭킹을 할 뿐이니까.

집단지성은 그렇기 때문에 태생적으로 데이터마이닝과 밀접한 연관성을 가지게 된다. 무수히 많은 개체가 하나의 집단을 이룬다면, 그 집단과 그 집단이 출력한 결과 - 데이터 - 를 유의미하게 분석하는 것이 결국 데이터마이닝이기 때문에.

Contents migrated from tistory on 2013-03-18.