Klassifizierungsalgorithmen - Naive Bayes

Einführung in den Naive Bayes-Algorithmus

Naive Bayes-Algorithmen sind eine Klassifikationstechnik, die auf der Anwendung des Bayes-Theorems basiert, mit der starken Annahme, dass alle Prädiktoren unabhängig voneinander sind. Mit einfachen Worten wird davon ausgegangen, dass das Vorhandensein eines Features in einer Klasse unabhängig vom Vorhandensein eines anderen Features in derselben Klasse ist. Beispielsweise kann ein Telefon als intelligent angesehen werden, wenn es über einen Touchscreen, eine Interneteinrichtung, eine gute Kamera usw. verfügt. Obwohl alle diese Funktionen voneinander abhängig sind, tragen sie unabhängig voneinander zur Wahrscheinlichkeit bei, dass es sich bei dem Telefon um ein Smartphone handelt.

Bei der Bayes'schen Klassifikation besteht das Hauptinteresse darin, die posterioren Wahrscheinlichkeiten zu ermitteln, dh die Wahrscheinlichkeit einer Markierung bei bestimmten beobachteten Merkmalen (|). Mit Hilfe des Bayes-Theorems können wir dies in quantitativer Form wie folgt ausdrücken:

$$ P (L | Merkmale) = \ frac {P (L) P (Merkmale | L)} {()} $$

Hier ist (|) die hintere Wahrscheinlichkeit der Klasse.

() ist die vorherige Klassenwahrscheinlichkeit.

(|) ist die Wahrscheinlichkeit, die die Wahrscheinlichkeit eines Prädiktors für eine bestimmte Klasse ist.

() ist die vorherige Wahrscheinlichkeit eines Prädiktors.

Modell erstellen mit Naive Bayes in Python

Die Python-Bibliothek Scikit Learn ist die nützlichste Bibliothek, mit der wir ein Naive Bayes-Modell in Python erstellen können. Wir haben die folgenden drei Arten von Naive Bayes-Modellen unter Scikit Learn Python Library:

Gaußsche naive Bayes

Es ist der einfachste Naive Bayes-Klassifikator mit der Annahme, dass die Daten von jedem Etikett aus einer einfachen Gaußschen Verteilung stammen.

Multinomial Naive Bayes

Ein weiterer nützlicher Naive Bayes-Klassifikator ist Multinomial Naive Bayes, bei dem angenommen wird, dass die Merkmale aus einer einfachen Multinomialverteilung stammen. Solche naiven Bayes eignen sich am besten für die Merkmale, die diskrete Zählungen darstellen.

Bernoulli Naive Bayes

Ein weiteres wichtiges Modell ist Bernoulli Naïve Bayes, bei dem Merkmale als binär angenommen werden (0s und 1s). Die Textklassifizierung mit dem Modell "Bag of Words" kann eine Anwendung von Bernoulli Naïve Bayes sein.

Beispiel

Abhängig von unserem Datensatz können wir eines der oben erläuterten Naive Bayes-Modelle auswählen. Hier implementieren wir das Gaußsche Naive Bayes-Modell in Python -

Wir werden mit den erforderlichen Importen wie folgt beginnen:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

Mit der Funktion make_blobs () von Scikit learn können wir nun Punkteblobs mit Gaußscher Verteilung wie folgt generieren:

from sklearn.datasets import make_blobs
X, y = make_blobs(300, 2, centers=2, random_state=2, cluster_std=1.5)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='summer');

Als nächstes müssen wir für die Verwendung des Gaußschen NB-Modells das Objekt wie folgt importieren und erstellen:

from sklearn.naive_bayes import GaussianNB
model_GBN = GaussianNB()
model_GNB.fit(X, y);

Jetzt müssen wir Vorhersagen treffen. Dies kann nach dem Generieren einiger neuer Daten wie folgt erfolgen:

rng = np.random.RandomState(0)
Xnew = [-6, -14] + [14, 18] * rng.rand(2000, 2)
ynew = model_GNB.predict(Xnew)

Als nächstes zeichnen wir neue Daten, um ihre Grenzen zu finden -

plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='summer')
lim = plt.axis()
plt.scatter(Xnew[:, 0], Xnew[:, 1], c=ynew, s=20, cmap='summer', alpha=0.1)
plt.axis(lim);

Mit Hilfe der folgenden Codezeile können wir nun die hinteren Wahrscheinlichkeiten des ersten und zweiten Labels finden -

yprob = model_GNB.predict_proba(Xnew)
yprob[-10:].round(3)

Ausgabe

array([[0.998, 0.002],
   [1.   , 0.   ],
   [0.987, 0.013],
   [1.   , 0.   ],
   [1.   , 0.   ],
   [1.   , 0.   ],
   [1.   , 0.   ],
   [1.   , 0.   ],
   [0.   , 1.   ],
   [0.986, 0.014]]
)

Für und Wider

Vorteile

Das Folgende sind einige Vorteile der Verwendung von Naive Bayes-Klassifikatoren -

  • Die Klassifizierung nach Naive Bayes ist einfach zu implementieren und schnell.

  • Es konvergiert schneller als diskriminierende Modelle wie die logistische Regression.

  • Es erfordert weniger Trainingsdaten.

  • Es ist von Natur aus hoch skalierbar oder sie skalieren linear mit der Anzahl der Prädiktoren und Datenpunkte.

  • Es kann probabilistische Vorhersagen treffen und sowohl kontinuierliche als auch diskrete Daten verarbeiten.

  • Der Naive Bayes-Klassifizierungsalgorithmus kann sowohl für binäre als auch für Mehrklassenklassifizierungsprobleme verwendet werden.

Nachteile

Das Folgende sind einige Nachteile der Verwendung von Naive Bayes-Klassifikatoren -

  • Einer der wichtigsten Nachteile der Klassifizierung von Naive Bayes ist die starke Unabhängigkeit von Merkmalen, da es im wirklichen Leben fast unmöglich ist, eine Reihe von Merkmalen zu haben, die völlig unabhängig voneinander sind.

  • Ein weiteres Problem bei der Naive Bayes-Klassifizierung ist die Nullfrequenz. Wenn eine kategoriale Variable eine Kategorie hat, die jedoch im Trainingsdatensatz nicht beobachtet wird, weist das Naive Bayes-Modell ihr eine Nullwahrscheinlichkeit zu und kann keine a erstellen Prognose.

Anwendungen der Naive Bayes-Klassifikation

Im Folgenden sind einige häufige Anwendungen der Naive Bayes-Klassifizierung aufgeführt:

Real-time prediction - Aufgrund seiner einfachen Implementierung und schnellen Berechnung kann die Vorhersage in Echtzeit durchgeführt werden.

Multi-class prediction - Der Naive Bayes-Klassifizierungsalgorithmus kann verwendet werden, um die hintere Wahrscheinlichkeit mehrerer Klassen von Zielvariablen vorherzusagen.

Text classification- Aufgrund der Funktion der Mehrklassenvorhersage eignen sich Naïve Bayes-Klassifizierungsalgorithmen gut für die Textklassifizierung. Aus diesem Grund wird es auch zur Lösung von Problemen wie Spam-Filterung und Stimmungsanalyse verwendet.

Recommendation system - Zusammen mit den Algorithmen wie der kollaborativen Filterung erstellt Naïve Bayes ein Empfehlungssystem, mit dem unsichtbare Informationen gefiltert und das Wetter vorhergesagt werden können, ob ein Benutzer die angegebene Ressource haben möchte oder nicht.