Spamfilter trainieren

Zu den wesentlichen Eigenschaften des GREYHOUND-Spamfilters gehört, dass er ständig dazulernt, sich also kontinuierlich verbessert und sich mit der Zeit automatisch an Ihre Bedürfnisse anpasst. Dies ist ein zweischneidiges Schwert, denn nur wenn er auch das Richtige lernt, kann die Erkennungsleistung in kurzer Zeit nahe an die perfekten 100% steigen. Lernt er hingegen das Falsche, dann wirkt sich das negativ auf die Erkennungsrate aus und kann im Extremfall dazu führen, dass der Spamfilter mehr schadet als nutzt. Beim Lernen kommt es also darauf an, dass der Anwender sich so verhält, dass der Spamfilter aus seinen Entscheidungen lernen kann, was richtig und was falsch ist. Deshalb spricht man auch davon, dass der Spamfilter “trainiert” wird. Dieses Training stellt allerdings keinen wesentlichen Zusatzaufwand dar, sondern bedeutet einfach, dass man in der täglichen Kommunikationsarbeit Fehlleistungen des Spamfilters bewusst und sinnvoll korrigiert, sodass dieser aus seinen Fehler lernen und sich verbessern kann.

So lernt der Spamfilter automatisch hinzu

Der Spamfilter besteht vereinfacht betrachtet aus einer riesigen Wortliste, bei denen jedes Wort mit einem Wert gewichtet ist, der die Wahrscheinlichkeit angibt, dass dieses Wort in einer Spam-Mail enthalten ist. Das Wort “Viagra” z. B. dürfte für die meisten Anwender eine hohe Spam-Wahrscheinlichkeit haben, neutrale Begriffe wie “Bestellung” oder “Artikel” hingegen eher eine geringe. Kommt eine neue Nachricht an, analysiert der Filter alle darin enthaltenen Schlüsselwörter und berechnet aus deren einzelnen Spamwahrscheinlichkeiten eine Gesamtwahrscheinlichkeit, anhand derer entschieden wird, ob es sich bei der Mail um Spam oder Nicht-Spam handelt.

Kleines Beispiel zum lernenden Spamfilter

Nehmen wir als einfaches Beispiel eine Mail mit dem Inhalt “Probleme im Bett? Bestellen Sie bei uns Viagra zum günstigen Preis!” an. Wir bezeichnen das jetzt einfach mal als Spam und teilen das dem Programm mit. Der Filter lernt daraus, dass es sich dieser Nachricht um eine unerwünschte Junk-Mail handelt und bewertet die Begriffe entsprechend negativ. Wir beschränken uns dabei auf die wesentlichen Wörter, so wie es auch der Filter tut.

Probleme: -1
Bett: -1
Bestellen: -1
Viagra: -1
günstigen: -1
Preis: -1

Käme noch mal eine Mail mit diesen Begriffen, würde sie also eine Bewertung von -5 erhalten, was zu einer eindeutigen Spamklassifizierung führen würden. Die nächste E-Mail von einem Kunden: “Ich habe Probleme mit dem bestellten Artikel. Habt Ihr eine Alternative zum günstigen Preis?” Dieser Text enthält einige Schlüsselwörter, die für den Filter seit der vorigen Spam-Mail negativ besetzt sind. Deshalb wird er diese Nachricht als Spam klassifizieren. Wird dieser Fehler nun aber manuell korrigiert, lernt der Filter wieder dazu, indem er eine neue Bewertung vornimmt:

Probleme: -1+1=0
Bett: -1
Bestellen: -1+1=0
Viagra: -1
günstigen: -1+1=0
Preis: -1+1=0
Artikel: +1
Alternative:+1

Beim nächsten Mal würde dieselbe E-Mail also anders bewertet werden:

Probleme: 0
bestellten: 0
günstigen 0
Preis: 0
Artikel: +1
Alternative: +1

