본문으로 바로가기



베이지안 통계 with R - (번외편) 이산형 사전분포(descrete prior distribution)에 대하여

category Statistics/Bayesian stat. 2017.07.21 18:30
베이지안 통계 with R - 2. 이산형 사전분포(descrete prior)에 대하여

앞으로의 베이지안 통계의 시리즈를 본격적으로 시작하기 앞서 이산형을 예로 베이지안의 전반적인 흐름을 잡고 가려고 한다. 가장 기본적인 예제이지만 베이지안의 핵심인 이야기이므로 잘 이해하면 큰 도움이 될 것이라 생각한다.

벽 뒤에 있는 사람은 누구일까?

옛날 이야기를 해보자. ’우정의 무대’를 기억하시는가? 군부대의 장병들을 위로하는 공영 프로그램이었던, 뽀빠이 아저씨가 MC를 맡았다던 전설의 프로그램. 일단 이 프로그램을 기억하고 추억에 잠기시는 그대, 축하드린다, 아재 되시겠다.

우정의 무대에서도 가장 인기가 있었던 코너는 바로 ’그리운 어머니’라는 코너였는데, 이 코너는 군부대에 자식을 둔 어머니 한분을 초청하여 아들을 면회를 시켜주는 코너였는데, 가림막 뒤에 가려진 어머님의 모습을 보여주고 장병들에게 자신의 어머니가 맞다고 생각하는 지원자를 받는 것으로 시작한다. 그 후 단계를 거듭하며 어머님에 대한 여러가지 힌트를 주고, 마지막 단계에서는 자신의 어머니임을 확신하는 아들과 어머님이 만나 얼싸안는 훈훈한 모습으로 끝이난다.

자, 베이지안 통계에 대한 이야기로 돌아와보자. 여기 세 명의 친구, 부르기 쉽게 “하나, 두나, 세나”라는 이름을 가진 아이들이라고 하자. 아이들은 술래를 정하여, 앞에서 말한 가림막 뒤의 사람을 알아 맞히는 게임을 할 것이다. 술래가 된 아이는 가림막 한 편에 서있고, 나머지 두명은 다른 한편에 서게 된다. 두 명의 아이는 술래가 된 아이 몰래 앞으로의 게임을 누가 플레이 할 것인지 정하게 된다. 좀 더 구체적인 예를 들기 위해서 하나가 술래가 되었다고 가정하자. 하나는 다음과 같은 상황에 놓이게 된다.(그림은 그리기 싫어서 네이버 블로그에서 퍼왔습니다.)

하나 |벽| 두나? or 세나?

하나는 앞으로 벽에 뚫려있는 조그마한 구멍을 이용해서 ‘가위 혹은 바위’ 만을 낼 수 있는 게임을 하게 될 것인데, 하나의 목표는 이 게임을 바탕으로 벽 뒤에서 자신과 가위 바위 게임을 하는 친구가 누구인지를 맞추는 것이다. (단, 벽 너머의 가위바위 게임을 하는 사람은 한번 정해지면 바뀌지 않는다.)

사전분포

우리의 똑똑한 하나는 이 게임에서 이기기 위해서 자신이 가진 사전 정보들을 모두 종합하기 시작했다. 두나, 세나와 예전에 해봤던 가위 바위 게임에서 두 친구에게 다음과 같은 습관이 있다는 것을 떠올렸다.

친구 가위낼 확률 바위를 낼 확률
두나 60% 40%
세나 30% 70%

위의 표를 바탕으로 가위 바위 게임에서 가위를 0, 바위를 1로 대응시키면, 두나(doona)는 성공확률(1이 나올 확률)이 40%인 베르누이 분포, 세나(sena)는 성공확률이 70%인 베르누이 분포에 대응한다고 생각 할 수 있다.

게임을 시작하기전 하나는 아무런 정보가 없으므로, 벽너머에는 두나와 세나가 있을 확률은 똑같이 1/2이라고 생각했다. 이러한 상황에서 하나가 추정하고자 혹은 알아맞히고자 하는 것은 벽 너머의 친구가 누구인가하는 문제이다. 베이지안 통계에서 바로 이 벽너머의 친구는 모수 \(\Theta\)가 된다.

