Search Engine/IR Papers2009. 2. 27. 11:38

베이지안 필터란 무엇인가? 이를 이해하기 위해선 먼저 이의 기반이 되는 베이지안 정리에 대해 알아둘 필요가 있습니다.
간단하 게 얘기하면, 과거에 A라는 사건이 발생했을 때, B라는 class로 분류되었다면, 다음번에도 A가 발생했을 때 B가 될 가능성이 높다는 의미입니다.
하지만 이는 비 공학도를 위한 설명에 불과하고, 이것이 수학적으로 어떤 공식으로 유도되고 그 공식이 어떤 의미를 가지고 있는지 알아보는 것이 우리에게 더욱 도움이 될 것입니다.

증명을 위해 몇 가지 용어를 정의하고 시작하겠습니다.

A: 개체가 가질 수 있는 어떤 성질
P(A): 개체가 어떤 성질을 가질 확률 (예: 키가 170이상일 확률, 메일이 어떤 단어를 포함할 확률)

Wi: class. 전체 군을 몇 가지 성질에 따라 나눈 것입니다. (예: 남자=W1, 여자=W2. 또는 스팸메일=W1, 정상메일=W2)
P(Wi): 개체가 어떤 어떤 class에 속할 확률

간단히 추론하고 넘어갈 것은 P(W1) + P(W2) + ... P(Wn) = 1 라는 것입니다. (남자와 여자를 합하면 전체 사람이죠)

P(Wi|A): A라는 성질을 가졌을 때 Wi일 확률 (ex: 메일이 어떤 단어를 포함하고 있을 때 스팸일 확률)
P(A|Wi): Wi class 안에서 A라는 성질을 가질 수 있는 확률(ex: 스팸일 때 어떤 단어를 포함하고 있을 확률)
P(A, B): A, B가 동시에 일어날 확률

A, Wi(i는 임의의 정수)는 확률의 용어로 생각해 보면 어떤 사건이라고 할 수 있겠지만,
베이지안 정리의 개념을 잡기 위해선 A, Wi(i는 임의의 정수를 성질, class로 나누어 생각하는 것이 좋습니다.

자, 중학교 때 배웠던 확률의 기억을 더듬어 보세요.. 이제 베이지안 정리로의 여행을 시작하겠습니다. 당분간, A, B는 '사건'이라 가정하고 서술하겠습니다.

1) P(A|B) = P(A,B)/P(B) (Conditional Probability)

아주 기본적인 정리입니다. 공리이기 때문에 증명되지 않습니다. 옛날에 배운 적이 있을 것입니다. ^^
자.. 위 식이 만족된다면 아래와 같은 식도 만족되겠지요.

2) P(B|A) = P(B,A)/P(A)

P(B,A) = P(A,B)이죠? 동시에 일어날 확률이기 때문에 순서는 중요하지 않습니다.
그렇다면 2) 식을 다음과 같이 정리해 봅시다.

3) P(A, B) = P(B|A) * P(A) (앞으로 *는 생략하겠습니다)

3)을 1)에 대입하면 다음과 같은 식을 얻을 수 있습니다.

4) P(A|B) = P(B|A) P(A)/P(B)

지금까진 A, B가 사건이었지만, 위에서 용어를 정의한 대로 A는 성질, Wi는 class로 놓고 다시 식을 풀어쓰겠습니다. (말씀 드렸듯, 본질적으로 차이는 없습니다. 그냥 말과 개념이 바뀌는 것이지요)

5) P(Wi|A) = P(A|Wi)P(Wi)/P(A) (posterior probability)

자 이 식의 우변은 여러개의 항이 섞여 있어 아직 무슨 말인지 감이 안잡히는군요. 왼쪽 항을 봅시다. P(Wi|A)는 위에도 설명 드렸듯이 개체가 어떤 성질 A를 가지고 있을 때 class Wi에 속할 확률입니다.

