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 |