http://shb.skku.edu/bigs/menu3/sub01.jsp

 

빅 데이터(기계학습/패턴분석)의 수학적 이해를 위한 책들

 

- 성균관대 수학과 교수 정윤모

 

 

 

  1. 데이터 과학 (data science)

    데이터 과학에 필요한 수학

    데이터 과학 학습을 위한 책 목록

     

 

 

 

데이터 과학 (data science)


  이 분야를 폭넓게 가리키는 말은 빅 데이터(Big data), 인공지능(Artificial intelligence)이라 할 수 있고, 수학적인 부분을 추린다면 기계학습(machine learning) 또는 패턴 분석(pattern recognition/classification)으로 관심을 좁힐 수 있다. 빅 데이터의 중요성이 점점 더 증가함에 따라 데이터 과학(Data science)라고도 불리며 아래의 데이터 과학 벤 다이어그램(data science venn diagram)에서 볼 수 있듯이 수학은 데이터 과학의 핵심 요소이다.

 

 

  여기서 Hacking Skills이란 컴퓨터 프로그래밍 능력, 특히 수치계산 코딩 능력, 알고리즘 사고 능력이라고 볼 수 있고, substantive expertise는 데이터가 어떻게 얻어졌으며 어떤 내용과 정보를 가지고 있는지, 데이터 자체에 대한 지식을 말한다. 다른 말로는 domain knowledge라고도 할 수 있다. 자세한 내용은 다음 Drew Conway의 홈페이지에서 보기 바란다.

http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram

 

 

 

 

데이터 과학에 필요한 수학


  빅 데이터 또는 데이터 과학의 필수 수학은 확률/통계(Probability/Statistcs), 수치선형대수(Numerical Linear Algebra), 최적화(Optimization)로 요약할 수 있다. 데이터 과학 벤다이어그램에서 hacking skill은 프로그래밍 능력이라고 줄여 말할 수 있는데, R 또는 Python, 혹은 두 언어를 다 사용할 수 있는 기본적인 프로그래밍 능력을 갖추면 된다.

 

 

 

수학 지식이 필요한 순서를 도식적으로 나열한다면 아래의 도표로 표현할 수 있다.

 

 

 

 

 

데이터 과학 학습을 위한 책 목록


  이 글은 빅 데이터 분야의 지식을 갖추기 위해서 볼 만한 책들을 골랐으며, 가급적 무료로 인터넷을 통해서 받을 수 있는 책들을 골랐다. 수학과 학부 3, 4 학년 또는 대학원을 진학하는 학생의 수학 실력을 가정하고 책을 선정했다. 무엇을 배우려고 하면, 최소한의 기본 지식이 있어야 한다.

 

  책의 첫 장부터 마지막 장까지 읽는 것은 절대로 추천하지 않는다. 소설 읽기가 아니다. 시간 낭비다. 자신에게 필요한 것이 뭐고 무엇을 읽어야 하는지 파악하라. 필요했을 때 배우고 사용한 지식이 제대로 배운 지식이고 오래간다. 가장 중요한 것은 ‘무엇을 알고 있는가’가 아니라 ‘무엇을 할 수 있는가’다.

 

  책을 고를 때 너무 두꺼운 책들은 좋지 않다. 특히 원서는 영어가 능숙하다 하더라도 독해능력과 속도가 영어권 사람들에게 비해 현저하게 떨어질 수밖에 없다. 따라서 말로 풀어서 길게 설명한 책보다는 핵심만 간략하게 설명하고 수식과 그림, 표로 잘 설명된 책을 선택하는 것이 좋은 방법이다. 백과사전식으로 포괄적으로 정리된 책보다는 강의 교재에 가깝게 간략하게 핵심만 수록돼 있는 책을 선택하는 게 좋다. 어쩔 수 없이 장황한 책을 볼 때는 자신에게 필요하고 중요한 부분을 선택적으로 잘 추려서 읽는 힘이 필요하다. 모르는 것이 생길 때마다 필요한 부분만 찾아서 보는 것도 빨리 잘 배울 수 있는 방법이다.

 

  유투브(utube)에 올라온 짧은 강의, 인터넷에서 받을 수 있는 강의 노트, 강의 슬라이드가 빠른 시간에 핵심 내용을 파악하거나 꼭 필요한 부분이 무엇인지 아는데 좋다. 대규모온라인무료강의(MOOC)를 이용하는 것도 좋은 방법이다.

 

  경험과 호불호가 영향을 주었겠지만, 인터넷의 여러 정보를 참조했으며 널리 쓰이는 책들을 위주로 선정하였다. 인터넷에서도 비슷한 내용의 목록을 찾을 수 있을 것이며 목록에 많은 유사성이 있음을 확인할 수 있을 것이다. 중요함에도 부주의, 실수, 무지로 인해 빠진 책들의 추천을 언제든지 환영하며 인터넷 링크가 잘못됐거나 정보가 바뀐 것이 있으면 알려주면 고맙겠다.

 

  다음 링크의 책 목록들도 유용하다.

 

