이 책에서 다루는 내용
- 대규모 데이터를 처리할 수 있는 병렬 알고리즘을 만드는 툴인 분산 파일 시스템과 맵리듀스(map-reduce)
- 민해시(minhash)와 지역성 기반 해시(locality-sensitive hash) 알고리즘의 핵심 기술 및 유사도 검색(similarity search)
- 매우 빨리 입력돼 즉각 처리하지 않으면 유실되는 데이터를 다루는 데 특화된 알고리즘과 데이터 스트림 처리
- 구글의 페이지랭크(PageRank), 링크 스팸 탐지, 허브와 권위자(hubs-and-authorities) 기법을 포함하는 검색 엔진 기술
- 연관 규칙(association rule), 시장바구니 모델(market-baskets), 선험적 알고리즘(A-Priori Algorithm)과 이를 개선한 기법들 및 빈발 항목집합(frequent-itemset) 마이닝
- 대규모 고차원 데이터 집합을 클러스터링하는 알고리즘
- 웹 애플리케이션과 관련된 두 가지 문제인 광고와 추천 시스템
- 소셜 네트워크 그래프처럼 매우 큰 구조의 분석과 마이닝을 위한 알고리즘들
- 특이 값 분해(singular value decomposition)와 잠재 의미 색인(latent semantic indexing) 및 차원 축소(dimensionality reduction)를 통해 대규모 데이터에서 중요한 속성을 도출해내는 기법들
- 퍼셉트론(perceptron), 서포트 벡터 머신(support vector machine), 경사 하강(gradient descent) 같은 대규모 데이터에 적용 가능한 머신 러닝 알고리즘
이 책의 대상 독자
데이터베이스와 웹 기술을 선도하는 학자들이 쓴 이 책은 학생과 실무자 모두를 위한 필독서다. 다음의 과정을 익힌 독자들에게 적합한 책이다.
- SQL 및 관련 프로그래밍 시스템을 주제로 하는 데이터베이스 시스템 입문
- 2학년 수준의 자료구조, 알고리즘, 이산수학
- 2학년 수준의 소프트웨어 시스템, 소프트웨어 엔지니어링, 프로그래밍 언어
지은이의 말
이 책은 여러 해 동안 스탠퍼드(Stanford)에서 진행된 아난드 라자라만(Anand Rajaraman)과 제프 울만(Jeff Ullman) 두 교수의 강의 교육 자료에서 시작됐다. ‘웹 마이닝’이라는 제목의 CS345A 강의는 고급 대학원 과정으로 개설되긴 했지만, 우수한 학부생들도 관심을 갖게 되었고 참여가 가능했다. 이후 쥬어 레스코벡(Jure Leskovec) 교수가 스탠퍼드에 부임하게 되면서 상당히 많은 내용이 개편됐다. 그는 네트워크 분석 강의 CS224W를 새로 신설했고, CS246으로 이름이 바뀐 CS345A의 자료를 보완했다. 또한 세 교수는 대규모 데이터 마이닝 프로젝트 강의 CS341을 개설했다. 이 책은 위 세 가지 강의 자료를 바탕으로 만들어졌다.
옮긴이의 말
이제는 빅데이터라는 용어 자체만큼이나, 그 용어의 식상함을 논하는 것조차 식상하게 느껴지는 시대가 되었다. 그러나 이 책은 허식 없이 매우 현실적인 접근 방식으로 데이터마이닝 기법을 빅데이터에 적용하는 방법을 설명하고 있다. 각 기법을 메모리에 담을 수 있는 경우와 메모리에 담을 수 없는 경우로 나누어 친절하게 해법을 알려준다.
서서히 데이터 과학 분야는 관련 업계의 통계학자나 엔지니어가 갖춰야 할 선택적인 ‘지식’이 아닌, 필수적인 ‘상식’이 되어가고 있다. 어쩌면 우리는 미래의 상식을 공부하기 위해 이 책을 펼친 것인지도 모른다. 이 책은 통계학과 데이터 마이닝, 그리고 컴퓨터 공학을 동시에 다루고 있음에도, 이 세 분야를 자세하고도 조화롭게 서술하고 있다. 덕분에 대학 교재(http://www.mmds.org/)임에도 불구하고 실무에 도움이 될 정도로 내용에 깊이가 있다는 장점이 있다. 동시에, 통계학자와 엔지니어 모두에게 어려운 책이 돼버렸다는 단점도 있다.
따라서 이 책을 공부하는 데 도움이 되는 팁을 먼저 공유하고자 한다.
1. 원서는 아래 URL에서 무료로 다운로드할 수 있다. 역서만으로 잘 이해가 되지 않는 부분이 있다면, 해당 부분을 원서에서 찾아 반복해서 세 번 정도 차분하게 읽어보기 바란다.
http://infolab.stanford.edu/~ullman/mmds/bookL.pdf
2. 아무래도 대학 교재이다 보니, 전개 방식이 연역적이며 딱딱한 편이라서 이해가 어려울 수 있다. 각 절의 앞부분을 이해하지 못했더라도, 일단 빠르게 읽고 넘어간 후 예제를 보기 바란다. 예제를 읽고 나서 다시 앞부분의 이론을 보면 이해가 쉬울 것이다.
통계학자와 엔지니어는 각기 다른 관점으로 데이터 과학이라는 분야에 접근한다. 통계학자들은 신뢰구간과 불확실성 측정에 관심이 많은 반면, 프로그래머들은 머신 러닝을 통한 재빠른 구현과 그 결과에 더 관심을 두는 편이다. 이를 정리하기 위해 조시 윌스(https://twitter.com/josh_wills/)는 이렇게 말했다.
“데이터 과학자란 통계학을 남들보다 잘 알고 있는 소프트웨어 공학자, 그리고 소프트웨어 공학을 남들보다 잘 알고 있는 통계학자를 말한다.”
하지만 이것만으로 분석가의 자질을 논하기에는 뭔가 부족하다. 현업에서 데이터를 분석하다 보면, 무엇보다도 그 데이터 도메인에 대한 지식과 분석 노하우가 가장 중요하다는 사실을 느끼게 된다. 그리고 해당 도메인을 잘 이해하기 위해서, 때로는 인문학적 소양이 필요한 시점이 오기도 한다. 이론이나 기술보다는 데이터 자체의 품질과 양이 더 중요하며, 그 데이터에서 가치를 만들어내는 것은 결국 분석가의 자질에 달렸다.
- 박효균
빅데이터에서 ‘빅’이 의미하는 양만큼 실제로 엄청난 대규모 데이터들이 생성됨에 따라 이들을 처리하고 분석하기 위한 요구사항들이 늘어갔으며, 어느 하나의 기술로 이를 해결할 수는 없었으므로 학문 간 통합은 필수적이었다. 학문 간 통합에 대한 시도는 오래 전부터 있어왔으나, 지금처럼 그 시도가 빛을 발하는 시기는 없었던 듯하다. 통계학과 전산학, 데이터 마이닝이라는 학문의 기초가 수학이라는 점을 고려해보면, 이들 간의 통합을 통해 난제를 해결하고 있는 지금의 현상은 어쩌면 필연적인 결과인지도 모른다. 이를 가능하게 한 기술로서 하둡Hadoop을 언급하지 않을 수 없다. 이 책의 번역에 한창 열을 올리고 있을 때와 비교하면 하둡의 인기가 예전만 하지 못한 것이 사실이지만, 그 누구도 빅데이터 처리의 핵심 기술이며 지금도 여전히 그러한 하둡의 중요성과 영향력을 부인하지는 못할 것이다. 이 책이 맵리듀스MapReduce를 기반으로 데이터 처리 방법을 설명하는 이유가 바로 이것이다.
통계, 전산, 데이터 마이닝 기법에 대한 학문적 기초가 없다면 갑자기 등장하는 생소한 용어들에 멈칫하게 될 순간이 많을 것이다. 그럴 때마다 해당 용어를 찾아 내용을 이해한 후 넘어가는 것도 좋고, 일단 전체적인 맥락을 이해한 후 세부적인 용어들을 정리하는 것도 좋다. 어찌 됐든 빅데이터 마이닝을 위해 이 책을 펼친 독자 여러분을 응원하며, 이를 통해 한 단계 성장하는 학생, 엔지니어, 실무자가 되길 바란다.
역자로서 용어 선택에 고심이 많았다. 통계학은 그렇다 치더라도 전산학과 데이터 마이닝에서 사용되는 용어 대부분은 한글로 번역했을 때 의미가 퇴색되거나 더 어려워지는 경우가 많았기 때문이다. 따라서 한글을 우선으로 하되, 해당 용어가 실무에서 영어로 더 많이 사용된다면 굳이 한글로 번역하지 않고 음역했다. ‘clustering’을 ‘클러스터링’으로 번역한 예가 대표적이다. 실무에서는 아무도 ‘클러스터링’을 ‘군집화’라고 하지 않는다.
- 이미정