2017/03/09 - [CS/ML] - ML101 : 나이브 베이즈 (Naive Bayes) : 베이즈 정리



이전 글에서 알아본 베이즈 정리에 이어, 나이브 베이즈 분류에 대해서 알아보도록 하겠습니다. 아래 그림은 필기체 숫자를 인식하는 나이브 베이즈 분류기의 예제 입니다. 8 x 8 의 행렬이 있고, 해당 행렬에는 총 64개의 feature 값들이 있습니다. 각 feature 의 색이 칠해져 있는 상태에 따라서 숫자를 판별합니다.



예를들어, 3 이라는 숫자의 경우 3행 1열에 색이 칠해져 있을 확률이 매우 낮을 것입니다. 반면에 5행 5열에 색이 칠해져 있다면 3일 숫자의 확률은 매우 높을 것 입니다. 이러한 조건에 대한 확률을 표현한 표를 Conditional Probability Table 이라 하며 위 그림의 오른쪽 표들 입니다. 그리고 각 클래스별 확률을 나타낸 테이블을 Priority Table 혹은 Class Table 이라 부르며 P(Y) 로 정의된 왼쪽 표 입니다. 


P(F3, 1 = on | Y) 는 1 ~ 0 까지 가질 수 있는 결과 값의 Class 들일 경우에 색이 칠해져 있을 확률 입니다. 다시 말해 숫자 3일 경우 F3, 1 에 색이 칠해져 있을 확률은 0.05, 숫자 6일 경우 0.9 라고 할 수 있습니다.


그렇다면 8 x 8 의 숫자가 그려져 있는 어떤 그림이 주어졌을 때 해당 그림의 숫자가 무엇인지 어떻게 판별할 수 있을까요? 지난 글에서 다루었던 베이즈 정리를 바탕으로 이 문제를 풀어보도록 하겠습니다. F0,0 ~ F15,15 총 64개의 CPT 가 주어졌을 때 Class 들의 확률을 구하는 식은 아래와 같습니다.



주어진 Class table 과 CPT 들의 곱을 이용하여 입력으로 들어오는 그림의 상태에 따라 어떠한 숫자인지 값을 구할 수 있고 가장 확률이 높은 Class 값에 맞게 해당 숫자를 예측할 수 있습니다. 


본래의 식은 분모로 P(F) 를 가지는 것이 맞으나 위 문제의 경우  모든 클래스에 대해서 동일한 분모를 가지기 때문에 어떤 클래스 값이 가장 높은지 비율만 구하는 문제에서는 분자의 크기만 아는 것으로 충분하기에 이를 생략할 수 있습니다.



※ 라플라스 스무딩 (Laplace Smoothing)

위의 방법의 경우 인풋 값이 우리가 생각하는 일반적인 모양의 숫자가 들어왔다고 했을 때는 잘 동작할 수 있지만 학습 데이터에 없던 값이 들어오거나 이상 값이 들어올 경우 확률이 0이 되는 값이 나와 정상적으로 분류가 안되는 경우가 있습니다.


이럴 경우 값의 보정을 위해 사용되는 기법이 라플라스 스무딩 기법 입니다. 라플라스 스무딩은 실제로 관찰한 것보다 한번씩 더 봤다고 가정 하는 것 입니다. 즉 확률이 0일 경우를 제외시키는 방법으로 일반적으로 아래의 식과 같이 표현 합니다.