UC Berkeley 통계학과의 대학원생들이 만든 통계학 추천 책 목록이다.

https://www.stat.berkeley.edu/mediawiki/index.php/Recommended_Books#Theoretical_Statistics

또 다음은 데이터 과학 분야의 무료 책들을 잘 모아 놨다. 이 글에서 추천하는 책들의 링크도 있을 것이다.

https://www.analyticsvidhya.com/blog/2016/02/free-read-books-statistics-mathematics-data-science/

 

 

  수학 지식이 어느 정도 된다면 바로 시작해도 그만이다. 공부하다가 수학이 부족하다고 느끼면 부족한 부분을 매우고 다시 공부해도 좋다. 패턴분석이던 수학이던 필요한 부분이 생기면 그때그때 적절히 공부하라. 최근 이 분야가 가장 뜨거운 감자이므로 인터넷에 좋은 강의 교재, 책, 또는 대규모온라인무료강의(MOOC)같은 온라인 강좌가 많이 있으니 이를 이용하는 것도 좋은 방법이다.

 

Pattern Recognition and Machine Learning, by Christopher Bishop, Springer

- 대표적인 교재이지만 조금 두껍고 장황하다. 영어가 능숙하다면 말로 잘 풀어서 설명했으므로 초보자가 이해하기 좋지만 그렇지 않다면 읽는데 시간이 걸린다.

 

The Elements of Statistical Learning, by Trevor Hastie, Robert Tibshirani, and Jerome Friedman, Springer

http://statweb.stanford.edu/~tibs/ElemStatLearn/

- 대학원 수준의 표준 교재이다. 이 분야의 바이블같은 책이지만 초심자에게는 어려울 수 있다.

 

An Introduction to Statistical Learning: with Applications in R, by Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani, Springer

http://www-bcf.usc.edu/~gareth/ISL/

- 위 책의 저자가 쓴 학부 수준의 교재로 R을 같이 공부할 수 있다.

 

Pattern Classification, by Richard O. Duda, Peter E. Hart, and David G. Stork, Wiley-Interscience

- 과거 이 분야에서 바이블처럼 보던 교재이다. 번역도 돼있고, Bishop 책보다는 읽기 쉬울 수 있다.

 

Data Mining And Analysis, by Mohammed J. Zaki, and Wagner Meira Jr, Cambridge University Press

http://www.dataminingbook.info/pmwiki.php/Main/BookDownload

- 이 분야는 책으로 출판했지만 온라인에 공개되어 있는 경우가 많은데 이런 책들을 이용하는 것도 좋은 방법이다. 개인적인 온라인 사용을 전제로 다운로드 받을 수 있다.

 

Deep Learning, by Ian Goodfellow, Yoshua Bengio, Aaron Courville, MIT Press

https://github.com/HFTrader/DeepLearningBook

- 많은 기계학습의 문제들에서 가장 좋은 결과를 내고 있으며 최근 Alphago 등을 통하여 일반인들도 알려진 심화학습(deep learning)의 학습서이다. 2016년 연말에 출간될 예정이다.

 

Understanding Machine Learning: From Theory to Algorithms, by Shai Shalev-Shwartz, Shai Ben-David, Cambridge University Press

http://www.cs.huji.ac.il/~shais/UnderstandingMachineLearning/

- 기본 내용을 이해하고 좀 더 수학적인 입장에서 접근할 때 좋은 책이다.

 

A Probabilistic Theory of Pattern Recognition, by Luc Devroye, Laszlo Gyorfi, and Gabor Lugosi, Springer

- 패턴 분석의 본격적인 수학 이론 도서라고 할 수 있다.

 

 

  기계학습/패턴 분석 교재들의 앞부분에 정리되어 있는 확률/통계 부분도 도움이 된다. 기계학습/패턴 분석에 필요한 확률/통계가 잘 정리되어 있고 특히 이해를 돕는 좋은 그림들이 많다. 예를 들면 패턴 분석/기계학습에서 추천한 다음 책이 그러하다.

 

