파이썬을 활용한 베이지안 통계: 개발자를 위한 (베이지안) 데이터 분석 입문서

by SL

『파이썬을 활용한 베이지안 통계(원제: Think Bayes)』는 『불멸의 이론』을 읽고 ‘도대체 베이지안이 뭐길래 이 난리인가’ 하는 호기심이 생긴 사람, 특히 컴퓨터 프로그래머가 읽으면 딱 좋을 책이다. 베이즈 규칙의 기본부터 시작해서 점점 복잡한 문제를 베이지안 확률 모델을 이용해서 해결하는 방법을 가르쳐준다.

매 챕터를 시작할 때마다 저자는 실생활에서 만날 법한 문제를 하나씩 제시한다. 예를 들면, 스포츠 경기에서 어느 팀이 이길지 예측하거나, 퀴즈쇼에 출연해서 제시된 물건의 가격을 맞추거나, 기차 승강장에서 기다리는 승객수를 보고 다음 열차까지의 대기 시간을 추정하는 그런 문제들이다. 이들 문제에 적당한 가정을 도입해서 수학적으로 단순화하고 베이지안 추정으로 답을 찾는데, 그 과정을 따라가다 보면 현실의 문제를 어떻게 확률 분포로 모델링하는지, 데이터 분석에서 베이지안이 어떤 역할을 하는지를 자연스럽게 배울 수 있다.

이 책에서 흥미로운 점 하나는 수학 기호 대신 파이썬 코드를 통해서 확률과 분포 등 수학적인 개념을 설명하는 것이다. 수학의 언어에 비해 컴퓨터 프로그래밍 언어는 더 구체적이기 때문에 실제로 값이 어떻게 계산되는지를 이해하는 데 도움이 된다. 물론, 저자가 만든 thinkbayes 라이브러리의 함수와 그것이 돌아가는 구조를 알아야 하지만 부담된다고 할 만한 수준은 아니다.

확률과 통계적인 추정을 다루는 책이다 보니 결합분포(Joint Distribution), 한계분포(Marginal Distribution), 푸아송 분포(Poission Distribution), 신뢰구간?(Credible Interval. Confidence Interval과는 다른 것이다), 표준오차(Standard Error), 커널밀도추정(Kernel Density Estimation, KDE), 장애모수(Nuisance Parameter) 등의 개념이 등장한다. 하지만 저자는 이론적인 설명이 필요하거나 어려워진다 싶으면 그냥 이런 거다 하고 넘어간다. 아쉬울 수도 있지만, 책의 타겟을 고려하면 이런 방식은 오히려 장점이라고 생각한다. 세부적인 내용은 다른 통계학 교과서에서 충분히 설명하고 있으니, 일단은 개념과 용도만 파악하고 지나갔다가 나중에 필요할 때 깊이 공부하면 된다.

대신 그렇게 아낀 분량을 각각의 문제가 가진 특수성이나 실험에 할당한다. 가령 8장에서는 흔히 간과하기 쉬운 관측 편향 문제를 언급하는데, 아무리 그럴 듯한 가정에 적절한 모형을 사용했더라도 정작 우리가 관찰한 데이터에 편향이 있었다면 잘못된 결론을 얻게 된다. 또, SAT 점수를 보고 학생 능력을 평가하는 12장에서는 단순한 가정에서 시작해서 현실적인 가정을 추가했을 때 결과에 어떤 영향을 주는지를 비교하는데 (이 책에서는 큰 차이가 없는 걸로 나온다), 그 접근방식과 과정에도 배울 거리가 있다.

이 책을 보고 나면, 왜 베이지안이 주관적이라는 단어를 꼬리표처럼 달고 다니는지, 예측이나 의사결정 분석에서 인기가 있는지 이해할 수 있을 것이다. 구체적인 문제와 해결책 중심으로 구성되어 있어서 데이터 분석에 베이지안 방법론을 적용하려는 사람에게 좋은 가이드가 된다. 나도 읽으면서 계속 업무에서 고민하는 문제에다가 이 책에 나온 방법을 어떻게 써먹을 수 있을까를 고민했는데, 몇 가지 힌트를 얻을 수 있었다.

다만, 번역이 조금 아쉽다. 한국어로 쓰여 있으니까 쉽게 훅훅 읽을 수 있는데, 원서에는 어떻게 쓰여져 있는지 궁금한 문장들이 종종 나온다. 그럴 때는 원서가 무료 PDF로 공개되어 있으므로 바로 찾아볼 수 있다. 좋은 책이니까 오류를 수정해서 다음 판이 계속 나오면 좋겠다.

책의 스타일이 내 취향이라 누가 이런 책을 썼나 찾아보니, 저자 Allen Downey는 통계학이 아니라 컴퓨터 사이언스 교수이고, 이미 여러 책을 썼더라. 그중에서도 특히 Think Complexity가 흥미로워 보여서 다음에 읽어보고 싶다.

노란 형광펜

  • 기관차 문제처럼 데이터가 많을 때 관련 배경 지식을 사용하는 것은 매우 큰 차이를 나타낸다. 또한, 독일 탱크 문제처럼 결과에 따라서 생사가 달라진다면 알면서도 모르는 척, 객관성을 유지하는 척하는 것보다 당신이 알고 있는 모든 지식을 제안에 쏟아넣어야 할 것이다., 52p (번역에 오류가 있다. 원서를 찾아보면, 기관차 문제처럼 “데이터가 많을 때”가 아니라 “많지 않을 때”이다. 그리고 모든 지식을 “제안에 쏟아넣”는 것이 아니라 모든 정보를 “내가 원하는 대로” 사용해야 한다는 뜻이다. (But if, as in the locomotive problem, you don’t have much data, using relavant background information makes a big difference. And if, as in the German tank problem, you have to make life-and-death decisions based on your results, you should probability use all of the information at your disposal, rather than maintaining the illusion of objectivity by pretending to know less than you do.) 베이지안 추정에 있어 사전 믿음이 갖는 의미와 이를 얼마나 그리고 어떻게 활용해야 하는지에 대한 저자의 관점을 담고 있는 문단이다.)
  • 분포가 단순히 값과 확률만을 담는 그릇이 아니라 컴퓨터 계산의 기본 단위로 생각할 수 있도록 권하고자 이번에 소개한 것이다., 78p
  • 가격이 $20,000일 것이라고 생각했다면, 가격이 $24,000이라는 것을 믿어야 한다고 말하고 있기 때문이다., 89p

꼬리에 꼬리를 무는 책읽기