Naive bayes classifier의 개념과 핵심 아이디어
1. Naive bayes classifier
bag of words로 얻은 sentence나 document를 특정 category로 분류하는 모델링중 가장 간단한 것이 naive bayes classifier
d개의 문서(input)가 c개의 class에 분류될 수 있다면 특정한 문서 d는 어떤 클래스로 분류하는 것이 합리적인가?
d가 주어질 때 모든 c에 대해 C=c의 조건부확률이 가장 높은 c에 분류하는 것이 합리적이다.
사후확률을 가장 높이는 maximum a posteriori
베이즈 정리를 이용하면 위 식은 아래와 같아진다.
그런데 주목할 점은 우리는 특정한 문서 d에 주목한다는 것이다.
특정한 문서 d가 뽑힐 확률 P(d)는 하나의 상수일 것이다.
상수 값은 최대화하는데 의미가 없으므로 P(d|c)P(c)/P(d)를 최대화하는 것과 P(d|c)P(c)를 최대화하는 것은 동일하다.
그러므로 식은 아래와 같이 쓸 수 있다.
P(d|c)는 무엇인가? 특정한 class가 C=c로 고정되었을 때 주어진 문서 d가 그러한 class에 속할 확률이다.
bag of words에서 문서(document)나 문장(sequence)은 단어들의 곱사건으로 나타난다는 것을 알 수 있었다.
단어 one hot vector w1,w2,w3,...,wn이 하나의 공간에 동시에 일어난 것이 d와 같으므로
P(d|c) = P(w1,w2,w3,...,wn|c)
그런데 class가 C=c로 주어질 때 w1,w2,...wn들이 조건부독립(conditional independence)라고 한다면?
왜 그럴까?
조건부독립의 정의는 분명히 X,Y가 Z가 주어질 때 조건부독립이라면 P(X|Y,Z)=P(X|Z)로 조건부에서 없어지는 것인데?
---------------------------------------------------------------------------------------------------------------------
(증명)
https://deepdata.tistory.com/175
---------------------------------------------------------------------------------------------------------------------
실제로 naive bayes는 이러한 조건부 독립가정을 하고 있다.
이제 문서 d의 class에 속할 확률을 추정하는 것은
class의 사전확률 P(c)와 개별 단어가 특정 class내에서 존재할 확률 P(wi|c)를 알면 구할 수 있다.
2. 예제로 계산해보는 분류확률
cv라는 class는 4개중 2개 있고 nlp라는 class는 4개중 2개 있으므로 각각 class의 사전확률은
각 class 내에서 test에 존재하는 단어 classification, task, uses, transformer가 등장할 확률을 구해본다면
예를 들어 classification이라는 단어가 cv라는 class 내에 존재할 조건부확률은
cv라는 class에는 14개의 단어가 존재하고 classification은 1개만 존재하므로 1/14
단어 수를 셀때 중복을 빼야하는거 아니냐고?
one hot encoding할 때야 뺀거지 지금은 존재하는 하나의 데이터인데 뺄 이유가 없다.
실제로 sentence의 one hot vector를 계산할 때 위에서 첫번째 문장의 경우 really 가 두번 더해진거 확인 가능하다.
중요한 점은 test의 class를 예측하고 싶기때문에 당연한거지만 test내 존재하는 단어들의 class 조건부확률만 구하면 된다
최종적으로 test의 sentence가 각 class cv,nlp에 속할 조건부확률은
cv에 속할 확률이 높으므로 cv로 분류하는 것이 합리적이다.
'딥러닝 > NLP' 카테고리의 다른 글
Word2Vec의 핵심 아이디어 (0) | 2022.02.05 |
---|---|
naive bayes classifier의 문제점을 보완하는 Laplace smoothing (0) | 2022.02.04 |
transformer은 NLP의 트렌드를 어떻게 바꾸었을까 (0) | 2022.01.28 |
bag of word - 왜 단어는 숫자 벡터로 표현해야할까? - (0) | 2022.01.25 |
텍스트마이닝(Text Mining)과 정보검색(information retrieval)이란? (0) | 2022.01.25 |