Data Mining And Analysis, by Mohammed J. Zaki, and Wagner Meira Jr, Cambridge University Press

http://www.dataminingbook.info/pmwiki.php/Main/BookDownload

www.cs.rpi.edu/~zaki/dataminingbook

 

All of Statistics: A Concise Course in Statistical Inference, by Larry Wasserman, Springer

- 기계학습, 데이터 과학 분야의 응용을 고려한 기초 통계 교재이다.

 

Theoretical Statistics, by Robert W. Keener, Springer

- 대학원 수준의 기본 통계 교재이다.

 

확률은 측도론(measure theory)이 나오지 않는 기초 책들은 소개하지 않겠다. 인터넷에서 구할 수 있는 학교/강의 교재, 비디오 교재, 자료들을 참고하라. 우연(random)과 확률변수(random variable)의 의미를 깨닫는 것이 중요하다. 그리고 대수정리(Law of large number), 중심극한정리(central limit theorem)와 같은 기본 이론의 의미를 깨닫는 것이 필요하다.

 

Probability with Martingales, by David Williams, Cambridge University Press

- 우연과 확률변수의 의미를 깨달았고 좀 더 수학적으로 접근하고 싶다면 측도론을 바탕으로 한 책들을 공부해야 한다. 간략하게 요점이 잘 정리돼 있다.

 

Probability: Theory and Examples, by Rick Durrett, Cambridge University Press

https://services.math.duke.edu/~rtd/PTE/pte.html

- 측도론 기반의 대학원 수준의 표준 교재이다. 여러 학교에서 교재로 사용한다.

 

기본 확률/통계를 이해했다면 확률보행(random walk), 마르코프 연쇄 등의 (Markov chain)확률과정론(Stochastic process)의 기본 내용을 알아두는 것이 좋다.

 

Markov Chains, by Norris, Cambridge University Press

- 마르코프 연쇄의 좋은 입문서이다.

 

Introduction to Stochastic Processes, by Gregory F. Lawler, Chapman and Hall

- 기본적인 확률과정론 교재이다.

 

Markov Chain and Mixing Times, by Levin, Peres and Wilmer, American Mathematical Society

http://pages.uoregon.edu/dlevin/MARKOV/
- 기본적인 확률과정론 교재이며 인터넷에서 다운받을 수 있다.

 

 

  정형 데이터는 행렬로 표현된다. 따라서 행렬의 성질을 이해하고 계산할 수 있는 능력은 데이터 처리의 기본이다. 또한 모든 과학계산은 결국 수치선형대수의 문제로 귀결된다고 해도 틀린 말은 아니다.

 

Numerical Linear Algebra, by Lloyd N. Trefethen, and David Bau III, SIAM

- 수치선형대수의 표준 교재이다.

 

Applied Numerical Linear Algebra, by James W. Demmel, SIAM

- 표준 교재이며 모델링과 응용 측면이 잘 소개돼 있다.

 

Iterative Methods for Sparse Linear Systems, by Yousef Saad, SIAM

http://www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf

- 거대 희소 행렬(large sparse)을 풀기 위한 반복법(iterative method)에 대한 기본 교재이다. 희소성과 반복법은 빅 데이터를 처리하는 기본 아이디어들이다.

 

Matrix Computations, by Gene H. Golub, and Charles F. Van Loan, Johns Hopkins University Press

- 행렬 계산의 방법들을 집대성해놓은 고전이다.

 

Matrix Analysis, by Roger A. Horn, and Charles R. Johnson, Cambridge University Press

- 행렬 이론을 본격적으로 공부할 수 있는 이론 도서이다. 국내에 수입되어 있다.

 

 

  패턴 분석, 기계학습에서는 많은 경우 확률이 가장 높은 예를 답으로 찾기 때문에 최적화 문제가 근본적으로 나온다.

 

Convex Optimization, by Stephen Boyd, Lieven Vandenberghe, Cambridge University Press

http://stanford.edu/~boyd/cvxbook/

- 기본 교재로 인터넷에서 다운로드 받을 수 있다. 공대 대학원 교재이기도 함으로 깊은 수학적 배경 없이 읽을 수 있다. 이론적 배경이 나오는 5장, 알고리즘이 나오는 9, 10, 11장만 읽으면 충분하다.

 