전체군을 W1과 W2의 두 개의 class로 나누었다고 가정합시다. 일단 P(W1|A) + P(W2|A) = 1 이 되겠지요? 어떤 개체는 W1이나 W2나 둘 중 하나의 군에는 반드시 속할 것이기 때문입니다. 그렇다면, 지금까지의 경험(과거의 데이터)를 기준으로 P(W1|A) = 0.8 이고, P(W2|A) = 0.2 이라고 합시다. 만일 미래에 A라는 성질을 가진 새로운 개체를 만난다면 우린 이 A를 W1에 분류할 수 있을까요? W2에 분류할 수 있을까요?

네, 맞습니다. 과거의 데이터를 기준으로 우리는 A를 W1이라 분류할 수 있을 것입니다.
따라서, 개체가 A라는 성질을 가졌을 때, P(Wi|A) 값이 가장 큰 Wi에 A가 속할 것이라고 예측합니다.

다시 식을 전개해 나가봅시다..

P(W1|A) < P(W2|A) 라고 하죠. 그럼 우린 방금 말 했듯이, 어떤 개체가 A라는 성질을 가지면 W2라는 class에 속한다고 예측할 수 있겠고요. 5) 식으로 좌변 우변을 모두 치환하겠습니다.

6) P(A|W1)P(W1)/P(A) < P(A|W2)P(W2)/P(A)

6)을 정리하면 아래와 같은 식이 나옵니다.

7) P(A|W1)/P(A|W2) < P(W2)/P(W1) (Bayes' decision rule)

자.. 이제 다 왔습니다. 소위 베이지안 정리라 부르는 것은 위의 식을 의미합니다. 우리가 어떤 개체가 A라는 성질 가지고 있다는 것을 알고 있을 때, 그 개체가 W1에 속할지 W2에 속할지 위의 식으로 알아낼 수 있습니다. 위의 식에서 왼쪽이 더 크다면 class W1에 속할 것이고요, 오른쪽이 더 크다면 class W2에 속하겠지요.

그리고 왼쪽 값, 오른 쪽 값 모두 '경험' 을 통해서 얻어낼 수 있는 값입니다. 전문적인 용어로, 왼쪽은 likelihood ratio, 오른쪽은 threshold라고 합니다. '즉, ratio가 임계값을 넘느냐, 안넘느냐에 따라 class가 결정됩니다.'



말로 풀어쓰니 훨씬 쉽지요? 간단히 예를 하나 들어보겠습니다.

베이지안 필터라 불리는 스팸 필터의 알고리즘을 생각해 봅시다. 우리가 받는 메일의 80%가 스팸 메일이라고 합시다. W2를 spam mail class, W1을 clean mail class라고 하면 오른쪽 threshold 값은 0.8/0.2 = 4 라고 할 수 있겠죠. 그럼 왼쪽 값이 4보다 작으면 spam mail, 4보다 크면 clean mail 이라고 규정할 수 있을 것입니다. 이제 ratio를 알아 냅시다.

VIAGRA라는 단어가 메일에 포함될 확률을 P(A)라고 하면, P(A|W1)은 clean mail에 VIAGRA가 포함된 확률, P(A|W2)는 spam mail에 VIAGRA가 포함된 확률입니다. 우리는 지금까지의 경험을 토대로, 이 확률을 알아낼 수 있습니다. 받은 메일들을 '스팸', '깨끗'으로 분리하면서 필터를 소위 '교육' 시키면, 그 '교육'된 자료를 바탕으로 확률 데이터를 가질 수 있게 되지요. 깨끗한 메일의 10%가 VIAGRA를 가지고 있었고, spam 메일의 60%가 VIAGRA를 가지고 있었다고 합시다. 그 경우 P(A|W1) = 0.1, P(A|W2) = 0.6. ratio는 1/6. 즉 4 보다 작습니다.

이제 부터 우리는 A의 성질을 가진 경우(VIAGRA라는 단어를 포함한 경우), class W2에 속한다고(spam)이라고 예측할 수 있을 것입니다. ratio와 threashold의 간극이 클 수록 예측이 맞을 확률이 크다고 볼 수 있습니다.

이 공식의 의미는 과거의 자료로 부터 미래를 예측할 수 있다는 데에 있습니다. 사건과 사건 사이의 어떤 연결 고리를 과거를 바탕으로 맺어주는 것이지요. 자료가 누적되면 누적될 수록 우리는 정확한 예측을 할 수 있게 됩니다. 이 공식은 패턴 인식, AI의 기본이 되는 공식이라 합니다.

단순한 공식에서 심오한 의미를 이끌어 낼 수 있다는 것이 - 1)번의 공식만으로 우리는 여기까지 왔습니다 - 수학이 가진 매력이오, 베이지안 룰의 아름다움이 아닐까요?


