[Boostcamp AI Tech] Bag-of-Words, NaiveBayes Classifier

재윤·2022년 3월 7일
0

NLP

목록 보기
1/4

Bag-of-Words란?

Bag of Words란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법이다. 어떤 문서에서 등장하는 단어들을 전부 가방에 넣는다. 만약 특정 단어가 n번 등장하면 가방에는 그 단어가 n개 존재하게 된다. 가방을 벡터로 표현했을 때, 우리는 이 벡터를 Bag-of-Words(BoW)라 부른다.

Bag-of-Words 표현방법

Step 1. 입력된 문서에 대해서 단어 집합(vocaburary)을 구축

유니크한 단어들을 모아서 사전에 등록한다.
예를 들어 "John really really loves this movie","Jane really likes this song." 문장이 있다면 Vocabulary에는 {"John","really","loves","this","movie","Jane","likes","song"}이 등록된다.

Step 2. 각 단어를 one-hot vector로 인코딩

이때, 각 단어들과의 유클리드 거리(Euclidean distance)는 모두 동일하게 2\sqrt{2}이고, 코사인 유사도(cosine similarity)는 0이다.
-> 단어의 의미와는 상관없이 모든 단어들이 동일한 관계로 표현된다.

Step 3. 문장,문서를 one-hot vector들의 합으로 표현

NaiveBayes Classifier

이제 BoW로 나타낸 문서를 어떤 클래스(또는 카테고리)로 분류하는 NaiveBayes Classifier에 대해 알아보자


MAP : Maximum a posteriori(최대 사후 확률)
2->3번째줄: d라는 문서는 이 문제에서 고정된 문서 => P(d)는 상수값이므로 argmax연산에서 무시 가능

P(dc)P(c)=P(w1,w2,...,wnc)P(c)=P(c)ΠwiWP(wic)P(d|c)P(c)=P(w_1,w_2,...,w_n|c)P(c)=P(c)|\Pi_{w_i \in W}P(w_i|c)
(by conditional independence assumption)

P(dc)P(d|c): c라는 클래스가 고정되었을 떄, d라는 문서가 나타날 확률

NaiveBayes Classifier 예제

문제가 아래 그림과 같이 주어졌을 때, 5번째 문서가 어느 클래스에 속하는지 묻는 예제이다.

우선 P(CCVd5),P(CNLPd5)P(C_{CV}|d_5), P(C_{NLP}|d_5)를 구해서 비교해야 할 것이다.
P(Ccvd5)=P(d5CCV)P(CV)=P(wClassification,...,wtransformerCCV)P(CV)P(C_{cv}|d_5)=P(d_5|C_{CV})P(CV)=P(w_{Classification},...,w_{transformer}|C_{CV})P(CV)로 표현가능하고 NLP도 마찬가지이다.
여기서 P(CV)=24=12,P(NLP)=24=12P(CV)=\frac{2}{4}=\frac{1}{2}, P(NLP)=\frac{2}{4}=\frac{1}{2}이다.

그리고 각 P(d5C)P(d_5|C)를 구하면 아래 그림과 같다.

최종적으로 위에 표현된 식을 활용하여 MAP을 계산하면 다음과 같다.

따라서, "Classification task uses transformer"라는 문서는 NLP클래스에 속한다고 답할 수 있다.
위 예제뿐만 아니라 NaiveBayes Classifier는 클래스가 3개 이상인 문제에서도 확장되어 분류가 가능하지만, 특정 단어가 Train 데이터에는 포함되어있지 않고 Test데이터에만 포함되어있는 경우에는 P(wkC)=0P(w_k|C)=0이 되므로 문서가 클래스에 속할 확률이 0으로 계산되는 치명적인 단점이 있다.

profile
Naver Boostcamp AI Tech 3기🎈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ㅤㅤ⠀⠀ㅤㅤㅤㅤㅤㅤㅤㅤ2022 데이터분석 청년수련생

0개의 댓글