Das ergibt eine Gesamtbewertung von +2 und somit eine Klassifizierung als Nicht-Spam. Nach zwei Mails hat der Filter also schon gelernt, dass es Wörter gibt, die für Spam sprechen (Bett, Viagra), dass manche Wörter gegen Spam sprechen (Artikel, Alternative) und dass manche Wörter indifferent sind (Probleme, Bestellen, Preis). Mit jeder weiteren Mail werden diese Bewertungen immer weiter verfeinert und so erreichen selbstlernende Filter sehr schnell eine hohe Zuverlässigkeit. Vor allem aber passen sie sich automatisch individuell an die Profile ihrer Anwender an. Denn wenn man z. B. eine Onlineapotheke betreibt, wird man E-Mails zum Thema Viagra ja vielleicht ganz gerne im Posteingang sehen. (Das Beispiel in diesem Abschnitt ist bewusst stark vereinfachend gewählt, um das Funktionsprinzip zu veranschaulichen. Details zur Funktionsweise der lernender Filter erfährt man im Wikipedia-Artikel zum Thema “Bayessches Filter”.)

Tipps für schnelle und gute Ergebnisse des Spamfilters

Das Training des Spamfilters erfolgt ganz automatisch. Wann immer ein Anwender eine falsche Klassifizierung korrigiert, dann registriert GREYHOUND dies und lernt daraus, indem es seine Wortbewertungen entsprechend anpasst.

Die Lernkurve des Spamfilters

Der Spamfilter kann prinzipbedingt nicht von Anfang an gute Erkennungsleistungen bieten. Zunächst werden also regelmäßig Fehlklassifizierungen in beide Richtungen (“False negatives” und “False positives”) vorkommen. Dabei steigt die Erkennungsrate aber schon nach wenigen Dutzend Mails deutlich spürbar an. Nach einigen hundert Mails sollte der Filter schon recht zufrieden stellend arbeiten. Nach ca. 1000 Mails wird meist eine Erkennungsrate von über 95% erreicht, was in der Praxis effizientes Arbeiten zulässt. Trainiert man den Spamfilter konsequent weiter, lässt sich diese Quote in kleinen Schritten noch weiter steigern.

Wann lernt der Spamfilter dazu?

Der Filter reagiert auf jede manuelle Korrektur seiner Spam-Klassifizierungen. Aber auch andere Aktionen des Anwenders können dazu führen, dass der Spamfilter hinzulernt und seine Bewertungen anpasst. In folgenden Fällen wird eine Analyse und Neubewertung auf Grund einer Nachricht durchgeführt:

  • Wenn eine nicht als solche erkannte Spam-Mail (“False negative”) manuell als Spam klassifiziert wird.
  • Wenn eine als Spam klassifizierte reguläre Mail (“False positive”) manuell als Nicht-Spam gekennzeichnet.
  • Wenn eine Nachricht ein Goodword enthält, wird sie als Nicht-Spam gelernt, wenn sie ein Badword enthält, wird sie als Spam gelernt.
  • Wenn eine Nachricht erstellt bzw. versendet wird, interpretiert der Spamfilter diese grundsätzlich als Nicht-Spam und verwendet deren Inhalten, um seine Wortlisten zu optimieren.
  • Wann immer eine eingegangene Nachricht den Status „erledigt“ erhält (und nicht als Spam gekennzeichnet ist), wird sie ebenfalls als Nicht-Spam interpretiert und der Spamfilter mit ihren Inhalten optimiert.
  • Wann immer eine Nachricht von einem Anwender bearbeitet (also z. B. beantwortet) wird, geht GREYHOUND davon aus, dass es sich dabei nicht um Spam handeln kann (wer antwortet schon auf Spam?) und nutzt den Inhalt dieser Nachricht als Nicht-Spam-Beispiel für seinen Filter.

Der Spamfilter lernt also nicht nur, was Spam ist, sondern auch, was Nicht-Spam ist. Dazu nutzt er Nachrichten, bei denen es sich nicht um Spam handeln kann (weil sie vom Anwender bearbeitet oder sogar selbst erstellt werden). So kann er seine Erkennungsleistung auch in Bezug auf Nicht-Spam individuell optimieren und die problematischen “False positives” noch zuverlässiger vermeiden.