Nonlinear Programming, by Dimitri P. Bertsekas, Athena Scientific

- 대학원 수준의 교재이다. 좀 더 최적화를 깊게 공부할 수 있는 책이다.

 

Numerical Optimization, by Jorge Nocedal, Stephen Wright, Springer

- 대학원 수준의 교재이다.

 

Convex Analysis, by Ralph Tyrell Rockafellar, Princeton University Press

- 볼록 해석(convex analysis)의 이론이 필요하거나 모르는 부분이 생기면 참조해야 하는 책이다. 볼록 해석(convex analysis)의 고전이다. 교과서로 사용하기에는 굉장히 형식적이며 읽기 딱딱하다. 참고서로 생각하라.

 

 

  벡터 미적분학은 삼각함수나 미분적분학처럼 기본으로 알고 있어야하기 때문에 위에서 언급하지 않았다. 하지만 문제는, 특히 수학과 출신들이 이 과목을 잘 모르고 있다는 점이다.

행렬을 다룬다는 것은 다차원의 선형 분석과 깊이 관련돼 있다. 따라서 다차원 벡터의 이해와 분석에 대한 기본 지식은 필수적이다. 또한 다차원의 기울기(gradient), 발산(divergence), 회전(curl)과 같은 기본개념들은 확률보행, 확산과정(diffusion process)와 같은 확률과정론적 접근과 데이터의 기하학을 이해하기 위한 필수 요소들이다.

 

Vector Calculus, by Jerrold E. Marsden, and Anthony Tromba, W. H. Freeman

- 학부 2-3학년 수준의 표준 교재이다. 판이 올라가면서 점점 두꺼워지고 장황해 지는 경향이 있다.

 

Advanced Engineering Mathematics, by Erwin Kreyszig, Wiley

- 이 책의 벡터 미적분학 부분만 보는 것도 좋은 방법이다. 물리적 의미와 함께 잘 설명돼있다.

 

 

기존의 컴퓨터공학과 교육과정 때문에 C/C++나 Java를 알고 사용해야 한다고 생각하는 사람들이 많은데 이것은 대단한 오해다. 하드웨어에 최적화시켜 줄 수 있는 언어가 아니라 추상적인 작업을 할 수 있고 관련 패키지, 라이브러리가 많이 있어서 개발자 시간을 줄이는 것이 중요하다. 저급언어(low-level programming language)에 가까운 언어보다는 고급 언어(high-level programming language), 하드웨어에 최적화하기 쉬운 언어보다는 인간이 쓰기 편한 언어를 사용하라는 말이다. 자신의 아이디어를 구현하고 옳은지 확인하는 게 우선이다. 빠르게 실행되는 코드는 그 다음이다. 정말 빠른 코드가 필요하면 코딩 전문가에게 맡겨 버리면 그만이다. 다른 글 ‘컴퓨터 언어 빨리 배우기’도 참조하기 바란다.

 

다음은 어떤 언어들이 데이터 분야에 사용되는지에 관한 2014년 통계 자료이다.

http://www.kdnuggets.com/2014/08/four-main-languages-analytics-data-mining-data-science.html

 

입문을 위한 언어로는 R 또는 Python, 혹은 두 언어 다 아는 것으로 충분하며, 이 두 언어가 최종으로 필요한 언어가 될 가능성도 높다. 좀 더 하드웨어에 관련해서 들어가고자 하면 데이터베이스 관리를 위한 SQL, 클러스터에서 분산 처리를 위한 Hadoop 정도를 들 수 있을 것이다. R과 Python의 장단점과 비교를 알고 싶다면 아래의 링크를 참조하기 바란다.

http://dataconomy.com/r-vs-python-the-data-science-wars/

http://www.kdnuggets.com/2015/05/r-vs-python-data-science.html

 

R에 대한 참고 서적은 올리지 않겠다. R은 통계에 특화된 언어로 어쩌면 프로그래밍 언어라기보다는 패키지에 가까워서 몇 시간 안에 기본적인 사용법을 습득할 수 있다. R 홈페이지 의 매뉴얼 페이지에서

https://cran.r-project.org/manuals.html

‘An Introduction to R’ 정도 빠르게 읽고 사용해 보면 충분할 것이다.

패턴분석/기계학습에서 소개한 An Introduction to Statistical Learning: with Applications in R을 공부하면서 같이 배우는 것도 한 방법이다.

 

