Zum Inhalt springen

Was ist der Naive Bayes Algorithmus?

Der Naive Bayes Algorithmus ist eine Klassifizierungsmethode, die auf dem sogenannten Bayes Theorem beruht. Im Kern geht er davon aus, dass das Auftreten eines Features völlig unkorreliert mit dem Auftreten eines anderen Features innerhalb der Klasse ist.

Der Algorithmus ist deshalb naiv, weil er die Features komplett unabhängig zueinander betrachtet und alle zu der Wahrscheinlichkeit der Klasse beitragen. Ein einfaches Beispiel hierzu: Ein Auto zeichnet sich dadurch aus, dass es vier Räder hat, etwa 4-5 Meter lang ist und fahren kann. Alle diese drei Features tragen unabhängig voneinander dazu dabei, dass dieser Gegenstand ein Auto ist.

Wie funktioniert der Algorithmus?

Der Naive-Bayes Algorithmus basiert auf dem Bayes Theorem. Es beschreibt eine Formel zur Berechnung der bedingten Wahrscheinlichkeit P(A|B) oder in Worten: Wie hoch ist die Wahrscheinlichkeit, dass das Ereignis A eintritt, wenn Ereignis B eingetreten ist? Als Beispiel: Wie wahrscheinlich ist es, dass ich an Corona erkrankt bin (= Ereignis A), wenn mein Schnelltest positiv ist (= Ereignis B)?

Diese bedingte Wahrscheinlichkeit lässt sich laut Bayes mithilfe der folgenden Formel berechnen:

\(\) \[P(A|B) = \frac{P(B|A) * P(A)}{P(B)} \]

  • P(B|A) = Wahrscheinlichkeit, dass Ereignis B eintritt, wenn Ereignis A schon eingetreten ist
  • P(A) = Wahrscheinlichkeit, dass Ereignis A eintritt
  • P(B) = Wahrscheinlichkeit, dass Ereignis B eintritt

Warum sollten wir diese Formel nutzen? Kommen wir zurück zu unserem Beispiel mit dem positiven Test und der Corona Erkrankung. Die bedingte Wahrscheinlichkeit P(A|B) kann ich nicht wissen und nur über ein aufwendiges Experiment herausfinden. Die umgedrehte Wahrscheinlichkeit P(B|A) hingegen ist einfacher herauszufinden. In Worten bedeutet sie: Wie wahrscheinlich ist es, dass eine an Corona erkrankte Person einen positiven Schnelltest vorweist.

Diese Wahrscheinlichkeit lässt sich verhältnismäßig einfach herausfinden, indem man nachweislich erkrankte Personen einen Schnelltest durchführen lässt und dann das Verhältnis errechnet, wie viele der Test auch wirklich positiv waren. Die Wahrscheinlichkeiten P(A) und P(B) lassen sich ähnlich einfach herausfinden. Die Formel ermöglicht es dann die bedingte Wahrscheinlichkeit P(A|B) einfach zu errechnen.

Wenn wir nur eine Eigenschaft haben, ist damit auch schon der komplette Naive Bayes Algorithmus erklärt. Mit einem Feature für die bedingte Wahrscheinlichkeit P(x | K) für verschiedene Klassen errechnet und die Klasse mit der höchsten Wahrscheinlichkeit gewinnt. Für unser Beispiel bedeutet das, es werden die beiden bedingten Wahrscheinlichkeiten P(Person ist krank | Test ist positiv) und P(Person ist gesund | Test ist negativ) mithilfe des Bayes Theorem berechnet und die Klassifizierung erfolgt für die Klasse mit der höheren Wahrscheinlichkeit.

Naive Bayes Klassifizierung mit Formen
Einfache Darstellung der Naive Bayes Klassifizierung | Quelle: Autor

Wenn unser Datensatz aus mehr als nur einem Feature besteht gehen wir ähnlich vor und berechnen für jede Kombination aus Feature x und Klasse K die bedingte Wahrscheinlichkeit. Dann multiplizieren wir alle Wahrscheinlichkeiten für ein Feature. Die Klasse K, die dann das höchste Produkt an Wahrscheinlichkeiten hat, ist die entsprechende Klasse des Datensatzes.

Was sind die Vor- und Nachteile des Naive Bayes Algorithmus?

