더북(TheBook)

1.4.2 우리의 첫 번째 망치를 소개한다: PyMC

PyMC는 베이지안 분석 프로그래밍을 위한 파이썬 라이브러리다.5 PyMC는 빠르고 관리가 잘 되는 라이브러리다. 유일한 단점은 문서화가 부족한 부분이 있다는 것이다. 특히 초보와 전문가 사이의 격차를 메꿔줄 문서가 부족하다. 이 책의 주요 목표 중 하나는 이 문제를 해결하고, PyMC가 얼마나 멋진지 보여주는 것이다.

우리는 PyMC를 사용해 이 문제를 모델링할 것이다. 이런 류의 프로그래밍을 확률적 프로그래밍(probabilistic programming)이라고 하는데, 이것은 마치 랜덤하게 코드가 만들어진 것 같은, 사용자에게 혼란을 주거나 겁을 줄 수 있는 부적절한 이름이다. 코드는 마구잡이가 아니다. 우리가 만든 확률모형이 프로그래밍 변수를 모델의 구성 요소로 사용하고 있다는 점에서 확률적이라는 것이다. 모델의 구성 요소는 PyMC 프레임워크 내에 있는 1차적인 기본 요소다.

크로닌은 확률적 프로그래밍을 다음과 같이 매우 설득력 있게 설명한다.6

 

다르게 생각하자: 순차적으로 앞으로만 실행하는 전통적인 프로그램과 달리 확률적 프로그램은 앞과 뒤 양방향에서 실행된다. 모델 공간, 즉 세상에 대한 가정의 결과를 산출하기 위해 앞방향으로 계산하고, 가능한 설명들을 줄이기 위해 데이터를 가지고 역방향으로 실행한다. 실제 많은 확률적 프로그래밍 시스템은 앞과 뒤로 번갈아 작동하며 최상의 해설을 효율적으로 끌어올 것이다.

 

확률적 프로그래밍이란 용어는 혼란을 주므로 자주 사용하진 않겠다. 대신 간단히 프로그래밍(programming)이라고 부를 것이다(이게 사실이니까).

PyMC 코드는 읽기 쉽다. 단 하나 새로운 것은 구문일 것이다. 코드를 중간에 멈추고 각 섹션을 설명하겠다. 모델의 컴포넌트(τ, λ1, λ2)를 변수로 나타내는 것을 기억하라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.