amazon.com에서 python을 검색하면 Mark Lutz이 쓴 Learning Python이 첫 번째로 나오는데, 1600 페이지에 달한다. 우리말도 아닌 영어로 된 1600 페이지 짜리 책을 컴퓨터 언어를 배우기 위해서 읽는다는 건 미친 짓이다. 한글로 된 몇백 페이지나 되는 책들도 마찬 가지다. 특히 베스트셀러라는 것에 속지 마라. 베스트셀러는 대부분 컴맹들을 위한 책이다. python은 쉽게 배울 수 있는 언어다.

 

컴퓨터 언어도 언어다. 외국어를 습득하기 위해서는 읽고 외우는게 아니라 계속해서 말하고 써야 늘듯이, 컴퓨터 언어도 계속해서 프로그래밍을 해봐야 는다. 따라서 정말로 문법을 모른다면 깔끔하게 짧게 정리된 강의교재나 tutorial을 인터넷에서 찾아서 보고 구현해 보라. 다음은 python의 문서 페이지이다. 본인 수준에 맞는 적절한 내용을 찾아보라.

https://www.python.org/doc/

 

tutorial도 참조하라.

https://docs.python.org/3/tutorial/index.html

https://docs.python.org/3/download.html

개발자인 Guido Van Rossum이 만들었는데, 언어를 개발한 철학이 느껴지지만 쉽지는 않다.

 

범용 언어로 python을 배우기보다는 과학계산, 데이터 처리용으로 배워야 한다는 것을 명심하라. 그런 의미에서는 다음의 과학계산 강의 노트를 추천한다.

 

Python Scientific lecture notes-EuroScipy tutorial team

www.scipy-lectures.org/_downloads/PythonScientific-simple.pdf

 

데이터 해석관련으로는 다음의 책을 추천한다. 번역본도 있다.

 

Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython, by Wes McKinney, O'Reilly Media

 

 

  데이터 과학의 응용을 생각한다면 무인자동차처럼 신호, 이미지, 비디오, 영상 등에 관련된 다양한 기술들이 필요하다. 또한 소셜 네트워크를 분석하려면 그래프 이론이 필요하고, 좀 더 정확한 계산을 하고자 한다면 과학계산의 이론이 필요하다. 중요해 보이는 책 몇 권을 선정했다.

 

Digital Image Processing, by Rafael C. Gonzalez, and Richard E. Woods, Pearson

- 영상처리 기본 교과서이다. 기계학습 또는 인공지능의 기본 목표 중 하나가 인간 시각의 이해와 모방이다. 국내에 수입되어 있다.

 

Computer Vision: Algorithms and Applications, by Richard Szeliski, Springer

http://szeliski.org/Book

- 컴퓨터 비전에 대한 기본 교과서. Image Processing이 전자공학의 접근이라면 컴퓨터 비전은 컴퓨터 공학의 접근 방식이다.

 

A Wavelet Tour of Signal Processing, Stephane Mallat, Academic Press

- Wavelet과 신호 처리(signal processing)에 관한 명저이다. 영상 처리, 기계학습, 희소성 이론 등 다양한 내용을 포괄한다.

 

Spectral graph theory, by Fan R. K. Chung, American Mathematical Society

- 그래프 스펙트럼 이해에 기본 교과서이다. 처음 4장은 아래의 링크에서 받을 수 있다.

http://www.math.ucsd.edu/~fan/research/revised.html

 

Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, MIT Press

- 알고리즘에 관한 기본 교과서이다. C/C++ 또는 Java가 어쩌고저쩌고 떠들지 말고 알고리즘 사고력이나 늘릴 것. 번역본이 있다.

 

Scientific computing, Michael T. Heath, McGraw-Hill

- 과학계산/수치해석의 기본 교과서이다. 학부 4학년 혹은 대학원 신입생 수준의 책이다.

 

Numerical Analysis by Richard L. Burden, J. Douglas Faires, and Annette M. Burden, Cengage Learning

- 학부 수준 과학계산/수치해석의 교과서이다.

 

Elementary Differential Geometry, by A.N. Pressley, Springer

- 기본적인 미분기하학 교재이다. 데이터를 잘 다루기 위해서는 다차원 공간의 기하학을 이해할 줄 알아야 한다. 특히 데이터의 비선형성이 강조될 때는 더욱 그러하다. 

 

 

 

 

Posted by uniqueone
,