Der Satz von Bayes

Der Satz von Bayes dreht sich um die Berechnung von bedingten Wahrscheinlichkeiten. Nehmen wir an, wir haben zwei Ereignisse \(A\) und \(B\) und wir kennen \(P(A)\), \(P(B)\) und die bedingte Wahrscheinlichkeit \(P(A|B)\). Wir möchten jetzt aber \(P(B|A)\) berechnen. Dafür kann die Bayes Formel verwendet werden: $$ P(B|A) = \frac{P(A|B) \cdot P(B)}{P(A)} $$ Der Satz von Bayes ist einer der wichtigsten Sätze der Stochastik und wird in einer Vielzahl von Anwendungen genutzt. Wir wollen den Satz dazu verwenden, um Spam Emails erkennen zu können.

Bayes Klassifikator Spam-Emails

Nehmen wir an, du bekommst aktuell sehr viel Spam-Mails, die du automatisch erkennen möchtest. Dir fällt auf, dass in den Spam-Mails die Wörter "Geld" und "Gewinnspiel" häufig vorkommen, während die Mails von deinen Freunden diese Wörter eher selten beeinhalten. Du fängst an zu zählen, wie häufig die Wörter in Spam-Mails und wie häufig in normalen Mails vorkommen. Diese Zahl teilst du dann durch die Gesamtanzahl von Wörtern einer Mail und erhältst so eine Schätzung für die Auftrittswahrscheinlichkeit. Das Prozedere wiederholst du für mehrere Mails und mittelst dann die Wahrscheinlichkeiten. Du erhältst dann folgende Wahrscheinlichkeiten:
Die Wahrscheinlichkeit, dass ein Wort in einer Spam-Email "Geld" ist, beträgt 10 %: $$ P(Geld|Spam) = 0.1 $$ Die Wahrscheinlichkeit, dass ein Wort in einer normalen Email "Geld" ist, beträgt 2%: $$ P(Geld|\neg Spam) = 0.02 $$ Die Wahrscheinlichkeit, dass ein Wort in einer Spam-Email "Gewinnspiel" ist, beträgt 10 %: $$ P(Gewinnspiel|Spam) = 0.1 $$ Die Wahrscheinlichkeit, dass ein Wort in einer normalen Email "Gewinnspiel" ist, beträgt 1%: $$ P(Gewinnspiel|\neg Spam) = 0.01 $$ Anschließend zählst du noch wie viele Spam-Mails du bekommst. In deinen letzten 100 Emails waren 10 Spam-Mails dabei. Daraus folgen die Abschätzungen: $$ P(Spam) = 0.1 $$ $$ P(\neg Spam) = 1 - P(Spam) = 0.9 $$


Wir nehmen jetzt an, dass Wörter unabhängig voneinander sind. In der Realität ist das natürlich nicht der Fall, jedoch kann man mit dieser Annahme einfacher rechnen und erhält trotzdem brauchbare Ergebnisse. $$ P(Text) = P(Wort1) \cdot P(Wort2) \cdot ... \cdot P(WortN) $$ Das Ziel ist es die Wahrscheinlichkeiten \( P(Spam|Text) \) und \( P(\neg Spam|Text) \) zu ermitteln, dass wir bei Ankunft einer neuen Mail entscheiden können, ob diese Spam ist oder nicht. Dafür benutzen wir jetzt den Satz von Bayes: $$ P(Spam|Text) = \frac{P(Text|Spam) \cdot P(Spam)}{P(Text)} $$ $$ P(\neg Spam|Text) = \frac{P(Text|\neg Spam) \cdot P(\neg Spam)}{P(Text)} $$


Wir benutzen die Unabhängigkeit der Wörter: $$ P(Text|Spam) = P(Wort1|Spam) \cdot P(Wort2|Spam) \cdot ... \cdot P(WortN|Spam) $$ $$ P(Text|\neg Spam) = P(Wort1|\neg Spam) \cdot P(Wort2|\neg Spam) \cdot ... \cdot P(WortN|\neg Spam) $$ Betrachten wir als Beispiel den Satz "Gewinne Geld bei Gewinnspiel". Die Wahrscheinlichkeit \(P(Text|Spam) \) ist dann: $$ P(Text|Spam) = P(Gewinne | Spam) \cdot P(Geld|Spam) \cdot P(bei | Spam) \cdot P(Gewinnspiel | Spam) = 0.8 \cdot 0.1 \cdot 0.8 \cdot 0.1 $$ Und die Wahrscheinlichkeit \(P(Text|Spam) \): $$ P(Text|\neg Spam) = P(Gewinne | \neg Spam) \cdot P(Geld|\neg Spam) \cdot P(bei | \neg Spam) \cdot P(Gewinnspiel | \neg Spam) = 0.97 \cdot 0.02 \cdot 0.97 \cdot 0.01 $$


Es wird sich also für Spam entschieden wenn gilt: $$ P(Text|Spam) \cdot P(Spam) > P(Text|\neg Spam) \cdot P(\neg Spam) \Leftrightarrow \prod_i^n(P(W_i|Spam)) \cdot P(Spam) > \prod_i^n(P(W_i|\neg Spam)) \cdot P(\neg Spam) $$

Decision Boundary visualisiert

In der folgenden Grafik werden auf den Achsen die Anzahl der Wörter "Geld" und "Gewinnspiel", die eine Mail mit 50 Wörtern aufweist. Die Grenze, die man in der Grafik sieht wird auch Decision Boundary genannt. Alles was sich in der Grafik auf der Kurve und rechts davon befindet, wird als Spam klassifiziert, alles andere als kein Spam. Verändert man beispielsweise \(P(Spam)\) verändert sich die Decision Boundary.
\(P(Spam)\):