파이썬을 활용한 베이지안 통계 - 동전 던지기와 하키 승률로 배우는 데이터 분석, 2판
한빛미디어 “나는 리뷰어다” 활동을 위해서 책을 제공받아 작성된 서평입니다.
TL;DR
- 베이지안 이론(bayesian theory)과 실습을 병행해서 진행할 수 있음
- 개별 장마다 제시된 문제를 베이지안 이론을 활용해서 해결하는 과정을 소개
- 책에서 소개하는 거의 모든 내용을 파이썬(python)을 활용하여 구현
- 베이지안을 처음 접한다면, 전체 지도를 그리는데 도움이 됨
- 개별 장마다 소개된 내용이 다른 장과 적당히 분리되어 있어서 하나의 주제로 다룰 수 있음
- 문제에 대한 해결책을 제시하기 때문에 학습에 큰 어려움이 없음
- 개별 장에 대한 해결방식을 프로그래밍을 활용하기 때문에 이론에 대한 부담감이 적음
- 선행 지식이 필요
- 고등학교 수준의 통계(평규, 분산, 확률)에 대한 이해가 필요
- 파이썬과 Numpy를 사용할 수 있어야 함
MCMC를 공부하기로 했던 그 때
알파고 출시 이후에 MCMC(Markov Chain Monte Carlo Method)에 관심을 가지고, 스터디를 진행할 때 이책의 1판을 가지고 진행했다. 당시에는 MCMC를 배우고 싶었는데, 통계 지식이 전혀 없었고 통계 이론을 코드를 기반으로 다루고 싶다는 요청이 많아서 교재를 선정했다. 사실 당시에 이 책을 제외하고 파이썬으로 코드를 구현하면서 진행할 수 있는 책도 없었던 것 같다.
당시도 그렇고 지금도 그렇지만 통계를 체계적으로 교육받지 않아서 완벽하게 이론을 흡수하는게 어렵다고 판단했다. 그래서 베이지안 이론이 가지는 큰 개념과 문제해결 방식을 흡수하기 위해서 노력했다. 무엇보다 베이지안을 학습하다 보면 베이지안이 가지고 있는 몇가지 전제가 쉽게 받아들여지지 않아서 고생이었는데, 교재가 파이썬으로 다 구현되어 있어서 이론과 별개로 문제 해결 방법에 대해선 어느정도 ‘감’을 잡았다 생각하고 베이지안에 대한 학습을 끝냈다. 당시에는 MCMC에 대한 호기심이 너무 컸기 때문이다.
베이지안 통계를 처음 진행하신다면!
시간이 제법 흘러서 한빛미디어에서 제공받은 2판을 받았다. 이 책을 받고 내가 학습했던 방식은 기존에 가지고 있던 코드를 업데이트 하는 것이었다. 나는 1판의 경험이 있고, 당시에 만들어둔 코드가 있어서 2판을 읽으면서 코드를 업데이트 하는 방향으로 학습을 진행했다.
2판의 경우 1판에 비해서 초급자를 배려해서 훨씬 많은 것을 설명하고 있다. 이전에는 다른 교재, 영문 서적 어떤 것은 논문을 참고해야 했던 것이 비해서 2판은 기본적으로 요구되는 이론에 대해서 적당한 분량을 추가적으로 다루고 있다.
MCMC 등과 같은 실제 많이 활용되는 분야에 대한 설명도 곁들이고 있고, PyMC3를 사용하고 있는 등 코드 자체가 오래되지 않아서 큰 무리없이 진행할 수 있다. 책의 분량이 늘었다고 생각했는데, 기본적인 이론 및 응용에 대한 설명이 많이 늘어났기 때문이라 생각된다.
나만의 팁!
프로그래밍으로 베이지안 통계를 배우고 이해한다.
이 책으로 베이지안 이론을 학습하는 분들에게 약간의 팁을 드려보자면 통계와 코드를 머리속에서 밀어내고 빠르게(이게 핵심이라 생각한다!) 읽으면서 개별 장에서 제시하는 문제를 해결하는 과정을 자신만의 방식으로 도식화 시켜보길 권한다. 동일한 문제를 다루는 장을 묶어서 하나의 스토리로 엮에서 이해하면 훨씬 많은 도움이 된다. 이론은 다른 교재를 통해서 충분히 보충할 수 있지만, 프로그래밍으로 베이지안 통계를 접하는 경험은 쉽지 않다. 그렇게 만들어진 자신만의 스토리를 책에 소개된 코드를 활용해서 해결 과정을 채워나가다 보면 베이지안 이론을 기반으로 한 다른 모델을 학습하는데 훨씬 수월할 것이라 생각한다.
이 책을 통계지식이 전무 상태로 학습했던 시절에 우리가 이 책을 통해서 배운 것은 ‘베이지안 이론’에 대한 접근 방법이었다. 당시나 지금이나 베이지안을 기반으로 한 통계 모델의 경우 이론과 코드가 별개로 돌아가는 경향성이 있다고 생각한다. 이론에서 말하는 분포 등에 대한 논의를 뒤로 하고 PyMC3와 같은 라이브러이에선 데이터를 읽고 해당 적당한 함수를 입력하면 대체로 답이 나온다. 정확한 답인지 아닌지에 대해선 논의가 필요하지만 여튼 결과가 나온다.
그런데 이게 이론과 정확하게 일치하는 것일까? 하는 의문이 들고한다. 대부분이 이 참을 수 없는 모호함을 해결하기 위해서 통계 기초를 배울 수 있는 교재를 찾게 되는데, 이 경우 학습분량이 엄청나게 늘어난다. 겉잡을 수 없이 폭증하는 학습의 시대에서 기초 통계를 학습한다는 것은 쉽지 않은 선택이다. 하지만 이 책은 코드가 잘 작동하기 때문에 책에서 가이드하는 방식으로 문제를 해결하는 방법을 먼저 익혀두고 그것을 기반으로 필요한 부분을 채워나가면 학습량을 조금 줄일 수 있을 것이다.