[PYTHON] Naive Buchten (Mehrklassenklassifikation)

Was ist Naive Bays?

Für die Klassifizierung mehrerer Klassen. Es ist berühmt für die Klassifizierung von Spam-Mails.

Berechnung der Wahrscheinlichkeit einer Klasse nach dem Bayes'schen Theorem

Wenn y die Zielvariable und x ($ x_ {1} $ ~ $ x_ {n} $) die erklärende Variable ist, dann Bayes-Theorem Die Wahrscheinlichkeit, zu welcher Klasse eine bestimmte Stichprobe gehört, kann unten berechnet werden.

P(y | x_{1},・ ・ ・ X._{n}) = \frac{P(y) * P(x_{1},・ ・ ・ X._{n} | y)} {P(x_{1},・ ・ ・ X._{n})}

"Naiv" ergibt sich übrigens aus der Annahme, dass die erklärenden Variablen unabhängig voneinander sind. Die Tatsache, dass die erklärenden Variablen unabhängig voneinander sind, bedeutet, dass:

P(x_{i} | y, x_{1},・ ・ ・,x_{i+1},・ ・ ・,x_{n}) = P(x_{i} | y)

"$ X_ {i} $, wenn y passiert, wird von anderen x-Zuständen nicht beeinflusst." Der Grund dafür ist, dass die Formel für das Molekül auf der rechten Seite der Bayes-Definition einfacher wird.

Durch die Annahme der UnabhängigkeitP(x_{1},・ ・ ・ X._{n} | y) = \prod_{i=1}^n (x_{i} | y)Weil es geschrieben werden kann

Die endgültige Formel des Bayes-Theorems lautet wie folgt.

P(y | x_{1},・ ・ ・ X._{n}) = \frac{P(y) * \prod_{i=1}^n (x_{i} | y)} {P(x_{1},・ ・ ・ X._{n})}

Zu diesem Zeitpunkt ist der Nenner $ P (x_ {1}, ... x_ {n}) $ ein fester Wert, sodass Sie nicht über die Berechnung der Wahrscheinlichkeit der Zugehörigkeit zur Klasse nachdenken müssen, um ihn zu ignorieren.

P(y | x_{1},・ ・ ・ X._{n}) \propto P(y) * \prod_{i=1}^n (x_{i} | y) \\

($ \ Proto $ ist ein Symbol, das proportional bedeutet.)

Dies gibt Ihnen die Wahrscheinlichkeit, in jede Klasse eingeteilt zu werden. Wenn Sie also feststellen, dass es sich um die Klasse mit der höchsten Wahrscheinlichkeit handelt, können Sie die Klasse schätzen.

\hat{y} = {\arg \max}_{y} P(y) * \prod_{i=1}^n (x_{i} | y)

Gaußsche naive Bayes

Wenn die erklärende Variable ein kontinuierlicher Wert ist, wird die Methode, die davon ausgeht, dass sie einer Normalverteilung folgt, insbesondere als Gaußsche Naive Bayes bezeichnet.

Die Wahrscheinlichkeit, zu diesem Zeitpunkt zur Klasse zu gehören, kann wie folgt ausgedrückt werden.

p(x = v | c) = \frac{1}{\sqrt{2 * \pi * \sigma_c^{2}}} * \mathrm{e}^{-\frac{(v - \mu_{c})^{2}}{2 * \sigma_c^{2}}}

Probieren Sie es aus (sklearn)

Probieren Sie Gaussian Naive Bayes mit dem Iris-Datensatz aus.

{do_gaussian_naive_bayes.py}


from sklearn import datasets                           #Zum Laden von Daten
from sklearn.cross_validation import train_test_split  #Lernen/Zur Erstellung von Testdaten
from sklearn import metrics                            #Zur Genauigkeitsbewertung
from sklearn.naive_bayes import GaussianNB             #Für die Ausführung von Gaussian Naive Bayes

#Datenaufbereitung
iris = datasets.load_iris()
X = iris.data
Y = iris.target
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=0)

#Gaußsche naive Bayes-Hinrichtung
model = GaussianNB()              #Instanzgenerierung
model.fit(X_train, Y_train)       #Ausführung der Modellerstellung

#Vorausschauende Ausführung
predicted = model.predict(X_test) #Vorausschauende Ausführung
metrics.accuracy_score(Y_test, predicted) #Genauigkeitsberechnung
> 1.0

Die Genauigkeit betrug 100%.

Recommended Posts

Naive Buchten (Mehrklassenklassifikation)
SVM (Mehrklassenklassifikation)
Keras Multiklassenklassifikation Iris
K Nachbarschaftsmethode (Mehrklassenklassifikation)
ROC-Kurve für die Klassifizierung mehrerer Klassen
Implementieren Sie Naive Bayes in Python 3.3
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Multi-Class Multi-Label-Klassifizierung von Bildern mit Pytorch
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
Textfilterung mit naiven Buchten von sklearn