읽기일기

Think Bayes (4) 추정 2


파이썬을 활용한 베이지안 통계, 앨런 B. 다우니 지음, 권정민 옮김/한빛미디어

4.1 유로 문제

데비잇 맥케이(David MacKay)는 다음 문제를 제안했다.

벨기에 1유로 동전으로 실험을 햇는데, 축을 중심으로 250번 회전을 시켰을 때 앞면은 140회, 뒷면은 110회 나왔다. LSE(런던 경제 대학)의 교수 베리 브라이트(Barry Bright)는 ‘동전이 한 쪽으로 기울어진 게 아니라면, 결과가 이렇게 치우칠 확률은 7% 미만이다.’라고 말햇다. 이 데이터로 동전이 한 쪽으로 기울엇다는 것을 증명할 수 있을까?

이 질문에 답하기 위해서는 2단계를 거쳐야 한다. 첫 번째는 동전이 앞면이 나올 확률을 추정하는 것이다. 두 번째는 데이터가 동전이 기울엇다는 가설을 지지하는지 평가하는 것이다.

사용한 코드는 http://thinkbayes.com/euro.py 에서 받을 수 있다.

동전을 돌렸을 때 앞면이 나오면서 넘어갈 확률을 x라고 하자. x는 동전의 무게 등 물리적 특성에 따라 달라질 것이다. 베이즈 이론을 적용해서 데이터 관측을 통해 x를 추정할 수 있다.

Hx가 앞면이 나올 확률이 0부터 100까지 중 x%라는 가설일 때 가설 101을 정의하여 보자. Hx의 확률은 모든 x에 대해서 동일하다는 균등 사전 분포에서 시작할 것이다.

우도 함수는 Hx가 참이라면, 앞면이 나올 확률을 x/100이고 뒷면이 나올 확률은 100 - x/100이다.

다음은 스윗을 만들고 갱신하는 코드이다.

4.2 사후 확률 요약하기

사후 확률 분포를 요약하는 방법에는 여러가지가 있다. 한 가지 방법은 사후 확률 분포에 가장 근접한 값을 찾는 것이다. thinkbayes 클래스에서는 이런 기능을 하는 함수를 제공한다.

이렇게 계산할 경우 결과는 56으로 이는 앞면이 관측될 비율값인 140/250 * 100 = 0.56 이기도 하다. 따라서 이 값은 모수의 최대 우도 추정 값이다.

또한 평균과 중간값을 구해서 사후 확률을 요약할 수도 있다.

마지막으로 신뢰 구간을 계산할 수 있다.

그럼 원래 문제로 돌아와서, 신뢰 구간을 살펴보면 (51, 61)이 계산된다. 즉 사후 신뢰구간이 50%를 포함하고 있지 않으므로 동전히 평평하지 않음을 알 수 있다.

4.3 사전 분포 범람

앞에서 균등 사전 분포를 다뤘지만, 실은 동전이 심각하게 한쪽으로 기울였다고는 생각하기 힘들기 때문이다. 따라서 50%에 가까운 x의 값에 더 높은 확률을 부여하는 사전 확률을 골라야 한다.

예로 삼각 사전 확률을 만들어보자.

하지만 이렇게 사전 확률을 다르게 사용하여도 사후 확률은 매우 유사하게 계산된다. 이것이 바로 사전 분포 범람에 대한 예이다. 데이터가 충분하다면 서로 다른 사전 확률을 가지고 시작한다고 해도 동일한 사후 확률로 수렴하는 경향이 있다.

4.4 최적화

실행 시간을 고려하였을 때 속도를 향상시켜보자.

첫 번째 방법은 스윗을 정규화하는 횟수를 줄이는 것이다. 원래는 한 번 돌 때마다 한 번씩 Update를 호출한다.

Update코드는 다음과 같다.

매 업데이트 시 가설을 반복하며 Normalize를 호출한다. 정규화 전에 업데이트의 모든 내용을 수행하면 시간을 절약할 수 있다. Suite에서는 이 과정을 수행하는 UpdateSet이라는 메서드를 제공한다.

이 함수는 다음과 같이 호출한다.

Likelihood또한 전체 데이터셋을 한꺼전에 처리하도록 작성할 수 있다. 데이터를 두 숫자의 집합으로 인코딩할 수도 있다.

이는 다음과 같이 사용된다.

함수가 여러 제곱 회 반복되는 대신, 이 버전은 동전을 몇 번 던지더라도 동일한 횟수만큼 실행된다.

4.5 베타 분포

지금까지는 x를 이산적인 값의 집합으로 보고 Pmf를 사용햇으나 연속형 분포, 즉 베타 분포를 사용해보고자 한다. 베타 분포는 0과 1 사이에서 정의되므로 비율과 확률을 나타내는 방법으로 적합하다.

베타 분포는 켤레사전분포(conjugate prior)다. 즉 x에 대한 사전 분포가 베타 분포라면, 사후 확률 역시 베타 분포이다. 베타 분포의 모양은 $\alpha, \beta$ 두 변수에 따라 달라진다.

사전 분포가 alphabeta변수에 대한 베타 분포고 앞면 h와 뒷면 t의 데이터를 가지고 있다면 사후 확률은 alpha+h, beta+t의 변수에 대한 베타 분포가 될 것이다.

Beta에는 베타 분포의 확률 밀도 함수(PDF)를 구하는 EvalPdf라는 함수도 제공한다.

마지막으로 Beta에는 이산 분포 값을 생성하는 MakePmf 함수가 있다.

4.6 토의

데이터셋이 큰 경우 사전 분포 범람 현상이 생긴다. 서로 다른 사전 확률로 시작하더라도 보통 데이터를 많이 접할 수록 사후 확률이 수렴한다. 결국 앞에서 논의한 객관성에 대한 우려가 다소 해소된다.

하지만 모든 베이지안 분석은 의사결정을 모델링하는 것에 기반하는데, 동일한 모델을 선택하지 않으면 우도 또한 달라지게 되어 해석을 다르게 할 수 있고, 사후 확률이 수렴하지 않을 수도 있다.

크롬웰의 법칙(Cromewell’s rule)의 법칙은 아주 조금이나 가능성이 있는 나머지 가설에 대해 0으로 사전 확률을 부여하는 것을 피하게 해준다.


Add a Comment Trackback