\[ \Theta = \theta\in\left\{ doona,\,sena\right\} \]

그리고, 이 모수에 대한 사전 정보는 prior라는 이름으로 불리는데, prior는 모수의 분포에 대한 정보를 담고 있다. 하나의 경우, 벽너머 친구가 두나 혹은 세나가 똑같은 확률로 플레이 할 것이라 생각하면, 하나의 모수에 대한 prior는 다음과 같이 나타낼 수 있다.

\[ \Theta \sim p\left(\theta\right)=0.5\times I_{\left\{ \theta=doona\right\} }+0.5\times I_{\left\{ \theta=sena\right\} } \]

위의 식에서 함수 \(I\)는 indicator 함수를 의미하고, 이 함수는 중괄호 안의 값이 참일 경우에는 1, 그렇지 않을 경우에는 0을 반환하는 함수이다. 따라서 위의 \(p(\theta)\) 함수는 \(\theta\)가 doona일 경우 0.5, sena일 경우 0.5를 반환한다.

하지만, 이 prior는 모수에 대한 각 개인의 주관을 반영한다는 것을 명심하자. 만약 하나가 의도치 않게 벽너머로 세나와 두나가 상의하는 소리를 들었다면 어떨까? 그 후에도 하나의 prior는 변하지 않을까? 아마 하나가 벽너머로부터 들려오는 소리에 두나가 게임을 하게 될 것이라는 것을 알게 되었다면, 하나의 prior는 다음과 같이 두나가 플레이 할 것이라는 쪽으로 훨씬 기울어져 있을 것이다.

\[ p\left(\theta\right)=0.9\times I_{\left\{ \theta=doona\right\} }+0.1\times I_{\left\{ \theta=sena\right\} } \]

\(\theta\)가 두나일 확률이 1이 아니냐고 물으신다면, 그건 하나의 마음이다. 혹시 일부러 들리게 정보를 흘렸을지 누가아는가? 엿들은 정보를 사실이라 믿는 독자의 prior는 두나일 확률이 1, 세나일 확률은 0이 될 것이다, 그리고 각자가 다른 prior를 가지는 것은 베이지안 통계의 묘미라고 생각한다.

사후분포

하나는 총 다섯번의 게임을 했는데, 벽너머에 친구는 다음과 같은 패턴을 보였다고 하자.

  • 가위, 가위, 가위, 주먹, 가위

이러한 패턴을 확인한 하나는 벽너머의 친구가 가위를 내가 좋아하는 습관을 가졌다고 판단할 수 있을 것이다. 여기서 아주 중용한 포인트는 하나는 게임을 하기 전에 가졌던 생각, 즉, 벽 너머에는 두나가 있을 확률은 50%, 세나가 있을 확률은 50%로 동일하다고 생각했지만, 다섯번의 게임을 치른 후, 하나는 벽너머에서 플레이 하고 있는 친구가 두나일 확률이 더 높다고 마음을 바꾸었다는 사실이다. 베이지안 통계학에서는 이렇게 데이터를 고려한 후에 자신이 이전에 가지고 있던 prior를 수정하여 얻어지는 분포를 사후분포(posterior distribution)라고 부른다.

자, 그럼 하나는 벽너머에 두나가 있을 확률은 몇 %, 세나가 있을 확률은 몇 %로 설정해야하는 것일까? 내맘대로 이건 백퍼 두나가 있을 거야라고 할 수도 있겠지만, 사실 세나가 오늘따라 주먹보다 가위를 많이 낸 건 아닐까? 베이지안 통계학을 이용해서 하나는 다음과 같이 벽너머의 친구에 대한 정보를 업데이트 할 수 있다.

likelihood 함수

  • 가위, 가위, 가위, 주먹, 가위

