나이브 베이즈(Naive Bayes)

김승혁·2024년 11월 27일

나이브 베이즈(Naive Bayes)는 조건부 확률을 기반으로 하는 분류 알고리즘으로, 각 특성(features)들이 서로 독립적이라고 가정하고 베이즈 정리를 이용하여 분류를 수행합니다.

1. 베이즈 정리 (Bayes' Theorem)

베이즈 정리와 우도

2. 나이브 베이즈 분류기 (Naive Bayes Classifier)

나이브 베이즈 분류기의 목표는 주어진 데이터에 대해 각 클래스의 확률을 계산하고, 가장 높은 확률을 가진 클래스를 선택하는 것입니다.
CC를 클래스, x=(x1,x2,,xn)x = (x_1, x_2, \dots, x_n)을 특성 벡터라고 할 때, 나이브 베이즈 분류기는 다음과 같이 클래스를 예측합니다.

y^=argmaxCkP(Ckx1,x2,,xn)\hat{y} = \arg \max_{C_k} P(C_k | x_1, x_2, \dots, x_n)

베이즈 정리를 이용하면 이를 다음과 같이 변형할 수 있습니다:

P(Ckx1,x2,,xn)=P(x1,x2,,xnCk)P(Ck)P(x1,x2,,xn)P(C_k | x_1, x_2, \dots, x_n) = \frac{P(x_1, x_2, \dots, x_n | C_k) P(C_k)}{P(x_1, x_2, \dots, x_n)}

여기서 P(Ck)P(C_k)는 클래스 CkC_k의 사전 확률(prior probability)이고, P(x1,x2,,xnCk)P(x_1, x_2, \dots, x_n | C_k)는 클래스 CkC_k에 대한 특성들의 조건부 확률입니다.


3. 나이브 가정 (Naive Assumption)

나이브 베이즈의 핵심 가정은 각 특성들이 서로 독립적이라는 것입니다.
즉, 특성들 간의 상관관계를 고려하지 않고, 각 특성이 클래스 CkC_k에 조건부로 독립적이라고 가정합니다.
이 가정을 통해 조건부 확률을 분해할 수 있습니다:

P(x1,x2,,xnCk)=i=1nP(xiCk)P(x_1, x_2, \dots, x_n | C_k) = \prod_{i=1}^{n} P(x_i | C_k)

따라서 최종적으로 나이브 베이즈 분류기의 예측 식은 다음과 같습니다:

y^=argmaxCk(P(Ck)i=1nP(xiCk))\hat{y} = \arg \max_{C_k} \left( P(C_k) \prod_{i=1}^{n} P(x_i | C_k) \right)


4. 정리

나이브 베이즈 분류기는 그 단순성과 효율성 덕분에 많은 실제 문제에서 유용합니다.
특성들이 독립적일 때 이상적인 성능을 보이며, 텍스트 분류와 같은 분야에서는 매우 뛰어난 성능을 발휘할 수 있습니다.
그러나 특성 간 의존성이 큰 문제에서는 성능이 저하될 수 있습니다. 그리고 독립성 가정이 현실과 다를 수도 있습니다.


5. 예제

(1). 데이터

샘플특성 1특성 2클래스
111A
210A
301B
400B
511A
601B

(2). 목표

특성 1이 1이고, 특성 2가 0인 샘플이 주어졌을 때, 해당 샘플이 클래스 A인지 클래스 B인지 예측하고자 합니다.


(3). 베이즈 정리

베이즈 정리에 따라, 주어진 특성에 대해 각 클래스의 조건부 확률을 구합니다.

P(Ckx1,x2)=P(x1,x2Ck)P(Ck)P(x1,x2)P(C_k | x_1, x_2) = \frac{P(x_1, x_2 | C_k) P(C_k)}{P(x_1, x_2)}

여기서 CkC_k는 클래스 AA 또는 BB, x1x_1은 특성 1, x2x_2은 특성 2입니다.

이제 베이즈 정리를 사용하여 각 클래스에 대해 조건부 확률을 계산합니다.


(4). 사전 확률 P(Ck)P(C_k)

클래스 AABB의 사전 확률을 먼저 계산합니다.
각 클래스의 확률은 해당 클래스가 데이터셋에서 등장하는 빈도로 계산됩니다.

  • P(A)P(A): 클래스 A는 3번 (샘플 1, 2, 5) 등장하므로:

    P(A)=36=0.5P(A) = \frac{3}{6} = 0.5

  • P(B)P(B): 클래스 B는 3번 (샘플 3, 4, 6) 등장하므로:

    P(B)=36=0.5P(B) = \frac{3}{6} = 0.5


(5). 조건부 확률 P(xiCk)P(x_i | C_k)

다음으로 각 특성에 대해 주어진 클래스에서의 조건부 확률을 계산합니다.

P(x1=1A)P(x_1 = 1 | A) (특성 1이 1일 때 클래스 A일 확률):

클래스 A에서 특성 1이 1인 샘플은 샘플 15입니다. 따라서:

P(x1=1A)=23P(x_1 = 1 | A) = \frac{2}{3}

P(x1=1B)P(x_1 = 1 | B) (특성 1이 1일 때 클래스 B일 확률):

클래스 B에서 특성 1이 1인 샘플은 없습니다. 따라서:

P(x1=1B)=03=0P(x_1 = 1 | B) = \frac{0}{3} = 0

P(x2=0A)P(x_2 = 0 | A) (특성 2가 0일 때 클래스 A일 확률):

클래스 A에서 특성 2가 0인 샘플은 샘플 2입니다. 따라서:

P(x2=0A)=13P(x_2 = 0 | A) = \frac{1}{3}

P(x2=0B)P(x_2 = 0 | B) (특성 2가 0일 때 클래스 B일 확률):

클래스 B에서 특성 2가 0인 샘플은 샘플 4입니다. 따라서:

P(x2=0B)=13P(x_2 = 0 | B) = \frac{1}{3}


(6). 사후 확률 계산

이제 각 클래스에 대해 조건부 확률을 계산할 수 있습니다.

클래스 A의 사후 확률 P(Ax1=1,x2=0)P(A | x_1 = 1, x_2 = 0):

P(Ax1=1,x2=0)P(A)P(x1=1A)P(x2=0A)P(A | x_1 = 1, x_2 = 0) \propto P(A) \cdot P(x_1 = 1 | A) \cdot P(x_2 = 0 | A)

P(Ax1=1,x2=0)0.52313=19P(A | x_1 = 1, x_2 = 0) \propto 0.5 \cdot \frac{2}{3} \cdot \frac{1}{3} = \frac{1}{9}

클래스 B의 사후 확률 P(Bx1=1,x2=0)P(B | x_1 = 1, x_2 = 0):

P(Bx1=1,x2=0)P(B)P(x1=1B)P(x2=0B)P(B | x_1 = 1, x_2 = 0) \propto P(B) \cdot P(x_1 = 1 | B) \cdot P(x_2 = 0 | B)

P(Bx1=1,x2=0)0.5013=0P(B | x_1 = 1, x_2 = 0) \propto 0.5 \cdot 0 \cdot \frac{1}{3} = 0



왜 사후 확률 계산식이 베이즈 정리와 다른가?

  • 정확한 사후 확률 값은 정규화 상수를 포함해야 하지만, 두 확률 값을 비교할 때는 이 값이 중요하지 않습니다.
    (값을 비교하는 과정에서 어차피 정규화 상수는 소거되기 때문)
    따라서 정규화 상수를 생략하고 위와 같이 비례식을 사용하여 비교합니다.

  • P(x1,x2,,xn){P(x_1, x_2, \dots, x_n)} : 전체 확률을 고려한 정규화 상수

  • \propto : 비례한다



(7). 결론

  • P(Ax1=1,x2=0)=19P(A | x_1 = 1, x_2 = 0) = \frac{1}{9}
  • P(Bx1=1,x2=0)=0P(B | x_1 = 1, x_2 = 0) = 0

따라서, 특성 1이 1이고, 특성 2가 0인 경우, 클래스 A에 속할 확률이 더 높으므로, 예측된 클래스는 A입니다.

profile
열심히 사는 척

0개의 댓글