베이즈 정리'사전에 알고 있는 정보를 염두에 두고, 특정 사건이 일어날 확률'을계산하는 이론입니다.

A:학년  B:여자
1학년 : 0.4         1학년중여자 : 0.4
2학년 : 0.3         2학년중여자 : 0.45
3학년 : 0.3         3학년중여자 : 0.5

Q) 한 여학생이 1학년일 경우는??

공식을 간단히 열거해보자면,
P(B | A) = P(A | Bi) / [P(A | B1)+P(A | B2)+.....+P(A| Bk)] 라고 작성가능하고요.

위 문제는 큰응용없이
베이즈 정리 공식의 communication 방식에 충실히 맞춰 기호화시키고,
공식에 대입시키면 풀리는 문제입니다.

우선, 공식에 적합해지도록 문제를 변형시켜보죠.
문제에서 주어진대로 A는 학년, B는 여학생이라고 정하고, 변형시켜보겠습니다.
참고로 A옆의 아래첨자는 학년을 표시한 겁니다.

1학년 : 0.4         1학년중여자 : 0.4
=>  P(A1) = 0.4     P(B | A1) = 0.4

2학년 : 0.3         2학년중여자 : 0.45
=> P(A2) = 0.3     P(B | A2) = 0.45

3학년 : 0.3         3학년중여자 : 0.5
=> P(A3) = 0.3     P(B | A3) = 0.5

Q) 한 여학생이 1학년일 경우는?? => P(A1 | B) =?

이를 위에 언급한 공식에 대입을 하는데, 제가 A,B를 거꾸로 작성했죠?
일반적으로 사용하는 용어대로 작성해서 저렇고요.

문제에 맞추어 식형태를 손좀보면,

P(A | B) = P(B | Ai) / [P(B | A1)+P(B | A2)+P(B| A3)]  이렇게 바뀌니,
P(A1) = 0.4, P(B | A1) = 0.4, P(A2) = 0.3, P(B | A2) = 0.45, P(A3) = 0.3, P(B | A3) = 0.5를 전부대입합니다.

그러므로, P(A | B) = (0.4 x 0.4) / [(0.4 x 0.4) + (0.3 x 0.45) + (0.3 x 0.5)] = 0.16 / 0.445 = 0.35955
즉, "임의로 추출한" 한 여학생이 1학년일 경우는 35.96%가 됩니다.
우리나라 남성의 5%가 폐암에 걸린다고 한다.

폐암에 걸린 남성 중에서 20%가 비흡연자이고, 폐암에 걸리지 않은 남성 중에서 10%가 흡연자라고 하자.
흡연하는 남성이 폐암에 걸릴 확률과 흡연하지 않는 남성이 폐암에 걸릴 확률을 구하시오

다음과  같이 표를 많들어보면 이해가 쉬움.


남성

폐암(5%)

비흡연(20%)

폐암&비흡연(5%x20%=1%)

 

 

흡연

(80%)

폐암&흡연(5%x80%=4%)

합계

 

(100%)

(5%)

 

 

 

 

남성

건강(95%)

비흡연(90%)

건강&비흡연(95%x90%=85.5%)

 

 

흡연(10%)

건강&흡연(95%x10%=9.5%)

합계

(100%)

(100%)

(95%)


흡연하는 남성 = 폐암&흡연(4%) + 건강&흡연(9.5%) = 13.5%

폐암&흡연 = 4%


따라서 흡연하는 남성이 폐암에 걸릴 확률 :

P(폐암/흡연) = P(폐암&흡연)/P(흡연) = 4/13.5 = 8/27


흡연하지 않는 남성 = 폐암&비흡연(1%) + 건강&비흡연(85.5%) = 86.5%

                                 (또는, 1 - 흡연하는 남성(13.5%) = 86.5%)

폐암&비흡연 = 1%


따라서 흡연하지 않는 남성이 폐암에 걸릴 확률 :

P(폐암/비흡연) = P(폐암&비흡연)/P(비흡연) = 1/86.5 = 2/173

 

문) 한국 남성의 10%는 폐암에 걸린다고 한다. 그런데, 폐암에 걸린 남성들 중 80%가 흡연자인 반면, 폐암에 걸리지 않은 남성들 중에는 40%만이 흡연자라 한다. A라는 어떤 흡연 남성이 폐암에 걸릴 확률은 대략 얼마일까?

 
한국 남자수를 a 명 이라고 두면
폐암에 걸리는 사람은 0.1a 명이 되고,  그 중 흡연자는 80% 이므로 0.08 a 명이 되네요.
폐암에 안걸린사람수는 0.9a 명이고, 그중 흡연자는 40 % 이므로 0.36 a 명이 됩니다.

                                폐암에 안걸린사람              폐암에 걸린사람                  계
 흡연자                           0.36a                                          0.08a                            0.44 a
 비흡연자                         0.9a                                         0.1a                                 a

이와 같이 표로 나타낼수 있겠죠.
흡연자가 폐암에 걸릴확률이므로  폐암에 걸린사람수 / 전체 흡연자수  로 확률을 구할수 있습니다.

 따라서,  0.08a / 0.44a  =  2 / 11  
P(A1)=0.6 ,  P(A2)=0.4이고 P(B1lA1)=0.5  P(B1lA2)=0.1일때 베이즈 정리를 이용하여
P(A1lB1) 을 구하시요 

B1, B2, .... Bn 을 표본공간 S의 분할이라고 했을때, 사건 A가 발생한다고 가정하면 사건 Bj가 일어날 확률은
P[Bj|A]=P[A∩Bj]/P[A]=P[A|Bj]P[Bj]/∑P[A|Bk]P[Bk] (∵시그마는 k=1에서 n까지) 이다.

이것이 베이즈의 법칙입니다.
즉 A의 확률 P[A]는 B1, B2, ...... , Bn 들과 A와의 교집합(동시에 일어날 확률) 들의 합으로 나온다는 것입니다.
즉 P[A∩B1], P[A∩B2], ...... ,  P[A∩Bn]들의 합으로 주어진다는 것입니다.
(∵P[A∩B]=P[A|B]P[B]=P[B|A]P[A] 이므로)

문제에서 구하고자 하는 것은 P[A1|B1]의 조건부 확률
즉 B1이 일어났다고 가정했을때 A1이 일어날 확률을 구하라 입니다.

주어진 조건은
P[A1]=0.6, P[A2]=0.4, P[B1|A1]=0.5, P[B1|A2]=0.1
입니다.

풀어보자면

일단 P[B1]을 구해야 합니다.
이는 베이스 법칙에 따르면

P[B1]=P[B1|A1]P[A1]+P[B1|A2]P[A2]
          =0.5*0.6+0.1*0.4
          =0.34 입니다.

구하고자 하는 P[A1|B1]은 다시
P[A1|B1]=P[A1∩B1]/P[B1]
               =P[B1|A1]P[A1]/P[B1] (∵P[A∩B]=P[A|B]P[B]=P[B|A]P[A])
               =0.5*0.6/0.34
               =0.882352941...

따라서 약 0.88이 나오게 됩니다.



Posted by BAGE