Der Naive Bayes Algorithmus ist ein beliebter Einstieg in einen Klassifizierungsanwendung, da er sehr einfach und schnell zu trainieren ist und teilweise auch gute Ergebnisse liefern kann. Sollte die Annahme der Unabhängigkeit der einzelnen Features gegeben sein, performt er sogar besser als vergleichbare Klassifizierungsmodelle, wie eine logistische Regression, und benötigt weniger Daten zum Trainieren.

Obwohl der Naive Bayes Algorithmus bereits mit wenigen Daten gute Ergebnisse erzielen kann, benötigen wir so viele Daten, dass jede Klasse mindestens einmal im Trainingsdatensatz erscheint. Ansonsten wird der Naive Bayes Classifier für die Kategorie im Testdatensatz eine Wahrscheinlichkeit von 0 als Ergebnis liefern. Außerdem ist es in der Realität sehr unwahrscheinlich, dass alle Inputvariablen komplett unabhängig voneinander sind, was sich zudem auch nur sehr schwierig testen lässt.

Wie kann man den Naive Bayes-Algorithmus verbessern?

Es gibt einige Möglichkeiten um die Leistung des Naive Bayes Algorithmus auf einen Datensatz zu verbessern. Die gängigsten Methoden werden im folgenden vorgestellt. 

  • Feature Engineering: Wie jedes Machine Learning Modell hängt auch der Naive Bayes Algorithmus stark von der Qualität der Eingangsdaten ab. Durch eine gute Auswahl der benötigten Merkmale lässt sich die Genauigkeit des Modells verbessern und die Gefahr für Overfitting reduzieren. Dafür können wir Techniken des Feature Engineerings nutzen, wie beispielsweise eine Merkmalsextraktion oder die Merkmalsskalierung. 
  • Smoothing: Wenn ein Datensatz für eine bestimmte Merkmalskombination keine Daten enthält, kann es zu dem sogenannten Null-Häufigkeits-Problem kommen. Für diese seltenen Kategorien werden dann schlechte Vorhersagen getroffen, da das Modell keine ausreichenden Strukturen erkennen konnte. Beim Naive Bayes Algorithmus wird deshalb das sogenannte Smoothing genutzt, um Situationen zu verhindern, in denen eine Nullwahrscheinlichkeit vorhergesagt wird. Beispielsweise beim “Add-One-Smoothing” wird eine Einheit des Merkmals zu der Häufigkeit hinzugefügt, um eine bessere Verallgemeinerung des Modells auf neue Daten zu gewährleisten. 
  • Ensemble-Methoden: Beim Ensemble Training werden mehrere Naive Bayes Modelle kombiniert und für eine gemeinsame Klassifikation genutzt. Die Genauigkeit aus dem gemeinsamen Ergebnis der Modelle ist dabei meist höher als das Ergebnis eines einzelnen Modells. Je nachdem wie die Modelle trainiert und kombiniert werden, unterscheidet man verschiedene Varianten. Eine Möglichkeit besteht beispielsweise darin, ein AdaBoost Ansatz zu nutzen, bei dem das nächste Modell lediglich auf den Daten trainiert wird, die das vorangegangene Modell falsch klassifiziert hat. 
  • Parameter Tuning: Auch bei Naive Bayes gibt es eine Auswahl an Hyperparametern, die an den Datensatz angepasst werden können, um die Leistung des Modells zu verbessern. Dabei kann beispielsweise der Glättungsparameter angepasst werden oder es können verschiedene Sätze von Merkmalen ausgetestet werden. 
  • Umgang mit unausgewogenen Daten: Der Naive Bayes Algorithmus ist abhängig davon, ob die Anzahl der Datensätze pro Klasse ausgewogen sind oder nicht. Wenn dies nicht der Fall ist kann es zu einer Verzerrung in Richtung der Mehrheitsklasse kommen. Um diese Fehler zu verhindern können Methoden wie Oversampling oder Undersampling genutzt werden. Beim Oversampling beispielsweise werden die Anzahl der Datensätze in einer Minderheitsklasse erhöht, um ein Gleichgewicht der Klassen herzustellen. Dabei können einzelne Instanzen dupliziert werden oder leicht abgeändert werden, um neue Instanzen der Minderheitsklasse zu erzeugen. 
  • Behandlung kontinuierlicher Merkmale: Der normale Naive Bayes Algorithmus geht davon aus, dass die Eingabemerkmale kategorisch sind. Dies ist jedoch in vielen realen Anwendungen nicht der Fall und viele Datensätze enthalten auch kontinuierliche Merkmale. Um trotzdem ein Naive Bayes Modell trainieren zu können müssen diese Merkmale erst in kategorische Daten umgewandelt werden. Es gibt verschiedene Methoden wie diese sogenannte Diskretisierung vorgenommen werden kann. Die Daten können zum Beispiel in gleichmäßige Intervalle aufgeteilt werden oder anhand von Quantilen unterteilt werden. Zwar geht bei der Diskretisierung immer ein Teil des Informationsgehalts des Datensatzes verloren, jedoch könnten sie ohne diesen Schritt gar nicht Teil des Naive Bayes Modells werden. 

