Ein Naive-Bayes-Klassifikator, eine Familie von Algorithmen, die auf dem Bayes-Theorem basieren. Trotz der naiven Annahme der Merkmalsunabhängigkeit werden diese Klassifikatoren aufgrund ihrer Einfachheit und Effizienz beim maschinellen Lernen häufig eingesetzt. Der Artikel befasst sich mit Theorie, Umsetzung und Anwendungen und beleuchtet deren praktischen Nutzen trotz allzu vereinfachter Annahmen.
Was sind Naive-Bayes-Klassifikatoren?
Naive Bayes-Klassifikatoren sind eine Sammlung von Klassifizierungsalgorithmen, die auf dem Bayes-Theorem basieren. Es handelt sich nicht um einen einzelnen Algorithmus, sondern um eine Familie von Algorithmen, bei denen alle ein gemeinsames Prinzip haben, d. h. jedes zu klassifizierende Merkmalspaar ist unabhängig voneinander. Betrachten wir zunächst einen Datensatz.
Als einer der einfachsten und effektivsten Klassifizierungsalgorithmen unterstützt der Naive-Bayes-Klassifikator die schnelle Entwicklung von Modellen für maschinelles Lernen mit schnellen Vorhersagefunktionen.
Der Naive-Bayes-Algorithmus wird für Klassifizierungsprobleme verwendet. Es wird häufig bei der Textklassifizierung verwendet. Bei Textklassifizierungsaufgaben enthalten Daten eine hohe Dimension (da jedes Wort ein Merkmal in den Daten darstellt). Es wird zur Spam-Filterung, Sentiment-Erkennung, Bewertungsklassifizierung usw. verwendet. Der Vorteil der Verwendung von naivem Bayes ist seine Geschwindigkeit. Es ist schnell und die Vorhersage ist bei großen Datenmengen einfach.
Dieses Modell sagt die Wahrscheinlichkeit voraus, dass eine Instanz zu einer Klasse mit einem bestimmten Satz von Merkmalswerten gehört. Es handelt sich um einen probabilistischen Klassifikator. Dies liegt daran, dass davon ausgegangen wird, dass ein Merkmal im Modell unabhängig von der Existenz eines anderen Merkmals ist. Mit anderen Worten: Jedes Merkmal trägt zu den Vorhersagen bei, ohne dass eine Beziehung zueinander besteht. In der realen Welt wird diese Bedingung selten erfüllt. Es verwendet den Bayes-Satz im Algorithmus für Training und Vorhersage
Warum heißt es Naive Bayes?
Der naive Teil des Namens weist auf die vereinfachende Annahme des Naive-Bayes-Klassifikators hin. Der Klassifikator geht davon aus, dass die zur Beschreibung einer Beobachtung verwendeten Merkmale angesichts der Klassenbezeichnung bedingt unabhängig sind. Der Bayes-Teil des Namens bezieht sich auf Reverend Thomas Bayes, einen Statistiker und Theologen aus dem 18. Jahrhundert, der den Satz von Bayes formulierte.
Stellen Sie sich einen fiktiven Datensatz vor, der die Wetterbedingungen für eine Golfpartie beschreibt. Angesichts der Wetterbedingungen klassifiziert jedes Tupel die Bedingungen als geeignet (Ja) oder ungeeignet (Nein) zum Golfspielen. Hier ist eine tabellarische Darstellung unseres Datensatzes.
Ausblick | Temperatur | Feuchtigkeit | Windig | Golf spielen | |
---|---|---|---|---|---|
0 | Regnerisch | Heiß | Hoch | FALSCH | NEIN |
1 | Regnerisch | Heiß | Hoch | WAHR | NEIN |
2 | Bedeckt | Heiß | Hoch | FALSCH | Ja |
3 | Sonnig | Leicht | Hoch | FALSCH | Ja |
4 | Sonnig | Cool | Normal | FALSCH | Ja |
5 | Sonnig | Cool | Normal | WAHR | NEIN |
6 | Bedeckt | Cool | Normal | WAHR | Ja |
7 | Regnerisch | Leicht | Hoch | FALSCH | NEIN |
8 | Regnerisch | Cool | Normal | FALSCH | Ja |
9 | Sonnig | Leicht | Normal | FALSCH | Ja |
10 | Regnerisch | Leicht | Normal | WAHR | Ja |
elf | Bedeckt | Leicht | Hoch | WAHR | Ja |
12 | Bedeckt | Heiß | Normal | FALSCH | Ja |
13 | Sonnig | Leicht | Hoch | WAHR | NEIN |
Der Datensatz ist in zwei Teile unterteilt, nämlich Merkmalsmatrix und das Antwortvektor .
- Die Merkmalsmatrix enthält alle Vektoren (Zeilen) des Datensatzes, in denen jeder Vektor aus dem Wert von besteht abhängige Merkmale . Im obigen Datensatz sind die Merkmale „Aussicht“, „Temperatur“, „Luftfeuchtigkeit“ und „Windig“.
- Der Antwortvektor enthält den Wert von Klassenvariable (Vorhersage oder Ausgabe) für jede Zeile der Merkmalsmatrix. Im obigen Datensatz lautet der Klassenvariablenname „Golf spielen“.
Annahme von Naive Bayes
Die grundlegende Annahme von Naive Bayes ist, dass jedes Merkmal Folgendes bewirkt:
- Funktionsunabhängigkeit: Die Merkmale der Daten sind aufgrund der Klassenbezeichnung bedingt unabhängig voneinander.
- Kontinuierliche Merkmale sind normalverteilt: Wenn ein Merkmal stetig ist, wird davon ausgegangen, dass es innerhalb jeder Klasse normalverteilt ist.
- Diskrete Features haben Multinomialverteilungen: Wenn ein Merkmal diskret ist, wird davon ausgegangen, dass es innerhalb jeder Klasse eine multinomiale Verteilung aufweist.
- Ebenso wichtig sind die Features: Es wird davon ausgegangen, dass alle Merkmale gleichermaßen zur Vorhersage der Klassenbezeichnung beitragen.
- Keine fehlenden Daten: Die Daten sollten keine fehlenden Werte enthalten.
In Bezug auf unseren Datensatz kann dieses Konzept wie folgt verstanden werden:
- Wir gehen davon aus, dass kein Merkmalspaar abhängig ist. Wenn beispielsweise die Temperatur „heiß“ ist, hat das nichts mit der Luftfeuchtigkeit zu tun, oder die Aussicht „regnerisch“ hat keinen Einfluss auf die Winde. Daher wird davon ausgegangen, dass die Merkmale vorhanden sind unabhängig .
- Zweitens erhält jedes Merkmal das gleiche Gewicht (oder die gleiche Wichtigkeit). Wenn man beispielsweise nur Temperatur und Luftfeuchtigkeit kennt, lässt sich das Ergebnis nicht genau vorhersagen. Keines der Attribute ist irrelevant und es wird davon ausgegangen, dass es einen Beitrag leistet gleichermaßen zum Ergebnis.
Die Annahmen von Naive Bayes sind in realen Situationen im Allgemeinen nicht korrekt. Tatsächlich ist die Unabhängigkeitsannahme nie richtig, funktioniert aber in der Praxis oft gut. Bevor wir uns nun der Formel für Naive Bayes zuwenden, ist es wichtig, den Satz von Bayes zu kennen.
Satz von Bayes
Der Satz von Bayes ermittelt die Wahrscheinlichkeit des Eintretens eines Ereignisses angesichts der Wahrscheinlichkeit eines anderen Ereignisses, das bereits eingetreten ist. Der Satz von Bayes wird mathematisch als folgende Gleichung ausgedrückt:
wobei A und B Ereignisse sind und P(B) ≠ 0
- Grundsätzlich versuchen wir, die Wahrscheinlichkeit von Ereignis A zu ermitteln, vorausgesetzt, dass Ereignis B wahr ist. Ereignis B wird auch als bezeichnet Beweis .
- P(A) ist die priori von A (die A-priori-Wahrscheinlichkeit, d. h. die Wahrscheinlichkeit eines Ereignisses, bevor Beweise gesehen werden). Der Beweis ist ein Attributwert einer unbekannten Instanz (hier ist es Ereignis B).
- P(B) ist die Grenzwahrscheinlichkeit: Beweiswahrscheinlichkeit.
- P(A|B) ist eine A-posteriori-Wahrscheinlichkeit von B, d. h. die Wahrscheinlichkeit eines Ereignisses, nachdem Beweise gesehen wurden.
- P(B|A) ist die Likelihood-Wahrscheinlichkeit, d. h. die Wahrscheinlichkeit, dass eine Hypothese aufgrund der Beweise wahr wird.
Nun können wir in Bezug auf unseren Datensatz den Satz von Bayes wie folgt anwenden:
Dabei ist y eine Klassenvariable und X ein abhängiger Merkmalsvektor (der Größe). N ) Wo:
Zur Verdeutlichung: Ein Beispiel für einen Merkmalsvektor und die entsprechende Klassenvariable kann sein: (siehe 1. Zeile des Datensatzes)
X = (Rainy, Hot, High, False)>
y = No>
Also im Grunde genommen,
In Bezug auf unseren Datensatz kann dieses Konzept wie folgt verstanden werden:
c Array von Strings
- Wir gehen davon aus, dass kein Merkmalspaar abhängig ist. Wenn beispielsweise die Temperatur „heiß“ ist, hat das nichts mit der Luftfeuchtigkeit zu tun, oder die Aussicht „regnerisch“ hat keinen Einfluss auf die Winde. Daher wird davon ausgegangen, dass die Merkmale vorhanden sind unabhängig .
- Zweitens erhält jedes Merkmal das gleiche Gewicht (oder die gleiche Wichtigkeit). Wenn man beispielsweise nur Temperatur und Luftfeuchtigkeit kennt, lässt sich das Ergebnis nicht genau vorhersagen. Keines der Attribute ist irrelevant und es wird davon ausgegangen, dass es einen Beitrag leistet gleichermaßen zum Ergebnis.
Jetzt ist es an der Zeit, eine naive Annahme zum Satz von Bayes zu treffen, nämlich: Unabhängigkeit unter den Features. Jetzt haben wir uns getrennt Beweis in die unabhängigen Teile.
Wenn nun zwei beliebige Ereignisse A und B unabhängig sind, dann gilt:
P(A,B) = P(A)P(B)>
Somit kommen wir zu dem Ergebnis:
was ausgedrückt werden kann als:
Da nun der Nenner für eine gegebene Eingabe konstant bleibt, können wir diesen Term entfernen:
Diff in Python
Jetzt müssen wir ein Klassifikatormodell erstellen. Dazu ermitteln wir die Wahrscheinlichkeit eines gegebenen Satzes von Eingaben für alle möglichen Werte der Klassenvariablen Und und nehmen Sie die Ausgabe mit maximaler Wahrscheinlichkeit auf. Dies kann mathematisch ausgedrückt werden als:
Letztlich bleibt uns also die Aufgabe des Rechnens
Bitte beachte, dass
Die verschiedenen naiven Bayes-Klassifikatoren unterscheiden sich hauptsächlich durch die Annahmen, die sie bezüglich der Verteilung von machen
Versuchen wir, die obige Formel manuell auf unseren Wetterdatensatz anzuwenden. Dazu müssen wir einige Vorberechnungen für unseren Datensatz durchführen.
Wir müssen finden
In der Abbildung oben haben wir also berechnet
Außerdem müssen wir Klassenwahrscheinlichkeiten finden
Jetzt sind wir mit unseren Vorberechnungen fertig und der Klassifikator ist fertig!
Lassen Sie es uns anhand einer neuen Reihe von Funktionen testen (nennen wir es heute):
today = (Sunny, Hot, Normal, False)>
und die Wahrscheinlichkeit, nicht Golf zu spielen, ist gegeben durch:
Da P(heute) beiden Wahrscheinlichkeiten gemeinsam ist, können wir P(heute) ignorieren und proportionale Wahrscheinlichkeiten finden als:
Und
Jetzt, seitdem
Diese Zahlen können in eine Wahrscheinlichkeit umgewandelt werden, indem die Summe gleich 1 gemacht wird (Normalisierung):
Und
Seit
Die Vorhersage, dass Golf gespielt werden würde, ist also „Ja“.
So wählen Sie Spalten aus verschiedenen Tabellen in SQL aus
Die oben besprochene Methode ist auf diskrete Daten anwendbar. Bei kontinuierlichen Daten müssen wir einige Annahmen hinsichtlich der Werteverteilung jedes Merkmals treffen. Die verschiedenen naiven Bayes-Klassifikatoren unterscheiden sich hauptsächlich durch die Annahmen, die sie bezüglich der Verteilung von machen
Arten des Naive-Bayes-Modells
Es gibt drei Arten von Naive-Bayes-Modellen:
Gaußscher Naive-Bayes-Klassifikator
Bei Gaussian Naive Bayes wird davon ausgegangen, dass kontinuierliche Werte, die jedem Merkmal zugeordnet sind, gemäß einer Gaußschen Verteilung verteilt sind. Man spricht auch von einer Gauß-Verteilung Normalverteilung Bei der Darstellung ergibt sich eine glockenförmige Kurve, die symmetrisch zum Mittelwert der Merkmalswerte ist, wie unten dargestellt:
Die aktualisierte Tabelle der A-priori-Wahrscheinlichkeiten für die Outlook-Funktion lautet wie folgt:
Die Wahrscheinlichkeit der Merkmale wird als Gaußsche Wahrscheinlichkeit angenommen, daher ist die bedingte Wahrscheinlichkeit gegeben durch:
Nun betrachten wir eine Implementierung des Gaussian Naive Bayes-Klassifikators unter Verwendung von scikit-learn.
| Ja | NEIN | P(Ja) | P(Nein) |
---|---|---|---|---|
Sonnig | 3 | 2 Unix-Erstellungsverzeichnis | 3/9 | 2/5 |
Regnerisch | 4 | 0 | 4/9 | 0/5 |
Bedeckt | 2 | 3 | 2/9 | 3/5 |
Gesamt | 9 | 5 | 100% | 100% |
Python
# load the iris dataset> from> sklearn.datasets> import> load_iris> iris> => load_iris()> > # store the feature matrix (X) and response vector (y)> X> => iris.data> y> => iris.target> > # splitting X and y into training and testing sets> from> sklearn.model_selection> import> train_test_split> X_train, X_test, y_train, y_test> => train_test_split(X, y, test_size> => 0.4> , random_state> => 1> )> > # training the model on training set> from> sklearn.naive_bayes> import> GaussianNB> gnb> => GaussianNB()> gnb.fit(X_train, y_train)> > # making predictions on the testing set> y_pred> => gnb.predict(X_test)> > # comparing actual response values (y_test) with predicted response values (y_pred)> from> sklearn> import> metrics> print> (> 'Gaussian Naive Bayes model accuracy(in %):'> , metrics.accuracy_score(y_test, y_pred)> *> 100> )> |
Output: Gaussian Naive Bayes model accuracy(in %): 95.0 Multinomial Naive Bayes Feature vectors represent the frequencies with which certain events have been generated by a multinomial distribution. This is the event model typically used for document classification. Bernoulli Naive Bayes In the multivariate Bernoulli event model, features are independent booleans (binary variables) describing inputs. Like the multinomial model, this model is popular for document classification tasks, where binary term occurrence(i.e. a word occurs in a document or not) features are used rather than term frequencies(i.e. frequency of a word in the document). Advantages of Naive Bayes ClassifierEasy to implement and computationally efficient.Effective in cases with a large number of features.Performs well even with limited training data.It performs well in the presence of categorical features. For numerical features data is assumed to come from normal distributionsDisadvantages of Naive Bayes ClassifierAssumes that features are independent, which may not always hold in real-world data.Can be influenced by irrelevant attributes.May assign zero probability to unseen events, leading to poor generalization.Applications of Naive Bayes Classifier Spam Email Filtering : Classifies emails as spam or non-spam based on features. Text Classification : Used in sentiment analysis, document categorization, and topic classification. Medical Diagnosis: Helps in predicting the likelihood of a disease based on symptoms. Credit Scoring: Evaluates creditworthiness of individuals for loan approval. Weather Prediction : Classifies weather conditions based on various factors.As we reach to the end of this article, here are some important points to ponder upon: In spite of their apparently over-simplified assumptions, naive Bayes classifiers have worked quite well in many real-world situations, famously document classification and spam filtering. They require a small amount of training data to estimate the necessary parameters.Naive Bayes learners and classifiers can be extremely fast compared to more sophisticated methods. The decoupling of the class conditional feature distributions means that each distribution can be independently estimated as a one dimensional distribution. This in turn helps to alleviate problems stemming from the curse of dimensionality.ConclusionIn conclusion, Naive Bayes classifiers, despite their simplified assumptions, prove effective in various applications, showcasing notable performance in document classification and spam filtering. Their efficiency, speed, and ability to work with limited data make them valuable in real-world scenarios, compensating for their naive independence assumption. Frequently Asked Questions on Naive Bayes ClassifiersWhat is Naive Bayes real example?Naive Bayes is a simple probabilistic classifier based on Bayes’ theorem. It assumes that the features of a given data point are independent of each other, which is often not the case in reality. However, despite this simplifying assumption, Naive Bayes has been shown to be surprisingly effective in a wide range of applications. Why is it called Naive Bayes?Naive Bayes is called naive because it assumes that the features of a data point are independent of each other. This assumption is often not true in reality, but it does make the algorithm much simpler to compute. What is an example of a Bayes classifier?A Bayes classifier is a type of classifier that uses Bayes’ theorem to compute the probability of a given class for a given data point. Naive Bayes is one of the most common types of Bayes classifiers. What is better than Naive Bayes?There are several classifiers that are better than Naive Bayes in some situations. For example, logistic regression is often more accurate than Naive Bayes, especially when the features of a data point are correlated with each other. Can Naive Bayes probability be greater than 1?No, the probability of an event cannot be greater than 1. The probability of an event is a number between 0 and 1, where 0 indicates that the event is impossible and 1 indicates that the event is certain.>