먼저 위의 데이터를 사용하여 하나는 다음과 같은 추론을 할 수 있을 것이다.

‘아, 벽 너머에 있는 친구는 5번을 게임을 하면 주먹을 1번 정도 내는 사람이구나’

따라서 이와 같은 추론을 거친 하나는 위의 데이터를 이항분포의 데이터의 하나로 생각할 수 있다. 즉, 확률변수 Y를 n번의 게임에서 주먹이 나온 횟수라고 정의하면, 세나와 두나 중 누가 플레이하느냐에 따라 성공확률은 달라지지만 \(Y|\Theta\)는 다음과 같이 이항분포를 따르는 것이다.

\[ Y|\Theta=\theta \sim B\left(n,p\right) \]

위의 식에서 p는 세나와 두나의 성공확률이다. 즉, 두나의 경우는 \(p=0.4\), 세나의 경우는 \(p=0.7\)이다.

하나는 다섯번의 게임을 했으므로, \(n=5\), 데이터는 \(Y=y=1\)를 얻게 되었고, 이를 이용하여 각 친구별로 다섯번 게임에서 한번 주먹을 낼 확률을 다음과 같은 함수로 정의할 수 있다. 이러한 함수를 likelihood 함수라고 하고, \(L\)을 사용하여 나타낸다.

\[ \begin{align*} L\left(Y=1|\theta\right) & =\left(\begin{array}{c} 5\\ 1 \end{array}\right)\left(0.4\right)^{1}\left(0.6\right)^{5-1}I_{\left\{ \theta=doona\right\} }+\left(\begin{array}{c} 5\\ 1 \end{array}\right)\left(0.7\right)^{1}\left(0.3\right)^{5-1}I_{\left\{ \theta=sena\right\} }\\ & =0.2592\times I_{\left\{ \theta=doona\right\} }+0.02835\times I_{\left\{ \theta=sena\right\} } \end{align*} \]

사후 분포(posterior distribution) 구하기

이제 베이지안 통계학에서 가장 유명한 공식인 베이즈 정리가 등장할 차례이다. 이 정리는 조건부 확률의 정의를 이용하여 데이터가 주어졌을때 모수에 대한 조건부 분포를 찾을수 있도록 해준다.

\[ \begin{align*} \Theta|Y=1\sim p\left(\theta|Y=1\right) & =\frac{p\left(\theta,Y=1\right)}{p\left(Y=1\right)}\\ & =\frac{p\left(Y=1|\theta\right)p\left(\theta\right)}{p\left(Y=1\right)}\\ & =\frac{p\left(Y=1|\theta\right)p\left(\theta\right)}{\int p\left(Y=1|\theta\right)d\theta} \end{align*} \]

위의 식을 이용하여, 하나의 상황에 대입을 해보면 다음과 같다.

\[ \begin{align*} p\left(\theta|Y=1\right) & =\frac{p\left(Y=1|\theta\right)p\left(\theta\right)}{\int p\left(Y=1|\theta\right)d\theta}\\ & =\frac{\frac{1}{2}\left(\begin{array}{c} 5\\ 1 \end{array}\right)\left(0.4\right)^{1}\left(0.6\right)^{5-1}I_{\left\{ \theta=doona\right\} }+\frac{1}{2}\left(\begin{array}{c} 5\\ 1 \end{array}\right)\left(0.7\right)^{1}\left(0.3\right)^{5-1}I_{\left\{ \theta=sena\right\} }}{\frac{1}{2}\left(\begin{array}{c} 5\\ 1 \end{array}\right)\left\{ \left(0.4\right)^{1}\left(0.6\right)^{5-1}+\left(0.7\right)^{1}\left(0.3\right)^{5-1}\right\} }\\ & =\frac{\left(0.4\right)^{1}\left(0.6\right)^{5-1}I_{\left\{ \theta=doona\right\} }+\left(0.7\right)^{1}\left(0.3\right)^{5-1}I_{\left\{ \theta=sena\right\} }}{\left(0.4\right)^{1}\left(0.6\right)^{5-1}+\left(0.7\right)^{1}\left(0.3\right)^{5-1}}\\ & =\frac{0.2592\times I_{\left\{ \theta=doona\right\} }+0.02835\times I_{\left\{ \theta=sena\right\} }}{0.2592+0.02835} \end{align*} \]