Diese Methoden führen dazu, dass die Leistung des Naive Bayes Modells weiter verbessert werden kann und ein möglichst robustes Modell trainiert wird. 

Was ist der Unterschied zwischen Multinomial Naive Bayes und Bernoulli Naive Bayes?

Multinomial und Bernoulli Naive Bayes sind zwei häufig genutzte Varianten des ursprünglichen Naive Bayes Algorithmus, die vor allem in der Textklassifizierung Verwendung finden. Sie unterscheiden sich hauptsächlich darin, wie sie die Eingabedaten numerisch darstellen. Während Multinomial Naive Bayes darauf basiert, dass die Wortbausteine, durch die reine Anzahl oder Häufigkeit in der sie vorkommen dargestellt werden können, geht Bernoulli Naive Bayes davon aus, dass die Eingabedaten am besten durch binäre Merkmale dargestellt wird. Diese binären Merkmale messen zum Beispiel, ob ein Wort in einem Dokument vorkommt oder nicht. 

Bernoulli Verteilung Naive Bayes
Bernoulli Verteilung für p = 0,3 | Quelle: Autor

Das Multinomial Naive Bayes nutzt dabei die sogenannten Bag-of-Words als Eingabedaten. Dabei wird gezählt wie oft jedes Wort in dem vorliegenden Dokument vorkommen. Das Modell schätzt dann die bedingte Wahrscheinlichkeit von jedem Wort in Abhängigkeit von der Klasse und nutzt dafür eine Multinomialverteilung. Das Bernoulli Naive Bayes hingegen nutzt binäre Eingabedaten und Merkmale, die angeben, ob ein bestimmtes Wort in dem Dokument vorkommt oder nicht. Anschließend wird analog zur Multinomial Naive Bayes die bedingte Wahrscheinlichkeit eines Merkmals in Abhängigkeit von der Klassenvariablen geschätzt, jedoch unter Verwendung einer Bernoulli Verteilung. 

Aus diesem Aufbau ergibt sich ein weiterer Unterschied, der sich auf den Umgang mit fehlenden Merkmalen bezieht. Bei Multinomial Naive Bayes erhält ein fehlendes Wort die Häufigkeitszahl Null, wodurch es zu Problemen mit Nullwahrscheinlichkeiten kommen kann. Der Bernoulli Klassifikator hingegen behandelt das fehlende Wort als ein eigenes Merkmal und behandelt es auch entsprechend. Somit treten hier keine Probleme auf. 

Die Wahl des Algorithmus hängt stark von der Aufgabe und vor allem der Art der Eingangsmerkmale ab. Multinomial Naive Bayes wird in vielen Fällen für Textklassifikationen verwendet, die mit diskreten Wortzahlen arbeiten und die Klassifikation anhand eines komplexen Zusammenspiels der einzelnen Worte errechnen lassen. Der Bernoulli Naive Bayes hingegen wird für binäre Merkmale genutzt bei denen die Vorhersage stärker an dem Vorhandensein oder Nicht-Vorhandensein einzelner Wörter hängt, wie beispielsweise bei der Erkennung von Spam oder der Stimmungsanalyse. 

Welche Anwendungen nutzen den Naive Bayes Algorithmus?

Im Bereich des Machine Learnings wird Naive Bayes als Klassifikationsmodell eingesetzt, also zur Einordnung eines Datensatzes in eine bestimmte Klasse. Für diese Modelle gibt es verschiedene, konkrete Anwendungen für die auch Naive Bayes genutzt wird:

Natural Language Processing

In diesem Bereich kann das Modell eingesetzt werden, um einen Textabschnitt einer bestimmten Klasse zuzuordnen. E-Mail Programme sind beispielsweise daran interessiert, eingehende Mails als “Spam” oder “Nicht Spam” zu klassifizieren. Dazu werden dann die bedingten Wahrscheinlichkeiten von einzelnen Wörtern berechnet und mit der Klasse abgeglichen. Das gleiche Verfahren kann auch genutzt werden, um Social Media Kommentare als “positiv” oder “negativ” zu klassifizieren.

