Replicated

나이브 베이지안 분류기 본문

빅데이터마이닝

나이브 베이지안 분류기

라구넹 2025. 4. 12. 18:25

- 베이즈 분류기: 하나의 변수만 고려

- 나이브 베이지안 분류기(Naive Bayesian Classifier) : 여러 개의 열을 사용하여 분류기 구성

- 변수들 간 상호 의존성이 없다고 가정 -> 조건부 확률 독립적 계산 가능

 

독립적이니 그냥 다 곱하면 됨

 

BoW(Bag of Words)

- 단어별로 인덱스가 부여되어 있을 때 한 문장 또는 한 문서에 대한 벡터를 표현하는 기법

- 전체 문서에 있는 모든 단어들에 이미 인덱스가 부여되어 있고 출현한 단어에 대해서만 단어의 개수를 벡터로 표현

y_example_text = ["Sports", "Not Sports", "Sports", "Sports", "Not Sports"]
y_example = [1 if c=="Sports" else 0 for c in y_example_text ]
text_example = ["A great game game",
"The The election was over",
"Very clean game match",
"A clean but forgettable game game",
"It was a close election", ]
from sklearn.feature_extraction.text import CountVectorizer

countvect_example = CountVectorizer()

X_example = countvect_example.fit_transform(text_example)
countvect_example.get_feature_names_out()

 

 

BoW 기법으로 표현

 

각 단어의 빈도

 

베르누이 나이브 베이지안 분류기(BernoulliNB)

- 다루고자 하는 모든 데이터가 boolen 피쳐

- 사용되는 데이터 타입은 이산형 데이터인데 이러한 데이터를 모두 boolen 타입으로 변경하여 학습

- 정수 타입 숫자라면 임계값 기준으로 True, False 변환

from sklearn.naive_bayes import BernoulliNB
clf = BernoulliNB(binarize=0) # 0 또는 0 이상인 건 1.. 기준임
clf.fit(X_example, y_example)

 

test_sentence = ["The The election was over"]

X_test = countvect_example.transform(test_sentence)
prediction = clf.predict(X_test)

if prediction[0] == 1:
  print("Sports")
else:
  print("Not Sports")

문장을 넣어서 예측 수행 가능

 

 

다항 나이브 베이지안 분류기

- MultinomialNB : 베르누이 분류기와 달리 각 피쳐들이 이산형이나, 이진값이 아닌 여러 개의 값을 가질 수 있음

- 단어가 있다, 없다 vs 몇 개 있다

 

가능도

tf(xi,dYc)

- 각 단어 xi가 하나의 클래스인 Yc에 속하는 모든 문서에 존재하는 개수

- 즉 Sports에 속하는 문장들에 game이라는 단어가 몇 번 나오는지

 

α

- 스무딩값

- 제로 확률 문제를 해결하기 위해 도입

- 주로 1

 

 

데이터 문서 단어 클래스
훈련 데이터 1 Chinese Beijing Chinese c
2 Chinese Chinese Shanghai c
3 Chinese Macao c
4 Tokyo Japan Chinese j
테스트 데이터 5 Chinese Chinese Chinese Tokyo Japan ?

P(Chinese|c)

∑tf(xi,d∈Yc) : 5

NdYc : 8

V : 6

=> (5 + 1) / (8 + 6) = 6/14 = 3/7

 

from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB(alpha=1)
clf.fit(X_example, y_example)

'빅데이터마이닝' 카테고리의 다른 글

베이즈 분류기  (0) 2025.04.12
다중클래스 분류의 코드 구현  (0) 2025.04.12
다중클래스 분류 & 소프트맥스 분류  (0) 2025.04.12
로지스틱 회귀 구현  (0) 2025.04.12
분류 문제의 성능 지표  (0) 2025.04.12