Supervised learning은 data 와 label 가 주어졌을 때, data 안에서 특정 pattern을 찾고자 한다. Unsupervised learning과는 다르게 가 pair로 주어지게 된다.
여기서 가 categorical information일 때는 classification 문제가 될 것이다. Classification에서는 decision boundary를 그려서 label에 맞게 data를 나눠야 한다. 이때 가 continuous value라면 classification이 아닌 regression task가 된다. 그렇게 되면 특정한 pattern을 따르는 trend를 찾아야 하고, 이번에는 나누는 것이 목적이 아닌 근사하는 것이 목적이 된다.
Unsupervised learning과 마찬가지로 supervised learning도 training과 testing 과정이 필요하다. Training의 의미는 결국에는 function 를 찾고자 하는 것이다. 대부분 unsupervised learning과 과정이 비슷하다.
Training에서 를 찾게 되면 다음으로는 testing을 해야한다. Supervised learning에서 testing은 training에서 찾은 가 잘 동작하는지 확인하는 과정이다.
Data와 label이 있다면 hypothesis를 만들고 data에 가장 잘 어울리는 model을 찾아야 한다. 여기서 hypothesis는 classifier나 regressor로 정말 다양한 종류가 존재한다.
Supervised learning에는 다음과 같이 정말 다양한 방법들이 존재한다.
Naive Bayes classifier는 conditional probabilistic model로, 각 feature 혹은 attribute가 서로 independent하다는 강력한 가정이 있다. 대부분의 많은 attribute가 서로 correlation이 존재하게 되는데, Navie Bayes의 경우에는 모든 attribute가 independent하다는 가정을 가지게 된다(conditionally independent). 이러한 이유 덕분에 Naive Bayes는 현실에서 잘 동작할 수가 있다. 그리고 우리는 maximum likelihood 방법을 사용해서 Naive Bayes를 학습하게 되며, 상대적으로 적은 training set을 필요로하게 된다. Naive Bayes가 적은 training set만을 필요로하는 이유는 이 방법이 probabilistic model을 사용하기 때문이다.
Data로 data matrix 와 attribute , 그리고 label 가 주어졌을 때 data로부터 pattern을 찾아야 한다. Label의 경우 가능한 결과들을 총 개 가지고 있다. Naive Bayes Classifier가 probabilistic model이기 때문에 우리는 주어진 data에 대하여 가능한 결과들에 대한 probability를 구해야 한다. 여기서 의 경우는 single sample 로 생각할 수 있다.
예를 들어 사람의 얼굴 를 Naive Bayes classfier에 넣었다고 해보자. 그리고 가능한 결과로 {dog, cat, person}이 있다고 해보자. 그러면 우리는 먼저 를 구해야 하고, 이들을 전부 합쳐서 1이 되도록 해야한다. 각각의 확률이 0.2, 0.3, 0.5라고 했을 때 argmax operator를 통해서 우리는 사람일 때 probability가 가장 크다는 것을 이야기해야 한다. 이러한 흐름대로라면 가장 먼저 각각의 class에 대하여 probability를 구해야 한다. 그리고 이 식은 다시 Bayes Theroem을 이용해서 conditional probability를 분해해서 적을 수가 있다. 그렇게 되면 posterior를 prior와 likelihood의 곱의 형태로 구할 수가 있다. 사실 evidence라는 것은 와는 무관하기 때문에 결국에는 posterior가 prior와 likelihood에 비례하는 구조를 가지게 된다.
다시 살펴보았을 때 우리는 를 예측해야 한다. 그리고 이 상황에서 우리는 라는 data가 존재하는 것이다. 아무래도 data가 주어졌을 때 label을 구한다는 관점에서의 posterior를 바로 구하기는 어렵기 때문에 이를 Bayes Theorem을 통해서 쉽게 구하자는 이야기다. 결국 마지막에는 목적대로 MAP를 이용해서 posterior가 가장 큰 경우를 구하면 되고, posterior를 직접 구하기 어렵기 때문에 위에서 정리한 prior와 likelihood를 이용해서 구하면 된다.
Data가 주어졌을 때 label 에 대한 probability를 modeling하고자 하며, 이는 다시 likelihood와 prior probability의 조합으로 나타낼 수 있다. 그렇다면 여기서 의문점은 posterior를 likelihood와 prior로 나타낸다고 하더라도 어떻게 해서 likelihood와 prior probability를 구할 수 있을지이다. 사실 이 2개의 probability를 구하는 것은 정말로 간단하다. Data matrix와 각 sample에 대한 label이 있으면 그저 조건에 맞는 것을 세서 probability를 구하면 된다. 단순히 세는 것이 Naive Bayes의 학습 과정이기 때문에 복잡한 과정이 존재하지 않는다.
만약 가 uniform하다면 이 또한 생략할 수 있고, 그렇게 되면 결국에는 likelihood만 남게 될 것이다. 그러면 이제 를 가장 크게 만드는 를 찾기만 하면 된다. 이는 joint probability 를 사용해서 얻을 수 있다. 모든 attribute와 동시에 label 가 동시에 나타날 확률은 Bayes Theorem과 chain rule을 이용해서 구하면 된다. 계속해서 각 attribute에 관한 conditional probability 형태로 곱해가면 된다. 하나의 joint probability가 여러개의 conditional probability의 곱으로 된 것이다. 그리고 여기에 강력한 가정이었던 모든 attribute의 independence를 도입하게 되면 다음과 같이 정리할 수 있다.
각 conditional probability에서 해당 attribute 외에는 어떠한 영향도 미치지 못하기 때문에 식이 간단해진 것이다.
이러한 비례 관계에서 probability를 만들어주기 위해서 위와 같이 nomalization을 해줘야 한다.
그리고 최종적으로 argmax operator를 이용해서 원하는 label을 찾으면 된다.