Obwohl Naive Bayes für diese Anwendungen im Textbereich einen schnellen und einfachen Ansatz bietet, gibt es andere Modelle, wie beispielsweise Transformer, die deutlich bessere Ergebnisse liefern. Das Naive Bayes Modell berücksichtigt nämlich keine Reihenfolge von Wörtern oder eine gewisse Anordnung. Wenn ich beispielsweise sage “Ich finde das Produkt nicht gut.” ist das wahrscheinlich keine positive Produktrezension, nur weil das Wort “gut” darin vorkommt.

Klassifizierung von Kreditrisiken

Für Banken ist der Ausfall von Krediten ein immenses Risiko, da sie große Summen an Geld verlieren, wenn ein Kunde den Kredit nicht mehr bezahlen kann. Deshalb wird viel Arbeit in Modelle gesteckt, die je nach Kunde das individuelle Ausfallrisiko errechnen können. Das ist im Endeffekt auch eine Klassifizierung bei der der Kunde entweder der Gruppe “Kreditrückzahlung” oder “Kreditausfall” zugeordnet wird. Dazu werden einige spezifische Eigenschaften, wie beispielsweise Kredithöhe, Einkommen oder Anzahl vorheriger Kredite genutzt. Mithilfe von Naive Bayes kann daraus ein zuverlässiges Klassifizierungsmodell trainiert werden.

Vorhersage von medizinischer Behandlung

In der Medizin muss ein Arzt entscheiden, welche Behandlung und welche Medikamente für den einzelnen Patienten und dessen Krankheitsbild am vielversprechendsten sind und die höchste Wahrscheinlichkeit besitzen den Patienten wieder gesund zu machen. Als Unterstützung kann dazu ein Naive Bayes Klassifizierungsmodell trainiert werden, das abhängig von Eigenschaften des Gesundheitszustands, wie Blutdruck, Wohlbefinden oder Symptome, sowie der möglichen Behandlung (Medikamente) eine Wahrscheinlichkeit berechnet, dass der Kunde wieder gesund wird oder eben nicht. Die Ergebnisse des Modells kann wiederum der Arzt in seine Entscheidung mit einbeziehen.

Das solltest Du mitnehmen

  • Der Naive Bayes Algorithmus ist eine einfache Methode, um Daten zu klassifizieren.
  • Er basiert auf dem Bayes Theorem und ist naiv, da er davon ausgeht, dass alle Inputvariablen und deren Ausprägung unabhängig voneinander sind.
  • Der Naive Bayes Algorithmus lässt sich relativ schnell und einfach trainieren, liefert aber in vielen Fällen keine guten Ergebnisse, da die Annahme der Unabhängigkeit der Variablen verletzt ist.
Ridge Regression

Was ist die Ridge Regression?

Erforschung der Ridge Regression: Vorteile, Implementierung in Python und die Unterschiede zu Ordinary Least Squares (OLS).

Aktivierungsfunktion / Activation Function

Was ist eine Aktivierungsfunktion?

Erfahren Sie mehr über die Bausteine des Deep Learnings: Maximieren Sie die Modellleistung mit der richtigen Aktivierungsfunktion.

Regularization / Regularisierung

Was ist die Regularisierung im Machine Learning?

Regularisierung verstehen: Erfahren Sie, wie Regularisierungstechniken die Modellleistung verbessern und eine Überanpassung verhindern.

Conditional Random Field

Was ist ein Conditional Random Field (CRF)?

Entfesseln Sie die Macht der Conditional Random Fields: Entdecken Sie fortgeschrittene Techniken und Anwendungen in diesem Leitfaden.

Swarm Intelligence / Schwarmintelligenz

Was ist die Schwarmintelligenz?

Entdecken Sie die Kraft der Schwarmintelligenz - ein System, das von der kollektiven Intelligenz sozialer Lebewesen inspiriert ist.

Bias-Variance Tradeoff

Was ist der Bias-Variance Tradeoff?

Bias-Variance Tradeoff beim Machine Learning: Der Kompromiss zwischen Einfachheit und Flexibilität des Modells. Erfahren Sie mehr!

Andere Beiträge zum Thema Naive Bayes

  • Scikit-Learn bietet einige Beispiele und Programmieranleitungen für den Naive Bayes Algorithmus in Python.
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner