베이즈정리

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS
베이즈정리(Bayes theorem)는 사전확률(prior probability)과 조건부 확률(conditional probability)로부터 사후확률(posterior probability)을 구하는 방법이다.

간단한 퀴즈 하나.

{{|
  1. 무작위 검사에서 당신은 질병이 있다는 판정을 받았다.
  2. 이 검사법은 오진율이 5%이다.
  3. 전체 인구 중 이 병에 걸릴 확률은 0.1%이다.

당신이 병에 걸렸을 확률이 얼마인가?
|}}

1970년대 실험에 의하면 미국의 일류 병원 의사 중 80%가 95%라는 틀린 답을 했다. 정답은 "2%가 안된다"이다.


1. Bayes Theorem



2. 용어 정리

  • 결합확률 (Joint probability)
    결합확률이란 두 사건이 동시에 일어날 확률이다. 즉, P(X,Y) = P(X)P(Y)이다.
  • 조건부확률 (Conditional probability)
    P(Y|X), X가 일어났을 때 Y가 일어날 확률, X given Y. P(Y|X) = P(X,Y) / P(X)이다.
  • 주변확률 (Marginal probability)
    P(Y) = SUMXP(Y|X)P(X)
    Y가 일어날 확률은 여러 X(이들 중 한 사건만 일어날 수 있으며, 전체 확률의 합은 1이다)가 일어난 확률과 그의 조건부확률의 결합의 합이다.
  • 사전확률 (Prior probability)
    미리 주어진 확률, 위의 경우에는 P(X).
  • 사후확률 (Posterior probability)
    주관적인 경험이나 판단, 또는 조사를 통하여 입수한 새로운 정보를 통하여 사전확률에 조정을 가한 확률. 위의 경우에는 조건부확률인 P(X|Y).

3. Bayes Theorem 해설

            P(X,Y)         P(Y|X)P(X)                   P(Y|X)P(X)
P(X|Y) = ----------- = ----------------- =  ------------------------------------
             P(Y)             P(Y)             P(Y|X)P(X) + P(Y|not X)P(not X)

위 유도가 이해된다면 모든 것을 이해한 것이다.

첫 번째 변환은 Y 가 일어난 상태에서 X 가 일어난다는 것은, X 가 일어날 모든 확률 분의 X와 Y가 동시에 일어난 확률이기 때문이다. 두 번째 변환은 결합확률의 공식에 의한다. 이 두 사건이 독립사건이 아닐 경우도 상정해야 하기 때문에 이와 같이 변환된다. 세 번째 변환은 주변확률의 공식에 의한다. Y 라는 사건이 일어나는 것은 X 와 동시에 일어나는 경우도 있고, X 가 일어나지 않은 상태에서 일어나는 경우도 있다. 원래 모든 X 에 대한 Summation을 취해야 하지만, 여기서는 이분하여 제시하였다.

4. Bayes Theorem의 의미

4.1. X = 슬픔, Y = 눈물

X와 Y를 보다 이해하기 쉽게 X 는 슬픔, Y 는 눈물이라 가정하고 설명해 보자. 이것은 사실 PsychoPhysiology에서 블랙박스인 인간의 "마음", "정신", "뇌"를 탐구하기 위해서 쓰이는 기본적인 실험디자인의 framework 이다.

{{|
X : 슬픔, psychological factor, 자극
Y : 눈물, physiological factor, 반응
|}}

우리가 알고 싶은 것은 눈물을 흘릴 때 슬플 확률, 즉 physiological 변화를 가지고 psychology를 어느 정도의 확률로 추정할 수 있는지 알고 싶은 것이다. P(X|Y). 이것을 베이즈정리를 사용해서 계산해 보면 다음과 같다.

                P(눈물|슬픔)P(슬픔)                   P(눈물|슬픔)P(슬픔)
P(슬픔|눈물) = --------------------- = -------------------------------------------------
                      P(눈물)          P(눈물|슬픔)P(슬픔) + P(눈물|not 슬픔)P(not 슬픔)

만약 이 값이 1에 가까우면, P(눈물|not 슬픔)P(not 슬픔) 이 0에 가깝다는 것이다, 이것은 다른 말로는 슬프지 않을 때 눈물을 흘리게 되는 경우는 거의 없기 때문에, 눈물을 흘리기만 하면 슬프다는 것을 알 수 있다는 것이다. 이럴 때 physiological factor인 눈물을 invariant 또는 marker 라고 볼 수 있다. invariant 와 marker 의 차이는 invariant 는 어떤 환경에서도 똑같은 결과를 보이는 것이고, marker 는 실험실 환경 같은 곳에서만 동일한 결과를 얻을 수 있는 것이다.

