AI/ML 수업 정리

3-1. Naive Bayes

ardoh 2024. 10. 8. 11:29

나이브 베이즈는 텍스트 분류에 좋은 분류 방법이다. 나이브 베이즈를 잘 설명해주는 예시는 스팸 분류기이다. 

우선, 사전에 있는 모든 단어들을 딕셔너리로 만든다. 그리고, 이메일에 해당 단어가 포함되어 있으면 1, 아니면 0을 포함해 feature vector x를 만든다. 따라서 여기서 변수 $x_i$ 는 연속적인 실수 값이 아닌 이산값을 가진다. 

 

하지만 단어가 50k 개나 된다. 벡터 값이 모두 0인 경우, 즉 아무 단어도 없는 경우를 제외하면 파라미터의 개수는 $2^{50k} -1$이다. 그래서 우리는 discriminative algorithm 대신 generative algorithm 을 사용한다.  

 

Discriminative 와 generative algorithm 은 지난 시간에 알아보았는데, 짧게 다시 복습하자면 discriminative는 데이터의 분포를 미리 파악하지 않는 방법, generative는 데이터의 분포를 미리 학습하는 방법이었다. 

 

 

1. 나이브 베이즈의 가정

Generative algorithm 을 적용하려면 우선 강력한 가정을 하나 해야 한다. "각 단어의 출현 여부는 서로 독립적이다."

클래스 y 가 주어졌을 때 단어들의 조건부 확률은 다음과 같이 계산한다.

 

각 사건이 독립적이라고 가정했기 때문에 2번째 줄의 식이 3번째 줄의 식으로 단순하게 표현될 수 있다. 

 


🍋 Chain Rule

Chain rule 은 연속적인 사건들의 결합 확률을 계산할 때 사용하는 규칙이다. 

 

- 두 사건의 chain rule

사건 A와 B가 동시에 발생하는 경우, 이들의 결합 확률 P(A,B)는 다음과 같이 표현할 수 있다.

P(A,B)=P(A)P(B∣A)또는P(B)P(A∣B) 즉, 사건 A가 발생할 확률과 A가 발생한 이후에 B가 발생할 조건부 확률을 곱하여 계산한다. 혹은 그 반대.

 

- 여러 사건의 chain rule

여러 개의 사건 $A_1, A_2,..., A_n$이 연속적으로 발생할 경우, 이들의 결합 확률은 다음과 같이 모든 사건을 조건부 확률로 표현할 수 있다. 즉, 각 사건의 발생 확률을 그 이전에 발생한 사건들의 조건부 확률로 연쇄적으로 계산하는 방식이다.

 

 

🍋 Conditional independence

P(XY,Z)=P(XZ)

두 확률 변수 X가 세 번째 변수 Z가 주어진 상황에서 독립이라는 뜻이다. 즉, 가 주어졌을 때 XY는 서로 독립이 된다. XY의 관계는 Z에 의해서만 영향을 받으며, Z가 주어지면 Y에 대한 정보가 X의 확률 분포에 영향을 미치지 않게 된다. 

 

예를 들어, 번개가 있을 때, 천둥이 칠 확률은 비가 오는지 여부와 상관없다는 뜻이다. 

P(ThunderRain,Lightning)=P(ThunderLightning)


2. 나이브 베이즈 사용


🍋 Joint likelihood

Likelihood 는 주어진 데이터가 어떤 모델에 의해 얼마나 잘 설명되는지를 나타내는 척도이다. 즉, 모델을 평가할 떄 사용한다. 

Joint likelihood 는 여러 데이터 포인트가 있을 때, 그 데이터 전체를 하나의 모델로 설명하는 확률을 의미한다. 즉, 하나의 데이터가 아니라 여러 개의 데이터를 모두 고려했을 때 그 데이터가 모델에 의해 얼마나 잘 설명되는지를 나타내는 것이다.

 

 

 

 

위의 3개의 식은 차례로, 스팸 메일에서 i 번째 단어가 등장할 확률 , 정상 메일에서 i 번째 단어가 등장할 확률, 스팸 메일일 확률이다.

$x_i=1$ 이면 그 단어가 등장한거고 0이면 등장하지 않은 것이다. 

이메일 안에 단어 m개 있을 때, 각 단어에 대한 likelihood 를 구한 후에 모든 단어에 대한 likelihood 를 곱해서 결합한다. 


이제 나이브 베이즈를 학습하고 사용해보자. 

1단계 : MLE 를 통해 파라미터 추정

앞서 사용했던 i 변수는 잊어버리자. 여기에서 i 는 이메일의 번호, j는 이메일 안에서 단어의 번호를 의미한다. 

 

- $\phi_{j|y=1}$ : 스팸 메일에서 j번째 단어가 등장할 확률이다. 스팸 메일 중에서 j번째 단어가 등장한 횟수를 스팸 메일 전체에서 계산한다. 

