본문 바로가기
자연언어처리 (NLP)

Naive Bayes Classifier 설명

by 꼰대코더 2024. 4. 5.

 스팸메일, 댓글등의 감정분류등에 간편하게 쓰이는 Naive Bayes Classifier 의 이론 원리를 알아보자.

 

정상메일(ham) 과 비정상메일(spam)을 분류하기 위해 ham 8개 spam 4개의 혼합된 데이터를 트레이닝 했다고 하자.

트레이닝 데이터에 "Dear" "Friend" "Lunch" "Money" 의 4개 단어가 사용되었다고 할때 내부적으로 아래와 같이 ham 트레이닝 데이터 속에 출현되는 빈도의 히스토그램과 spam 트레이닝 데이터의 출현빈도를 계산한다.

  히스토그램 출현횟수 P(A | B)
*P = Probabilistic 확률적인
 A = 단어
 B = 클래스(ham, spam)
ham
Dear : 8 번
Friend : 5 번
Lunch : 3 번
Money : 1 번

전체 : 17
P(Dear|ham)=8/17=0.47
P(Friend|ham)=5/17=0.29
P(Lunch|ham)=3/17=0.18
P(Money|ham)=1/17=0.06
spam
Dear : 2 번
Friend : 1 번
Lunch : 0 번
Money : 4 번

전체 : 7
P(Dear|ham)=2/7=0.29
P(Friend|ham)=1/7=0.14
P(Lunch|ham)=0/7=0.00
P(Money|ham)=4/7=0.57

 

Prior Probalitity (우선확률=초기추측) 계산

P(ham) = ham트레이닝데이터 수 / 전체 트레이팅 데이터 수 =8/12 = 0.67
P(spam) = spam트레이닝데이터 수 / 전체 트레이팅 데이터 수 =4/12 = 0.33

 

미지의 메일(내용="Dear Friend")의 분류

ham score P(ham) x P(Dear|ham) x P(Friend|ham) =0.67 x 0.47 x 0.29 = 0.09
spam score P(spam) x P(Dear| spam ) x P(Friend| spam )  =0.33 x 0.29 x 0.14 = 0.01 X

위의 계산 결과로 미지의 메일은 정상메일(ham = 0.09 > 0.01)로 분류 되었다.

 

♠ 빈도가 0번인 단어의 대응

미지의 메일(내용="Lunch Money Money Money") 을 분류하고자 하면 직관적으로는 P(Money|ham) 값이 크기때문에 스팸메일로 분류될것이란걸 알 수 있지만 P(Lunch|ham) 값이 0 이므로 계산적으로는 정상메일로 분류되게 된다.

이를 극복하기 위해 빈도수에 알파값을 더해 주면 해결 할 수 있다.

+  alpha ■ ⇒
+  alpha ■ ⇒

 

 

'자연언어처리 (NLP)' 카테고리의 다른 글

nltk.NaiveBayesClassifier 를 이용한 스팸메일 분류  (0) 2024.04.07
wordcloud  (0) 2024.03.13
stopwords  (0) 2024.03.13
워드 토큰화  (0) 2024.03.13
(Word2Vec) model training  (1) 2023.12.21