나이브 베이즈

나이브 베이즈 (Naive Bayes) #

나이브 베이즈(Naive Bayes)는 베이즈 정리(Bayes’ theorem)를 기반으로 하는 확률적 분류 알고리즘이다. “나이브(Naive)“라는 이름이 붙은 이유는 모든 특성들이 서로 독립적이라는 강한 가정을 하기 때문이다. 이 가정이 현실적으로는 맞지 않는 경우가 많지만, 실제로는 놀라울 정도로 좋은 성능을 보여주는 알고리즘이다.

베이즈 정리 (Bayes’ Theorem) #

나이브 베이즈의 핵심은 베이즈 정리이다:

$$P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$

분류 문제에 적용하면:

$$P(C_k|X) = \frac{P(X|C_k) \cdot P(C_k)}{P(X)}$$

여기서:

  • $P(C_k|X)$: 특성 X가 주어졌을 때 클래스 $C_k$에 속할 후확률(posterior probability)
  • $P(X|C_k)$: 클래스 $C_k$가 주어졌을 때 특성 X가 나타날 우도(likelihood)
  • $P(C_k)$: 클래스 $C_k$의 사전확률(prior probability)
  • $P(X)$: 특성 X의 주변확률(marginal probability)

나이브 가정 (Naive Assumption) #

나이브 베이즈는 모든 특성들이 조건부 독립이라고 가정한다:

$$P(X_1, X_2, ..., X_n|C_k) = \prod_{i=1}^{n} P(X_i|C_k)$$

이 가정으로 인해 계산이 단순해지고 빠른 학습과 예측이 가능하다.

나이브 베이즈의 종류 #

1. 가우시안 나이브 베이즈 (Gaussian Naive Bayes) #

연속형 특성이 정규분포를 따른다고 가정한다.

$$P(X_i|C_k) = \frac{1}{\sqrt{2\pi\sigma_{k}^2}} \exp\left(-\frac{(X_i - \mu_k)^2}{2\sigma_k^2}\right)$$

여기서 $\mu_k$와 $\sigma_k$는 클래스 $C_k$에서 특성 $X_i$의 평균과 표준편차이다.

2. 다항 나이브 베이즈 (Multinomial Naive Bayes) #

텍스트 분류에 주로 사용되며, 단어의 빈도나 TF-IDF 값을 특성으로 사용한다.

$$P(X_i|C_k) = \frac{N_{ki} + \alpha}{N_k + \alpha n}$$

여기서:

  • $N_{ki}$: 클래스 $C_k$에서 특성 $i$의 빈도
  • $N_k$: 클래스 $C_k$의 총 특성 개수
  • $\alpha$: 라플라스 스무딩 매개변수
  • $n$: 전체 특성 개수

3. 베르누이 나이브 베이즈 (Bernoulli Naive Bayes) #

이진 특성(0 또는 1)을 다루며, 주로 텍스트 분류에서 단어의 존재/부재를 표현할 때 사용한다.

$$P(X_i|C_k) = P(i|C_k) \cdot X_i + (1 - P(i|C_k)) \cdot (1 - X_i)$$

4. 카테고리 나이브 베이즈 (Categorical Naive Bayes) #

범주형 특성을 다루며, 각 특성이 여러 개의 카테고리 값을 가질 수 있다.

나이브 베이즈의 장점 #

  1. 빠른 학습과 예측: 계산이 단순하여 매우 빠름
  2. 적은 데이터: 상대적으로 적은 훈련 데이터로도 좋은 성능
  3. 다중 클래스: 자연스럽게 다중 클래스 분류 지원
  4. 확률적 예측: 각 클래스에 대한 확률 정보 제공
  5. 노이즈 저항성: 노이즈가 있는 데이터에 상대적으로 강함
  6. 메모리 효율성: 적은 메모리 사용량
  7. 온라인 학습: 실시간으로 새로운 데이터를 학습할 수 있음

나이브 베이즈의 단점 #

  1. 독립성 가정: 특성 간 상관관계를 무시하는 강한 가정
  2. 연속형 특성: 가우시안 가정이 맞지 않을 수 있음
  3. 제로 확률: 훈련 데이터에 없는 조합에 대해 확률이 0이 됨
  4. 특성 균형: 상관관계가 높은 특성들이 과도하게 영향을 미칠 수 있음
  5. 복잡한 관계: 비선형적이고 복잡한 패턴을 포착하기 어려움

라플라스 스무딩 (Laplace Smoothing) #

제로 확률 문제를 해결하기 위해 사용하는 기법이다:

