Training Naïve Bayes

경사하강법 없음. 그냥 출현횟수만 셀 것임.

 

1. 전처리

- 소문자화, 특수문자, 대명사 제거, 불용어 제거, 어간 분리, 토큰화

 

2. word count

- 클래스별로 출현횟수 정리한 사전 구축

 

3. 조건부확률 계산 + 라플라시안 스무딩

 

4. 람다 계산

 

5. log prior 추정

- 클래스별 전체 트윗 개수로 비율 구한 후 log값 구함

(* 완전히 균형이 맞춰진 데이터셋에서 log prior는 0 이 됨)

 

 

Testing Naïve Bayes

- 훈련된 나이브 베이즈 모델로 새로운 트윗의 감정을 예측하기

- 람다 스코어표, log prior 활용

     - 람다 스코어표를 모두 더한다

     - 사전에 없는 새로운 단어는 neutral로 간주한다

     - log prior 도 더한다

     - 이 결과가 1보다 크면 긍정

 

훈련된 나이브 베이즈 모델의 성능 검증하기

Xval, Yval 준비

 

Xval 에 대해서 예측 시행

Yval 과 결과 비교하여 맞는 경우 1, 틀린 경우 0

이들을 모두 곱한 후 검증셋 개수로 나누면 됨 (로지스틱 회귀에서 한 것과 동일)

 

 

Applications of Naïve Bayes

나이브 베이즈 모델로 트윗의 감정을 분류한다는 것 = 

클래스에서 단어들의 결합확률(joint probability)로써 각 클래스의 확률을 구하는 것

 

나이브 베이즈 정리는 이 두 확률의 ratio 임

 

적용 사례

1. author identification

2. spam filtering

3. information retrieval (어떤 문서가 중요한지)

4. word disambiguation (동음이의어의 뜻을 분류)

 

 

Naïve Bayes Assumptions

assumptions underlying the naive bayes method

 

[independence of words in a sentence]

"It is sunny and hot in the Sahara desert"

나이브 베이즈에서는 단어들끼리 독립적이라고 가정하지만,

sunny와 hot만 해도 같이 등장하는 경우가 많음

또 두 단어는 사하라 사막을 설명하고 있음

--> 단어 간의 독립성이 보장되지 않음

--> 각 단어들의 조건부확률을 under/overestimate할 위험이 있음

 

"It's always cold and snowy in __."

__를 채울 때 spring, summer, fall, winter 들로부터 동일한 확률을 계산하게 될 수 있음 ❓

 

[relative frequency in corpus]

학습 말뭉치의 분포에 의존하고 있음

예를 들어 트위터만 해도 긍정적인 트윗이 더 많이 나타남 (부정적인 트윗은 banned 당한 경우가 많아서)

그렇게 되면 optimistic 하거나 pessimistic한 모델이 탄생할 수 있음

 

Error Analysis

[전처리 문제]

- ':('와 같은 특수문자가 제거 되었을 때

 

[단어 순서]

"This is not good, because your attitude is not even close to being nice"

--> [good, attitude, close, nice] ?!

 

[adversarial attacks]

반어법, 아이러니, 완곡어법

 

복사했습니다!