-
지도학습 | 나이브 베이즈 분류기 (Naive Bayes Classification)Machine Learning/ML with Python Library 2024. 4. 3. 22:05
Naive Bayes Classification는 Linear Model과 매우 유사하다. Logistic Regression이나 LinearSVC같은 Linear Classification보다 훈련 속도가 바른 편이지만, 대신 일반화(Generalization) 성능이 조금 뒤진다. 일반화(Generalization)는 모델이 훈련 데이터에 대해서뿐만 아니라, 본 적 없는 새로운 데이터에 대해 얼마나 잘 예측하는지를 나타내는 성능의 척도이다.
나이브 베이즈 분류기는 각 특성을 개별로 취급해서 파라미터를 학습 시키고, 클래스별 통계를 단순하게 취합한다. scikit-learn에서는 GaussianNB, BernoulliNB, MultinomialNB 이렇게 세가지다. GaussianNB는 연속적인 어떤 데이터나 적용 할 수 있고, BernoulliNB는 Binary, 즉 이진 데이터를 그리고 MultinomialNB는 카운트 데이터에 적용된다. BernoulliNB와 MultinomialNB 은 텍스트 분류시 사용한다.
BernoulliNB 분류기는 각 클래스 특성 중 0이 아닌 것이 몇개인지 센다. 예를 들어보자.
import numpy as np X = np.array([ [0, 1, 0, 1], [1, 0, 1, 1], [0, 0, 0, 1], [1, 0, 1, 0] ]) Y = np.array([0, 1, 0, 1])
Binary 특징을 가진 데이터 포인트가 4개 있는데, 클래스는 0 또는 1이다. Y의 클래스가 0인 경우, 첫번째 특성은 0이 두번이고, 0이 아닌것은 없었다. 두번째 특성은 0이 한번, 1이 한번이다. 같은 방식으로 두번째 클래스에 해당하는 포인트에 대해서도 계산한다. 그 과정을 코드화 하면 다음과 같다.
counts = {} for label in np.unique(Y): counts[label] = X[Y == label].sum(axis=0) print("Feature Count:\n", counts)
Feature Count:
{0: array([0, 1, 0, 2]), 1: array([2, 0, 2, 1])}GaussianNB, 와 MultinomialNB는 계산하는 통계 데이터 종류가 다른데, MultinomialNB는 클래스별 특성의 평균을 계산하고, GaussianNB는 클래스별 특성의 분산과 평균을 저장한다. 예측시엔 이 통계값과 비교를 해서 가장 잘 맞는 클래스를 예측값으로 쓴다.
장단점과 매개변수
GaussianNB, 와 MultinomialNB는 모델의 복잡도를 조정하는 alpha 매개변수 하나를 가지고 있다. alpha가 커지면 모델의 복잡도는 낮아진다. alpha에 따른 성능 변동이 비교적으로 크지 않아서, 성능 향상에 크게 기여하지는 않지만, 어느정도 정확도를 높일 수 있다.
GaussianNB는 대부분 아주 고차원인 데이터셋에 사용하는데, 다른 두 나이브 베이즈 모델 (BernoulliNB, MultinomialNB)들은 텍스트 같은 희소한 데이터를 카운트 하는데 사용한다. MultinomialNB은 0이 아닌 특성이 많은 큰 문서들에서 BernoulliNB보다 성능이 높다.
장단점은 Linear Model과 비슷하다. 훈련과 예측 속도가 빠르고, 훈련 과정을 이해하기 쉽다. 고차원 데이터에도 잘 작동하고, 매개변수에 민감하지 않는다. 학습 시간이 너무 오래 걸리는 매우 큰 데이터셋에 는 나이브 베이즈 모델을 시도해볼만 하다.
Reference
https://colab.research.google.com/drive/1fzSiPpwbTUplw6G0PJSpGaVBWx5CEMIZ?usp=sharing
_02_supervised_machine_learning.ipynb
Colaboratory notebook
colab.research.google.com
https://www.yes24.com/Product/Goods/42806875
파이썬 라이브러리를 활용한 머신러닝 - 예스24
사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현 현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없다. 사이킷런(scikit-learn)과 같은 훌륭한 머신
www.yes24.com
'Machine Learning > ML with Python Library' 카테고리의 다른 글
지도학습 | 결정트리 (Decision Tree) (0) 2024.04.03 지도학습 | 선형모델의 장단점과 매개변수 (0) 2024.04.02 지도학습 | 다중클래스 분류용 선형 모델 (MultiClass Classification Linear Model) (0) 2024.04.02 지도학습 | 분류용 선형 모델 (Linear Classification Model) (0) 2024.04.01 지도학습 | 라소 회귀 (Lasso Regression) (0) 2024.04.01