나이브 베이즈(Naive Bayes)는 확률적 분류 방법 중 하나로, 베이즈 정리를 기반으로 한다. 이 방법은 지도 학습(Supervised Learning)에서 분류(Classification) 문제를 다루는 데에 사용된다. 주로 텍스트 분류, 스팸 필터링, 감정 분석 등의 분야에서 많이 활용된다.
베이즈 정리는 조건부 확률을 계산하는 정리로, 사전 확률(prior probability)과 새로운 증거가 주어졌을 때 사후 확률(posterior probability)을 계산하는 방법을 제공한다.
베이즈 정리 수식은 다음과 같다.
여기서,
나이브 베이즈 분류기는 각각의 특성이 독립적이라고 가정하고 베이즈 정리를 적용한다. 이 때문에 "Naive"(순진한)이라는 이름이 붙었다. 현실 세계에서 모든 특성이 독립적이지 않지만, 나이브 베이즈 분류기는 계산이 간단하고 효과적이어서 실제로 많이 사용된다.
장점
단점
나이브 베이즈 분류기는 많은 경우에 효과적인 모델이지만, 데이터의 특성과 문제에 따라서 성능이 달라질 수 있다.
아래는 나이브 베이즈 분류기를 사용하여 간단한 데이터셋을 학습하고 예측하는 예제 코드이다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, classification_report
# 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 모델 초기화 및 학습
model = GaussianNB()
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
# 평가
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)
print(f'정확도: {accuracy:.4f}')
print('분류 보고서:\n', report)
load_iris()
를 사용하여 Iris 데이터셋을 불러왔다.train_test_split()
함수를 사용하여 데이터를 학습용과 테스트용으로 분할했다.GaussianNB()
로 가우시안 나이브 베이즈 모델을 초기화하고, fit()
함수로 학습했다.predict()
함수를 사용하여 테스트 데이터를 예측하고, accuracy_score()
와 classification_report()
함수를 사용하여 모델의 성능을 평가했다.accuracy_score()
로 정확도를 계산하고, classification_report()
로 분류 보고서를 출력했다.이 코드는 단순한 예제이지만, 실제로 데이터를 로드하고 모델을 학습하여 예측하는 전체적인 프로세스를 보여준다. 이러한 기본적인 프로세스를 사용하여 다른 데이터셋에 나이브 베이즈 분류기를 적용할 수 있다.