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.