참고 문헌:
1. 서강대 AI MBA 데이터마이닝 강의교재 (2023)
2. Müller, A. C., & Guido, S. (2016). *Introduction to Machine Learning with Python*. 1st Edition. O’Reilly Media, Inc., Sebastopol, CA. ISBN: 978-1449369415.
Naive Bayes classifier 는 선형 모델(linear model)과 매우 비슷한 성격의 분류기이며, 로지스틱 회귀분석과 linear SVC보다 학습이 빠르다는 장점을 갖고 있지만, 빠른 만큼 일반화 성능은 떨어진다.
Naive Bayes classifier가 학습이 빠른 이유는 각각의 파라미터를 개별적으로 학습하고, 각각의 특성(feature)으로부터 간단한 클래스별 통계를 수집하기 때문이다.
Naive Bayes classifier가 학습이 빠른 이유를 자세히 정리하면, 다음과 같다.
- 독립 가정 (Naive Assumption)
Naive Bayes 분류기는 특성(feature) 간의 독립성을 가정한다. 즉, 각 특성은 다른 특성과 무관하게 독립적으로 클래스에 영향을 미친다고 가정한다. 이 독립 가정 덕분에, 각 특성에 대해 별도로 학습할 수 있다. 이는 모델의 복잡도를 크게 낮추고, 학습 과정을 단순화시켜 주게된다. - 개별 파라미터 학습
Naive Bayes 분류기는 각 특성에 대한 확률 분포를 개별적으로 계산한다. 예를 들어, Gaussian Naive Bayes에서는 각 특성의 클래스별 평균과 분산을 추정하고, Multinomial Naive Bayes에서는 각 클래스에서 특정 단어가 등장할 확률을 계산한다. 이 과정은 각 특성에 대한 통계를 독립적으로 수집하는 것과 같다. - 간단한 통계 계산
Naive Bayes 분류기는 각 특성에 대해 클래스별로 간단한 통계(평균, 분산, 빈도 등)를 수집하는 방식으로 학습을 진행한다. 이러한 통계량을 추정하는 데 필요한 계산은 상대적으로 간단하고 빠르다. 예를 들어, Gaussian Naive Bayes에서는 각 클래스에 대해 각 특성의 평균과 분산을 계산하는 것이 전부이다. 이는 데이터셋의 크기와 관계없이 매우 빠르게 계산될 수 있다. - 학습 데이터의 전처리 간소화
Naive Bayes 분류기는 훈련 데이터에서 각 클래스의 확률을 추정하는 작업을 반복하며 학습한다. 하지만 이는 매우 간단한 작업이기 때문에 복잡한 전처리나 최적화 과정이 필요하진 않는다. 따라서 모델의 학습 과정이 매우 신속하게 이루어질 수 있다 - 선형적인 학습 시간
Naive Bayes 분류기의 학습 시간은 데이터의 크기(특성 수와 샘플 수)에 대해 선형적으로 증가한다. 즉, 주어진 데이터셋에 대해 한 번의 패스(각 데이터 포인트에 대해 한 번의 계산)만으로 필요한 모든 통계를 추출할 수 있다. 이는 다른 복잡한 모델에 비해 매우 빠른 학습을 가능하게 한다.
Naive Bayes classifier는 python scikit-learn 패키지에서 GaussianNB, BernoulliNB, and MultinomialNB 세가지를 제공한다.
- GaussianNB
- 적용 대상: 연속형 데이터
- 설명:
- GaussianNB는 연속형 특성(즉, 실수 값을 가지는 데이터)을 가진 데이터에 사용된다. 이 모델은 각 특성이 클래스별로 정규분포(가우시안 분포)를 따른다고 가정한다.
- 학습 과정에서, GaussianNB는 각 클래스별로 각 특성의 평균과 분산을 추정한다. 이후, 새로운 데이터가 주어졌을 때, 해당 데이터가 각 클래스에 속할 확률을 계산하기 위해 이 가우시안 분포를 사용한다.
- GaussianNB는 주로 연속형 데이터를 다루는 문제, 예를 들어 센서 데이터 분석, 실험 결과 분석 등에 적합하다.
- BernoulliNB
- 적용 대상: 이진 데이터
- 설명:
- BernoulliNB는 이진 특성(즉, 0과 1로만 이루어진 데이터)에 사용된다. 각 특성은 해당 클래스에서의 존재(1) 또는 부재(0)로 간주된다.
- 이 모델은 주로 텍스트 데이터 분류에서 사용되는데, 예를 들어 문서에서 특정 단어가 존재하는지 여부를 고려하여 스팸 메일 필터링 등의 작업을 수행할 수 있다. 문서에 있는 단어의 존재 여부를 기반으로 문서가 특정 클래스(예: 스팸 또는 정상)일 확률을 계산하는 데 적합하다.
- MultinomialNB
- 적용 대상: 이산형 수치 데이터
- 설명:
- MultinomialNB는 이산형 수치 데이터에 적합하며, 특히 텍스트 데이터의 분류에서 자주 사용된다. 이 모델은 각 특성의 출현 빈도가 중요한 경우에 효과적이다.
- 예를 들어, 문서 분류 작업에서는 단어의 빈도를 특성으로 사용한다. MultinomialNB는 각 클래스에서 특정 단어가 얼마나 자주 등장하는지를 학습하며, 이를 기반으로 새로운 문서가 주어졌을 때 해당 문서가 특정 클래스에 속할 확률을 계산한다. 텍스트 분류 작업에서 매우 일반적으로 사용된다.
나이브 베이즈(Naive Bayes) 분류기는 결과적으로 선형 모델과 유사한 형태의 예측 공식을 가지게 된다. 그러나 여기서 coef_의 의미는 선형 모델에서의 가중치 w와는 다르다.
- 선형 모델의 경우: coef_는 각 특성의 가중치 w를 나타내며, 이는 입력 데이터에 대한 선형 조합을 통해 예측값을 산출하는 데 사용됩니다.
- 나이브 베이즈 모델의 경우: coef_는 각 특성의 확률적 기여를 나타내는 값으로, 특정 클래스에 속할 확률을 계산하기 위한 통계적 매개변수로 사용됩니다.
Naive Bayes classifier의 장점과 단점
- MultinomialNB
- BernoulliNB
- 모델 복잡도를 결정하는 단 하나의 파라미터(alpha)를 갖는다. alpha의 작동 방식은 알고리즘이 모든 특성에 대해 양의 값을 가진 가상의 데이터 포인트를 alpha만큼 실제 데이터에 추가하는 것입니다. alpha 값이 클수록 통계량이 평활화(smoothing) 가 이루어지며, 복잡도가 줄어든다. 복잡도가 줄어든다는 의미는 과적합을 피할 수 있다는 의미기도 하다.
- 알고리즘의 성능이 alpha 값에 대해 상대적으로 강건(robust)하기 때문에 alpha 값을 어떻게 설정하든지 대체로 좋은 성능을 보장하지만, alpha 값을 조정(tuning)하면 성능, 특히 정확도가 다소 향상될 수 있다
- 텍스트 분류에 주로 사용된다.
- MultinomialNB는 특히 문서에서 등장하는 단어들의 빈도가 0이 아닌 경우의 데이터 셋에서 BinaryNB보다 더 좋은 성능을 낼 가능성이 높다. 이는 MultinomialNB가 단어의 빈도를 고려하여 예측을 수행하는 반면, BinaryNB는 단어가 존재하는지 여부만 고려하기 때문이다.
- GaussianNB
- 위 두개의 모델에 비해 고차원(high-dimensional data)에서 주로 사용된다.
정리하면, 나이브 베이즈 모델은 매우 빠르게 학습하고 예측할 수 있으며, 학습 과정이 이해하기 쉽다. 이 모델들은 고차원 희소 데이터에 잘 작동하며, 매개변수 설정에 대해 상대적으로 강건하다. 나이브 베이즈 모델은 훌륭한 베이스라인 모델로, 특히 선형 모델조차 학습 시간이 오래 걸리는 매우 큰 데이터셋에서 자주 사용된다.
<추가>
평활화(Smoothing)는 통계학과 머신러닝에서 데이터나 모델의 예측을 좀 더 일반화하고, 극단적인 값이나 노이즈의 영향을 줄이기 위해 사용하는 기법이다. 특히, 확률 모델에서 자주 사용되며, 주로 소수의 데이터 포인트로 인해 발생하는 과적합(overfitting) 문제를 완화하는 데 도움을 준다.
- 평활화의 필요성
평활화는 다음과 같은 상황에서 필요하다.- 데이터 희소성: 어떤 특성(feature) 조합이 데이터셋에 거의 등장하지 않을 때, 그 조합의 확률이 0이 되어버릴 수 있다. 이 경우, 모델은 새로운 데이터에서 이 조합이 나타나면 제대로 예측할 수 없게 된다.
- 과적합 문제: 모델이 훈련 데이터에 지나치게 맞춰지면, 새로운 데이터에 대해 일반화된 예측을 하지 못하게 된다. 평활화는 이 문제를 해결하는 데 유용하다.
- 평활화의 방식
평활화는 여러 방식으로 적용될 수 있다. 몇 가지 대표적인 방식은 다음과 같다:- 라플라스 평활화 (Laplace Smoothing)
라플라스 평활화는 모든 가능성에 대해 최소한 하나의 사건이 일어났다고 가정하여, 0의 확률을 방지한다. 예를 들어, 단어 분류 문제에서 특정 단어가 훈련 데이터에 한 번도 등장하지 않았다고 하더라도, 라플라스 평활화는 이 단어의 확률이 0이 되지 않도록 한다.
예시: 특정 클래스에서 단어 "apple"이 한 번도 등장하지 않았다면, 라플라스 평활화를 적용하면 "apple"의 확률이 0이 아니라 작은 값으로 설정된다. - 추가적인 가상 데이터 포인트
알파(`alpha`)를 통해 가상의 데이터 포인트를 추가하는 방식도 평활화의 일종이다. 여기서는 모델이 모든 가능한 특성 조합에 대해 어느 정도의 양성 관측치가 있다고 가정하여, 특정 특성 조합이 전혀 나타나지 않는 경우에도 해당 조합의 확률이 0이 되지 않게 한다.
예시: `alpha`가 1로 설정되면, 모든 특성 조합에 대해 가상의 데이터 포인트가 추가되어, 어떤 특성 조합의 빈도가 낮더라도 모델이 이를 무시하지 않고 예측할 수 있게 한다. - 지수 평활화 (Exponential Smoothing)
주로 시계열 데이터에서 사용하는 방식으로, 최신 데이터에 더 많은 가중치를 부여하고, 과거 데이터는 점점 덜 중요하게 다루는 방식이다. 이를 통해 데이터의 노이즈를 줄이고, 트렌드를 보다 명확하게 파악할 수 있다.
- 라플라스 평활화 (Laplace Smoothing)
- 평활화가 중요한 이유
평활화는 특히 다음과 같은 이유로 중요하다:- 과적합 방지: 훈련 데이터에 지나치게 맞춘 모델은 새로운 데이터에 대해 일반화 능력이 떨어질 수 있다. 평활화를 통해 모델이 더 일반화된 패턴을 학습하도록 도와준다.
- 희소 데이터 처리: 훈련 데이터에 나타나지 않는 조합이나 값에 대해 모델이 적절한 확률을 할당할 수 있게 한다.
- 모델의 안정성 향상: 극단적인 값이나 노이즈로 인해 모델이 잘못된 예측을 하는 것을 방지한다.
'데이터분석' 카테고리의 다른 글
| Chapter 2. 지도학습(Supervised learning): 랜덤포레스트(Random Forest) (0) | 2024.09.21 |
|---|---|
| Chapter 2. 지도학습(Supervised learning): 의사결정나무(Decision Trees) (0) | 2024.09.02 |
| Chapter 2. 지도학습(Supervised learning): SVM (0) | 2024.08.27 |
| Chapter Appendix : 최대우도법(Maximum Likelihood Estimation) (0) | 2024.08.27 |
| Chapter 2. 지도학습(Supervised learning): Linear Models (0) | 2024.08.26 |