$$P(X_i|C_k) = \frac{N_{ki} + \alpha}{N_k + \alpha \cdot V}$$

여기서:

  • $\alpha$: 스무딩 매개변수 (보통 1 사용)
  • $V$: 특성의 가능한 값의 개수

텍스트 분류에서의 활용 #

나이브 베이즈는 텍스트 분류 분야에서 특히 널리 사용된다:

1. 전처리 #

  • 토큰화: 텍스트를 단어나 토큰으로 분할
  • 불용어 제거: 의미 없는 단어 제거
  • 어간 추출: 단어의 기본형으로 변환
  • 벡터화: TF-IDF나 단어 빈도로 변환

2. 특성 선택 #

  • 카이제곱 검정: 클래스와 특성 간의 독립성 검정
  • 상호정보량: 특성과 클래스 간의 정보량 측정
  • 빈도 기반: 최소 빈도 이상의 단어만 선택

실제 적용 예시 #

1. 스팸 필터링 #

  • 이메일의 단어를 특성으로 사용
  • 스팸/정상 이메일 분류
  • 실시간 학습으로 새로운 스팸 패턴 적응

2. 감정 분석 #

  • 리뷰나 댓글의 감정 분류
  • 긍정/부정/중립 감정 예측
  • 소셜 미디어 모니터링

3. 문서 분류 #

  • 뉴스 기사 카테고리 분류
  • 법률 문서 분류
  • 학술 논문 주제 분류

4. 의료 진단 #

  • 증상을 기반으로 한 질병 예측
  • 의료 이미지 분류
  • 약물 부작용 예측

성능 최적화 방법 #

1. 특성 공학 #

  • N-gram: 단어 조합 정보 활용
  • TF-IDF: 단어의 중요도 반영
  • 특성 선택: 중요한 특성만 선별

2. 하이퍼파라미터 튜닝 #

  • 스무딩 매개변수: 과적합/과소적합 조절
  • 특성 임계값: 최소 빈도나 중요도 설정

3. 앙상블 기법 #

  • 보팅: 여러 나이브 베이즈 모델의 결합
  • 스태킹: 다른 알고리즘과의 조합

다른 알고리즘과의 비교 #

vs 로지스틱 회귀 #

  • 나이브 베이즈: 특성 독립성 가정, 빠른 학습
  • 로지스틱 회귀: 특성 간 상관관계 고려, 선형 관계 가정

vs SVM #

  • 나이브 베이즈: 확률적 예측, 빠른 학습
  • SVM: 마진 최대화, 복잡한 결정 경계

vs k-NN #

  • 나이브 베이즈: 모델 기반, 빠른 예측
  • k-NN: 인스턴스 기반, 지역적 패턴 포착

구현 시 고려사항 #

1. 데이터 전처리 #

  • 범주형 인코딩: 라벨 인코딩 사용
  • 연속형 특성: 정규분포 가정 확인
  • 결측치: 별도 카테고리로 처리

2. 특성 선택 #

  • 차원의 저주: 너무 많은 특성 방지
  • 상관관계: 독립성 가정 위반 확인
  • 도메인 지식: 전문 지식을 활용한 특성 선택

3. 모델 평가 #

  • 교차 검증: 안정적인 성능 평가
  • 클래스 불균형: 적절한 평가 지표 선택
  • 확률 보정: 예측 확률의 신뢰성 확인

확률 보정 (Probability Calibration) #

나이브 베이즈의 예측 확률이 실제 확률과 다를 수 있으므로 보정이 필요할 수 있다:

1. 플랫 보정 (Platt Scaling) #

로지스틱 회귀를 사용한 보정

2. 등등성 회귀 (Isotonic Regression) #

단조 증가하는 함수를 이용한 보정

최근 발전 #

1. 반지도 학습 #

  • 라벨이 없는 데이터를 활용한 성능 향상
  • EM 알고리즘을 이용한 반복적 학습

2. 계층적 분류 #

  • 계층 구조를 가진 클래스의 분류
  • 트리 구조의 확률 전파

3. 온라인 학습 #

  • 스트리밍 데이터에 대한 실시간 학습
  • 컨셉 드리프트 대응

나이브 베이즈는 단순하지만 강력한 알고리즘으로, 특히 텍스트 분류와 실시간 분류 시스템에서 매우 유용하다. 독립성 가정이라는 제약이 있지만, 빠른 속도와 좋은 성능으로 인해 기준점 모델이나 실제 운영 시스템에서 널리 사용되고 있다.