나이브 베이즈(Naive Bayes) 모델
- 나이브 베이즈는 조건부 확률 기반 분류 모델
- 베이즈 정리를 기반으로 하고, 독립 가정(naive assumption)을 사용
- 각 특징(feature)이 서로 독립이라고 가정 → 각 특징별 확률만 계산 → 적은 계산량
- 즉, 각 특성(feature)들이 서로 독립이라고 가정

미래 예측을 위한 추정일 때 적합
→ 하나의 추정치를 위한 예측이 아니라, 계속 값을 수정하면서 현실적인 추정치를 찾는 기법
장점
- 학습과 예측이 빠름
- 연산량이 적은 모델
- 적은 데이터로도 잘 동작
- 이상치와 결측치에 로버스트함.
- 예측을 위한 추정 확률을 구할 수 있음.
- 빠른 연산량 → 대규모 데이터 적용 가능
- 텍스트 분류, 스팸 필터링, 감성 분석 등에서 효과적 (단어 빈도수 기반의 동일한 척도의 속성에 강함)
단점
- 특성들이 독립하지 않으면 성능 저하 가능 (독립 → 잘못된 가정)
- 가정된 확률이 예측된 클래스보다 신뢰도가 낮음.
- 0 확률 문제(특정 클래스에 특정 특성이 없을 경우) 발생 가능 → 가법 평활화 필요


→ α를 0부터 시작해서 증가하면 성능이 향상되다가 감소.
→ α가 커질수록 편향이 커짐
소수 클래스 불균형을 해결하는 것은 아님.
하이퍼 파라미터
from sklearn.naive_bayes import BernoulliNB
BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
alpha
- 가법적 스무딩(Laplace/Lidstone) 계수
- 작은 데이터에서 확률 0 발생을 방지하기 위한 매개변수
- 0이면 스무딩을 하지 않음
binarize
- 입력 특징을 이진값으로 변환하기 위한 임계값
- None이면 입력이 이미 이진 벡터라고 가정
fit_prior
- 클래스 사전 확률(prior)을 학습할지 여부
- False : 균일한 사전 확률을 사용함
class_prior
- 클래스의 사전 확률
- 지정되면 데이터에 따라 조정되지 않음
Attributes
class_log_prior_ : array, shape = [n_classes]
Log probability of each class (smoothed).
feature_log_prob_ : array, shape = [n_classes, n_features]
Empirical log probability of features given a class, P(x_i|y).
class_count_ : array, shape = [n_classes]
Number of samples encountered for each class during fitting. This
value is weighted by the sample weight when provided.
feature_count_ : array, shape = [n_classes, n_features]
Number of samples encountered for each (class, feature)
during fitting. This value is weighted by the sample weight when
provided.
class_log_prior_
- 각 클래스의 로그 사전 확률 (스무딩 적용)
feature_log_prob_
- 클래스 주어졌을 때 특징의 경험적 로그확률
class_count_
- 학습 시 각 클래스에 대해 관측된 샘플 수 (샘플 가중치 적용)
feature_count_
- 학습 시 각 (클래스, 특징) 조합에서 관측된 샘플 수 (샘플 가중치 적용)
'개발 > Python' 카테고리의 다른 글
| 데이터 변환 (0) | 2025.10.25 |
|---|---|
| 등분산성 검정 (0) | 2025.10.20 |
| 이상치 탐지 vs 특이치 탐지 (0) | 2025.10.20 |
| 합성곱 신경망 (Feature Map) (0) | 2025.10.20 |
| 신경망 파라미터 개수 (0) | 2025.10.20 |
댓글