개요

Naive Bayes Classifiers

나이브 베이즈는 조건부 확률 모델이다. 분류될 인스턴스들은 N 개의 특성 (독립변수)을 나타내는 벡터 [math]\mathbf{x} = (x_1, \dots, x_n)[/math] 로 표현되며, 나이브 베이즈 분류기는 이 벡터를 이용하여 k개의 가능한 확률적 결과들 (클래스)을 다음과 같이 할당한다.

[math]p(C_k \vert x_1, \dots, x_n)\,[/math]

위의 공식은 특성 N의 수가 많은 경우나 하나의 특성이 많은 수의 값을 가질 수 있는 경우 확률 테이블에 베이지안 모델을 바로 적용하기 어려움이 있다. 그러므로, 위의 식은 베이즈 정리와 조건부 확률을 이용하여 다음과 같이 정리 가능하다.

[math]p(C_k \vert \mathbf{x}) = \frac{p(C_k) \ p(\mathbf{x} \vert C_k)}{p(\mathbf{x})}. \,[/math]

베이지안 확률 용어를 사용하여 위의 식은 다음과 같은 식으로도 표현 가능하다. (posterior : 사후 확률, prior : 사전확률, likelihood : 우도, evidence : 관찰값)

[math]\mbox{posterior} = \frac{\mbox{prior} \times \mbox{likelihood}}{\mbox{evidence}}. \,[/math]

실제로, 위 식에서 분자 부분만이 의미가 있다. 분모 부분의 경우에는 주어진 [math]C[/math] 값에 의존하지 않고, 특성들의 값 [math]F_i[/math]의 경우 분모의 값이 상수가 되도록 주어지기 때문이다. 분자 부분은 다음과 같은 결합확률 모델이다.

[math]p(C_k, x_1, \dots, x_n)\,[/math]

위의 식은 조건부 확률을 반복적으로 적용한 연쇄 법칙을 사용하여 다음 과 같이 다시 쓸 수 있다.

[math] \begin{align} p(C_k, x_1, \dots, x_n) & = p(C_k) \ p(x_1, \dots, x_n \vert C_k) \\ & = p(C_k) \ p(x_1 \vert C_k) \ p(x_2, \dots, x_n \vert C_k, x_1) \\ & = p(C_k) \ p(x_1 \vert C_k) \ p(x_2 \vert C_k, x_1) \ p(x_3, \dots, x_n \vert C_k, x_1, x_2) \\ & = p(C_k) \ p(x_1 \vert C_k) \ p(x_2 \vert C_k, x_1) \ \dots p(x_n \vert C_k, x_1, x_2, x_3, \dots, x_{n-1}) \end{align} [/math]

여기서 나이브 베이즈의 나이브인 이유가 들어나는데, 윗 식을 직접 계산하는 것은 매우 복잡한 과정이다. 따라서 여기서 매우 나이브한 가정으로 모든 feature x들이 독립이라고 가정하면 다음과 같이 독립성이 성립한다. 많은 경우 feature들은 독립일 수가 없다. 따라서 나이브 베이즈 분류기는 매우 간략화하여 Posterior을 구하려는 시도로 볼 수 있다.

나이브 베이즈에서 조건부 독립성은 다음과 같이 표현될 수 있다 : 카테고리 종류 [math]C[/math] 가 주어질 경우, 어떤 특성 [math]F_i[/math]의 경우 모든 [math]F_j[/math] ([math]j\neq i[/math])에 대해서 조건부 독립이다. 즉,

[math]p(x_i \vert C_k, x_j) = p(x_i \vert C_k)\,[/math],
[math]p(x_i \vert C_k, x_j, x_k) = p(x_i \vert C_k)\,[/math],
[math]p(x_i \vert C_k, x_j, x_k, x_l) = p(x_i \vert C_k)\,[/math],

[math]i \ne j,k,l[/math]에 대해 위식이 성립하게 된다. 결국, 이를 바탕으로 결합 모델은 다음과 같이 표현될 수 있다.

[math] \begin{align} p(C_k \vert x_1, \dots, x_n) & p(C_k, x_1, \dots, x_n) \\ & p(C_k) \ p(x_1 \vert C_k) \ p(x_2\vert C_k) \ p(x_3\vert C_k) \ \cdots \\ & p(C_k) \prod_{i=1}^n p(x_i \vert C_k)\,. \end{align} [/math]

위 식은 독립성 가정 하에서 클래스 변수 [math]C[/math]의 조건부 분포는 :

[math]p(C_k \vert x_1, \dots, x_n) = \frac{1}{Z} p(C_k) \prod_{i=1}^n p(x_i \vert C_k)[/math]

여기서 [math]Z = p(\mathbf{x})[/math] 는 특성값들이 주어진 경우 상수가 되는, 즉 [math]x_1, \dots, x_n[/math] 에만 의존하는 스케일링 팩터이다.

따라서 우리는 최종결과를 이용하여 주어진 데이터에대해서

[math]\hat{y} = \underset{k \in \{1, \dots, K\}}{\operatorname{argmax}} \ p(C_k) \displaystyle\prod_{i=1}^n p(x_i \vert C_k).[/math]

를 이용하여 분류하게 된다. 즉 모든 Likelihood들을 곱하고 클래스에 속할 확률을 곱하여 가장 큰 값을 주는 답을 구하면 되는 것이다.

Prevent overfitting

Laplace smoothing을 사용하면 된다. [math]p_{i,\ \mathrm{empirical}} = \frac{x_i}{N}[/math]

여기에 Laplace smoothing을 적용하면 가상의 실험을 더할 수 있다.

[math]p_{i,\ \alpha\text{-smoothed}} = \frac{x_i + \alpha}{N + \alpha d},[/math]

Bag of Words model

베이즈의 독립성이 참이라고 가정한다면, 문장을 나이브 베이즈 분류기로 분류할경우 너무 많은 경우의 수가 존재 한다. 만약 문자의 위치는 중요하지 않다고 가정을 한다면 특정 문자의 문장에서의 빈도로 계산량을 줄일 수 있다. 즉 이러한 모델을 Bag of words model이라고 한다. 또한 그림을 분류한다고 할때, 그림을 퍼즐처럼 생각할 수 있다. 정상적인 분류기라면 퍼즐 조각의 위치까지 생각하여서 그림을 분류하여야 하지만, 나이브 분류기는 이러한 가정을 무시하고 그냥 모든 퍼즐 조각의 그림만 보고 분류한다. 이는 Bag of visual words라고 한다. 이러한 모델은 feature가 위치에서도 독립이라고 가정하기 때문에 분류에 있어서 많은 한계를 가지고 있다. 그러나 실제로 분류를 해보면 꽤 정확히 분류되는 것을 확인 할 수 있다. 현재 NLP에서 납득할 만한 성능을 Naive Bayes Classifiers를 이 모델에 사용한 것에 대해서 보이고 있다.

Navie Gaussian Bayes