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 mehrere Möglichkeiten, die Leistung des Naive-Bayes-Algorithmus zu verbessern. Hier sind einige gängige Techniken:

  • Feature Engineering: Die Leistung von Naive Bayes hängt von der Qualität der Eingangsmerkmale ab. Durch sorgfältige Auswahl und Umwandlung der Eingangsmerkmale können wir die Genauigkeit des Modells verbessern. Zum Beispiel können wir Techniken wie Merkmalsskalierung, Merkmalsauswahl und Merkmalsextraktion verwenden, um die Qualität der Eingangsmerkmale zu verbessern.
  • Smoothing: Naive Bayes kann unter Null-Häufigkeits-Problemen leiden, wenn eine bestimmte Merkmals- und Klassenkombination in den Trainingsdaten nicht vorhanden ist. Glättungsverfahren wie die Laplace-Glättung und die additive Glättung können helfen, dieses Problem zu lösen, indem eine kleine Konstante zur Anzahl der einzelnen Merkmale hinzugefügt wird.
  • Ensemble-Methoden: Wir können mehrere Naive Bayes-Modelle kombinieren, um die Genauigkeit des Klassifikators zu verbessern. Eine Möglichkeit, dies zu tun, ist die Verwendung von Bagging- oder Boosting-Techniken, wie Random Forest und AdaBoost.
  • Parameter Tuning: Naive Bayes verfügt über mehrere Hyperparameter, die abgestimmt werden können, um die Leistung des Algorithmus zu verbessern. So können wir beispielsweise den Glättungsparameter anpassen, die beste Technik für die Merkmalsauswahl auswählen oder den optimalen Satz von Merkmalen wählen.
  • Model Selection: Neben Naive Bayes gibt es andere Klassifizierungsalgorithmen, die für bestimmte Datentypen besser geeignet sein können. Durch den Vergleich der Leistung von Naive Bayes mit anderen Algorithmen können wir das beste Modell für unsere Daten auswählen.
  • Umgang mit unausgewogenen Daten: Wenn die Anzahl der Stichproben in jeder Klasse unausgewogen ist, kann Naive Bayes gegenüber der Mehrheitsklasse voreingenommen sein. Um dieses Problem zu lösen, können wir Techniken wie Oversampling, Undersampling oder Klassengewichtung verwenden.
  • Behandlung kontinuierlicher Merkmale: Beim Standardalgorithmus wird davon ausgegangen, dass die Eingabemerkmale kategorisch sind. In vielen realen Anwendungen können die Eingabemerkmale jedoch kontinuierlich sein. Um kontinuierliche Merkmale zu verarbeiten, können wir Techniken wie Diskretisierung, Kernel-Dichte-Schätzung oder Gaussian Naive Bayes verwenden.

Dies sind einige gängige Techniken, die zur Verbesserung der Leistung von Naive Bayes verwendet werden können. Die Wahl der Technik hängt von der jeweiligen Problemstellung und den vorliegenden Daten ab.

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

Multinomial und Bernoulli Naive Bayes sind zwei beliebte Varianten des Naive Bayes Algorithmus, die häufig in der Textklassifizierung verwendet werden. Der Hauptunterschied zwischen beiden Algorithmen ist die Art und Weise, wie sie die Eingabedaten darstellen. Multinomial Naive Bayes geht davon aus, dass die Eingabedaten durch die Anzahl oder Häufigkeit von Wörtern dargestellt werden, während Bernoulli Naive Bayes davon ausgeht, dass die Eingabedaten durch binäre Merkmale dargestellt werden, d. h. durch das Vorhandensein oder Nichtvorhandensein eines Wortes in einem Dokument.

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

Bei Multinomial Naive Bayes werden die Eingabedaten in der Regel als Bag-of-Words dargestellt, wobei gezählt wird, wie oft jedes Wort in einem Dokument vorkommt. Der Klassifikator schätzt dann die bedingte Wahrscheinlichkeit jedes Wortes in Abhängigkeit von der Klassenvariablen unter Verwendung einer Multinomialverteilung. Bei Bernoulli Naive Bayes werden die Eingabedaten als binäre Merkmale dargestellt, wobei jedes Merkmal angibt, ob ein bestimmtes Wort in dem Dokument vorhanden ist oder nicht. Der Klassifikator schätzt dann die bedingte Wahrscheinlichkeit jedes Merkmals in Abhängigkeit von der Klassenvariablen unter Verwendung einer Bernoulli-Verteilung.

Ein weiterer wichtiger Unterschied zwischen den beiden Algorithmen ist die Art und Weise, wie sie mit fehlenden Merkmalen umgehen. Bei Multinomial Naive Bayes wird das Fehlen eines Wortes als Häufigkeitszahl Null behandelt, was zu Problemen mit Nullwahrscheinlichkeiten führen kann. Im Gegensatz dazu modelliert Bernoulli Naive Bayes das Fehlen eines Wortes ausdrücklich als separates Merkmal und behandelt es entsprechend.

Beide Algorithmen gehen davon aus, dass die Merkmale in Abhängigkeit von der Klassenvariablen bedingt unabhängig sind. Die Art und Weise, wie diese Annahme formuliert wird, ist jedoch in jedem Fall leicht unterschiedlich. Bei Multinomial Naive Bayes werden die Merkmale als aus einer Multinomialverteilung gezogen modelliert, während bei Bernoulli Naive Bayes die Merkmale als aus einer Bernoulli-Verteilung gezogen modelliert werden.

Die Wahl des Algorithmus hängt von der spezifischen Aufgabe und der Art der Eingangsmerkmale ab. Multinomial Naive Bayes wird üblicherweise für Textklassifizierungsaufgaben verwendet, bei denen die Eingangsmerkmale diskrete Wortzahlen oder Häufigkeiten sind. Bernoulli Naive Bayes wird üblicherweise für binäre oder Präsenz-Absenz-Merkmale verwendet, z. B. für die Klassifizierung von Spam oder die 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.

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