2019. 2. 3. 20:34ㆍUdacity Nanodegree/Natural Language Processing
아래 본문은 Text Classification을 위한 Bayes Theorem과 기존에 사용되는 분류 알고리즘인 Naive Bayes에 대해서 다룹니다.
Bayesian Theorem
하나씩 따져보자. 일단 당신은 Alex와 Brenda가 출근하는 확률을 알고있다. (Alex 75%, Brenda 25%) 그렇다면 당신이 보고있는 사람이 Alex일 확률과 Brenda일 확률을 알고있는 것이다.
여기서 새로운 정보가 주어진다. 당신이 보고있는 사람이 붉은색 옷을 입고있다는 것이다. 그렇다면 당신이 창밖으로 보고있는 사람이 Alex일 경우가 75%, Brenda일 경우가 25%인 것은 여전히 동일하게 추측할 수 있을까? 그것은 아닐 것이다. 왜냐면 새로운 정보를 얻음으로써 (붉은색 옷을 입고있다) 이에 대한 정보를 감안할 수 있게 되었기 때문이다. 상식적으로 생각해봐도 아무것도 모를때보다 옷 색깔에 대한 정보를 얻음으로써 당신이 보고있는 사람이 Brenda일 확률이 조금 더 올라갔을 것이라는 생각을 해볼 수 있다.
기본적인 개념에 대한 감이 잡혔다면 하나씩 경우의 수를 따져보자.
Alex가 출근하며 붉은 옷을 입고 있을 확률: 0.75(출근할 확률) * 0.4(붉은색 옷을 입을 확률) = 0.3
Alex가 출근하며 붉은 옷을 입고 있지 않을 확률: 0.75 * 0.6 = 0.45
Brenda가 출근하며 붉은 옷을 입고 있을 확률: 0.25 * 0.6 = 0.15
Brenda가 출근하며 붉은 옷을 입고 있지 않을 확률: 0.25 * 0.4 = 0.1
그렇다면 여기서 고려할 확률은 두가지가 남는다. Alex가 출근하며 붉은 옷을 입고 있을 확률인 0.3, 그리고 Brenda가 출근하며 붉은 옷을 입고 있을 확률인 0.15. 이렇게 두가지만 고려하면 된다. 이렇게 고려할 경우, 다음과 같은 방식으로 확률을 다시 낼 수 있다.
붉은색 옷을 입은 사람이 Alex일 확률: 0.3 / (0.3 + 0.15) = 0.6666.... (2/3)
붉은색 옷을 입은 사람이 Brenda일 확률: 0.15 / (0.3 + 0.15) = 0.3333.... (1/3)
그렇다면 각각의 확률(0.3, 0.1)이 어떻게 계산되었는지 다시 돌아가보자.
일단 붉은 옷을 입은 사람이 Alex일 확률은 P(A)(Alex가 출근할 확률)과 P(R|A)(출근한 Alex가 붉은 옷을 입었던 확률)을 곱한 결과였다. 수식으로 나타내면,
P(A) * P(R|A) 가 될 것이다.
또한 붉은 옷을 입은 사람이 Brenda일 확률은 P(B)(Brenda가 출근할 확률)과 P(R|B)(출근한 Brenda가 붉은 옷을 입었던 확률)을 곱한 결과였다. 이를 다시 수식으로 나타내면,
P(B) * P(R|B) 가 될 것이다.
그렇다면 붉은 옷을 입었다는 확률을 기준으로 Normalize시켜주면 각각의 확률이 나오는 것이다.
이렇게 기본적인 정보가 주어지고(Prior) 추가적인 정보를 감안한 확률(Posterior)을 구하는 문제를 풀고자 하는 것이 바로 Bayesian Theorem이 하고자 하는 바이다.
Naïve Bayes
위 공식을 다시 살펴보자. 원래 어떤 이메일이 스팸메일인가 아닌가를 판별하기 위해서는 다음 3가지가 필요하다.
'easy'와 'money'라는 단어가 들어간 이메일일지의 확률 = P('easy', 'money')
스팸메일이 'easy'와 'money'라는 단어가 들어갈 확률 = P('easy', 'money' | SPAM)
이메일이 스팸메일일 확률 = P(SPAM)
'Udacity Nanodegree > Natural Language Processing' 카테고리의 다른 글
Language Model(2) - HMM을 이용한 Part of Speech(POS) Tagging (0) | 2019.02.03 |
---|---|
Text Processing(4) - 한장 요약 (0) | 2019.01.23 |
Text Processing(3) - 텍스트 내에서의 분류/변환작업 (0) | 2019.01.23 |
Text Processing(2) - 데이터 전처리(Text Preprocessing) (0) | 2019.01.23 |
Text Processing(1) - 데이터 클리닝(Data Cleaning/Cleansing) (0) | 2019.01.20 |