단순 모델: 나이브 베이즈

3234 단어
기계 학습 프로젝트를 시작할 때 먼저 "단순한"모델을 실행하여 데이터 세트에서 중요한 기능을 찾고 더 복잡한 모델을 비교할 수 있는 대상을 확보하고 좋은 결과를 얻을 수 있는 놀라운 결과를 얻을 수도 있습니다. 방망이에서. 분류 문제의 경우 Naive Bayes를 실행하는 것이 좋습니다. Naive Bayes는 매우 복잡하지 않고 매우 빠른 분류 알고리즘이므로 많은 양의 데이터와 소수의 기능이 있을 때 실행하는 것이 가장 좋습니다.

이 블로그에서는 Bayes Theorem이 무엇인지, Naive Bayes를 순진하게 만드는 요소를 살펴본 다음 "sklearn"과 함께 Naive Bayes 알고리즘을 사용하는 방법에 대한 짧은 자습서를 제공합니다.

베이즈 정리



베이즈 정리는 다른 일이 발생했을 때 어떤 일이 일어날 확률을 설명합니다. 이 조건부 확률은 사건에 대한 사전 지식을 사용하여 사건이 발생할 확률을 제공합니다. 공식은 다음과 같습니다.



P(A|B) B가 참일 때 A의 확률.
P(B|A) A가 참일 때 B의 확률입니다.
P(A) A가 참일 확률.
P(B) B가 참일 확률.

순진한



Naive Bayes는 이러한 기능이 서로 독립적이라는 가정을 통해 여러 변수를 설명하도록 Bayes 정리를 확장합니다. 이 모델을 사용할 때 이러한 기능은 실제로 서로 독립적이지 않을 수 있으며 그것이 우리가 순진함을 얻는 곳이지만 여전히 깨끗하고 정규화된 데이터 세트로 강력한 결과를 생성할 수 있습니다. 다음과 같이 공식을 확장해 보겠습니다.



이제 이러한 가정을 했으므로 각 독립 기능에 대한 조건부 확률을 곱하여 전체 확률을 추정할 수 있습니다.

모델



이제 Naive Bayes가 작동하는 것을 살펴보겠습니다. 이 예제를 집에서 시도하는 경우 쉽게 따라할 수 있도록 sklearn의 와인 데이터 세트를 사용할 것입니다. 따라서 먼저 가져와야 하는 모든 패키지를 가져오겠습니다.

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_wine
from sklearn import metrics 
import pandas as pd
import numpy as np

이제 데이터 세트를 로드할 수 있으며 개인적으로 pandas의 레이아웃을 선호하므로 형식도 지정하겠습니다.

wine = load_wine()
data = pd.DataFrame(data= np.c_[wine['data'], wine['target']],
                     columns= wine['feature_names'] + ['target'])

따라서 우리가 가지고 있는 것을 살펴보면 다음과 같은 몇 가지 기능이 추가되어야 합니다.



그런 다음 여기에서 데이터를 교육 및 테스트 그룹으로 분할한 다음 모델에 맞추는 것입니다.

X=data.drop('target',axis=1)
y=data['target']

Xtrain, Xtest, ytrain, ytest = train_test_split(X,y)



model = GaussianNB()
model.fit(Xtrain,ytrain)

이제 우리의 값을 예측하고 모델이 어떻게 작동하는지 살펴보겠습니다.

ypred = model.predict(Xtest)

print(metrics.classification_report(ytest, ypred))
print(metrics.confusion_matrix(ytest, ypred))



와우 거의 즉각적인 처리를 위해 정말 대단합니다!

결론



이것이 Naive Bayes와 그것이 얼마나 유용한지에 대해 조금 더 이해하는 데 도움이 되기를 바랍니다. 분류에 매우 빠르고 결과적으로 많은 양의 데이터에 매우 적합합니다. Naive Bayes는 실제로 대부분의 정크 메일 애플리케이션에서 사용됩니다!

좋은 웹페이지 즐겨찾기