명제 p: 슬프면 (->) 눈물을 흘린다.
명제 q: 눈물을 아니 흘리면 (->) 슬프지 아니한 것이다.
동치의 stochastic version인가요? :) --PuzzletChung

4.2. X = 질병, Y = 질병판정

그렇다면 맨 위의 OpeningStatement의 경우는 어떨까요?
                    P(질병판정|질병)P(질병)                     P(질병판정|질병)P(질병)
P(질병|질병판정) = ------------------------- = ---------------------------------------------------------
                          P(질병판정)          P(질병판정|질병)P(질병) + P(질병판정|질병아님)P(질병아님)
         P(질병판정|질병)P(질병)
= -----------------------------------
   P(질병판정|질병)P(질병) + P(오진)
만약 P(질병판정|질병)P(질병) (실제로 질병에 걸린 사람이 질병이 있다고 판정을 받을 확률. 위 문제에는 언급이 없음)을 100%라고 한다면,

   1 * 0.001           0.001
------------------- = ------- = 약 0.0196
(1 * 0.001) + 0.05     0.051

즉, 당신이 이 질병이 있다는 판정을 받았을 때 실제로 질병에 걸려 있을 확률은 1.96%입니다. 만약 병이 걸려 있을 경우의 진단 정확도가 100%가 안 되고 줄어든다면, 이 값은 더 떨어지므로 어떤 경우이건 2%가 안 됩니다.

그럴리가요. 계산이 잘못된 것 같군요. 실제로 질병에 걸린 사람이 질병이 있다고 판정을 받을 확률은 95%죠. 따라서 아래와 같이 약 1.866%가 됩니다.
        0.95 * 0.001          0.00095
--------------------------- = ------- = 약 0.01866
0.95 * 0.001 + 0.05 * 0.999   0.0509

그리고 진단 정확도가 올라가면 이 확률은 2%를 넘어갈 수 있습니다. 진단 정확도가 100%인 경우 질병이 있다고 진단 받으면 아래처럼 당연히 100% 질병이 있는 것이죠. -- 또마

       1 * 0.001        0.001
--------------------- = ----- = 1
1 * 0.001 + 0 * 0.999   0.001

5. 추천사

만약 아직 정확히 모르고 계셨더라면, "강력 추천"하는 내용입니다. 아주 간단하지만 정말 필살기에 가까운 내용입니다. 지상은도 이 내용을 안지는 1년이 안되지만, 벌써 결정적인 순간에 몇번을 써 먹었는지 모르고, 앞으로 평생동안 무궁무진하게 활용할 걸 생각하면, 막 기분이 좋아집니다. ^^


연습문제와 풀이 RefactorMe. 실제로 기간을 잡아서 실험한 내용으로 해봐도 좋겠는데요.

6. 연습문제

노스모크에서 DeleteThisPage 가 있는 페이지는 DeletePage 된다. 이 두 사건은 독립적이지 않다. 우리가 알고 싶은 것은 어떤 페이지가 DeletePage 되었을 때, 거기 DeleteThisPage 가 있었을 확률을 알고 싶은 것이다. 물론 이것은 Diff 기능이 있을 때는 직접 count 하면 쉽게 알 수 있지만, 그 기능이 안 깔려 있을 경우를 상정하는 것이다. 자연에는 인간을 위한 History 기능은 없다. 구하는 방법은 위에서와 동일한 방식으로 기계적으로 P(DeleteThisPage|DeletePage)를 구하면 된다.

6.1. yong27의 풀이

  • P(tag) : 총 노스모크페이지중 DeleteThisPage WikiTag가 붙어있을 확률 = 15/2327 = 0.006446 (FindPage로 10월17일현재. 지우라는 의미가 아닌 DeleteThisPage가 붙어있는 페이지들 (예로 페이지지우기페이지)들도 tag가 있는걸로 쳤습니다. )
  • P(지우다) : RecentChanges 리스트중에서 Deleted갯수 = 4/206 (10월17일 오전2:30의 RecentChanges)
    (물론, 모집단의 계산이 불가능한관계로 최근것만 표본집단으로 삼음)
  • P(지우다|tag) = tag가 있을때 지웠을 확률. RecentChanges에 의하면 tag있는페이지 15중 지운것 1 = 1/15
    (최근 지워진 4개 페이지중 "김봉석형에게"페이지에는 tag가 있었고, 그래서 지웠다고 가정)

                  P(지우다|tag) P(tag)     0.25 * 0.006446
