Theory/IE

[Data Mining_10] 나이브 베이즈 분류기

zzzzzooooo0000099999 2025. 4. 15. 10:31

1. 개요

  나이브 베이즈 분류기는 확률 기반의 분류 알고리즘으로, 간단하지만 강력한 성능을 보이는 모델이다.

 

- 이메일 스팸 필터링, 뉴스 기사 분류, 감성 분석 등에서 널리 사용
- 핵심은 베이즈 정리(Bayes’ Theorem)를 바탕으로 각 클래스에 속할 확률을 계산하여 가장 높은 확률로 분류하는 방식이다.

 

2. 조건부 독립성 가정 (Naive Assumption)

  “모든 특성(변수)은 결과값(클래스)을 제외하면 서로 독립이다”라고 단순하게 가정한다.

 

- 예시 : 메일이 스팸인지 판단할 때 - 단어 ‘무료’, ‘광고’, ‘클릭’이 있을 수 있음 → 이 단어들이 서로 연관되어 있을 수 있지만, 나이브 베이즈는 이들을 서로 독립적으로 본다고 가정한다.

 

3. 사후 확률 계산과 분류

- 핵심 개념 : 베이즈 정리

  - "이메일이 스팸이라는 가정 하에 이 단어가 나올 확률"이 아니라

  - "이 단어가 나왔을 때, 이메일이 스팸일 확률"을 계산한다.

 

- 용어 정리

용어 의미
사전 확률 클래스 자체가 발생할 확률 (예: 전체 중 스팸 비율)
우도(Likelihood) 해당 클래스에서 관측된 입력값이 나올 확률
사후 확률 입력값이 주어졌을 때, 특정 클래스일 확률 (최종 결정 기준)

 

- 분류 흐름

1. 입력된 데이터의 각 특성 값에 대해
2. 각 클래스별 사후 확률을 계산
3. 가장 높은 사후 확률을 갖는 클래스로 분류

 

4. 나이브 베이즈 분류기 종류

유형 설명 예시
가우시안 NB 연속형 특성이 정규분포를 따른다고 가정 키, 몸무게 등 수치 데이터
멀티노미얼 NB 특성 값이 정수로 표현되는 경우 텍스트 데이터 (단어 빈도)
베르누이 NB 특성이 이진값(0 or 1)인 경우 단어의 존재 여부

 

5. 장점과 단점

장점 단점
계산이 빠르고 단순함 독립성 가정이 실제와 다를 수 있음
적은 데이터로도 잘 작동 연속형 변수 처리 한계
고차원 데이터에 강함 모든 특성이 중요하다고 간주

 

6. 예제 (Python - Scikit-learn)

from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer

texts = ["free money now", "hi how are you", "get rich quick"]
labels = [1, 0, 1]  # 1: spam, 0: ham

vec = CountVectorizer()
X = vec.fit_transform(texts)

model = MultinomialNB()
model.fit(X, labels)

new_text = vec.transform(["free offer now"])
print("예측 결과:", model.predict(new_text))

 

7. 결론

- 나이브 베이즈는 조건부 독립이라는 강한 가정에도 불구하고 텍스트나 이진 데이터에서 가볍고 효과적으로 작동하는 분류기이다.
- 단순한 확률 계산 기반으로도, 상당히 강력한 성능을 낼 수 있다는 점에서 실제 서비스에서도 자주 활용된다.

 

 

나이브 베이즈는, 단순한 가정으로 빠르고 효과적인 분류를 이끄는 확률 기반의 알고리즘이다.

'Theory > IE' 카테고리의 다른 글

[Data Mining_12] 판별 분석  (0) 2025.04.15
[Data Mining_11] 신경망  (0) 2025.04.15
[Data Mining_9] E-NN 알고리즘  (0) 2025.04.15
[Data Mining_8] 분류 회귀 트리  (0) 2025.04.15
[Data Mining_7] 로지스틱 회귀 분석  (0) 2025.04.14