- $\phi_{j|y=1}$ : 정상 메일에서 j번째 단어가 등장할 확률이다. 정상 메일 중에서 j번째 단어가 등장한 횟수를 스팸 메일 전체에서 계산한다. 

- $\phi_{y}$ : 스팸 메일이 전체 이메일 중 차지하는 비율이다. 스팸 메일의 개수를 전체 이메일 개수로 나눈 값이다.

 

2단계 : Posterior 확률 예측

Bayes 정리를 사용하여 각 클래스가 주어진 단어 집합에 속할 확률을 계산한다. 

 

 

p(y=1∣x)는 이메일에 포함된 단어 집합 x가 주어졌을 때, 해당 이메일이 스팸일 확률이다. 

분모에 p(x)는 단어들이 나올 확률로, 전체 이메일에서 해당 단어들이 나올 확률이다.

 

똑같은 방법으로 p(y=0∣x) 도 계산한다. 

 

3단계 : 클래스 선택

p(y=0∣x) 와 p(y=1∣x) 을 모두 계산한 후에 더 높은 확률을 가진 클래스를 선택하여 예측을 결정한다. 

3. Tweak data representation

Naïve Bayes 모델은 이산형 변수를 처리하기 쉽다. 즉, $x_i 단어가 등장했는지 안 했는지와 같은 이진 값일 때 성능이 좋다. 하지만 연속형 값을 다루어야 할 때, 연속형 데이터를 buckets(구간)으로 나누어 이산형으로 변환한 후 모델링할 수 있다.  특정 단어가 몇 번 등장했는지에 대한 연속형 정보를 구간화하여 처리하는 방식이다. 주로 10개의 bucket 을 이용한다. 

 

예를 들어, 단어 등장 횟수가 0에서 100까지의 범위라면, 이 범위를 10개의 구간으로 나눌 수 있다.

 

GDA 를 이용한 multivariate gaussian distribution 이 잘 작동하지 않을 때 이 방식을 사용하면 잘 작동한다. 

 

4. Laplace smoothing

학습 데이터에서는 한 번도 등장하지 않았던 단어가 테스트 데이터에서 등장하게 되면 문제가 생긴다. 이런 데이터를 unseen 데이터라고 한다. 

 

예를 들어, 35,000 번째 단어이 "Busan" 이 학습 데이터에는 없었지만 테스트 데이터에 새로 등장 했다고 해보자. 데이터에서 한 번도 등장한 적이 없기 때문에, 해당 단어에 대한 확률을 계산할 때 0으로 나온다.

  • $\phi_{35000|y=1}$ : 스팸 메일에서 "Busan"이 등장할 확률이 0
  • $\phi_{35000|y=0}$: 정상 메일에서 "Busan"이 등장할 확률도 0

 

분자와 분모가 모두 0이어서 문제가 생긴다. 

 

Laplace smoothing 으로 문제를 해결한다. 학습 데이터에 나타나지 않았던 단어들이 등장했을 때, 그 확률을 0으로 만들지 않고 작은 값을 더해주는 기법이다. 이렇게 하면 모델이 보지 못한 단어들에 대해 확률이 0이 되는 것을 방지할 수 있다.

 

기존 식에 분자에는 1을 더하고 분모에는 k 를 더하면 된다. k는 변수 x가 가질 수 있는 값의 개수이다. 스팸 메일의 예시에서는 i 번째 단어가 이메일에 등장했으면 $x_i=1$ 이고, 이메일에 등장하지 않았으면 $x_i=0$ 이기 때문에 k=2이다. 

5. Multimnomial event modal

Multimnomial event modal은 단순히 어떤 단어가 텍스트에 등장하는지 여부뿐만 아니라, 각 단어가 몇 번 등장하는지까지 고려하여 확률을 계산한다. 

  • $x_i$ i-번째 이메일에서 각 단어가 등장한 횟수
  • ∣V∣는 사전의 크기를 나타내며, 사전에 있는 단어들의 총 개수
  • : -번째 이메일의 단어 등장 횟수를 나타내는 벡터
  • $y_i$는 그 이메일이 스팸인지 아닌지. (1: 스팸, 0: 정상)
  • $prod_{i=1}^{m}$는 전체 m개의 이메일에 대한 확률을 곱하는 것

이제 Likelihood 를 최대화하는 파라미터를 찾는 MLE 를 진행하면 된다. 

 

 

6. 나이브 베이즈 장점

나이브 베이즈는 텍스트 분류와 같은 문제에서 실용적이다. 구현이 간단하고, 효율적이다. (경사 하강법과 같은 복잡한 최적화 과정 필요 없다)

 

 

'AI > ML 수업 정리' 카테고리의 다른 글

Kernel  (0) 2024.10.27
SVM  (0) 2024.10.27
2-2 Linear Models for Classification  (0) 2024.10.04
2-1. Linear Models for Regression  (0) 2024.09.20
1-2. Linear Models for Regression  (0) 2024.09.17