P(tag|지우다) = ----------------------- = ----------------- = 0.02417
                        P(지우다)             0.0666666

헉헉... 맞게 풀었나요? P(tag)를 RecentChanges중에서 할까도 했는데, 전체페이지랑 비슷할것 같아서 전체를 썼고요... 이론... 풀고나니깐 베이즈정리가 더 헤깔리네 이긍..

                  P(지우다|tag) P(tag)                      P(지우다|tag) P(tag)
P(tag|지우다) = ----------------------- = -----------------------------------------------------
                        P(지우다)             P(지우다|tag) P(tag) + P(지우다|no tag)P(no tag)


  • P(tag) = 15/2327 = 0.006446
  • P(no tag) = 1 - 0.006446 = 0.993554
  • P(지우다|tag) = 1/15 = 0.066666 (<- 사실 이 확률이 실제론 더 높아야 되는데... 노스모크에서 tag 있는 건 거의 다 지워진다고 봐야죠. 지금 남아 있는 페이지들은 대부분이 지우라는 표시가 아닌 것들이라서 여기 넣으면 좀 곤란하겠죠. ^^)
  • P(지우다|no tag) = 3/(2327-15) = 0.001297

이렇게 계산해야 하지 않을까 싶은데... 이렇게 하면 0.25 정도 나옵니다. 지워진 페이지들 중에서 tag 가 있었을 확률이 25% 정도 된다는 것이죠. P(지우다|tag) = 0.5 로 잡을 경우에는 0.71 이 나오네요. 음... 예가 깔끔하지 못했군요. 정확하게 하려면 기간을 잡아서 지켜보면서 계산해야 하겠죠. ^^

계산 방법이 이해가 안되는군요. 위의 방법은 어떤 페이지에 DeletePage라는 태그가 있을 경우(not a delete action) 거기에 DeleteThisPage라는 태그도 있을 확률과 비슷한 의미로 보입니다.

즉, P(tag) = 15/2327 이라고 했지만 사실은 그 값은 P(tag|not 지우다)라고 봐야죠.
네. 맞습니다. 기간을 잡아서 실제 지우라고 tag 붙인 것 중에서 몇개가 지워졌나를 관찰을 하던지 실험을 해야겠죠. 지금 남아 있는 페이지들로 보면 noise 가 너무 많이 섞여 있어서 정확한 추정을 할 수가 없네요.

그렇군요. 그래도 좀 풀어볼라고 안간힘을 쓴다면, 노스모크페이지중에서 RecentChanges에 표시되지 않는 페이지들은 고정되었다고 가정하고 RecentChanges에 표시된 내용만큼만 action이 가해졌다는 가정하에서, 2327개는 안지워진것들만이니깐, 지워진것 4개를 추가하고, 지워진것중 1개가 tag가 있다고 했으니, 15개에다가 하나를 추가하면, P(tag) = (15+1)/(2327+4) 라고 하면 그럴듯합니까?
네. 그렇게 하면, 기간을 상당히 짧게 한 상태에서의 P(tag) 를 구할 수 있을 것 같습니다. 그런데 문제는 남아있는 15개 중에서 상당부분이 사실 지우라고 붙인 tag 가 아니라는데 있죠. 그래서 그 부분을 따로 페이지마다 평가해서 빼주던지, 어떤 조처를 취해 주어야 하는데... 그것이 문제가 더러븐 부분이군요. 죄송. ^^

베이즈정리는 수학이라기 보다는 통계학에 가까운것 같은데요.

7. 의학적 적용에 관한 토론

그런데 실제로 자신이 어떤 질병으로 진단받고서 위의 합리적인 계산을 통해 실제 병에 걸렸을 확률이 2%라고 한다면 어떻게 행동할까요? 즉, 실제로 그러한 판단이 도움이 될까요? 예를 들면 "나는 2% 정도의 확률은 무시한다, 따라서 의사의 진단을 상관하지 않는다. 즉, 의사의 결정을 무시한다."라고 할수 있을까요?

