본문 바로가기

파이썬을 활용한 베이지안 통계




이 책은 누구를 위한 책인가?

200페이지 정도되는 기술서적 치고는 매우 얇은 책이다. 보통의 C언어 기본서 같은 경우는 200페이지라면 거의 일주일 만에 볼 수 있지만, 이 책은 베이지안 공식을 활용해서 삶속의 다양한 문제들을 어떻게 푸는지 재미있게(?) 설명한 책인지라, 파이썬과 통계학을 동시에 알아야하는 책이다. 최근에 유행하는 학문트렌드인 융합의 장르가 되겠다. 

그러면, 파이썬이 먼저인가 통계가 먼저인가? 이 책은 파이썬에 대해서는 거의 가르쳐주지 않는다. 책에 있는 예제를 풀기 위해서는 책의 저자 앨런 B. 다우니가 만든 'thinkbayes.py' 라는 파이썬 모듈을 사용해야하는데, 이 모듈은 numpy라는 모듈과 scipy 그리고 matplotlib이라는 모듈에 의존성이 있다. 그래서 파이썬을 잘 모르는 사람들은 아마 예제를 돌려보는데만 시간을 상당히 투자해야 할 것이다. 이 책을 쓴 저자는 파이썬이 쉬워서(물론 쉬운 언어에 속하지만) 파이썬을 택했고, 더구나 베이지안을 잘 설명하기 위해 일상생활의 예제들을 가지고 설명을 해두었다. 

이책의 두께가 200페이지 가량 있다는 것이 의미하는 것은 이 책만으로 설명이 부족한 부분이 많다는 것이다. 그렇다면 이 책을 술렁 술렁 넘겨 볼 수 있는 독자는 통계학을 알면서(베이지안 통계) 그것을 프로그래밍으로 어떻게 표현해야 하는지 궁금한 사람이나 파이썬에 매우 능숙한데 통계학은 기본(고등학교 때 배우는 확률에 관한 것들)만 알고 있는 프로그래머가 되겠다. 아마 생각에 앞의 사람들도 술렁 술렁은 못넘길것 같다. 실제로 통계과에서 베이지안을 학부 2학년때부터 배운 나조차도 술렁술렁은 넘기기 힘든 문제들이 많다. 

그 이유로 책이 얇아서 설명을 정말 최소한 만 해놓은 경우가 많고, 소스에 대한 설명도 있긴 하지만, 이게 어떻게 돌아가는 건지 알려면 생각이 조금 필요하다. 

그렇다면 이 책은 어떻게 읽으면 좋을까? 

이 책은 요리책처럼 따라서 해보는 책도 아니고, 단순히 지식을 열거해 놓은 책도 아니다. 기본적인 지식이 있다는 가정하에 (그 기본적인 지식은 물론 파이썬과 통계학이다) 그 지식을 어떻게 사용할지에 대해 앨런 B. 다우니가 자신의 지혜를 잘 펼쳐놓은 책이다. 지혜를 물려받기 위해서는 그 지혜를 음미해야한다. 천천히 곱씹으며 책의 저자가 한말이 무엇인지 잘 읽어보는 것이 중요하다. 프로그램이야 오타없이 돌리면 값이 나오지만, 그것이 왜 그렇게 되는 것인지 이해할 필요가 있고, 그리고 통계학을 잘모르는 사람이라면 우도(likelyhood) 같은 말이나 조건부 확률 이런 용어들에 대해 익숙해질 필요가 있다. 

위에 적어 놓은 말을 한마디로 줄이면, 쉽지 않은 문제들이 대부분이므로 천천히 이해하면서 읽자. 가 되겠다. 개인적으로는 읽으면서 이해가 안되는 것들은 위키피디아나 구글에서 찾아서 힌트를 많이 얻었다. 저자가 운영하는 블로그나 영분 pdf판 서적은 무료로 받을 수 있도록 해놓았기에 한글로 이해가 잘 안될 때는 영어로 보기도 했다. 

thinkbayes 홈페이지 : http://www.greenteapress.com/thinkbayes/

원저자의 블로그 : http://allendowney.blogspot.kr/

설치관련

위에서도 말했지만, 파이썬과 통계를 안다고 가정한 책이기에 좀 불친절한 부분들이 있다. 특별히 파이썬의 의존성이 걸리는 부분들을 설치하는 부분이나 저자가 만든 모듈을 다운 받을 때 일일이 찾아보거나 주소창에 쳐서 다운받고 했는데, 귀찮은 이들을 위해 소스를 받을 수 있는 링크를 걸어둔다. 

http://thinkbayes.com/thinkbayes.py

http://thinkbayes.com/thinkbayes_code.zip

https://github.com/AllenDowney/ThinkBayes

thinkbayes는 numpy, scipy, matplotlib에 의존성이 있는데, 각각 설치를 해야한다.

나는 아래 두 링크를 참고해서 설치를 했다.

mac인 경우 scipy는 dmg바이너리를 받아서 설치하고, 
numpy는 easy_install numpy 또는 pip install numpy
matplotlib도 동일하게 easy_install matplotlib 또는 pip install matplotlib 로 설치가능하다.

읽고 난뒤의 소감

솔직히 파이썬이라는 타이틀의 제목과 목차와 책의 두께를 보고 '그냥 재미있게 심심할때 볼 수 있겠네'라는  착각을 했었다. 학부때의 기억력을 마구 마구 끄집어 내어서 집중해서 봐야하는 책이었다. 이 책하나를 본다고 통계를 실생활에 적용할 수 있는 수준까지는 되지 않겠지만, 통계와 우리의 주변에서 일어나는 사건들이 많이 연관이 되어 있음을 알 수 있는 책이었다. 간만에 뇌가 자극을 받으며 뇌세포가 활성화 되는 느낌을 받도록 해준 책이다. 다만 영어로 된 책의 썰렁한 농담은 뭔가 한국어로 번역하니 왜 저말이 있는지 알수 없는 경우가 많아서 어색한 느낌도 좀 들었다. 게속 해서 이런 융합형 책들이 나오면 좋겠다.





'' 카테고리의 다른 글

Effective Unit Testing  (0) 2014.11.02
자바스크립트 자료구조와 알고리즘  (1) 2014.09.29
뉴욕의 프로그래머  (1) 2008.10.25