a <- (0.4)^1 * (0.6)^4
b <- (0.7)^1 * (0.3)^4
a / (a+b)
## [1] 0.9014085
b / (a+b)
## [1] 0.09859155

위의 식을 계산하면 다음과 같다.

\[ p\left(\theta|Y=1\right) =0.9014085\times I_{\left\{ \theta=doona\right\} }+0.09859155\times I_{\left\{ \theta=sena\right\} } \]

이렇게 구한 사후 분포를 사용하여 하나는 다음과 같이 판단을 내릴 수 있다.

** 지금 벽너머에서 자신과 플레이하고 있는 친구는 두나일 확률이 약 90%, 세나일 확률이 약 10%이다.**

따라서, 데이터에 근거해보았을 때, 하나는 이러한 추론에 따라서 벽너머에 있는 친구를 두나라고 예측하는게 합리적 일 것이다. 이번 포스팅에서 하나가 사용한 추론 과정은 베이지안에서 가장 핵심을 이루는 과정 중 하나인 사전 분포의 설정하고, 데이터를 바탕으로 개인의 사전분포를 업데이트하여 사후분포를 구하는 과정이다. 이러한 뼈대는 우리가 사전 분포를 연속형으로 바꾸어도 그대로 유지되므로 몇번 반복해서 숙달할 수 있도록 하자.

마치며

Normalized Constant에 대하여

앞에서 구한 과정 중 하나 짚고 넘어갈 부분은 다음의 식에서 분모 부분의 상수이다.

\[ p\left(\theta|Y=1\right)=\frac{0.2592\times I_{\left\{ \theta=doona\right\} }+0.02835\times I_{\left\{ \theta=sena\right\} }}{0.2592+0.02835} \]

이 분모 부분의 상수값을 normalized constant라고 부르는데, 이유는 이 상수가 해주는 역할은 분자의 식이 확률분포의 조건(확률분포는 확률변수가 가지는 값에 대한 확률을 더한 값이 1이 되어야 한다.)을 만족시켜주도록 해주는 상수의 역할을 하기 때문이다. 따라서 분포의 직접적인 모양이나 특징에는 전혀 영향을 주지 않기 때문에 이 상수를 생략해도 우리가 사전 분포를 찾는데 아무런 영향을 미치지 않는다. 즉, 다음의 식은 우리가 찾는 사후 분포 함수가 오른쪽 함수에 상수를 곱한 꼴이라는 것을 의미하는데,

\[ p\left(\theta|Y=1\right)\propto0.2592\times I_{\left\{ \theta=doona\right\} }+0.02835\times I_{\left\{ \theta=sena\right\} } \]

이 식을 이용해서 우리가 사후분포를 찾을 수 있는 이유는, 식이 확률분포를 만족하기 위해서는 \(0.2592+0.02835\)로 나눠주어야 한다는 것을 반대로 유추할 수 있기 때문이다.

모수에 대하여

이 포스팅에서 가장 중요한 점은 벽 너머에서 플레이를 하는 친구는 바뀌지 않는다는 점이다. 즉, 실제의 모수는 변하지 않는다. 다만, 우리는 실제 모수가 어떤 것인지 모르기 때문에 모수가 갖는 값들의 여러 상황을 생각해야하고, 그러한 상황속에서 우리는 prior를 이용하여 모수를 하나의 확률변수라고 모델링을 하는 것이다.

Reference

[1] Cowles, Mary Kathryn. Applied Bayesian statistics: with R and OpenBUGS examples. Vol. 98. Springer Science & Business Media, 2013.

[2] Coursera Bayesian Statistics: https://www.coursera.org/learn/mcmc-bayesian-statistics/home/welcome


SHARE TO



티스토리 툴바