금방 찾아보니, 췌장암의 유병율이 미국의 경우 1/1000 이네요. 더구나, 진단검사의 양성율(즉, 병이 있을 때 병이 있다고 진단할 확률)이 70%이하네요. 아마도, 실제로는 환자 자신이 현재 어느 정도 상태이냐에 따라서 달라지겠지요? 위의 전제는 아마도 '의사의 진단'말고는 모두 정상인과 같다는 전제하에 이야기일겁니다.

제 생각이 맞다면, 베이즈 정리를 실제에 적용하는데에는 상당히 많은 사항들이 고려되야 할것 같아요. 실제로 의사결정이론에서 디지탈 신호처리까지 베이즈 정리가 널리 사용되기는 하는 것 같은데요. --박경모

제가보기에는, 베이즈 정리 뿐만 아니고, 통계라는 것 자체가 실제에 적용하기 전에 상당히 많은 사항들을 고려하지 않으면 안되는 위험한 물건 같습니다. 위 경우 말고도, 여러가지 흔히 범하기 쉬운 통계학적 오류에 대해서 존 알렌 파울러스 원저의 학자의신문읽기 라는 책에 재미있게 나와 있어서 요즘 읽고 있습니다. B) (다만, 군데군데 자연스럽지 않은 번역이 좀 보이는군요)

널리 사용되는 정도라고 하시면, 베이즈정리가 무척 섭섭해 할 겁니다. 경모형. 하하핫. 밑에는 Bioinformatics - The Machine Learning Approach 라는 책에 나온 것을 인용한 것입니다. ^^ 물론 어떤 이론이건 한계가 있을 수 밖에 없겠지만, Bayesian statistics 는 어떤 부분에서는 거의 어쩔 수 없는 귀결인 경우가 많지 않나 생각됩니다. --지상은

{{|
On the theoretical side, a unifying framework for all machine-learning methods also has emerged since the late 1980s. This is the Bayesian probabilistic framework for modelling and inference.
|}}

{{|
But why should the Bayesian approach be so compelling? Why use the language of probability theory, as opposed to any other method? The surprising answer to this question is that it can be proved, in a strict mathematical sense, that this is the only consistent way of reasoning in the presence of uncertainty.
|}}

{{|
Finally, one should be aware that there is a more general set of axioms for a more complete theory that encompasses Bayesian probability theory. These are axioms of descision or utility theory, where the focus on how to take optimal decisions in the presence of uncertainty. Not suprisingly, the simple axioms of decision theory lead one to construct and estimate Bayesian probabilities associated with the uncertain envirionment, and to maximize the corresponding expected utility. In fact, an even more general theory is game theory, where the uncertain environment includes other agents or players
|}}

실제 우리가 대상에 대해서 가지는 확률적인 지식은 한정되어 있쟎아요? 사실, '한국 내 위암환자의 유병율'을 알아내는 것은 돈이 들어서 그렇지 알아낼수 있어요. 그러면, 우리 개인이 위암일 확률은 구할 수 있구요. 그런데, 이 경우는 모집단이 모든 한국인이 되지요.

그러나, 개인이 '특정한 상태일 때, 위암일 확률'은 모집단이 '특정 상태'에 있는 모든 사람이 될거란 말이예요. 문제는 존재 가능한 특정 상태가 너무도 많기 때문에, (즉, 배가 아플 때, 이가 아플때, 소화가 않될때, 대변에 피가 나올때......... 무지 무지 많겠지요.) 각 상태에서의 유병율을 구하는 것은 현실적으로 불가능입니다. 그러면, 어떻게 해야, "내가 특정 상태일 때에 대한 추론을 위해서, 베이즈 정리를 써먹을수 있는가?" 그런데, 우리는 특정상태일 때의 확률에 대한 사전확률과 조건확률을 모른단 말이예요.

만약에 1'어떤 질병은 정상상태로부터 특정질병까지 단일한 pathway를 가지고 있으며', 2'정상상태에서 특정질병까지의 각 상태(phase)에서의 사전확률과조건부 확률이 시간(또는 다른 인체 지표)의 함수라면 구할 수 있을 것 같아요.

실제, 베이즈 정리가 의사결정분야에서 어떻게 사용되는지 구체적인 방법을 알고 싶군요. --박경모

베이즈정리가 응용되는 퀴즈의 한 예로 MontyHallProblem이 있습니다.


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>