Das Projekt Bayes-Filter

Transcription

Das Projekt Bayes-Filter
Das Projekt "Bayes-Filter"
From NilVipWiki
Contents
1 Motivation
2 Theoretische Grundlagen
2.1 Bedingte Wahrscheinlichkeiten
2.2 Das Bayes Theorem
3 Der Weg zum SPAM Filter
3.1 Ansätze zur SPAM-Bekämpfung
3.1.1 Transport
3.1.2 Inhalt
3.2 Paul Grahams Anstatz: Statistik + Stochastik
3.2.1 Statistische Analyse der eMails
3.2.2 Ermittlung der Wahrscheinlichkeiten
3.2.3 Entscheidung - SPAM/HAM
3.2.4 Selbstlernprozesse
3.2.4.1 Train-Everythin (TEFT)
3.2.4.2 Train-On-Error (TOE)
3.2.4.3 Train-Until-Mature (TUM)
3.2.4.4 Train-Until-No-Error (TUNE)
4 Literaturliste
4.1 Primärliteratur
4.2 Sekundärliteratur
4.3 Weitere interessante Literatur
Motivation
Im Rahmen des Praktikums für "Algorithmische Anwendungen" im 7. Semester des Studiums der allg. Informatik an der FH-Köln galt es ein
algorithmisches Thema aus der Praxis zu wählen. Aufgrund der Aktualität und aber auch der Neugier auf die Möglichkeiten der Textkategorisierung mittels
Bayes-Filterung haben wir dieses Thema gewählt. Der Begriff wurde schon vielfältig in der Presse verwendet, bzw. Programme und Systeme geben an
mittels "Bayes-Filterung" zu arbeiten. Es galt also die Mystique um die Funktion solcher Filter etwas zu aufzuklären.
Theoretische Grundlagen
Zum Verständnis der Funktion der genannten Filter hier zunächst ein Überblick über die zugrunde liegende Mathematik, genauer die zugrunde liegende
Stochastik.
Bedingte Wahrscheinlichkeiten
Unter "Bedingter Wahrscheinlichkeit" verseht man, dass Eintreten eines Ereignisses A unter der Vorraussetzung, dass B bereits eingetreten ist. Durch die
Eintretenswahrscheinlichkeit für A P(A)ergibt sich unter Einfluss der Wahrscheinlichkeit von B P(B)somit die Gesamtwahrscheinlichkeit für beide
Ereignisse:
Hier ein Beispiel: Ein Student kauft DVD Rohlinge. Um Geld zu sparen, kauft der Student jeweilt 20% Markenware und 80% der günstigeren No-Name
Produkte. Einer Fachzeitschrift hat er entnommen, dass 10% aller No-Name Rohline defekt sind, jedoch nur 3% aller Markenrohlinge.
Die Wahrscheinlichkeit einen Markrohling zu haben ist demnach:
Die Wahrscheinlichkeit einen günstigen No-Name Rohling im Brenner zu haben ist:
Es ergeben sich folgende Verbundwahrscheinlichkeiten (Ereignisse sind stochastisch unabhängig):
Bei Markenrohlingen:
Bei No-Name Rohlingen:
Möchte man nun die sog. "bedingten Wahrscheinlichkeiten", also die Wahrscheinlichkeit von A und der Vorraussetzung eines bereits eingetretenen
Ereignisses B, bestimmten. Also hier z.B. Die Wahrscheinlichkeit einen defekten Rohling zu haben, nachdem vorher bereits zufällig ein Markenrohling aus
der Menge der Rohlinge gegriffen wurde.
Also sind 3% der zufällig herausgegriffenen Markenrohlinge defekt. Im Vergleich dazu erhalten wir folgende "bedingte Wahrscheinlihckeit" für nicht
defekte Markenrohlinge
Für die No-Name Rohlinge gelten folgende "bedingten Wahrscheinlichkeiten":
Das Bayes Theorem
Wie verhält es sich jedoch mit den Wahrscheinlichkeiten im Falle, dass Ereignis A bereits eingetreten und bekannt ist mit der Wahrscheinlichkeit des zuvor
stattgefundenen Ereignisses B.
Also: "A" ist passiert, wie wahrscheinlich ist vorher noch "B" passiert.
Diese Frage beantwortete der Mathematiker Thomas Bayes in seinem [Essay Towards Solving a Problem in the Doctrine of Chances (http://
www.stat.ucla.edu/history/essay.pdf|) ] von 1763.
Die folgende Formel zeigt die gesuchte Wahrscheinlichkeit, dass Ereignis B eingetreten war bevor Ereignis A eintrat.
analog dazu gilt für
daraus wiederum folgt wegen
nach Umstellen nach
wobei
der Zusammenhang
folgt daraus:
noch unbekannt ist. Allerdings läßt sich dies folgendermaßen herleiten:
(Satz von Bayes)
Dies wird auch als die totale Wahrscheinlichkeit (http://de.wikipedia.org/wiki/Totale_Wahrscheinlichkeit) bezeichnet.
Setzen wir nun
in unsere Gleichung ein, erhalten wir:
Bei abzählbar vielen Ereignissen ergibt sich das Bayessche Theorem folgendermaßen: Falls
Teilmenge B ist, für die
ein totales Ereignissystem mit echter
a-posteriori-Wahrscheinlichkeit gilt
dies führt damit zu folgender Gleichung
Auf unser Beispiel bezogen bedeutet die Fragestellung:
Ich bin mit einem defekten Rohling konfrontiert (Ereignis D). Wie wahrscheinlich ist nun der Rohling ein Markenrohling oder ein No-Name-Rohling
(Ereignis M)? Die ursprüngliche Fragestellung entlang des Entscheidungsbaumes ist also umgekehrt:
mit
folgt daraus
aller
defekten Rohlinge sind Markenrohlinge.
Entscheidungsbaum rückwärts
Der Weg zum SPAM Filter
Ansätze zur SPAM-Bekämpfung
Im Kampf gegen unerwünschte eMails (SPAM) gibt es zwei gundlegende Ansätze:
1. Analyse des Transports (Envelope, Server, Route)
2. Analyse der Nachricht selber, also deren Inhalt
Transport
Emails nach RFC822 (ftp://ftp.rfc-editor.org/in-notes/rfc822.txt) bzw. dem neueren RFC2822 (ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt) beschreiben viele
Vorgaben die oft von SPAM-Versendern nicht eingehalten werden.
Hierzu zählen z.B. das Akzeptieren von Bounce-Messages oder auch nur die schlichte Existenz einer Absender-Mailbox. SPAM-Versender halten sich oft
aus Performance-Gründen nicht an die in den RFCs vorgegebenen Rahmenbedingungen. Aber leider reicht heute das Überprüfen der vorgegebenen
Rahmenbedingungen nicht mehr aus um Mails zuverlässig auszusondern bzw. als SPAM zu deklarieren.
Aktuell findet geradezu ein Wettrüsten zwischen SPAM-Versendern und den Betreibern von eMail-Gateways statt. Neuester Ansatz ist das sog. Greylisting
(http://de.wikipedia.org/wiki/Greylisting) . Hierbei wird einem Mailserver zunächst die Einlieferung verweigert. Nach einiger Zeit ist es dann aber möglich
die eMail bei Zielmailserver einzuliefern. Diese Methode verstößt nicht gegen RFCs sondern nutzt die Eigenheit von SPAM-Versendern aus, eMails nicht
zu queuen, sondern bei erfolgloser SMTP Sitzung keinen erneuten Versuch zu unternehmen eMails an diese Mailbox zu schicken. Trotz des wirklich
beachtlichen Erfolges dieser Methode ist das Greylisting nahezu die letzte Möglichkeit ohne Protokollerweiterung oder den Einsatz von digitialen
Signaturen SPAM auf Transportebene zu bekämpfen. Zudem steht es SPAM-Versendern jederzeit offen sich "wieder" an RFCs zu halten und auch SPAMEmails einen erneuten Versuch der Einlieferung zu bieten.
Inhalt
Grundsätzlich, also per Definition von SPAM, unterscheiden sich SPAM und HAM Mails nur in ihrem Inhalt. Je mehr sich Spammer an die RFC
"Vorschriften" halten, desto weniger kann Mail an unsauberer Kommunikation erkannt werden.
Inhalte auch von eMails sind nach deutschem Recht durch das Briefgeheimnis geschützt. Dieses für den Rahmen von zentralen Mail-Relay-Filtern in
Unternehmen aufzuheben erfordert spezielle Vereinbarungen mit den Mitarbeitern.
Bekannt sind zwei Ansätze für die Inhaltsanalyse von eMail:
1. Blacklists mit unscharfen Hashes von SPAM-eMails ("NiX SPAM"-Initiative der Zeitschrift iX aus dem Heise Verlag)
2. Persönliche Inhaltsfilter, hierbei exisitieren nur Filter auf Bayes-Basis in konkurrenzfähigem Niveau.
Paul Grahams Anstatz: Statistik + Stochastik
Zur Gruppe der durch Inhaltsanalyse arbeitenden Filter gehört Paul Graham's Ansatz der Mailkategorisierung in SPAM und HAM. Hierbei soll ein Filter
den Inhalt von eMails analysieren und mittels Bayes' Theoremen die Wahrscheinlichkeit für eine SPAM bzw. HAM eMail berechnen. Grundlage für die
Berechnungen sind eine Menge von Trainingsdaten. Zu ist der Filter selbstlernend, wird also durch Verarbeitung neuer eMails immer besser.
Statistische Analyse der eMails
Bayes Filter zur Klassifizierung von Texten benötigen prinzipbedingt eine Datenbasis, um den Filter anzulernen (Training). Hierbei werden, für das
Beispiel von SPAM-Filtern, zwei Mengen von Eingangsdaten benötigt, SPAM und HAM. Die eMails dieser beiden Mengen werden in Bestandteile
(tokens) zerlegt. Diese werden hinsichtlich ihrer Häufigkeit in eine Statistik eingeplegt. Eine Inhaltliche Unterscheidung oder gar Analyse findet nicht statt.
Header-Daten, sowie auch HTML-eMails, werden gleichermaßen zerlegt. In aktuellen Implementierungen werden jedoch einige "Störquellen" für die Filter
vorweg ausgeblendet, um ein "Vergiften" der Statistik zu vermeiden.
Im Folgenden nun ein Beispiel für eine Mailanalyse:
Hier die erhaltene Mail:
Return-Path: <[email protected]>
X-Flags: 1001
Delivered-To: GMX delivery to #[email protected]
Received: from mail.mailornews.com [216.51.232.133]
by localhost with POP3 (fetchmail-6.2.5.2)
for #[email protected] (single-drop); Sun, 04 Dec 2005 17:11:12 +0100 (CET)
Received: from CBL217-132-127-46.bb.netvision.net.il ([217.132.127.46]:4963)
by fastdnsservers.com with [XMail 1.22 ESMTP Server]
id <S16AFF2> for <[email protected]> from <[email protected]>;
Sun, 4 Dec 2005 09:44:21 -0600
Received: (vibrant 786 invoked from network); Sun, 04 Dec 2005 10:09:13 -0500
From: Sender Name <[email protected]>
To: [email protected]
Subject: Amazing, Alexandra
X-Mailer: westerly 29.75.096883
Date: Sun, 04 Dec 2005 07:37:18 -0500
Message-ID: <[email protected]>
Content-Type: multipart/mixed;boundary="------=279491630176"
Content-Transfer-Encoding: 7bit
<div style="margin: 10px 20px 10px 20px; background-color: #ffe; border: 3px solid #F28B0C; padding: 0 10px 0 10px;">
<p style="font-size: 13pt;">Even if you have no erection problems Cialis would help you to make <b>better sex more often</b> and to bring
unimaginable plesure to her. Just
disolve half a pill under your tongue and get ready for action in 15 minutes. The tests showed that the majority of men after taking this
medication were able to have
<b>perfect erection</b> during 36 hours!</p>
Wie oben beschrieben wird die eMail nun vollständig in sog. tokens zerlegt.
Hier exemplarisch einige Beispiele:
Amazing, multipart/mixed;boundary="------=279491630176" <div
erection
sex
style="font-size:
unimaginable medication
Nachdem nun eine Vielzahl von SPAM und HAM eMails auf diese Art und Weise zerlegt wurden, kann eine Statistik über die Häuftigkeit der tokens
erstellt werden. Wichtig wird in diesem Zusammenhang das Verhältnis zwischen der Anzahl der Vorkommnisse in SPAM-Mails oder erwünschten HAMMails.
Token
Vorkommen in SPAM Vorkommen in HAM
Amazing,
25
1
multipart/mixed;boundary="------=279491630176" 1
0
<div
50
20
style="font-size:
10
50
erection
45
0
Praktikum
0
66
in
50
50
Je breiter die Datenbasis, desto differenzierter, eindeutiger kann der Filter arbeiten.
Ermittlung der Wahrscheinlichkeiten
Grundlegender Ansatz für die Beurteilung von token bzw. deren "spammyness", ist deren wahrscheinliches Vorkommen in der Menge der SPAM-eMails im
Verhältnis zur Wahrscheinlichkeit, dass dieser token in HAM-eMail enthalten ist.
Paul Graham drückt dies folgendermaßen aus:
Übertragen auf die vorherige Beispieltabelle bedeutet dies:
Token
Vorkommen in SPAM Vorkommen in HAM Spammyness Interestingness
Amazing,
25
1
0,9615
0,4615
multipart/mixed;boundary="------=279491630176" 1
0
1
0,5
<div
20
50
0,2857
0,2142
style="font-size:
10
50
0,1667
0,3333
erection
45
0
1,000
0,500
Praktikum
0
66
0,000
0,500
in
50
50
0,500
0,000
Entscheidung - SPAM/HAM
Nach der statistischen Auswertung der token-Wahrscheinlichkeiten steht nun die Entscheidung über SPAM bzw. HAM an. Problematisch, rein stochastisch
betrachtet, ist die stark unterschiedliche Anzahl von eMails der beiden Klassen. Würde man also die umgekehrte (siehe Wahrscheinlichkeitsbaum) Bedingte
Wahrscheinlichkeit betrachten wollen ist das Ergebnis (Mail = SPAM ?) sehr stark durch die Zweige "SPAM" bzw. "nicht SPAM", also die schlichte
Anzahl der eMails jeder Klasse beeinflusst. Da jedoch die Wörter gleich gewichtig über die Zuordnung zu einer Textklasse (SPAM/HAM) entscheiden
sollen, werden (nach Paul Graham) die Wörter, zumindest in ihrer Verteilung zu den Klassen, als "gleichverteilt" betrachtet.
Wolten wir nur ein einziges token verwenden, würde dies ausreichen:
Nach Graham ergibt sich folgende "naive Bayes Annahme" um mehrere token in die Berechnung einzubeziehen, was ja immer der Fall ist. "Naiv"
deswegen, weil man davon ausgeht, daß die vorkommenden token unabhängig voneinander in der eMail auftreten. Natürlich ist dies nicht der Fall, der
Einfachheit halber wird dies in der gängigen Literatur angenommen.
Für unseren konkreten Fall sieht dies folgendermaßen aus
Da wir wie erwähnt davon ausgehen, daß
heraus. Weiterhin gilt:
ist, ist also auch
.
Damit kann obige Formel auch folgendermaßen ausgedrückt werden
. Damit kürzt sich dies in der oben vorgestellten Formel
Selbstlernprozesse
Der große Vorteil Bayes-basierter Filter besteht darin, daß sich der Filter an das "eMail-Verhalten" seines Benutzers anpaßt und sich gegenüber dessen
verändernden Verhaltens flexibel zeigt. Der Filter kann permanent lernen und wird so weiterhin die neue Art von SPAM herausfiltern. Um dies zu
bewerkstelligen sind vier Trainingsmethoden möglich.
Train-Everythin (TEFT)
Die TEFT-Trainingsmethode veranlaßt den Filter permanent, bei empfangenen eMail die geparsten tokens in den Datenbestand aufzunehmen. Der große
Vorteil dieser Methode besteht darin, daß sich der Filter sehr schnell den neuen "eMail"-Gewohnheiten anpaßt. Allerdings ist diese Tatsache gleichfalls der
größte Nachteil, denn bei schnell wechselndem "eMail"-Verhalten entstehen auf diese Weise sehr schnell viele token die ungewollt starken Einfluß auf die
Bewertung haben und zu Fehlern führen können.
Train-On-Error (TOE)
Bei der Train-On-Error-Methode wird der Lernprozess des Filters nur dann in Gang gesetzt, wenn er beim Bewerten der Nachricht einen Fehler begangen
hat. Solange der Benutzer nicht explizit eine eMail als SPAM einstuft und dies dem Filter mitteilt arbeitet dieser nur auf Basis des zu Beginn gelernten
SPAM und HAM. Aus diesem Grund paßt sich ein mit dieser Methode arbeitender Filter nur langsam neu auftauchender SPAM an. Allerdings wird so im
Vergleich zu TEFT relativ wenig Platz für den Datenbestand verbraucht.
Train-Until-Mature (TUM)
Diese Trainingsmethode ist ein Kompromiss zwischen den beiden erstgenannten Methoden. Erreichen token einen gewissen "Reifegrad" wird der Filter mit
diesen token solange nicht trainiert, bis er einen Fehler macht. Erst dann wird dieses token entsprechend in das SPAM- oder HAM-Hash eingefügt bzw. die
bereits vorhandene Anzahl um eins erhöht.
Train-Until-No-Error (TUNE)
Bei dieser Methode wird der Filter solange mit den Testdaten trainiert, bis er beim Bewerten der Testdaten keine Fehler mehr macht bzw. bis er einen
bestimmtem Schwellwert erreicht. Aber auch während des Einsatzes kann der Filter bei TUNE im Falle eines Fehlers mit dieser falsch bewerteten
Nachricht trainiert werden. Der Nachteil ist, daß bei TUNE die Zeit des Trainierens mit Testdaten je nach Umfang dieser und Rechenleistung extrem lang
werden kann, zumal Mail-Server mehr als ein Konto verwalten.
Literaturliste
Primärliteratur
Essay von Thomas Bayes (http://www.stat.ucla.edu/history/essay.pdf)
Paul Graham (http://www.paulgraham.com/antispam.html)
Sekundärliteratur
c't 17/03, Seite 150 - Dr. Andreas Linke (je) - Spam oder nicht Spam? E-Mail sortieren mit Bayes-Filtern...
Buch: Ending Spam (http://www.amazon.com/exec/obidos/tg/detail/-/1593270526/qid=1120826083/sr=8-1/ref=pd_bbs_ur_1/102-04218651228111?v=glance&s=books&n=507846)
Weitere interessante Literatur
Diskussion des Ansatzes von Paul Graham (http://mail.python.org/pipermail/python-dev/2002-August/028216.html)
Gary Robinsons Blog "Spam Detection" (http://radio.weblogs.com/0101454/stories/2002/09/16/spamDetection.html)
LinuxJournal,2003 - Gary Robinson - A Statistical Approach to the Spam Problem by Gary Robinson (http://www.linuxjournal.com/article/6467)
J.Hermes - Der angewendete Bayes (http://www.spinfo.uni-koeln.de/lehre/qlg/materialien.shtml?teil1) , ein Beispiel
Microsoft Research, David Heckerman - A Tutorial on Learning with Bayesian Networks (http://research.microsoft.com/~heckerman/)
Max-Planck-Institut für Bildungsforschung, Berlin - Muss der Satz von Bayes schwer verständlich sein? (http://www-abc.mpib-berlin.mpg.de/users/
wassner/art1.html)
Aufgabenstellung für ein Praktikum - inkl. Erklärungen zum Bayes Filter (http://www.cs.unm.edu/~terran/classes/cs351-s04/project_1/p1spec.pdf)
Erleuterungen zu Paul Grahams Verwendung des Bayes Filters (http://www.cl.uni-heidelberg.de/kurs/skripte/stat/html/page025.html)
NiX-Spam Initiative der Zeitschrift iX aus dem Heise Verlag (http://www.heise.de/ix/nixspam/)
Retrieved from "http://wiki.frittentheke.de/index.php/Das_Projekt_%22Bayes-Filter%22"
This page was last modified 15:52, 16 January 2006.