verlinkt - wortzwei

Transcription

verlinkt - wortzwei
Fachhochschule Wedel
Fachbereich Medieninformatik
Bachelor-Thesis
Erkennung von automatisierten Zugriffen auf
Webseiten unter Verwendung von
Selbstorganisierenden Karten
Eine Machbarkeitsstudie
eingereicht von:
John Freytag
Farnstieg 11
22559 Hamburg
Tel: (040) 361 660 87
Matrikelnummer: Minf 8164
eingereicht am:
25.02.2010
Referent:
Betreuer:
Prof. Dr. Ulrich Hoffmann
Fachhochschule Wedel
Feldstraße 143
22880 Wedel
Tel: (04103) 8048-41
Joris Wiebe
wortzwei GmbH
Friedensallee 9
22765 Hamburg
Tel: (040) 679 586 07
Inhaltsverzeichnis
Abbildungsverzeichnis
III
1 Einleitung
1.1 Hintergrund und Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Theoretische Grundlagen
2.1 Der SOM-Algorithmus . . . . . . . . . . . . . . . . . . .
2.1.1 Formale Definition . . . . . . . . . . . . . . . . .
2.1.2 Begriffserklärungen . . . . . . . . . . . . . . . . .
2.1.3 Topologischer Aufbau . . . . . . . . . . . . . . .
2.1.4 Training . . . . . . . . . . . . . . . . . . . . . . .
2.1.5 Alternativer Algorithmus: Die Batch-Map . . . .
2.2 Aufbereitung abstrakter Daten zu Trainings-Vektoren .
2.2.1 Bildung des Alphabets . . . . . . . . . . . . . . .
2.2.2 Semantische Aggregation . . . . . . . . . . . . .
2.3 Verfahren zur Optimierung . . . . . . . . . . . . . . . .
2.3.1 Dimensionsreduzierung durch Random Mapping
2.3.2 Abgekürzte BMU -Suche . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Erkennung von automatisierten Zugriffen anhand von Zugriffsprotokollen
3.1 Apache-Webserver-Zugriffsprotokolle . . . . . . . . . . . . . . . . . . .
3.2 Definition von Bots . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Kriterien zur Erkennung . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Klickpfad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Fehlendes Laden zusätzlicher Inhalte . . . . . . . . . . . . . . .
3.3.3 Zu hohe oder sonst unübliche Zugriffsgeschwindigkeit . . . . . .
3.3.4 Unübliche Browserkennung oder Referer-Angabe . . . . . . . .
3.4 Verwendung der Kriterien in Selbstorganisierenden Karten . . . . . . .
3.4.1 Klickpfad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2 Fehlendes Laden zusätzlicher Inhalte . . . . . . . . . . . . . . .
3.4.3 Zu hohe oder sonst unübliche Zugriffs-Geschwindigkeit . . . . .
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
4.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Zielgruppendefinition . . . . . . . . . . . . . . . . .
4.1.2 Wahl der Programmiersprache . . . . . . . . . . .
4.1.3 Technische Rahmenbedingungen . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
4
6
7
12
13
13
15
16
17
18
.
.
.
.
.
.
.
.
.
.
.
21
21
22
22
23
23
24
24
25
25
26
26
.
.
.
.
29
29
29
29
30
I
Inhaltsverzeichnis
4.2
4.3
Anforderungen . . . . . . . . . . . . .
4.2.1 Grundsätzliche Funktion . . . .
4.2.2 Präzision . . . . . . . . . . . .
4.2.3 Laufzeit-Einschränkungen . . .
4.2.4 Aufbereitung der Ausgabedaten
4.2.5 Erweiterbarkeit . . . . . . . . .
4.2.6 Benutzerschnittstelle . . . . . .
Komponenten . . . . . . . . . . . . . .
4.3.1 Architektur . . . . . . . . . . .
4.3.2 Zugriffsprotokoll-Analyse . . .
4.3.3 SOM-Algorithmus . . . . . . .
4.3.4 Visualisierung . . . . . . . . . .
4.3.5 Evaluierung . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Analyse und Bewertung der Ergebnisse
5.1 Beschreibung der Testumgebung . . . . . . .
5.1.1 Plattform . . . . . . . . . . . . . . . .
5.1.2 Quelle der Testdaten . . . . . . . . . .
5.2 Präsentation ausgewählter Experimente . . .
5.2.1 Einfache semantische Aggregation . .
5.2.2 Gemittelte semantische Aggregation .
5.2.3 Semantische Aggregation mit zeitlicher
5.2.4 Zeitsensitive semantische Aggregation
6 Zusammenfassung und Ausblick
6.1 Zusammenfassung . . . . . . . . . . . .
6.2 Bewertung der Ergebnisse . . . . . . . .
6.2.1 Präzision . . . . . . . . . . . . .
6.2.2 Laufzeit . . . . . . . . . . . . . .
6.3 Abschließende Bewertung des Verfahrens
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
Unterscheidung
. . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30
30
30
31
31
31
32
32
32
33
41
46
50
.
.
.
.
.
.
.
.
55
55
55
55
56
57
58
59
61
.
.
.
.
.
65
65
65
65
66
67
A Beispiel eines automatisierten Benutzers
69
B Beispiel eines menschlichen Benutzers
71
Literaturverzeichnis
73
Eidesstattliche Erklärung
75
II
Abbildungsverzeichnis
2.1
2.2
2.3
2.4
2.5
2.6
Topologie einer SOM . . . . . . . . . . . . . . . . . . . . . . . . .
Beispiele der Abstandsfunktion bei steigendem t . . . . . . . . . .
Lernverhalten einer SOM zur Abbildung von Farbinformationen in
denen Iterationsschritten . . . . . . . . . . . . . . . . . . . . . . . .
Skalarproduktsverteilung von Zufallsvektoren [Kas98] . . . . . . .
Beispiel des Quick-Reaction-Algorithmus bei einer 10x10-SOM . .
Suche im Radius um zuvor gefundener BMU [Koh01, Seite 171] . .
. . . . . .
. . . . . .
verschie. . . . . .
. . . . . .
. . . . . .
. . . . . .
10
17
19
19
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Grundsätzliche Architektur der Implementierung . . . . . . . . .
Klassendiagramm der Zugriffsprotokoll-Analyse . . . . . . . . . .
Klassendiagramm des SOM-Algorithmus-Moduls . . . . . . . . .
Klassendiagramm der Visualisierungs- und Evaluierungs-Module
Beispiele einer Rasterbild-Visualisierung . . . . . . . . . . . . . .
Interaktive Darstellung einer kalibrierten SOM . . . . . . . . . .
Einfärbung von Knoten, auf die Kontrolldaten abgebildet werden
.
.
.
.
.
.
.
33
35
42
46
47
48
49
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
10
III
Abbildungsverzeichnis
IV
1 Einleitung
Dieses Kapitel gibt eine kurze Einführung in das Thema der vorliegenden Arbeit. Darüber
hinaus wird die konkrete Zielsetzung festgelegt und die Herangehensweise in dieser Arbeit
allgemein beschrieben. Eine nähere Erläuterung der hier verwendeten Begriffe und beschriebenen Verfahren findet sich in den jeweiligen Kapiteln.
Diese Arbeit beschäftigt sich mit der Frage, ob Verfahren auf Basis des selbstlernenden
Algorithmus Self Organizing Map von Teuvo Kohonen [Koh01, Seite XI] dazu geeignet sind,
automatisierte Zugriffe auf Webseiten zu erkennen. Der Schwerpunkt der Arbeit liegt dabei
auf der kritischen Analyse und Bewertung einer solchen Vorgehensweise.
Im Rahmen dieser Arbeit ist eine Software entstanden, die durch Anwendung von selbstlernenden Systemen in der Lage ist, Zugriffsmuster auf Webseiten zu beurteilen. Hierfür werden
Self Organizing Maps auf Basis von Zugriffprotokollen eines Web-Servers trainiert, das normale Verhalten von Benutzern abzubilden, so dass davon abweichende Verhaltensmuster
erkennbar sind. Die Ergebnisse der Berechnungen dieser Software sind daher Grundlage für
die Beurteilung der verwendeten Verfahren.
1.1 Hintergrund und Motivation
Aktuelle Systeme zur Filterung von automatisierten Zugriffen verwenden häufig eine regelbasierte Erkennung von abweichendem, nicht menschlichem Zugriffsverhalten. Dieser Ansatz
hat mehrere Schwächen, insbesondere da er nur in der Lage ist, bekannte Verhaltensweisen
zu erkennen, und bei Kenntnis der Regeln leicht umgangen werden kann.
Statt also zu definieren, welches Zugriffsverhalten abweichend ist, soll hier versucht werden, mittels eines selbstlernenden Verfahrens zu erkennen, welche Verhaltensweisen normal
sind. Weicht ein Zugriffsmuster zu stark hiervon ab, so wird es sich sehr wahrscheinlich um
einen automatisierten Zugriff handeln. Als Basis für diese Analyse sollen in der BeispielImplementation der Arbeit reelle Zugriffslogs des Apache-Webservers verwendet werden.
Die Wahl des selbstlernenden Verfahrens fällt dabei auf die oben genannten Selbstorganisierende Karten (englisch Self Organizing Map, kurz SOM, nach dem Erfinder Teuvo Kohonen
auch oft Kohonennetz genannt). Dieser Algorithmus ermöglicht es, hochdimensionale Daten
1
1 Einleitung
zu Darstellungs- oder Auswertungszwecken auf niederdimensionale Ausgaberäume abzubilden. Häufig wird hierfür eine zweidimensionale Abbildung gewählt, welche eine einfache und
intuitiv erfassbare Darstellung der abzubildenden Daten ermöglicht. Damit sind Selbstorganisierende Karten kein klassisches Klassifizierungsverfahren, erlauben aber eine vereinfachte
Auswertung der Ergebnisse.
Der Algorithmus ist zudem in der Lage, unüberwacht zu lernen, benötigt also im Gegensatz zu vielen anderen Algorithmen auf Basis von künstlichen neuronalen Netzwerken keine
speziellen Zieldaten, an deren Abbildung sich angenähert wird. Solche Daten bereitzustellen
wäre bei dieser Problemstellung unmöglich, da man ein Zugriffsprotokoll dafür um Einträge
von automatisierten Zugriffen bereinigen müsste - diese zu erkennen ist ja aber gerade das
Ziel.
1.2 Zielsetzung
Es gilt zu beurteilen, ob dieses Verfahren dazu geeignet ist, solche Informationen zu ermitteln.
Hierbei spielen insbesondere Präzision und Zuverlässigkeit eine Rolle, sowie die Laufzeit des
Algorithmus: Für eine Verwendung zur Abwehr von automatisierten Zugriffen muss das
Verfahren diese nach Möglichkeit in Echtzeit erkennen. Das heißt, dass die Bewertung von
Zugriffen schnell genug geschehen muss, um die eigentliche Arbeit eines Web-Servers (die
Auslieferung von Inhalten) nicht zu beeinträchtigen, so dass automatisierte Zugriffe nach
Möglichkeit sofort nach ihrem Auftreten erkannt werden können.
Es gilt daher, die Zugriffprotokolle derart aufzubereiten, dass sie von dem Algorithmus sinnvoll verarbeitet werden können. Dabei sollen sich einander ähnliche Zugriffsmuster (Zugriffsabfolgen des jeweils gleichen Aufrufers der Webseite) auf der entstehenden Karte örtlich nah
beieinander abbilden. Eine einmal derart trainierte SOM kann dann zu einem neuen, gegebenen Zugriffsmuster die zugehörigen im Ausgangsraum abgebildeten Orte ermitteln. Folgen
diese nicht dem Abbildungsverhalten natürlicher Zugriffe, so kann davon ausgegangen werden, dass es sich bei diesem Zugriffsmuster um einen automatisierten Zugriff handelt.
Im Rahmen dieser Arbeit wurden daher mehrere Verfahren zur Abbildung von Zugriffsprotokollen durch Selbstorganisierende Karten und deren Auswertung erarbeitet und bewertet.
2
2 Theoretische Grundlagen
In diesem Kapitel sind alle im Rahmen der Arbeit verwendeten Algorithmen und Verfahren
in Bezug auf Self-Organizing Maps (im Weiteren kurz SOM ) erläutert. Auf eine grundlegende
Erklärung des Self-Organizing Map-Algorithmus folgt eine Beschreibung, wie aus beliebigen,
nicht-numerischen Daten Trainings-Vektoren erstellt werden können. Abschließend werden
einige in dieser Arbeit verwendete Verfahren zur Geschwindigkeitsoptimierung des SOM Algorithmus betrachtet, welche dabei helfen, die bei großen Datenmengen enorme Laufzeit
des Trainings einer Self-Organizing Map zu verkürzen, ohne dabei signifikant an Präzision
zu verlieren.
2.1 Der SOM-Algorithmus
Das Verfahren der so genannten Self Organizing Map (oder auch Self-Organizing Feature
Map) wurde 1981 erstmals von Professor Teuvo Kohonen erforscht [Koh01, Seite XI]. Inspiriert durch das Lernverhalten des menschlichen Gehirns, handelt es sich hierbei um einen
Algorithmus aus der Klasse der künstlichen neuronalen Netze. Er ermöglicht es, Daten aus
einem hochdimensionalen Eingaberaum in einen niederdimensionalen Ausgaberaum (häufig
bidimensional) abzubilden. Dabei werden ähnliche Eingabewerte örtlich nah beieinander abgebildet, so dass automatisch eine Bündelung inhaltlich verwandter Daten erfolgt. Zudem ist
das Verfahren in der Lage, unüberwacht zu lernen, benötigt also im Gegensatz zu vielen anderen Algorithmen auf Basis von künstlichen neuronalen Netzen keine speziellen Zieldaten,
an deren Abbildung sich angenähert wird [Koh01, Seiten 105ff].
Als einfaches Beispiel für die Erklärung des Verfahrens wird im Folgenden die Abbildung
von Farben, repräsentiert durch dreidimensionale Vektoren mit den Komponenten Rot, Grün
und Blau, auf den zweidimensionalen Raum einer Rastergrafik verwendet (siehe Abbildung
2.3).
3
2 Theoretische Grundlagen
2.1.1 Formale Definition
Eine Self Organizing Map ist ein 5-Tupel, bestehend aus einem Eingaberaum E, einem
Ausgaberaum A mit den Ausdehnungen l1 . . . ln , einer Menge Knoten K, attribuiert1 mit
Referenzvektoren M sowie einer endlichen Menge Trainingsvektoren X:
SOM = (E, A, K, M, X)
(2.1)
mit
E = ℜm
A ⊆ ℜn
K = {k~i ∈ A | i ≤ l1 · l2 · . . . · ln }
M
= {m
~ i ∈ E | i ≤ l1 · l2 · . . . · ln }
X = {x~j ∈ E}
Die hier verwendeten Begriffe werden im folgenden Abschnitt näher erläutert.
2.1.2 Begriffserklärungen
Für die Erklärung des SOM-Algorithmus werden gleichermaßen neue Begriffe eingeführt und
bekannte Begriffe in einer von ihrer natürlichsprachigen Verwendung verschiedenen Bedeutung verwendet. Um das Verständnis des Algorithmus zu vereinfachen, sind diese Begriffe
im Folgenden erklärt.
Neuronen oder Knoten
Die Neuronen (im Weiteren als Knoten bezeichnet) einer SOM
bilden eine vereinfachte Repräsentation des Ausgaberaums (siehe unten): Sie sind hierbei in
einem rechteckigen oder hexagonalen Gitter angeordnet und bilden so diskrete, quantisierte
Koordinaten des Ausgaberaums ab. Jeder dieser Knoten ist mit jeweils einem so genannten
Referenzvektor verknüpft.
Attribuierung
Wird ein Objekt mit zusätzlichen Eigenschaften versehen, so dass diese auf
einfache Weise über dieses Objekt abrufbar sind, so spricht man von Attribuierung. Im Rah1
4
Das Wort „attribuieren“ (mit Attributen versehen) wird insbesondere in der Informatik häufig als Anglizismus „attributieren“ geschrieben. Die korrekte deutsche Schreibweise ist allerdings „attribuieren“ [dud06].
2.1 Der SOM-Algorithmus
men des SOM-Algorithmus ist hiermit in der Regel das Attribuieren von Knoten mit auf
diese abgebildeten Trainingsdaten gemeint.
Referenzvektor
Ein Vektor mit gleicher Dimension wie Elemente des Eingaberaums. Alle
Knoten sind mit einem Referenzvektor attribuiert. Die Referenzvektoren sind hierbei analog
zu den Trainingsvektoren (das heißt sie haben den gleichen Aufbau, siehe Abschnitt 2.1.2:
Trainingsdaten) und werden durch den SOM-Algorithmus iterativ an diese angenähert. Im
verwendeten Beispiel ist der Eingaberaum der Raum aller RGB-Farben. Jeder Knoten hat
hier somit eine Farbinformation. Dies ermöglicht eine sehr einfache Visualisierung der SOM
als Rastergrafik, in der jeder Knoten einem Pixel entspricht (siehe Abbildung 2.3).
Eingaberaum Hochdimensionaler Raum der Eingabedaten. Zu diesem Raum gehören alle
Daten, die mit Hilfe der SOM abgebildet werden sollen. Im verwendeten Beispiel ist dies der
dreidimensionale Raum aller RGB-Farben mit den Komponenten Rot, Grün und Blau.
Ausgaberaum Niederdimensionaler Raum, auf welchen Eingabedaten projeziert werden.
Es gilt Dim(Eingaberaum) > Dim(Ausgaberaum). Die Knoten der SOM sind in diesem
Raum in einem Gitter angeordnet (siehe Abbildung 2.1) und bilden so die Koordinaten
der entstehenden Karte ab. Im verwendeten Beispiel ist dies der 2D-Raum, welcher sich
besonders einfach visualisieren lässt.
Trainingsdaten Diskrete Teilmenge aller Daten des Eingaberaums, welche zum initialen
Training der SOM verwendet werden. Mit Hilfe dieser Daten lernt der SOM-Algorithmus,
Elemente des Eingaberaums auf Knoten im Ausgaberaum abzubilden (siehe Abschnitt 2.1.4:
Training). Ein einzelnes Element der Trainingsdaten wird als Trainingselement bezeichnet,
eine entsprechende numerische Abbildung dessen als Trainingsvektor. Sind die Trainingsdaten bereits numerische Informationen, so bezeichnen die Begriffe Trainingselement und
Trainingsvektor das Gleiche. Handelt es sich aber im Gegensatz dazu bei den Trainingsdaten um nicht-numerische Daten, so meint Trainingselement ein Element dieser Originaldaten
und Trainingsvektor eine numerische Abbildung dieses Elements (siehe auch Abschnitt 2.2.1:
Bildung des Alphabets).
Training Der initialen Prozess, die Referenzvektoren der Knoten einer SOM iterativ an
die Traingsdaten anzugleichen, um eine nicht-lineare Projektion des Eingaberaums zu erreichen, wird Training genannt. Dabei werden einander ähnliche Trainingselemente in der SOM
räumlich nah beieinander abgebildet, so dass die Topologie (das heißt die Nachbarschafts-
5
2 Theoretische Grundlagen
beziehungen) des Eingaberaums weitestgehend erhalten bleibt und eine implizite Bündelung
der Daten entsteht (siehe Abschnitt 2.1.4: Training).
Best Matching Unit
Unter der Best Matching Unit (kurz BMU ) wird der Knoten verstan-
den, welcher in einem konkreten Trainingsschritt dem ausgewählten Trainingselement am
ähnlichsten ist (siehe Abschnitt 2.1.4.3: Bestimmung der Best Matching Unit). In der Regel
ist damit gemeint, dass der Referenzvektor der BMU die kleinste Euklidische Distanz (siehe
Gleichung 2.5) zum Trainingselement hat.
2.1.3 Topologischer Aufbau
Um das Verfahren des SOM-Algorithmus verstehen zu können, ist zunächst ein Verständnis
des topologischen Aufbaus einer Self Organizing Map nötig. Daher sollen hier noch vor der
Beschreibung des eigentlichen Algorithmus die einzelnen Elemente einer SOM und deren
Zusammenspiel erläutert werden.
}
Zweidimensionale (hier 8x8)
Struktur von Knoten, jeweils
mit Referenzvektor der
Dimension N attribuiert.
Alle Knoten sind mit allen
Eingangs-Daten verbunden
(siehe Pfeile), nicht aber
untereinander.
Liste von Eingangsvektoren der Dimension N
Abbildung 2.1: Topologie einer SOM
Eine Self Organizing Map besteht aus einem rechteckigen oder hexagonalen Gitter von Neuronen (vereinfacht Knoten genannt) im Ausgaberaum. Auch wenn das SOM -Verfahren aus
dem Gebiet der künstlichen neuronalen Netze kommt, gibt es nur wenig Gemeinsamkeiten
mit anderen Verfahren dieses Gebiets. Denn hier sind die Knoten untereinander nicht verbunden; außer ihrer räumlichen Anordnung gibt es keinerlei logischen Zusammenhang zwischen
einzelnen Knoten. Stattdessen ist jeder einzelne Knoten ki mit allen Trainings-Elementen
des Eingaberaums verknüpft (siehe Abbildung 2.1) und ist mit einem Referenzvektor mi
attribuiert, mit welchem er während des Lernprozesses verglichen wird.
6
2.1 Der SOM-Algorithmus
2.1.4 Training
Nachdem die grundlegende Struktur einer SOM dargelegt wurde, wird im Folgenden das
Training der SOM beschrieben. Hierzu werden die mit den Knoten attribuierten Referenzvektoren iterativ an die Trainingsdaten angenähert, wobei einander ähnliche Werte örtlich
nahe beieinander abgebildet werden. Generell lässt sich das Training in folgende Schritte
unterteilen:
1. Initialisieren der Referenzvektoren
2. Wiederhole solange der Algorithmus nicht terminiert (siehe Abschnitt 2.1.4.5: Konvergenz
der SOM):
a) Wähle einen Trainingsvektor aus der Liste der Trainingselemente
b) Finde die Best Matching Unit (BMU) zum gewählten Trainingsvektor
c) Nähere die Referenzvektoren im Radius r um die BMU anhand der Abstandsfunktion h an Trainingsvektor an
2.1.4.1 Initialisieren der Referenzvektoren
Damit der Trainings-Algorithmus sinnvoll arbeiten kann, müssen die Referenzvektoren zunächst im Wertebereich aller Trainingsvektoren x~i initialisiert werden. Konkret bedeutet
dies, dass alle Elemente eines Referenzvektors zwischen den Werten zmin und zmax liegen
müssen, mit
zmin = min{xi,k }
(2.2)
zmax = max{xi,k }
(2.3)
i,k
i,k
wobei xi,k jeweils das k-te Element des i-ten Trainingsvektor ist. Es reicht, die Elemente der
Referenzvektoren mit Zufallszahlen innerhalb dieses Wertebereiches zu belegen, denn für das
Endergebnis spielen die initialen Werte der Karte keine Rolle. Es wurde allerdings gezeigt
[Koh01, Seite 142], dass das Konvergieren der SOM wesentlich beschleunigt werden kann,
wenn die Referenzvektoren initial in einer beliebigen Ordnung liegen. Hierzu wurden mehrere
Verfahren zur linearen Initialisierung entwickelt: Beispielsweise schlägt Kohonen selbst eine
lineare Interpolation auf Basis der Eigenvektoren der Autokorrelationsmatrix der Trainingsdaten vor [Koh01, Seiten 142ff] und in [MCSC02] wird eine Interpolation von signifikaten
Trainingselementen vorgeschlagen. Diese Verfahren übersteigen in ihrer Komplexität allerdings den Rahmen dieser Arbeit, weshalb sie hier nur der Vollständigkeit halber erwähnt
sind und nicht weiter betrachtet werden.
7
2 Theoretische Grundlagen
Statt dieser komplexen Verfahren hat sich in der Praxis ein wesentlich einfacheres bewährt
[KKL+ 01, Seiten 14ff]: Das Trainieren einer sehr kleinen SOM (beispielsweise 4 x 4 Knoten)
benötigt nur einen Bruchteil der Zeit, die für die Berechnung größerer Karten nötig ist. Die
dadurch entstehende Abbildung besitzt nicht die nötige Präzision, um als Bewertungsgrundlage für diese Arbeit zu dienen, kann aber mittels einfacher linearer Interpolation auf die
gewünschte Größe skaliert werden und bietet so eine fundierte Grundlage für die Initialwerte
der tatsächlich zu trainierenden Karte.
2.1.4.2 Wahl des Trainingselements
Es wird angenommen, dass es sich bei den Trainingselementen um eine bekannte, endliche
Liste aus Vektoren handelt, aus welcher für jeden Trainingsschritt ein Element entnommen
wird. Zu diesem wird im Folgeschritt die so genannte Best Matching Unit gesucht, um alle
Referenzvektoren in einem Radius um die BMU herum an das gewählte Trainingselement
anzunähern (siehe unten).
Auch wenn es mathematisch präziser wäre, dieses Element zufällig zu wählen, hat eine zyklische Wahl (das heißt iterativ vom ersten Element der Liste bis zum letzten; dann wieder von
vorne) praktisch keinen Nachteil [Koh01, Seite 160]. Da diese Auswahl zudem dem einfachen
Iterieren über die Liste entspricht und somit leichter zu implementieren ist, wird sie hier
bevorzugt.
2.1.4.3 Bestimmung der Best Matching Unit
Ist ein Trainingselement ausgewählt, so wird die zugehörige Best Matching Unit gesucht.
Umgangssprachlich formuliert, ist dies der Knoten, dessen Referenzvektor zum ausgewählten
Trainingsvektor am ähnlichsten ist.
Mathematisch lässt sich dieser Sachverhalt wie folgt formulieren: Zu einem Trainingsvektor xj der Knoten kc mit dem Referenzvektor mc gesucht wird, welcher zu xj die kleinste
Euklidische Distanz hat:
kx~j − m
~ c k = min {kx~j − m
~ i k}
i∈[0,n]
(2.4)
wobei n die Zahl aller Knoten ist und die Euklidische Distanz definiert ist als
v
u n
uX
k~
p − ~qk = t (pi − qi )2
i=1
8
(2.5)
2.1 Der SOM-Algorithmus
2.1.4.4 Annäherung der Referenzvektoren
Nähert man die Referenzvektoren aller Knoten, welche im Knotengitter der SOM örtlich
nah zur BMU des ausgewählten Trainingselements sind, an dieses an, so erreicht man einen
lokalen Glättungseffekt. Dies bedeutet, dass diese Referenzvektoren einander ähnlicher werden (also die paarweise Euklidische Distanz geringer wird). Bei fortlaufendem Training führt
die wiederholte lokale Glättung der Knoten zu einer globalen Ordnung in der SOM : Einander ähnliche Referenzvektoren sind örtlich nah beieinander, stark verschiedene werden
weiter voneinander entfernt auf der Karte angeordnet. Es wird also zunehmend eine „nichtlineare Projektion“ des durch die Trainingsdaten definierten Eingaberaums auf den durch
die Knoten der SOM definierten Ausgaberaum erreicht [Koh01, Seite 110].
Für das Training der SOM bedeutet dies, dass alle Referenzvektoren m
~ i von Knoten innerhalb eines Radius r um die gefundene BMU mit dem Referenzvektor m
~ c gemäß einer
Abstandsfunktion h(t) an den Trainingsvektor angenähert werden:
m
~ i (t + 1) = m
~ i (t) + hci (t)[~x(t) − m
~ i (t)]
(2.6)
wobei t = {0, 1, 2, ..} die diskrete Zeitkoordinate ist, welche den aktuellen Iterationsschritt
des Trainings angibt. Die Abstandsfunktion hci (t) für den Referenzvektor m
~ c einer BMU
und den Referenzvektor m
~ i eines anderen Knotens lässt sich dabei definieren als
hci (t) =



 α(t)



0
wenn km
~c − m
~ i k ≤ r(t)
(2.7)
sonst
Hierbei ist α(t) der so genannte Lernratenfaktor mit 0 < α(t) < 1, welcher den Einfluss des
Trainingsvektors auf die Referenzvektoren skaliert. Der Initialwert dieses Faktors liegt in der
Regel nahe bei 1, um dann in Abhängigkeit zu t monoton zu fallen [Koh01, Seite 111]:
α(t) =
A
B+t
(2.8)
A und B sind hierbei entsprechend gewählte Konstanten, mit A ≤ B [Koh01, Seite 145]. Allgemein gilt: Je geringer der Lernraten-Faktor, insbesondere in den ersten Iterationen, desto
glatter die Karte. Wichtig ist hierbei, dass sowohl der Radius r(t) als auch der Lernratenfaktor α(t) monoton in Abhängigkeit zu t fallen, so dass lim hci (t) = 0 gilt und das Training
t→∞
konvergieren kann (siehe Abbildung 2.2 und Abschnitt 2.1.4.5: Konvergenz der SOM).
9
2 Theoretische Grundlagen
r
BMU
(a)
BMU
r
(b)
Abbildung 2.2: Beispiele der Abstandsfunktion bei steigendem t
Eine alternative Abstandsfunktion, bei der weiter von der BMU entfernte Knoten weniger
stark verändert werden, ist die Gaußsche Glockenkurve:
km
~c − m
~ i k2
hci (t) = α(t) · exp −
2r 2 (t)
!
(2.9)
Die in Rahmen dieser Arbeit durchgeführten Experimente haben allerdings gezeigt, dass
diese Abstandsfunktion in der Praxis nur zu marginalen Änderungen gegenüber der einfacheren Variante (Gleichung 2.7) führt, solange die SOM eine Größe von einigen hundert
Knoten nicht übersteigt (vergleiche hierzu auch [Koh01, Seite 111]). Da die Berechnung der
Gaußschen Glockenkurve zudem offensichtlich rechenaufwendiger als eine einfache Abstandsbestimmung ist, wurde Gleichung 2.7 in dieser Arbeit als Abstandsfunktion bevorzugt.
(a) Initiale Zufallswerte
(b) Nach 20 Interationen
(c) Nach 60 Iterationen
(d) Nach 100 Iterationen
(e) Nach 200 Iterationen
(f) Nach 400 Iterationen
Abbildung 2.3: Lernverhalten einer SOM zur Abbildung von Farbinformationen in verschiedenen Iterationsschritten
10
2.1 Der SOM-Algorithmus
Beim verwendeten Beispiel ist die Menge der Trainingsvektoren X eine dreidimensionale
(RGB-)Repräsentation der Farben mit Zahlenwerten zwischen 0 (minimale Intensität) und
255 (maximale Intensität):
x = ([0, 0, 0]T (Schwarz), [255, 255, 255]T (Weiss), [255, 0, 0]T (Rot), [0, 255, 0]T (Grün), . . .)T
Dadurch lassen sich die Neuronen sehr einfach als Rasterbild visualisieren:
Jeder Referenzvektor entspricht genau einem Pixel und hat, zu Ganzahlen gerundet, seine
Elemente als RGB-Farbinformation. Der Status der SOM ist in Abbildung 2.3 für verschiedene Iterationsschritte auf diese Art dargestellt. Hier lässt sich einfach erkennen, dass in den
ersten Iterationen sehr große Änderungen vorgenommen werden, um aus den ungeordneten,
zufälligen Initialwerten eine grobe, globale Ordnung zu schaffen. Mit fortlaufender Iterationszahl wird der Einfluss-Radius r(t) der Änderungen und das Ausmaß der Änderungen α(t)
selbst immer kleiner, so dass auch feine Differenzen im Eingangsraum abgebildet werden und
die SOM schließlich zu einer nicht-linearen Projektion dessen konvergiert. Im Ergebnis lässt
sich zudem die implizite Datenbündelung (englisch: Clustering) des SOM-Algorithmus gut
erkennen: Ähnliche Farben sind örtlich nah beieinander. So wurde zum Beispiel die Farbe
Violett zwischen den Farben Blau und Rot abgebildet, da Violett sowohl rote als auch blaue
Komponenten beinhaltet.
2.1.4.5 Konvergenz der SOM
Bei einem Algorithmus, der sich iterativ an einen bestimmten Zustand annähert, spricht
man von Konvergenz, wenn dieser Zustand erreicht wurde [Koh01, Seite 129]. Das Training einer SOM gilt daher als konvergiert, wenn alle Referenzvektoren m
~ i während eines
Iterationsschritts im Vergleich zum vorherigen nicht verändert werden:
∀i, lim km
~ i (t + 1) − m
~ i (t)k = 0
t→∞
(2.10)
Da die Änderungen der Referenzvektoren in späten Iterationen nur minimal sind und somit
nur wenig zur Verbesserung der Qualität der SOM beitragen, kann das Training der SOM
bereits vor der tatsächlichen Konvergenz terminiert werden. Hierfür wird ein Toleranzwert
ǫ > 0 definiert und der Algorithmus terminiert, sobald der durschnittliche Änderungsbetrag
der Referenzvektoren diesen Wert unterschreitet:
ǫ>
Pn
~ i (t
i=0 km
+ 1) − m
~ i (t)k
n
(2.11)
wobei n die Anzahl aller Referenzvektoren ist.
11
2 Theoretische Grundlagen
2.1.4.6 Kalibrierung
Unter Kalibrierung versteht man das Attribuieren der berechneten Karte mit den Trainingsdaten, um bei einer visuellen Darstellung der SOM erkennen zu können, wo diese abgebildet
wurden. Im Falle von RGB-Farbinformationen, wie im verwendeten Beispiel, ist dies nicht
nötig, da die Referenzvektoren selbst leicht als Pixel eines Rasterbildes abzubilden sind.
Sollen allerdings andere Arten von Daten abgebildet werden, insbesondere nicht-numerische
Daten wie natürliche Sprache oder Zeichenketten, so geben die entstandenen Referenzvektoren selbst keinen für Menschen intuitiv lesbaren Aufschluss über die durch sie abgebildeten
Trainingsdaten. Daher ist es sinnvoll, hier noch einmal alle Trainingselemente zu durchlaufen,
jeweils die Best-Matching-Unit zu finden und diesen Knoten mit den zum Trainingselement
gehörenden Originaldaten zu attribuieren. Bei der visuellen Darstellung einer SOM lassen
sich so die zum Training verwendeten Originaldaten sozusagen als Etiketten der Knoten
verwenden, was die Lesbarkeit der Karte stark erhöht.
Siehe Abschnitt 4.3.4.2: Interaktive Visualisierung der kalibrierten Karte für ein Beispiel zur
Verwendung einer solchen Kalibrierung.
2.1.5 Alternativer Algorithmus: Die Batch-Map
Es existiert eine Abwandlung des originalen SOM-Algorithmus, welche keinen LernratenFaktor α(t) benötigt (siehe Abschnitt 2.1.4.4: Annäherung der Referenzvektoren) und daher
stabiler konvergiert [Koh01, Seiten 139ff]. Dieses Verfahren, Batch-Map genannt, verarbeitet
zudem alle Trainingselemente in jeder Iteration gemeinsam (statt sie einzeln zu durchlaufen)
und ist daher bei einer sehr großen Zahl solcher um ungefähr eine Größenordnung effizienter
als der Original-Algorithmus [Koh01, Seite 312]. Der Trainingsprozess des Algorithmus lässt
sich wie folgt beschreiben:
1. Initialisieren der Referenzvektoren
2. Solange das Training der SOM nicht terminiert:
a) Sammle für jeden Knoten ki mit dem Referenzvektor m
~ i eine Liste aller Trainingsvektoren x~i , für welche ki die Best-Matching-Unit ist
b) Setze den Durchschnittswert der Vereinigung aller Trainigsvektor-Listen in der
Nachbarschaft Ni als neuen Referenzvektor m
~i
Für die Bestimmung der Best-Matching-Unit und der Nachbarschaft Ni eines Knotens ki gelten die gleichen Verfahren, wie sie auch beim Original-Algorithmus (siehe Abschnitt 2.1.4:
Training) verwendet werden. Die Batch-Map ist also im Aufbau und Verhalten identisch
zum bisher beschriebenen, originalen Algorithmus; ausschließlich das Training unterscheidet sich. Statt die Differenz der Trainingsvektoren und BMU um α(t) skaliert schrittweise
12
2.2 Aufbereitung abstrakter Daten zu Trainings-Vektoren
einzurechnen, wird das arithmetische Mittel aller im Radius zutreffenden Trainingsvektoren
direkt als neuer Referenzvektor gesetzt. Das daraus resultierende Ergebnis ist zu dem des
Original-Algorithmus gleichwertig [Koh01, Seite 139].
Damit der letzte Schritt dieses Algorithmus gültig ist, darf allerdings keine Nachbarschaftsfunktion verwendet werden, die Referenzvektoren anhand ihrer Entfernung zur BMU gewichtet (wie beispielsweise Gleichung 2.9, die Gaußsche Glockenfunktion). Soll eine solche
verwendet werden, so muss der Algorithmus entsprechend angepasst werden (siehe [Koh01,
Seite 140]).
Da im Rahmen dieser Arbeit eine sehr große Zahl von Trainingsdaten ausgewertet werden
müssen (Apache-Zugriffsprotokoll-Dateien haben in der Regel mehrere zigtausende Zeilen),
wurde für alle Experimente dieser Batch-SOM -Algorithmus verwendet.
2.2 Aufbereitung abstrakter Daten zu Trainings-Vektoren
In seiner Reinform ist der SOM-Algorithmus offensichtlich nur in der Lage, numerische Daten
zu verarbeiten. Zwar ist es möglich, den Algorithmus entsprechend für eine andere Art
von Daten anzupassen (siehe [Koh01, Seiten 205ff] für eine Variante zur Verarbeitung von
Zeichenketten), allerdings würde dies den Algorithmus auf die Verwendung einer bestimmten
Form von Daten beschränken. Zur Verwendung von beliebigen, für den SOM-Algorithmus
abstrakten Daten ist daher einfacher, ein allgemeingültiges Verfahren zum Abbilden dieser
auf numerische Werte zu entwickeln.
Im Folgenden ist das für diese Arbeit verwendete Verfahren beschrieben.
2.2.1 Bildung des Alphabets
Möchte man den SOM-Algorithmus also verwenden, um nicht-numerische Daten abzubilden,
so müssen diese zunächst in ein numerisches (Vektor-)Format übertragen werden. Hierbei
ist es besonders wichtig, dass dieses Format keinerlei ungewünschte semantische Informationen über die Quelldaten abbildet: Im Fall von natürlichsprachigen Wörtern könnte man
beispielsweise auf die Idee kommen, diese mittels einer geeigneten Hash-Funktion 2 in numerische Daten umzurechnen. Dies hätte aber (je nach verwendeter Hash-Funktion) den
Nebeneffekt, dass ähnliche Wörter3 auch zu ähnlichen numerischen Werten führen würden.
2
Hash-Funktionen erzeugen zu einer Datenmenge einen so genannten Fingerabdruck, meist ein skalarer Wert
einer kleineren Zielmenge [Ste07, Seiten 221ff]
13
2 Theoretische Grundlagen
Dies ist für den SOM-Algorithmus entscheidend, da dieser die Wörter auch automatisch
örtlich nah beieinander auf der entstehenden Karte abbilden würde.
Soll diese Information aber nicht transportiert werden, etwa wenn man die Wörter nur anhand ihrer Verwendung abbilden möchte, so müssen die entstandenen Vektoren linear unabhängig sein. Da das Testen auf lineare Unabhängigkeit das Lösen eines komplexen linearen
Gleichungssystems erfordert, ist es hier geeigneter, lineare Unabhängigkeit durch Verwendung von paarweise orthogonale Vektoren zu erreichen [Hon97].
Paarweise orthogonale Vektoren lassen sich einfach erzeugen, indem man jedem eindeutigen
Quelldatum einen Achsenvektor zuweist:
x1 = [1, 0, 0, . . . , 0, 0]T
x2 = [0, 1, 0, . . . , 0, 0]T
...
xn = [0, 0, 0, . . . , 0, 1]T
Wobei n die Anzahl der eindeutigen Quelldaten ist, mehrfache Vorkommen des selben Quelldatums also nur einfach gezählt werden [Hon97]. Im Fall von natürlicher Sprache würde also
beispielsweise immer jeweils ein Wort durch einen Achsenvektoren in dieser Form eindeutig
abgebildet werden:
Baum
[1, 0, 0, 0, 0, 0, . . . , 0]T
hat
[0, 1, 0, 0, 0, 0, . . . , 0]T
Erdbeere
[0, 0, 1, 0, 0, 0, . . . , 0]T
Prozessor
[0, 0, 0, 1, 0, 0, . . . , 0]T
Element
[0, 0, 0, 0, 1, 0, . . . , 0]T
beginnt
[0, 0, 0, 0, 0, 1, . . . , 0]T
...
...
Anhang
[0, 0, 0, 0, 0, 0, . . . , 1]T
Tabelle 2.1: Abbildung von natürlichsprachigen Wörtern durch Achsenvektoren
3
Natürsprachliche Wörter gelten hier als ähnlich, wenn ihre Levenshtein-Distanz gering ist. Die LevenshteinDistanz misst die Anzahl an Zeichenmanipulationen, die zur Überführung eines Wortes in ein anderes nötig
ist [Dam64].
14
2.2 Aufbereitung abstrakter Daten zu Trainings-Vektoren
Diese Sammlung von repräsentativen Vektoren, die eindeutigen Elementen einer für den
SOM-Algorithmus abstrakten Quelldatenmenge zugeordnet sind, wird als Alphabet der SOM
bezeichnet, ein einzelner dieser Vektoren als Wortvektor [Hon97].
Diese Art der Abbildung hat allerdings den Nachteil, dass die Dimension der entstehenden
Vektoren (und damit die verbundenen Berechnungskosten im SOM-Algorithmus) linear mit
der Anzahl der abzubildenden Wörter steigt. Auch lässt sich im Nachhinein kein neues Wort
hinzufügen, da die Anzahl der Wörter bereits vor der Zuweisung bekannt sein muss, um die
Dimension der Vektoren zu bestimmen.
Natürlich existieren weitere Verfahren, um bestimmte Daten für die Verwendung in SOMs
in numerische Formate zu übertragen, mit ihren eigenen Vor- und Nachteilen. Beispielweise wurden für die Klassifizierung von Text-Dokumenten im so genannten WebSOM -Projekt
so genannte Worthistogramme verwendet, welche die relative Auftrittshäufigkeit von Wörtern abbilden, und somit ein numerisches Format ist [LKK04]. Für die Aufbereitung von
Zugrifflogs des Apache-Webservers wird allerdings eine 1:1-Abbildung der Zugriffe benötigt
(siehe auch Abschnitt 4.3.2.2: Alphabetgenerierung), weshalb solche Herangehensweisen nicht
in Frage kommen und im Rahmen dieser Arbeit oben genanntes Verfahren verwendet wird.
2.2.2 Semantische Aggregation
Möchte man den Zusammenhang von Quelldaten abbilden, so muss der semantische Kontext der Daten bei der Bildung von Trainingsvektoren berücksichtigt werden. Am einfachsten lässt sich dies am Beispiel von so genannten Wortkategorie-Karten erklären, welche den
semantischen Zusammenhang von natürlichsprachigen Wörtern abbilden: Inhaltlich zusammenhängende Wörter werden auf dieser Karte örtlich nah beieinander abgebildet [Hon97].
Als Trainingsdaten dienen hierbei eine möglichst große Menge an Fließtexten. Nach eventueller Entfernung von so genannten Stoppwörtern, also Füllworten ohne semantische Bedeutung
wie Artikel, wird hier nach oben genanntem Verfahren jedem auftretendem Wort ein Vektor
zugewiesen. Ausgehend davon werden nun die Fließtexte Wort für Wort durchschritten und
aus Dreiergruppen jeweils ein Kontextmuster nach folgender Form gebildet, welches dann als
konkreter Trainingsvektor für den SOM-Algorithmus verwendet wird:
Nehmen wir an, dass der Fließtext genau 7 verschiedene Wörter enthält, so lässt sich ein
einzelnes Wort durch einen Vektor ~z ∈ ℜ7 abbilden. Wenn nun z~i der Vektor ist, der das
Wort an der Position i im Fließtext repräsentiert, so lassen sich die Trainingsvektoren x~i wie
folgt beschreiben:
x~i = [zi−1
~ T , z~i T , zi+1
~ T ]T ∈ ℜ21
(2.12)
15
2 Theoretische Grundlagen
Das heißt , ein Trainingsvektor ~x ist jeweils die Konkatenation aus den Wortvektoren, die
das Wort vor dem aktuell betrachteten, das aktuell betrachtete und das nachfolgende Wort
abbilden [Koh01, Seite 284]. Dadurch haben Trainingsvektoren, die Vektoren gleicher Wörter
beinhalten, eine geringe Euklidische Distanz, so dass sie auf der SOM nah beieinander abgebildet werden. Dies führt dazu, dass eine Karte entsteht, auf der Wörter, die in ähnlichen
Kontexten verwendet werden (also semantische Gemeinsamkeiten haben), örtliche Ballungen
bilden [Hon97].
Da nur der Mittelteil der Trainingsvektoren die eigentlichen Wörter repräsentiert, ist auch
nur dieser für die Kalibrierung (siehe Abschnitt 2.1.4.6: Kalibrierung) relevant. Daher lassen
sich hierfür neue Vektoren der Form ~x = [⊘, z~i T , ⊘]T bilden, wobei ⊘ bedeutet, dass diese Teile nicht für die Abstandsberechnung beim Suchen der BMU (siehe Abschnitt 2.1.4.3:
Bestimmung der Best Matching Unit) berücksichtigt werden. Die gefundenen Knoten können so mit den eigentlichen Wörtern (statt Wort-Dreiergruppen) attribuiert werden [Koh01,
Seiten 284ff].
2.3 Verfahren zur Optimierung
Der SOM-Algorithmus (unabhängig von der Variante) ist nicht besonders komplex, lediglich
das Bestimmen der Best Matching Unit ist rechenintensiv, insbesondere wenn die Euklidische
Distanz als Kriterium verwendet wird:
Pro Vergleich werden hier mehrere komplexe Operationen durchgeführt, vor allem das nötige
Berechnen der Quadratwurzel treibt die Rechenzeit in die Höhe (vergleiche Gleichung 2.5).
Da die Anzahl der durchzuführenden Vergleiche pro Iteration exponentiell mit der Größe der
Karte und linear mit der Anzahl der Trainingselemente steigt, kann die Berechnung einer
SOM bei einer großen Menge (50000 und aufwärts) mehrere Stunden dauern:
V =w∗h∗N
(2.13)
Wobei V die Gesamtzahl der pro Iteration auszuführenden Vergleiche, w und h die Breite
und Höhe der Karte und N die Anzahl der verwendeten Trainingselemente bezeichnen.
Für die im Rahmen dieser Arbeit durchgeführten Experimente wurde in der Regel eine Karte der Größe 16 x 16 Knoten mit ∼64000 Trainingsvektoren verwendet, was also mehr als
16 Millionen Berechnungen der Euklidischen Distanz pro Iteration entspricht. Bedenkt man
zudem, dass eine SOM in diesen Experimenten durchschnittlich ∼1200 Iterationen bis zur
Terminierung benötigte, so ist leicht ersichtlich, dass eine Optimierung (beziehungsweise Vereinfachung) der BMU -Berechnung enormes Beschleunigungspotential für den Algorithmus
beinhaltet. Im Folgenden sind daher mehrere hierfür geeignete Verfahren vorgestellt.
16
2.3 Verfahren zur Optimierung
Abbildung 2.4: Skalarproduktsverteilung von Zufallsvektoren [Kas98]
2.3.1 Dimensionsreduzierung durch Random Mapping
Die Komplexität des Kernelements der BMU -Bestimmung, der Abstandsvergleich mittels
Euklidischer Distanz, ist offensichtlich proportional zur Dimension der Referenz- und Trainingsvektoren, da sie direkt die Anzahl der nötigen Rechenoperationen bestimmt. Eine Reduzierung der Dimension führt also zu einem erheblichen Gewinn an Recheneffizienz, wenn es
dabei gelingt, die Orthogonalität (beziehungsweise Unabhängigkeit) der Trainingsvektoren
ausreichend zu erhalten. Ausgehend von der Überlegung, dass es in einem gegebenen Vektorraum wesentlich mehr fast paarweise orthogonale Vektoren als tatsächlich orthogonale
Vektoren gibt, liegt der Gedanke nahe, die in Abschnitt 2.2.1: Bildung des Alphabets gebildeten, vollständig linear unabhängigen Achsenvektoren auf nahezu paarweise orthogonale
Zufalls-Vektoren mit geringerer Dimension abzubilden [Kas98].
Dass hierbei eine erhebliche Dimensionsreduzierung möglich ist (zur Erinnerung: die Dimension der Achsenvektoren ist abhängig von der Wortzahl, liegt also beispielweise bei natürlicher Sprache im Tausenderbereich), zeigt Abbildung 2.4, welche das Verhältnis von
paarweisen Skalarprodukten von Zufallsvektoren in Bezug auf deren Dimension d zeigt. Das
Skalarprodukt ist hierbei ein Indikator für die Orthogonalität der Vektoren: Je näher dieses
0 ist, desto orthogonaler und damit voneinander unabhängiger ist ein Vektorenpaar.
Die Abbildung von hochdimensionalen Achsen-Vektoren ~n ∈ ℜN auf niederdimensionale
Zufallsvektoren ~x ∈ ℜd erfolgt dabei durch Multiplikation mit einer Matrix R ∈ ℜd×N :
~x = R~n
(2.14)
17
2 Theoretische Grundlagen
Wobei R eine Matrix mit Zufallswerten ist, deren Spalten auf Einheitsgröße normalisiert
wurden. Das Ergebnis sind daher zu jedem Achsen-Vektor eindeutige, normalisierte Zufallsvektoren.
2.3.2 Abgekürzte BMU-Suche
Während Dimensionsreduzierung die Effizienz der für die BMU -Bestimmung nötigen Abstandsberechnung erhöht, ändert sie noch nichts am eigentlichen Verfahren. Hier gibt es
mehrere optimierte Algorithmen, die versuchen, die Abstandsvergleiche auf in Frage kommende Knoten zu beschränken, statt in jedem Schritt alle Knoten mit dem aktuellen Trainingselement zu vergleichen (siehe Abschnitt 2.1.4.3: Bestimmung der Best Matching Unit).
Zwei davon wurden für diese Arbeit verwendet und sind daher hier vorgestellt.
2.3.2.1 Quick-Reaction-Algorithmus
Selbst bei einer Initialisierung mit zufälligen Werten erreichen die Referenzvektoren einer
SOM bereits nach wenigen Iterationsschritten eine ungefähre Ordnung [Koh01, Seite 129].
Der Quick-Reaction-Algorithmus nutzt diese Eigenschaft, um sich iterativ an die BMU anzunähern [Mon94]. Er spannt ein 3x3-Gitter über die SOM, bei dem jedes Element r des
Gitters einen Knoten wr der SOM repräsentiert. Für eine zweidimensionale SOM mit der
Breite w und der Höhe h verhält sich der Algorithmus wie folgt:
1. Zentrum eines 3x3 - Gitters m
~ = [w ÷ 2, h ÷ 2]T
2. Abstand der Gitterelemente sp = max(w, h) ÷ 3
3. Setze m
~ old := m
~
4. Solange sp > 1 und m
~ old 6= m
~
a) Bestimme Gitterelement wr , dessen Referenzvektor die geringste Euklidische Dinstanz zum aktuellen Trainingselement hat
b) Setze Koordinaten von wr als neues Gitterzentrum m
~
c) Wenn m
~ old = m,
~ dann setze sp als (sp ÷ 2)
d) Setze m
~ old := m
~
5. Knoten wm an den Koordinaten m
~ ist die BMU für das aktuelle Trainingselement
Sollte sich das Gitter in Schritt 4a am Rand der SOM befinden, so dass Gitter-Elemente
außerhalb der SOM liegen, so werden diese für den Vergleich nicht beachtet. Das Verhalten
des Algorithmus kann anhand Abbildung 2.5 nachvollzogen werden [Mon94]:
Abbildung 2.5a zeigt den Initialstatus des Algorithmus. Die Knoten des 3x3-Gitters sind
gelb markiert, der Knoten wr mit geringster Distanz zum aktuellen Trainingselement ist
18
2.3 Verfahren zur Optimierung
(a)
(b)
(c)
(d)
Abbildung 2.5: Beispiel des Quick-Reaction-Algorithmus bei einer 10x10-SOM
grün eingefärbt. Die tatsächliche BMU für das Trainingselement in diesem Iterationsschritt
ist schwarz markiert. Da der gefundene Knoten wr nicht der aktuelle Mittelpunkt des Gitters
m
~ ist, wird das Gitter verschoben, so dass wr der neue Mittelpunkt ist. Dies ist in Abbildung
2.5b abgebildet. Hier bleibt wr der Mittelpunkt des Gitters, daher wird der Abstand sp
zwischen den Gitterelementen halbiert, so dass der Suchbereich des Algorithmus verkleinert
wird. Im nächsten Schritt (siehe Abbildung 2.5c) ist wr wieder am Rand des Gitters, so
dass es erneut verschoben wird. Da im Folgeschritt (siehe Abbildung 2.5d) der Abstand sp
der Gitterelemente bereits 1 beträgt, das Gitter also nicht weiter verkleinert werden kann,
und wr der Mittelpunkt des Gitters ist, endet der Quick-Reaction-Algorithmus. wm , das
Gitterelement im Mittelpunkt des Gitters, ist also die gesuchte BMU.
2.3.2.2 BMU-Caching
Abbildung 2.6: Suche im Radius um zuvor gefundener BMU [Koh01, Seite 171]
Geht man davon aus, dass alle Trainingsvektoren von Anfang an bekannt sind, diese also
eine geschlossene und endliche Menge sind (in allen in dieser Arbeit vorgestellten Beispielen
der Fall, vergleiche Abschnitt 2.1.4.3: Bestimmung der Best Matching Unit) und die Knoten
der SOM bereits einer Ordnung unterliegen, kann man davon ausgehen, dass die zu einem
19
2 Theoretische Grundlagen
Trainingselement gefundene BMU in der direkten Nähe des Knotens liegt, welcher in der
vorherigen Iteration als BMU gefunden wurde. Dies ist insbesondere in späten Iterationen
der Fall, in welchen die beeinflusste Nachbarschaft eines Knotens sehr klein ist, und die
SOM sich in der langen Phase der Feinabstimmung befindet [Koh01, siehe 171]. Speichert
man nun für jedes Trainingselement Zeiger auf die in der vorherigen Iteration gefundene
BMU, so reicht eine lokale Suche in einem kleinen Radius um diese herum. Nur wenn die
dadurch gefundene, neue BMU am Rand dieses Radius liegt, wird die Suche um diese herum
fortgesetzt, solange bis eine BMU im Mittelfeld des Radius gefunden wird (siehe Abbildung
2.6).
Auch wenn die hier vorgestellten Verfahren von einer bereits vorherrschenden Ordnung der
SOM ausgehen, wurde in [Mon94] gezeigt, dass sie auch bereits in den ersten Iterationen
einer zufällig initialisierten SOM verwendet werden können, da die hier durch die Verfahren entstehenden Fehler in der BMU -Bestimmung die Konvergenz des Algorithmus nicht
beeinträchtigen und trotzdem eine Ordnung entsteht.
20
3 Erkennung von automatisierten Zugriffen
anhand von Zugriffsprotokollen
Dieses Kapitel gibt einen Einblick in Verfahren und Kriterien, die ein Mensch anwenden
würde, um anhand von Zugriffsprotokollen automatisierte Zugriffe zu erkennen. Es wird
weiterhin ein Bezug zu Selbstorganisierenden Karten hergestellt und festgelegt, welche Informationen durch diese in welcher Weise abgebildet werden können, um mit Hilfe von SOMs
automatisierte Zugriffe ausfindig zu machen.
3.1 Apache-Webserver-Zugriffsprotokolle
Bevor auf die Erkennung von automatisierten Zugriffen eingegangen wird, soll zunächst
die allgemeine Struktur einer Zeile aus Zugriffsprotokollen des Apache-Webservers erläutert
werden.
Eine beispielhafte Zeile des Zugriffsprotokolls sieht (hier zur besseren Lesbarkeit auf mehrere
Zeilen aufgebrochen) wie folgt aus:
80.144.243.235 - - [26/Oct/2009:06:28:28 +0100] "GET / HTTP/1.1" 200 241
"http://www.google.de/" "Opera/9.80 (Windows NT 5.1; U; de)
Presto/2.2.15 Version/10.00"
Sie lässt sich in folgende, wichtige Teilinformationen gliedern [Apa]:
21
3 Erkennung von automatisierten Zugriffen anhand von Zugriffsprotokollen
80.144.243.235
IP-Adresse des zugreifenden Benutzers
[26/Oct/2009:06:28:28 +0100]
Zeitpunkt des Zugriffs
"GET / HTTP/1.1"
Angeforderte relative URL (hier "‘/"’, zusammen mit
Zugriffs-Methode (GET oder POST [FGM+ 99, Abschnitt 9]) und Protokollangabe (hier HTTP Version
1.1) - im Weiteren Request genannt
"http://www.google.de/"
Herkunft des zugreifenden Benutzers, das heißt URL
der Seite, von der aus er zur angeforderten URL navigiert ist - im Weiteren Referer genannt
"Opera/9.80 [. . . ]"
Identifikations-Zeichenkette des vom Benutzer verwendeten Browsers (Browserkennung)
3.2 Definition von Bots
Unter Bots (eine in diesem Zusammenhang übliche Kurzform von Web-Roboter) werden hier
Programme verstanden, welche dazu entworfen wurden, Webinhalte automatisiert abzurufen
und zu verarbeiten [Wik10b]. Dies ist eine Einschränkung der üblichen Verwendung des
Begriffes, der allgemein Programme bezeichnet, die das Verhalten von Menschen nachahmen
beziehungsweise sich wiederholende Aufgaben automatisiert abarbeiten [Wik10a]. Für diese
Arbeit ist sind allerdings nur Bots von Interesse, die sich direkt auf den Zugriff auf Webseiten
beziehen.
3.3 Kriterien zur Erkennung
Für Menschen ist es offensichtlich, dass es sich bei einem protokollierten Benutzer um ein
automatisiert zugreifendes Programm handelt, wenn sich dieses verhält, wie ein Mensch
es nie könnte (siehe hierzu auch Anhang A). Dabei sind insbesondere folgende Kriterien
ausschlaggebend:
1. Der Benutzer hält sich nicht an den Klickpfad
2. Der Benutzer lädt nicht alle mit Webseiten verbundene Inhalte wie CSS-Stylesheets 4 ,
JavaScript 5 -Dateien und Bilder
4
Bei CSS-Stylesheets handelt es sich um über externe Dateien eingebundene Formatierungsangaben, die der
Browser zur Darstellung der Webseite auswertet [Mey07].
5
JavaScript ist eine einfache Script-Sprache, die in HTML-Dokumente eingebettet werden kann, um diese
zu manipulieren. Komplexere Scripte werden häufig in eigene Dateien ausgelagert [McD03].
22
3.3 Kriterien zur Erkennung
3. Der Benutzer folgt Hyperlinks oder verwendet Bedienelemente in einer Geschwindigkeit, wie sie für Menschen unmöglich oder untypisch ist
4. Die Browserkennung ist unüblich oder die Referer-Angabe fehlt / ist fehlerhaft
Diese sind im Folgenden im Detail erläutert:
3.3.1 Klickpfad
Unter Klickpfad wird eine Reihe von miteinander durch Hyperlinks verbundene Webseiten verstanden. Das heißt, dass eine Abfolge von Zugriffen auf Webseiten genau dann dem
Klickpfad folgt, wenn jeweils die Vorgängerseite mittels eines Hyperlinks (oder entsprechenden Strukturen) auf die aktuell betrachtete Seite verweist. Die Seiten sind also über einen
Pfad aus Klicks auf Hyperlinks erreichbar.
Allgemeiner gesagt, kann unter einem Klickpfad auch der Navigationsweg verstanden werden,
den menschliche Benutzer üblicherweise auf einer Webseite zurücklegen.
Folgt eine Zugriffsfolge diesem Klickpfad nicht (das heißt, die Seiten, auf die aufeinanderfolgend zugegriffen wird, sind nicht durch Hyperlinks verbunden), so handelt es sich bei dem
Benutzer eindeutig um einen Bot, da dieses Navigations-Verhalten für einen Menschen unmöglich ist. Die einzige Möglichkeit für einen Menschen, den Klickpfad zu verlassen, ist das
direkte Eingeben der URL von Webinhalten in die Adresszeile des Browsers. Dies ist nur
für Benutzer möglich, die die Struktur der Webseite gut kennen, und auch dann ein eher
unübliches Verhalten.
3.3.2 Fehlendes Laden zusätzlicher Inhalte
Für die automatisierte Analyse und Auswertung oder Bedienung von Webseiten sind zusätzliche Seiteninhalte wie CSS-Stylesheets, JavaScript-Dateien oder Bilder in der Regel nicht
nötig, da diese häufig einen reinen Präsentationszweck haben. Daher werden sie von Bots
meist nicht aufgerufen und Verweise auf sie ignoriert. Das fehlende (Nach-)Laden solcher
Inhalte ist also ein weiteres Kriterium für das Erkennen von Bots. Es darf aber nicht allein
verwendet werden, da dieses Verhalten auch bei menschlichen Benutzern auftreten kann,
wenn diese beispielweise JavaScript in ihrem Browser deaktiviert haben, mit mobilen Geräten auf die Webseite zugreifen, welche häufig keine Bildinhalte auswerten, oder diese Inhalte
vom Browser zwischengespeichert (gecached) wurden und deshalb nicht erneut aufgerufen
werden.
23
3 Erkennung von automatisierten Zugriffen anhand von Zugriffsprotokollen
3.3.3 Zu hohe oder sonst unübliche Zugriffsgeschwindigkeit
Wenn Menschen durch eine Webseite navigieren, dann brauchen sie dafür Zeit, die Inhalte
zu lesen, die Navigationsstruktur zu erkennen und allgemein um zu entscheiden, was sie als
nächstes auf der Seite tun wollen. Ein Bot, der einem festgelegten Zweck oder Verhalten folgt,
hat keine dieser Bedürfnisse und kann Hyperlinks nahezu augenblicklich folgen, sobald er
diese erkannt hat. Zugriffsfolgen auf nicht zueinander gehörende Inhalte (das heißt Inhalte,
die von verschiedenen Bereichen der Webseite kommen, also nicht fast zeitgleich zusammen
angefordert und geladen werden), die direkt oder mit nur geringer Verzögerung aufeinander
folgen, sind also ein Garant dafür, dass es sich bei dem Benutzer um einen Bot handelt.
Einige Entwickler von Bots sind sich allerdings dieser Tatsache bewußt und statten ihre Programme daher mit einer künstlichen Verzögerung aus, um sie menschlicher wirken zu lassen.
Da diese Verzögerung aber künstlich ist und nicht durch den tatsächlichen Inhalt einer Seite
erzeugt wird, kann man solche Bots häufig daran erkennen, dass ihr Zugriffsverhalten zu
regelmäßig ist. Insbesondere bei Seiten, die Interaktion mit dem Benutzer erfordern (etwa
Formulare), sind diese Bots im Vergleich zu einem Menschen noch immer zu schnell. Gleichermaßen können zu langsam sein, insbesondere bei sehr einfachen Seiten, die von Menschen,
denen die Seitenstruktur vertraut ist, in wenigen Sekunden navigiert werden können.
Zusammenfassend lässt sich also sagen, dass man Bots erkennen kann, wenn ihr zeitliches
Zugriffsverhalten von dem normaler Menschen für die jeweilige Seite abweicht.
3.3.4 Unübliche Browserkennung oder Referer-Angabe
Wie oben beschrieben, handelt es sich bei der Browserkennung um eine Angabe über die Art
und Version des vom Benutzer zum Aufruf eines Inhaltes verwendeten Browsers. Da Bots
die Seiteninhalte selbst direkt abrufen, kann sich hier eine unübliche Bezeichnung finden, die
nicht zu einem bekannten Browser gehört, oder die Kennung fehlt ganz. Einige Bots, insbesondere solche von Suchmaschinen, die zur Indizierung von Webinhalten verwendet werden,
geben sich über die Browserkennung auch frei zu erkennen. Der Indizierungs-Bot von Google verwendet zum Beispiel diese Browserkennung: "Mozilla/5.0 (compatible; Googlebot/2.1;
+http://www.google.com/bot.html)"
Da die meisten Browser ein Überschreiben dieser Kennung unterstützen und sie auch von
Bots frei gewählt werden kann, ist sie allerdings nur ein sehr schwaches Kriterium zum
Erkennen von automatisierten Zugriffen. Sie sollte nur verwendet werden, um Bots, die sich
darüber zu erkennen geben, entsprechend zu behandeln.
Die Referer-Angabe verhält sich ähnlich. Fehlt sie komplett, kann dies ein Anzeichen für
Bots sein. Genauso ist es aber möglich, dass ein menschlicher Benutzer einen Browser ver-
24
3.4 Verwendung der Kriterien in Selbstorganisierenden Karten
wendet, bei dem das Senden dieser Angabe unterdrückt wurde (viele Browser bieten dies
als Datenschutz-Option an, damit der Benutzer nicht preisgeben muss, von welcher Seite er
kommt). Lediglich eine fehlerhafte Referer-Zeichenkette, die sich nicht auf bekannte Webinhalte bezieht, ist ein sicheres Indiz für Bots. Derartige Angaben können aber nur entstehen,
wenn die Programmierung des Bots fehlerhaft ist - sie sind also eine sehr seltene Ausnahme.
Daher sollte auch dieses Kriterium sparsam und nur in Kombination mit anderen Indizen
verwendet werden.
3.4 Verwendung der Kriterien in Selbstorganisierenden Karten
Das Ziel dieser Arbeit ist es zu überprüfen, ob sich Selbstorganisierende Karten zur automatisierten Erkennung von Bots eignen. Wie eingangs erwähnt, soll dies ausschließlich durch
eine Definition des Normalzustands von menschlichem Zugriffsverhalten geschehen, als Alternative zu regelbasierten Ansätzen. Daher kommen hier auch nur Kriterien in Frage, die
nicht auf vordefinierten Regeln basieren. Die Beurteilung von Browserkennung oder RefererAngabe scheiden also aus, da diese einen direkten Vergleich mit bekannten und gültigen
Werten benötigten.
Im folgenden werden nun grundsätzliche Überlegungen beschrieben, wie sich die verbliebenen
Kriterien durch eine oder mehrere SOMs abbilden lassen.
3.4.1 Klickpfad
Betrachtet man den Klickpfad als das normale Navigationsverhalten menschlicher Benutzer,
so lässt er sich relativ einfach durch eine SOM abbilden. Statt die einzelnen Inhalte einer
Webseite auf verknüpfende Hyperlinks zu überprüfen, was ein regelbasierter Ansatz wäre,
kann einfach mittels semantischer Aggregation (vergleiche Abschnitt 2.2.2: Semantische Aggregation) abgebildet werden, welche Inhalte nacheinander abgerufen werden. Dabei kann
erwartet werden, dass Zugriffstupel aus aufeinanderfolgenden Zugriffen örtlich nah beieinander auf der entstehenden Karte abgebildet werden, wenn sie Zugriffe auf gleiche Inhalte
beinhalten: In diesem Fall bestehen die entstehenden Trainingsvektoren zum Teil aus den
gleichen repräsentativen Wortvektoren (vergleiche Abschnitt 2.2.1: Bildung des Alphabets),
weshalb ihre Euklidische Distanz (siehe Gleichung 2.5) geringer ist als die zweier völlig verschiedener Trainingsvektoren.
Geht man davon aus, dass automatisierte Zugriffe durch Bots nur einen sehr geringen Prozentsatz aller Zugriffe ausmachen, die für eine Webseite protokolliert werden, so kann das
Zugriffsprotokoll des Webservers unaufbereitet als Trainingsinformation für eine solche SOM
verwendet werden. Der Glättungseffekt des SOM-Algorithmus, insbesondere wenn die Zahl
25
3 Erkennung von automatisierten Zugriffen anhand von Zugriffsprotokollen
der Trainingselemente die Zahl der Knoten um ein vielfaches übersteigt, sorgt für eine allgemeine Mittelung der abgebildeten Daten, wodurch einzelne Ausreißer nicht ins Gewicht
fallen. Selbst wenn diese auf die Karte abgebildet werden, belegen sie zudem andere Bereiche
als die Zugriffe von Menschen, da sie offensichtlich andere Zugriffsmuster beschreiben. Dies
kann für die spätere Auswertung der Karte hilfreich sein.
3.4.2 Fehlendes Laden zusätzlicher Inhalte
Die Überprüfung, ob ein Benutzer alle üblichen, zusätzlichen Inhalte einer Seite lädt, kann
auf die gleiche Art und Weise wie der Klickpfad durch eine SOM abgebildet werden. Denn
durch diesen ist bereits definiert, welche Inhalte zusammen gehören und üblicherweise gemeinsam geladen werden. Lässt ein Benutzer also Inhalte aus, die durch obige Abbildung
als Klickpfad definiert sind, so verlässt er diesen automatisch und wird daher in der Analyse
auffällig.
Werden zusätzliche Inhalte (insbesondere Bilder) einer Seite üblicherweise durch den Browser
des Benutzers zwischengespeichert und nicht erneut abgerufen, so kann es sinnvoll sein,
verschiedene SOMs zu trainieren, die verschiedene Inhaltstypen abbilden: Eine SOM, die
nur Aufrufe von HTML-Inhalten abbildet, kann verwendet werden, um den allgemeinen
Klickpfad zu definieren. Zusätzlich kann dann eine SOM trainiert werden, die Zugriffe jeder
Art oder nur solche auf kritische Inhalte (beispielsweise HTML und Bilder) abbildet, so
dass Zugriffsabbildungen auf der ersten SOM mit denen der zusätzlichen verglichen werden
können, um zu ermitteln, ob tatsächlich ein abweichendes Benutzerverhalten festzustellen
ist oder Inhalte nur zwischengespeichert wurden.
3.4.3 Zu hohe oder sonst unübliche Zugriffs-Geschwindigkeit
Während es trivial ist, die zeitlichen Intervalle zwischen Zugriffen auf Webinhalte anhand
der Zugriffsprotokolle mittels statistischer und regelbasierter Verfahren zu analysieren, ist
eine Abbildung dieser Information auf eine SOM mit Problemen behaftet. Man könnte auf
die Idee kommen, Paaren von Seitenaufrufen anhand ihrer Zeitdifferenz eindeutige Vektoren
zuzuweisen, um so eine SOM zu trainieren, die Beziehungen von Webinhalten nach ihren
üblichen Zugriffsintervallen gruppiert. Dieser Ansatz kann aber nicht zu sinnvollen Ergebnissen führen, da es sich bei der zeitlichen Komponente um eine eindimensionale Information
handelt, die hier auf eine zweidimensionale Karte projiziert werden soll. Damit wäre also die
Bedingung Dim(Eingaberaum) > Dim(Ausgaberaum) verletzt (vergleiche Abschnitt 2.1.2:
Ausgaberaum).
Diese zeitlichen Aufrufdistanzen müssen also mit der Information, welche Seiten aufgerufen
wurden, verknüpft werden, um als Trainingsvektoren geeignet zu sein. Hierfür können die
26
3.4 Verwendung der Kriterien in Selbstorganisierenden Karten
für Zugriffsabfolgen repräsentativen Trainingsvektoren (siehe oben) um die zeitliche Differenz als zusätzliche Dimension erweitert werden. Da die Trainingsvektoren selbst aber bereits
hochdimensional sind (vergleiche Abschnitt 2.2.1: Bildung des Alphabets und Abschnitt 2.3.1:
Dimensionsreduzierung durch Random Mapping), würde diese zusätzliche Dimension unter
Umständen nur wenig ins Gewicht fallen und dadurch die Bedeutung der zeitlichen Komponente zur Erkennung von automatisierten Zugriffen unterrepräsentieren. Genauso besteht
die Gefahr einer Überrepräsentation, wenn der Betrag der verwendeten Wortvektoren gering ist und die zeitliche Information im Vergleich zu diesem hohe Werte annimmt. Dies
ist beispielsweise der Fall, wenn es sich bei den Wortvektoren um Einheitsvektoren handelt,
die zeitliche Distanz aber unmodifiziert als Anzahl der zwischen zwei Aufrufen vergangenen
Sekunden mit diesen konkateniert wird. Ist diese Distanz größer als eine Sekunde, so ist
sie für die Berechnung der Euklidischen Distanz zweier Trainingsvektoren um ein vielfaches
entscheidender als die eigentlichen Wortvektoren. Die Information, welche Inhalte durch die
Trainingsvektoren repräsentiert werden, ginge also verloren.
Durch Skalierung der Komponente (etwa vielfache Verwendung in mehreren zusätzlichen
Dimensionen oder Multiplikation mit einem entsprechenden Skalar) kann dies natürlich umgangen werden. Es ist aber schwierig, die genau benötigte Größenordnung dieser Skalierung
zu bestimmen. Insbesondere da deren Auswirkungen erst nach dem vollständigen Training
einer entsprechenden SOM offenbar werden und auch dann nur im Vergleich mit anderen
Ergebnissen beurteilt werden können, kann sich hier nur durch mehrere Versuche an eine
geeignete Skalierung angenähert werden.
Zur Vemeidung dieses Problems wurde in dieser Arbeit zusätzlich ein alternativer Ansatz
verfolgt: Statt die zeitliche Komponente direkt als zusätzliche Dimension in die Trainingsvektoren einfließen zu lassen, wird davon ausgegangen, dass Zugriffsmuster mit unterschiedlicher
zeitlicher Differenz inhaltlich völlig verschiedene Informationen sind. Für das Training einer
SOM bedeutet dies, dass einem Aufruf, der eine zeitliche Distanz von unter einer Sekunde
zum vorherigen Aufruf des gleichen Benutzers hat, ein anderer Wortvektor zugewiesen wird,
als einem Aufruf mit beispielweise 15 Sekunden zeitlicher Distanz zum Vorgänger. Durch diese indirekte Einflussnahme der zeitlichen Komponente entsteht eine Karte, die sozusagen den
zeitlichen Klickpfad von Benutzern abbildet. Auf ihr sind die gleichen Zugriffsmuster mehrfach abgebildet, jeweils mit anderer zeitlicher Distanz. Dadurch lässt sich auf gleiche Weise
wie bei der Abbildung des reinen Klickpfads (siehe oben) beurteilen, ob ein Zugriffsmuster
dem üblichen Verhalten von menschlichen Benutzern folgt.
Für Details zur Implementierung der hier vorgestellten Ansätze siehe Abschnitt 4.3.2.4:
Kontext-Aggregation.
27
3 Erkennung von automatisierten Zugriffen anhand von Zugriffsprotokollen
28
4 Prototyp einer Zugriffsprotokollanalyse auf
Basis von SOMs
Dieses Kapitel beschreibt das Konzept und die Architektur einer Implementierung des SOMAlgorithmus zur Analyse von Zugriffsprotokoll-Dateien eines Apache-Webservers. Es wurde
im Rahmen dieser Arbeit als beispielhafter Prototyp entwickelt, um die Eignung des Verfahrens zum Ermitteln von automatisierten Zugriffen auf Webseiten zu überprüfen. Daher
ist im Folgenden sowohl eine allgemeine Beschreibung der Herangehensweise als auch eine
kritische Bewertung dieser gegeben.
4.1 Analyse
Dieser Abschnitt beschreibt die Anforderungen und Rahmenbedingungen der Implementierungen.
4.1.1 Zielgruppendefinition
Die Implementierung ist ein reiner, exemplarischer Prototyp und nicht für den Produktiveinsatz gedacht. Sie soll aufzeigen, ob (und wenn ja unter welchen Bedingungen) der
SOM-Algorithmus geeignet ist, automatisierte Zugriffe auf Webseiten zu erkennen. Die Implementierung soll daher nur als Beispiel einer Lösung der Anforderungen verstanden werden,
weshalb ihre Zielgruppe selbst Softwareentwickler sind, die auf Basis der hier vorgestellten
Arbeit eine Anwendung zur Analyse von Apache-Zugriffsprotokoll-Dateien entwickeln wollen.
4.1.2 Wahl der Programmiersprache
Als Programmiersprache für die Beispiel-Implementierung wurde Python gewählt. Die klare und einfache Syntax dieser Sprache, zusammen mit einer großen Auswahl an SoftwareBibliotheken (insbesonders die Bibliothek SciPy für wissenschaftliche beziehungsweise mathematische Berechnungen), erlaubt eine sehr schnelle und fehlervermeidende Entwicklung
von Prototypen. Diese Eigenschaft wiegt eventuelle Laufzeiteinschränkungen durch die Tatsache, dass es sich bei Python um eine interpretierte Scriptsprache handelt, deutlich auf.
29
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
Für die Entwicklung einer für den Produktiv-Einsatz gedachten Anwendung, bei der LaufzeitOptimierung eine größere Rolle spielt als Lesbarkeit des Quellcodes oder EntwicklungsGeschwindigkeit, bietet es sich allerdings an, eine hardwarenahe, kompilierbare Sprache wie
C zu verwenden. Da Python das Einbinden von kompilierten C -Code erlaubt, könnten so
auch nur laufzeitkritische Teilelemente der Beispiel-Implementation neu umgesetzt werden.
4.1.3 Technische Rahmenbedingungen
Da die Anwendung zur Auswertung von Zugriffsprotokoll-Dateien eines Webservers verwendet wird, ist davon auszugehen, dass sie auf der gleichen oder ähnlichen Hardware und
Umgebung wie der Webserver selbst betrieben werden muss. Daher ist Plattformunabhängigkeit eine wichtige Bedingung: Es kann nicht vorhergesagt werden, welches Betriebsystem
für den Webserver verwendet wird.
Auch wenn der hier vorgestellte Prototyp eine eigenständige Anwendung darstellt, welche
losgelöst von anderen Prozessen des Servers operieren kann, sollte für den Produktiveinsatz
zudem eine direkte Schnittstelle mit dem Webserver angedacht werden. Die Verwendung
von Python als Programmiersprache bietet für beide Fälle eine Lösung: Es existiert für
jedes gängige Betriebsystem ein Interpretierer der Sprache und die Erweiterung mod_python
erlaubt eine direkte Kommunikation mit dem Apache-Webserver.
4.2 Anforderungen
In diesem Abschnitt werden die grundsätzlichen Anforderungen an die Implementation beschrieben. Es wird also die allgemeine Aufgabe der Software beschrieben, sowie auf zielsetzende Rahmenbedingungen des Anwendungsgebiets eingegangen.
4.2.1 Grundsätzliche Funktion
Die entwickelte Software soll aufzeigen, ob der SOM-Algorithmus grundsätzlich für die Erkennung von automatisierten Zugriffen auf Webseiten geeignet ist. Als Beispielumsetzung des
vorgestellten Verfahrens der SOM sollen die mir ihr berechneten Ergebnisse als Grundlage
für eine Bewertung verwendet werden können.
4.2.2 Präzision
Die Erkennung von automatisierten Zugriffen (Bots), insbesondere wenn sie als Kriterium für
sicherheitsrelevante Bereiche einer Seite verwendet werden soll, muss zuverlässig und präzise
30
4.2 Anforderungen
sein. Es dürfen weder offensichtlich erkennbare Bots für Menschen gehalten werden noch
dürfen menschliche Benutzer als Bots identifiziert werden. Ist das Verfahren nicht in der Lage,
eine hundertprozentiges Urteil über die Verhaltenseigenschaften eines Benutzers zu fällen,
so muss es zumindest eine Einschätzung des Verhaltens liefern (etwa eine Prozentangabe,
die angibt, wie wahrscheinlich es sich um einen Bot handelt). Nur so kann das Verfahren
verwendet werden, um die Erkennung von automatisierten Zugriffen zu unterstützen oder
gar zu automatisieren.
4.2.3 Laufzeit-Einschränkungen
Populäre Webseiten verzeichnen mehrere hundertausend Zugriffe täglich. Das Verfahren muss
daher in der Lage sein, diese effizient zu verarbeiten - nur wenn die Beurteilung eines Zugriffes
(beziehungsweise einer Zugriffsfolge) die Bereitstellung von Inhalten durch den Server nicht
beeinträchtigt, ist das Verfahren für den Produktiveinsatz geeignet. Die Verarbeitung kann
hierbei entweder sofort nach Sammlung der erforderlichen Daten, also live, oder gesammelt
zu regelmäßigen Zeiten als so genannter Batch-Prozess geschehen.
4.2.4 Aufbereitung der Ausgabedaten
Eine trainierte SOM ist in der Regel für Menschen nicht intuitiv verwendbar, da es sich
lediglich um eine unaufbereitete Sammlung von Vektoren handelt. Auch wenn die SOM
kalibriert wurde (siehe Abschnitt 2.1.4.6: Kalibrierung), bieten die mit den Knoten attribuierten Trainingselemente in diesem Fall noch keinerlei Aufschluss über die Auswertung
zukünftiger Zugriffe, die nicht für das Training der SOM verwendet wurden. Soll das Verfahren also als Vorfilter für eine manuelle Auswertung der Zugriffsdaten erfolgen, so muss
die Auswertung dieser in einem von Menschen lesbaren Format dargestellt werden. Wird es
hingegen zur automatisierten Erkennung verwendet, so müssen die Ausgabedaten in ein Format gebracht werden, dass von an das Verfahren anschließenden Prozessen der analysierten
Webseite verwendbar ist.
4.2.5 Erweiterbarkeit
Der SOM-Algorithmus und die damit verbundenen Verfahren existieren in vielen Varianten, jede mit eigenen Stärken und Schwächen. Je nach konkretem Anwendungsgebiet kann
es wichtig sein, diese Varianten dynamisch anpassen oder gar austauschen zu können, was
aktiv durch die Architektur der Implementierung unterstützt werden muss. Zum einen bedeutet dies, dass die Abhängigkeiten zwischen verschiedenen Modulen so gering wie möglich
gehalten werden müssen, damit diese eigenständig und zueinander transparent operieren
31
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
können. Zum anderen müssen kritische Kernprobleme, deren Lösung austauschbar sein soll,
entsprechend gekapselt werden - etwa durch die Anwendung des Strategie-Entwurfsmusters
[GHJV04].
4.2.6 Benutzerschnittstelle
Insbesondere wenn das Verfahren zur automatisierten Erkennung verwendet wird, kann es
nötig sein, dem Benutzer der Software grundlegende Konfigurationsmöglichkeiten zur Verfügung zu stellen. Per Konfigurationsdatei oder grafischer Oberfläche könnte so erlaubt werden, die Parameter der verwendeten Algorithmen genau auf die vorliegenden Anforderungen
anzupassen. Auch eine Einstellungsmöglichkeit direkt über die grafische Darstellung einer
trainierten SOM wäre denkbar, etwa um dem Benutzer zu erlauben, bestimmte Knoten,
auf die Zugriffe von bekannten und vertrauenswürdigen Quellen abgebildet werden, von der
Bewertung auszuschließen. Diese Funktionen gehen aber über die bloße Machbarkeitsstudie
dieser Arbeit hinaus und wurden daher in der hier präsentierten Beispielimplementierung
nicht berücksichtigt.
4.3 Komponenten
Dieser Abschnitt beschreibt die grundsätzliche Architektur der Implementierung. Es werden
die verwendeten Module sowie ihre Zusammenhänge erläutert.
Der Begriff Modul bezeichnet in der Informatik allgemein eine inhaltlich oder funktionell
zusammenhänge Gruppierung von Quelltext. So werden die in der objektorientierten Programmierung verwendeten Klassen unter Umständen auch als Module bezeichnet. Hier wird
der Begriff aber ausschließlich als Bezeichner für Gruppen von inhaltlich zusammenhängenden Klassen und Komponenten verwendet, um deren Struktur klar voneinander abzugrenzen.
4.3.1 Architektur
Abbildung 4.1 zeigt die vier grundsätzlichen Module der Implementierung:
Die Zugriffsprotokoll-Analyse wertet Zugriffsprotokoll-Dateien des Apache-Webservers aus
und generiert mittels einem aus mehreren zur Verfügung stehenden Verfahren daraus Trainingsvektoren, wie sie vom SOM-Algorithmus verwendet werden können.
Das Modul SOM-Algorithmus selbst beinhaltet verschiedene Umsetzungen des eigentlichen,
in Abschnitt 2.1: Der SOM-Algorithmus beschriebenen Verfahrens. An dieser Stelle findet
das Training der für weitere Schritte benötigten SOM statt.
32
4.3 Komponenten
Eine damit generierte und kalibrierte (vergleiche Abschnitt 2.1.4.6: Kalibrierung) SOM kann
nun mittels des Moduls Visualisierung für Endbenutzer oder zu Kontrollzwecken visuell
dargestellt werden.
Durch das Modul Evaluierung kann eine solche SOM wiederum qualitativ bewertet werden
- hier findet auch die Überprüfung statt, ob und wie weit die SOM in der Lage ist, automatisierte Zugriffe zu erkennen. Erkenntnisse, die hier gewonnen werden, können zudem zum
Teil wieder visualisiert werden.
4.3.2 Zugriffsprotokoll-Analyse
Abbildung 4.2 zeigt das Klassendiagramm des Zugriffsprotokoll-Analyse-Modules (dieses und
alle folgenden Klassendiagramme sind nach UML 2.0 Standard erstellt (siehe [Amb05])).
Es besteht aus der Hauptklasse LogAnalyzer, welche die Analyse von Zugriffsprotokollen
und die entsprechende Generierung von Trainingsvektoren verwaltet, sowie mehrere von ihr
verwendeten Komponenten.
Im Folgenden werden die einzelnen, dargestellten Gruppen und ihre Klassen nach ihrer inhaltlichen Verwendung erläutert.
4.3.2.1 Parser
Bestehend aus den Klassen LogParser und ParsedLogLine, kümmert sich der Parser um
das Einlesen von Zugriffsprotokollen das Webservers Apache. Wird der Funktion parse()
von LogParser der Pfad zu einer oder mehrerer Zugriffsprotokollen übergeben, so werden
diese zeilenweise durchschritten und für jede Zeile ein Objekt der Klasse ParsedLogLine
generiert. Diese ist eine reine Datenhaltungs-Klasse, welche alle Teilinformationen einer Zeile
bereithält, so dass diese von folgenden Prozessen einfach ausgewertet werden können.
Abbildung 4.1: Grundsätzliche Architektur der Implementierung
33
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
Die Funktion parse() der Klasse LogParser aktzeptiert zusätzlich als optionale Parameter
eine Reihe von Optionen, die das Filtern von bestimmten Protokollzeilen erlauben. Diese
Parameter bestehen aus einer Liste von Dateiendungen, die gegen jede Protokollzeile geprüft werden, sowie einer booleschen Schalter-Variablen, die bestimmt, ob nur Aufrufe von
Dateien mit einer dieser Endungen oder alle Aufrufe außer solchen zugelassen werden sollen. Eine derartige Filterung kann beispielsweise sinnvoll sein, um ausschließlich Zugriffe auf
HTML-Inhalte zu verarbeiten und Bild-Inhalte, CSS-Stylesheets und Javascript-Referenzen
zu ignorieren, welche eventuell vom Browser des Benutzers gecached (zwischengespeichert)
werden können und somit die Ergebnisse der Analyse verfälschen würden.
Der Aufbau und die Komponenten einer Zeile der Apache-Webserver-Zugriffsprotokolle ist
in Abschnitt 3.1: Apache-Webserver-Zugriffsprotokolle beschrieben.
Die hier generierten ParsedLogLine-Objekte werden zum Beispiel in der Alphabetgenerierung
und Gruppierung verwendet.
4.3.2.2 Alphabetgenerierung
Die Alphabetgenerierung beschreibt den Prozess, eindeutigen Wörtern vom SOM-Algorithmus verarbeitbare Vektoren zuzuweisen (vergleiche Abschnitt 2.2.1: Bildung des Alphabets).
Als Wort wird dabei jedes eindeutige Objekt bezeichnet, das es abzubilden gilt. Im Falle
der Analyse von Webseiten auf Basis von Zugriffsprotokollen sind dies in der Regel die
aufgerufenen URLs: Der Aufruf der Startseite eines Webinhalts soll inhaltlich beispielweise
vom Aufruf einer Kontaktseite oder ähnlichem unterschieden werden.
Konkret wird dies durch die Klasse UnitVectorGenerator erledigt, welche mittels ihrer Funktion generateUnitVectorDictForElements() zu einer übergebenen Liste aus Wörtern ein Verzeichnis (engl. Dictionary) erstellt, welches die Wörter zu eindeutigen Achsenvektoren abbildet.
Nach dem in Abschnitt 2.3.1: Dimensionsreduzierung durch Random Mapping beschriebenen
Verfahren wird anschließend die Dimension der entstandenen Vektoren reduziert. Die konkrete Implementierung RandomMapper der abstrakten Klasse DimensionalityReducer bietet
hierfür die Funktion mapVector(), welche einen übergebenen Vektor mit einer entsprechenden Zufallsmatrix multipliziert und das Ergebnis zurückliefert.
Der RandomMapper ist hier mittels des Strategie-Entwurfsmusters (vergleiche [GHJV04])
der Hauptklasse LogAnalyzer dieses Moduls zugewiesen, so dass er leicht durch eine andere
Form der Dimensionsreduzierung ausgetauscht werden kann.
34
Abbildung 4.2: Klassendiagramm der Zugriffsprotokoll-Analyse
4.3 Komponenten
35
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
4.3.2.3 Gruppierer
Für die Auswertung von Zugriffsprotokollen ist es wichtig, die einzelnen Zeilen des Protokolls nach Benutzer zu gruppieren. Denn möchte man das Zugriffsverhalten eines Benutzers
analysieren, spielen nur die Zeilen eine Rolle, die auch eindeutig die Zugriffe dieses Benutzers
protokollieren. Da in Apache-Zugriffsprotokollen die Zeilen allerdings ausschließlich chronologisch sortiert vorliegen, werden Zugriffe von verschiedenen Benutzern hier wild gemischt
festgehalten, solange die Benutzer zur selben Zeit auf die Webseite zugreifen (bei populären
Webinhalten der Regelfall).
Es werden also Kriterien zur Identifizierung eines Benutzers benötigt. Erstes Entscheidungskriterium ist hierbei die IP-Adresse, von der aus zugegriffen wird. Da allerdings nur die
wenigsten Benutzer über eine statische IP-Adresse verfügen, kann es vorkommen, dass verschiedene, zeitlich voneinander getrennte Benutzer von ihrem Internetdienstanbieter (engl.
Internet Service Provider, kurz ISP) die gleiche IP-Adresse zugewiesen bekommen. Daher
wird bei Zugriffen ausgehend von der gleichen Adresse, die eine halbe Stunde oder länger
auseinander liegen, zusätzlich angenommen, dass es sich um verschiedene Benutzer handelt.
Selbst wenn dies nicht der Fall ist sind derart weit auseinander liegende Zugriffe des gleichen
Benutzers mit an Sicherheit grenzender Wahrscheinlichkeit nicht inhaltlich zusammenhängend, weshalb dieses Kriterium auch hier zu sinnvollen Ergebnissen führt.
Weiterhin kann es sein, dass mehrere Benutzer gleichzeitig von der gleichen IP-Adresse aus
zugreifen, wenn diese sich über einen Router oder Proxy-Server eine gemeinsame Verbindung
teilen. Aus diesem Grund wird als weiteres Indentifikations-Kriterium die Browserkennung
hinzugezogen. Sollten diese Art von Benutzern nun identische Browser verwenden (etwa in
Rechenzentren der Fall), so würden sie fälschlicher Weise als ein einzelner Benutzer gewertet
werden. Eine genauere Aufschlüsselung der Benutzeridentifizierung wäre aber mit erhöhtem Aufwand verbunden (beispielweise denkbar ist ein Vergleich von Request und Referer
bei aufeinanderfolgenden Zugriffen). Da diese Art von Zugriff aber bei den für diese Arbeit
verwendeten Protokoll-Dateien der Ausnahmefall ist und statistisch ausreißende Trainingsvektoren beim SOM-Algorithmus automatisch durch den lokalen Glättungseffekt (vergleiche
Abschnitt 2.1.4.4: Annäherung der Referenzvektoren) herausgefiltert werden, wurde dieser
Sachverhalt hier nicht weiter behandelt. Soll die hier vorgestellte Implementierung allerdings zur Analyse von Zugriffen auf Webseiten, bei denen regelmäßig mit diesem Problem
zu rechnen ist, verwendet werden, so muss die Zeilen-Gruppierung entsprechend erweitert
oder angepasst werden.
Implementierung:
Ähnlich wie bei der Dimensionsreduzierung wird hier die konkrete Im-
plementierung IPAddressLineGrouper der abstrakten Klasse LineGrouper mittels des Strategie-Entwurfsmusters von der Hauptklasse LogAnalyzer verwendet. Sie setzt die oben be-
36
4.3 Komponenten
schriebenen Kriterien durch die Funktion groupLines() um, welche zu einer übergebenen
Liste von ParsedLogLines ein Verzeichnis zurückliefert, das einen eindeutigen Bezeichner
eines Benutzers einer Gruppe dieser ParsedLogLines zuordnet. Dieser Bezeichner setzt sich
zusammen aus der IP-Adresse, der Browserkennung und einem Zähler, der bei mehrfachen
Auftritten der gleichen Kombination aus IP-Adresse und Browserkennung diese Gruppen
durchnummeriert.
4.3.2.4 Kontext-Aggregation
Um das Zugriffsverhalten von Benutzern zu beurteilen, sind weniger die einzelnen Zugriffe als
ihr Zusammenhang interessant. Erst eine Abfolge von Zugriffen erlaubt eine Einschätzung,
ob ein Benutzer sich wie ein Mensch verhält. So lässt sich zum Beispiel daran erkennen, ob die
Zugriffe dem normalen Klickpfad der Webseite folgen, ob alle üblichen Inhalte (insbesondere
Javascript-Verweise und Bilder) zu einem Seitenaufruf geladen werden oder ob der Aufruf
bestimmter Seiten zu schnell erfolgt, als ein Mensch dies könnte (vergleiche Abschnitt 3.3:
Kriterien zur Erkennung).
Diese Informationen gilt es nun mittels der Kontext-Aggregation, entsprechend dem in Abschnitt 2.2.2: Semantische Aggregation beschriebenen Verfahren, abzubilden.
Einfache semantische Aggregation Unter semantischer Aggregation ist im Zusammenhang
mit Zugriffsprotokolldateien die Abbildung des Klickpfades zu verstehen. Hier wird der inhaltliche Zusammenhang zwischen Inhalten untersucht, so dass Aufrufe, welche in Folge aufeinander geschehen, örtlich nah beieinander auf der entstehenden Karte abgebildet werden.
Dieses ist gleichwertig mit der in Abschnitt 2.2.2: Semantische Aggregation beschriebenen
Wortkategorie-Karte:
Nehmen wir an, dass jedem eindeutigen Seiteninhalt bereits durch die Alphabetgenerierung
ein eindeutiger Vektor ~z zugewiesen wurde und die Zugriffsprotokolle durch das oben genannte Verfahren nach Benutzern gruppiert wurden und chronlogisch sortiert vorliegen. Wenn nun
z~i den Vektor beschreibt, der dem an Position i in einer Gruppe von Zugriffen aufgerufenen Inhalt zugewiesen wurde, so kann man die durch semantische Aggregation generierten
Trainingsvektoren x~i wie folgt beschreiben:
x~i = [~zi−1 , ~zi , ~zi+1 ]T
(4.1)
Das bedeutet natürlich, dass die ersten und letzten protokollierten Zugriffe einer Benutzergruppe nicht abgebildet werden können, da es für diese keinen zi−1
~ , beziehungsweise zi+1
~ ,
gibt. Dieser Informationsverlust fällt aber bei einer ausreichend großen Menge an Trainings-
37
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
daten nicht ins Gewicht, da davon ausgegangen werden kann, dass diese Inhalte durch andere
Gruppen abgedeckt werden.
Demzufolge können aber auch Benutzer-Gruppen, die weniger als drei Zugriffe beinhalten,
nicht berücksichtigt werden. Da Zugriffsmuster, die nur einzelne Inhalte abrufen (also beispielsweise nicht einmal Bilder nachladen), mit an Sicherheit grenzender Wahrscheinlichkeit
nicht von Menschen kommen, können diese Gruppen in diesem Schritt direkt als automatisierte Zugriffe protokolliert werden.
Dieses Verfahren wird hier durch die Funktion aggregateContext() der Klasse GroupedContextAggregator implementiert.
Gemittelte semantische Aggregation
Möchte man nur den Klickpfad betrachten, so kann
das Training der SOM stark beschleunigt werden, indem man die Trainingsvektoren bereits
im Vorfeld mittelt [Koh01, Seite 284]:
Der SOM-Algorithmus erzielt mit fortschreitender Iterationszahl eine Mittelung ähnlicher
Trainingsvektoren (siehe lokaler Glättungseffekt in Abschnitt 2.1.4.4: Annäherung der Referenzvektoren). Es liegt daher nahe, diese Mittelung bereits beim Erstellen der Trainingsvektoren zu berücksichtigen und so deren Anzahl stark zu reduzieren.
Sei jeder eindeutige Aufruf k durch einen Vektor repräsentiert und alle n Positionen dieses
Aufrufs in allen Benutzer-Gruppen durch f (k, i) gegeben, wobei f (k, 0) die erste Position des
Wortes in allen Gruppen beschreibt, f (k, 1) die zweite Position und so weiter. Ist nun r~j der
repräsentative Vektor eines Aufrufes an der Position j, so folgt für die Trainingsvektoren:
 Pn
~
r
i=0 f (k,i)−1

n


x~k = 
ǫz~k

 P
n

~
r
i=0 f (k,i)+1
n








(4.2)
So wird für jeden eindeutigen Aufruf k im Alphabet genau ein Trainingsvektor x~k erstellt, der
das arithmetische Mittel aller Vektoren zu allen Aufrufen beinhaltet, die in beliebigen Benutzergruppen direkt vor, beziehungsweise direkt nach k protokolliert sind. Dadurch ist hier
die Zahl der Trainingsvektoren identisch mit der Größe des Alphabets, wodurch im Vergleich
zur einfachen semantischen Aggregation, welche für jedes Vorkommen eines protokollierten
Aufrufes einen Trainingsvektor generiert, eine erhebliche Beschleunigung des Trainings der
SOM erreicht wird.
Ein weiterer Nebeneffekt ist, dass die Aufrufe nicht mehr nach ihrer Vorkommenshäufigkeit
gewichtet sind und damit häufig protokollierte Aufrufe keinen stärkeren Einfluss auf die SOM
38
4.3 Komponenten
haben als solche mit seltenem Vorkommen. Bei der einfachen semantischen Aggregation ist
dies der Fall, da hier häufig auftretende Aufrufe auch häufiger in Trainingsvektoren vertreten
sind.
Durch diese Eigenschaft ist die gemittelte semantische Aggregation allerdings für die Erkennung von automatisierten Zugriffen mit Problemen behaftet. Sie würde protokollierte
Zugriffe durch Bots gleichwertig zu denen von Menschen abbilden, was eine nachträgliche
Unterscheidung dieser erschwert.
Dieses Verfahren wird hier durch die Funktion aggregateContext() der Klasse AveragedContextAggregator implementiert.
Semantische Aggregation mit zeitlicher Unterscheidung
Weder die einfache semanti-
schen Aggregation noch die gemittelte semantischen Aggregation bilden die zeitliche Komponente von Zugriffen ab. Für diese Verfahren ist es gleichwertig, ob zwei Aufrufe in einer
Benutzer-Gruppe 0 Sekunden oder 25 Minuten auseinander liegen, solange die Zugriffe aufeinander folgen.
Diese Information ist aber zum Erkennen von automatisierten Zugriffen wichtig, da Bots
(sofern sie nicht künstlich verzögert werden) in der Regel Webinhalte wesentlich schneller
bearbeiten als Menschen dies könnten (siehe auch Abschnitt 3.3: Kriterien zur Erkennung).
Um diesen Sachverhalt abbilden zu können, wird deshalb hier davon ausgegangen, dass
zwei gleiche Zugriffsfolgen mit unterschiedlicher zeitlicher Distanz inhaltlich verschiedene
Informationen sind, die getrennt voneinander abzubilden sind.
Daher wurde für diese Art der Aggregation das Alphabet erweitert (vergleiche Abschnitt
4.3.2.2: Alphabetgenerierung): Das Alphabet-Verzeichnis bildet hier nicht mehr nur eindeutige Seiteninhalte, sondern ein Tupel aus dem Seiteninhalt und der zeitlichen Distanz zum
Vorgängeraufruf auf repräsentative Vektoren ab. Um das Alphabet nicht unnötig zu vergrößern, werden dabei nur die folgenden Situationen betrachtet:
1. Distanz zum Vorgängerzugriff ist kleiner als 10 Sekunden
2. Distanz zum Vorgängerzugriff ist kleiner als 20 Sekunden
3. Distanz zum Vorgängerzugriff ist kleiner als 30 Sekunden
4. Distanz zum Vorgängerzugriff ist größer als 30 Sekunden
5. Aktuell betrachteter Zugriff ist der erste einer Benutzer-Gruppe und hat daher keinen
Vorgänger
Das bedeutet also, dass jedem Seiteninhalt insgesamt fünf verschiedene, unabhängige Vektoren zugewiesen werden. Diese werden nun von der Aggregation verwendet, um kontextsensitive Trainingsvektoren zu erstellen, die zusätzlich die zeitliche Information indirekt abbilden.
39
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
Dabei wird identisch zur einfachen semantischen Aggregation verfahren, nur dass der Vektor z~i , der den Aufruf an der Protokoll-Position i repräsentiert, zusätzlich abhängig von der
zeitlichen Distanz zum Vorgängeraufruf ti−1 ist:

zi−1 (ti−2 )
 ~


x~i = 
zi (ti−1 )
 ~


~zi+1 (ti )








(4.3)
Der Trainingsvektor ist also die Konkatenation aus den repräsentativen Vektoren ~z von drei
aufeinander folgenden, protokollierten Zugriffen, wobei ~z von der zeitlichen Distanz zum
Vorgänger des jeweiligen Zugriffes abhängt und entsprechend oben genannter Situationsunterscheidungen auf einen von 5 möglichen Vektoren abgebildet wird.
Dieses Verfahren wird hier durch die Funktion aggregateContext() der Klasse TimeDistanceContextAggregator implementiert.
Zeitsensitive semantische Aggregation Wie in Abschnitt 3.4.3: Zu hohe oder sonst unübliche Zugriffs-Geschwindigkeit beschrieben, kann die zeitliche Komponente von Zugriffsmustern auch direkt als zusätzliche Dimension in die Trainingsvektoren integriert werden. Sie
muss dabei skaliert werden, um nicht unter- oder überrepräsentiert zu werden.
Verwendet man hier Zugriffspaare statt Dreiergruppen, um den Wechsel von Inhalt a auf den
Inhalt b mit der Zeitdifferenz t auszudrücken, so lässt sich eine Richtlinie für die Skalierung
wie folgt ausdrücken: Sind ~za und ~zb Wortvektoren, die die Inhalte a beziehungsweise b repräsentieren und nach dem in Abschnitt 4.3.2.2: Alphabetgenerierung gezeigten Verfahren als
Einheitsvektoren erstellt wurden, so ist der Betrag ihrer Konkatenation ∼ 1, 41. Damit die
Wortvektoren für die Berechnung der Euklidischen Distanz zweier Trainingsvektoren noch
genügend Gewicht haben, um dem SOM -Algorithmus eine Abbildung nach aufgerufenen
Inhalten zu erlauben, sollte die zeitliche Distanz auf einen Betrag dieser Größenordnung
skaliert werden. Es wird ein Maximum von 45 Sekunden angenommen und ein Betrag von
30 Sekunden als gleichwertig zu den Wortvektoren angenommen, so dass bei geringen Zeitdifferenzen die Wortvektoren Ausschlag über Abbildung des Trainingsvektors auf die SOM
geben, große zeitliche Distanzen zwischen Aufrufen aber stärker gewichtet werden:
tscaled =
40
1, 41 max(t, 45)
30
(4.4)
4.3 Komponenten
Für die Trainingsvektoren ergibt sich somit:

zi
 ~


x~i = 
zi+1
 ~


ti








(4.5)
Wobei ~zi den für Wortvektor des Aufrufs an Position i bezeichnet und ti die zeitliche Differenz
zwischen den Aufrufen an den Positonen i und i + 1 bezeichnet. Dieses Verfahren wird durch
die Funktion aggregateContext() der Klasse TimeSensitiveContextAggregator implementiert.
Implementierung:
Die Kontext-Aggregation ist als weiteres Strategie-Entwurfsmuster im-
plementiert, da sie in mehreren Varianten vorliegt, welche einfach austauschbar sein müssen. Die konkreten Klassen GroupedContextAggregator, AveragedContextAggregator, TimeDistanceContextAggregator und TimeSensitiveContextAggregator implementieren die abstrakte Schnittstelle ContextAggregator, welche über die Funktion aggregateContext() zu einer
übergebenen Liste aus nach Benutzer gruppierten Zugriffen eine entsprechende Liste aus
Trainingsvektoren zurückliefert. Diese sind zusätzlich mit der zugehörigen ParsedLogLine
attribuiert, um die Kalibrierung der SOM zu vereinfachen (vergleiche Abschnitt 2.1.4.6:
Kalibrierung).
Die Funktion filterTooSmallGroups() wird dabei verwendet, um Zugriffsgruppen, die für die
Aggregation zu klein sind (siehe oben), herauszufiltern und zu protokollieren.
4.3.3 SOM-Algorithmus
Abbildung 4.3 zeigt das Klassendiagramm des SOM-Algorithmus-Moduls. Es besteht aus
der Hauptklasse SelfOrganizingMap, welche den grundsätzlichen SOM-Algorithmus umsetzt,
sowie mehrere von ihr verwendeten Komponenten. Die hier implementierten SOMs gehen
von einem bidimensionalen Ausgaberaum aus (vergleiche Abschnitt 2.1.2: Ausgaberaum), so
dass die Größe der entstehenden Karte durch die Angabe ihrer Breite und Höhe bestimmt
wird.
Die Implementation des Algorithmus ist bewusst allgemein gehalten und macht daher keine
Annahmen über die Art und Herkunft der Trainingsvektoren. Dadurch können die hier beschriebenen Klassen zur Berechnung beliebiger SOMs verwendet werden und sind nicht auf
die Analyse von Zugriffsprotokollen beschränkt. Die in Abbildung 2.3 gezeigten Iterationsschritte einer Abbildung von Farben wurden beispielsweise ebenfalls mit dieser Implementierung erstellt.
41
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
Abbildung 4.3: Klassendiagramm des SOM-Algorithmus-Moduls
Im Folgenden werden die einzelnen Klassen nach ihrer inhaltlichen Verwendung erläutert.
4.3.3.1 Initialisierung
Die abstrakte Schnittstelle SOMInitializer stellt mittels der Funktion generateInitialValues()
durch ihre konkreten Implementierungen Funktionalitäten bereit, um die Referenzvektoren
der SOM mit sinnvollen Werten zu initialisieren. Anhand der übergebenen Parameter (Breite
und Höhe der SOM, sowie die Liste der zu verwendenden Trainingsvektoren) werden die
nötigen Rahmenbedingungen ermittelt und eine entsprechende Matrix aus Referenzvektoren
zurückgegeben (vergleiche auch Abschnitt 2.1.4.1: Initialisieren der Referenzvektoren).
Zufallsinitialisierung
Die konkrete Klasse RandomInitializer bildet das in Abschnitt 2.1.4.1:
Initialisieren der Referenzvektoren beschriebene Verfahren der Initialisierung mit Zufallswer-
42
4.3 Komponenten
ten ab. Abhängig von der gewählten Programmiersprache und deren Funktionsbibliotheken
kann es nötig sein, generierte Zufallswerte auf den Wertebereich der Trainingsvektoren zu
skalieren. Hierfür bestimmt die Funktion getFVRange()6 den Wertebereich, in dem sie den
minimalen Wert zmin und maximalen Wert zmax ermittelt. Sind diese bekannt und geht man
davon aus, dass der generierte Zufallswert r zwischen 0 und 1 liegt, so ist die Skalierung auf
den gewünschten Wert a ein einfacher Strahlensatz:
a = (zmax − zmin ) · r + zmin
Skalierte Initialisierung
(4.6)
Ausgehend von der Beobachtung, dass Initialwerte in einer belie-
bigen Ordnung die Konvergenz des Trainings der SOM enorm beschleunigen können [Koh01,
Seite 142], erstellt und trainiert die Funktion generateInitialValues() der konkreten Klasse
ScalingInitializer eine vollständige, aber sehr kleine SOM der Größe 4 × 4 Knoten. Dabei
werden die Referenzvektoren dieser SOM durch einen RandomInitializer zufällig initialisiert
und für das Training die selben Trainingsvektoren verwendet, wie sie auch für das Training
der eigentlich hier zu initialisierenden, größeren SOM gebraucht werden.
Dadurch ist die hier entstehende, kleine SOM bereits eine (sehr grobe) Abbildung des Eingangsraums auf den Ausgangsraum und kann nun durch einfache Interpolationstechniken
auf die Größe der zu initialisierenden SOM skaliert werden, um als Initialwerte für deren
Referenzvektoren verwendet zu werden.
Für diese Implementierung wurde eine einfache bilineare Interpolation verwendet. Eine bikubische Interpolation oder andere, höhergradige Verfahren würden zwar zu präziseren Ergebnissen führen, ihre höhere Laufzeit- und Implementierungskomplexität sind hier aber
unnötig, da eine grobe Annäherung an die Ordnung der trainierten SOM bereits ausreicht,
um die Konvergenz des Trainings zu beschleunigen (vergleiche [Sch02, Kapitel 4,6]).
4.3.3.2 BMU-Bestimmung
Durch die abstrakte Klasse BMUSelector wird, ähnlich der Initialisierung, eine Schnittstelle zur Definition von Verfahren zur Auswahl der Best Matching Unit definiert (vergleiche
Abschnitt 2.1.4.3: Bestimmung der Best Matching Unit). Die eigentlichen Verfahren werden
durch die entsprechenden konkreten Klassen implementiert (siehe unten), so dass auch diese
Komponente der SOM -Implementierung mittels des Strategie-Entwurfsmusters eingesetzt
und dynamisch ausgetauscht werden kann.
6
FV ist eine Abkürzung für Feature Vector, die im englischen Sprachgebrauch übliche Bezeichnung für
Trainingsvektoren.
43
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
Die Auswahl der BMU wird hierbei durch die Funktion selectBMU() realisiert, welche die
in der SOM verwendeten Knoten mit ihren Referenzvektoren, sowie das aktuell zu prüfende
Trainingselement als Parameter benötigt.
Brute-Force-Algorithmus
Die konkrete Klasse BruteForceBMUSelector implementiert das
nicht optimierte, in Abschnitt 2.1.4.3: Bestimmung der Best Matching Unit vorgestellte Verfahren, in welchem das aktuelle Trainingselement mit den Referenzvektoren aller Knoten
verglichen wird, um den mit der minimalen Euklidische Distanz zu bestimmen.
Der Name der Klasse leitet sich von so genannten Brute-Force-Algorithmen ab, welche durch
Testen aller Möglichkeiten zu einem Ergebnis kommen [Pre10]. Diese Algorithmen wenden
also „rohe Kraft“ (englisch: „brute force“) an, um eine Lösung zu finden.
Quick-Reaction-Algorithmus
Analog zum BruteForceBMUSelector implementiert die kon-
krete Klasse QuickReactionBMUSelector das in Abschnitt 2.3.2.1: Quick-Reaction-Algorithmus vorgestellte Verfahren zur beschleunigten BMU -Suche.
BMU-Caching
Die konkrete Klasse CachedBMUSelector implementiert das in Abschnitt
2.3.2.2: BMU-Caching vorgestellte Verfahren zur BMU -Suche, bei dem Ergebnisse aus früheren Iterationsschritten zwischengespeichert werden, damit folgende Suchvorgänge nur in
der unmittelbaren Umgebung der zuvor gefundenen BMU suchen müssen.
Sie verwendet eine Instanz des BruteForceBMUSelectors, um in der ersten Iteration die
Best Matching Units zu bestimmen, da hier noch keine zwischengespeicherten Ergebnisse
vorliegen.
4.3.3.3 SelfOrganizingMap
Die abstrakte Hauptklasse dieses Moduls, SelfOrganizingMap, implementiert alle Gemeinsamkeiten zwischen den beiden vorgestellten Varianten des SOM-Algorithmus. Diese unterscheiden sich nur in der Art des Trainings und werden durch die entsprechenden konkreten
Klassen OriginalAlgorithm und BatchAlgorithm implementiert.
Um eine SOM zu erstellen, benötigt der Konstruktor folgende Parameter, welche in entsprechenden lokalen Variablen gespeichert werden:
1. Breite und Höhe der gewünschten Karte (width, height)
2. Eine Liste der zu verwendenden Trainingsvektoren (FV_list)
3. Eine Angabe des gewünschten Lernratenfaktors als Fließkommazahl (learning_rate)
44
4.3 Komponenten
4. Eine Instanz der Klasse SOMInitializer (initializer)
5. Eine Instanz der Klasse BMUSelector (BMU_selector)
Ausgehend von der angegebenen Breite und Höhe wird nun ein zweidimensionales Feld (Array) initialisiert, welches die Referenzvektoren hält und mittels zweidimensionaler Indizierung auch gleichzeitig die Koordinaten der zugehörigen Knoten abbildet (Variable nodes). Die
Knoten sind daher hier durch die Koordinaten-Tupel (0, 0), (0, 1) . . . , (0, w), (1, 0) . . . (h, w)
definiert, wobei h die Höhe und w die Breite der Karte ist.
Das Initialisieren der Referenzvektoren, sowie das Bestimmen der BMU während des Trainings wird hier durch das Strategie-Entwurfsmuster in eigene Klassen ausgelagert. Diese sind
als initializer und BMU_selector Komponenten dieser SOM -Implementation (siehe oben).
Eine einfache Optimierung ist hier zudem durch die Funktion find_neighborhood() gegeben:
Sie bestimmt mittels der Manhattan-Distanz 7 alle Knoten, die ausgehend von einer gegebenen Knotenposition in einem gegebenen Radius um diese liegen. Dadurch lässt sich der
Einfluss des aktuellen Trainingelements in einem Iterationsschritt vereinfacht berechnen, da
die Abstandsfunktion h(t) (siehe Abschnitt 2.1.4.4: Annäherung der Referenzvektoren) nicht
auf alle Knoten angewendet werden muss, sondern nur auf solche, die auch tatsächlich für
eine Beeinflussung in Frage kommen.
Weitere wichtige Funktionen der SelfOrganizingMap-Klasse sind calibrate(), welche das in
Abschnitt 2.1.4.6: Kalibrierung beschriebene Verfahren der Kalibrierung einer SOM implementiert, sowie continue_training(), welche anhand übergebener Iterationszahl und zwischengespeicherter SOM erlaubt, ein bereits angefangenes Training dieser fortzusetzen. Dies
ist insbesondere für große SOMs mit einer hohen Anzahl an Trainingselementen wichtig (wie
in den Experimenten dieser Thesis verwendet), da deren Training über mehrere Tage hinweg
andauern kann (vergleiche Abschnitt 2.3: Verfahren zur Optimierung).
Originaler Algorithmus Die konkrete Klasse OriginalAlgorithm implementiert mit ihrer
Funktion train() das Training des originalen SOM-Algorithmus. Dieses ist in Abschnitt 2.1.4:
Training ausführlich beschrieben.
Batch-SOM Analog zur Klasse OriginalAlgorithm implementiert die konkrete Klasse BatchAlgorithm das Training des in Abschnitt 2.1.5: Alternativer Algorithmus: Die Batch-Map
beschriebenen Batch-SOM-Algorithmus.
7
Die Manhattan-Distanz ist eine vereinfachte Distanz-Rechnung, bei der die Distanz zwischen pei Punkten
als Betragssumme der Differenzen ihrer Koordinaten gesehen wird, welche vor allem für Wegstrecken in
schachbrettartigen Strukturen verwendet wird. Der Name leitet sich von dem gitterförmigen Straßennetz
Manhattans ab [Kra87].
45
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
Abbildung 4.4: Klassendiagramm der Visualisierungs- und Evaluierungs-Module
4.3.4 Visualisierung
Im Folgenden werden zwei Verfahren zur Visualisierung trainierter SOMs und deren Implementierung beschrieben. Abbildung 4.4 zeigt die Klassendiagramme dieses Moduls.
4.3.4.1 Rasterbild-Visualisierung
Die Klasse RasterImageDisplayer implementiert mittels ihrere Funktion printImage() ein
einfaches Verfahren zur Visualisierung einer SOM als ein Rasterbild. Hierbei wird ein leeres
Rasterbild mit den Ausmaßen des Knotengitters einer übergebenen SOM erstellt, so dass
jeder einzelne Knoten einem Pixel des Rasterbildes entspricht. Das in Abschnitt 2.1.4.4:
Annäherung der Referenzvektoren verwendete Beispiel, bei dem die Referenzvektoren dreidimensionale Farbinformationen in RGB-Repräsentation abbilden, erlaubt eine direkte Darstellung der entsprechenden Knoten als Pixel. Aber auch für andere Arten von Referenzvektoren ist eine einfache Darstellung des Clusterings als Graustufenbild möglich:
Anhand einer gegebenen, kalibrierten SOM (repräsentiert durch die Variable map) wird
zuerst durch die Funktion getMaxElementCount() die maximale Anzahl an mit einem Knoten
attribuierten Trainingselementen amax bestimmt (vergleiche Abschnitt 2.1.4.6: Kalibrierung).
Dieser Wert wird nun als Weiß (Graustufenwert mit maximaler Intensität 255) gesetzt;
entsprechend repräsentieren Knoten komplett ohne attribuierte Trainingselemente die Farbe
Schwarz (Graustufenwert mit minimaler Intensität 0). Ausgehend davon ist die Darstellung
eines Knoten mit der Anzahl a an attribuierten Trainingselementen als Graustufenwert c,
welcher für alle Komponenten einer RGB-Farbrepräsentation gilt, ein einfacher Strahlensatz:
c=
46
255
∗a
amax
(4.7)
4.3 Komponenten
Hat eine SOM viele Knoten mit geringer Anzahl an attribuierten Trainingselementen, so
kann es sinnvoll sein, den berechneten Graustufenwert aller Knoten um einen Skalar z nach
oben zu skalieren (mit Weiß als Maximum), um die Sichtbarkeit dieser zu verbessern:
cscaled =



 c∗z |z >1



255
wenn c ∗ z < 255
(4.8)
sonst
(a)
(b)
Abbildung 4.5: Beispiele einer Rasterbild-Visualisierung
Ausgehend von einer derartigen Visualisierung können bereits erste Annahmen über die
Qualität der Projektion des Eingaberaums auf den Ausgaberaum (vergleiche Abschnitt 2.1.2:
Begriffserklärungen) einer SOM getroffen werden: 8 :
Abbildung 4.5a zeigt die Visualisierung einer kalibrierten SOM, die mit Trainingsvektoren
trainiert wurde, welche mit Hilfe des in Abschnitt 4.3.2.4: Semantische Aggregation mit
zeitlicher Unterscheidung beschriebenen Verfahrens erstellt wurden. Die attribuierten Trainingselemente liegen über den Großteil der Karte verstreut, häufig gruppiert in bestimmten
Bereichen (Datenbündel, englisch: Cluster). Dieses Verhalten ist zu erwarten, da die Wortvektoren der für diese Thesis verwendeten Trainingsvektoren nahezu paarweise orthogonal
sind (vergleiche Abschnitt 4.3.2.2: Alphabetgenerierung). Man kann also davon ausgehen,
dass die Trainingsvektoren selbst untereinander ebenfalls unabhängig sind. Dies gilt, solange
zwischen ihnen nicht eine semantische Beziehung besteht, sie also nicht die gleichen Wortvektoren beinhalten. Es lässt sich also folgern, dass eine Projektion dieser Trainingsvektoren
auf eine SOM zur oben ersichtlichen Streuung führt.
8
Hier wird das Wort Projektion verwendet, wenn eine inhaltiche Abbildung der Trainingsvektoren auf die
Referenzvektoren einer SOM gemeint ist, um Verwirrung mit der Visualisierung zu vermeiden, welche
selbst eine grafische Abbildung ist. Vergleiche auch Abschnitt 2.1.4.4: Annäherung der Referenzvektoren
für eine Erklärung der nicht-linearen Projektion des SOM-Algorithmus.
47
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
In Abbildung 4.5b hingegen ballen sich die attribuierten Trainingselemente auf wenige Bereiche. Damit es zu einem solchen Verhalten kommen kann, müssen die verwendeten Trainingsvektoren einander sehr ähnlich sein - die oben formulierte Unabhängigkeit ist also nicht
gegeben. In diesem Fall handelt es sich um die Visualisierung einer SOM, deren Trainingsvektoren durch das in Abschnitt 3.4.3: Zu hohe oder sonst unübliche Zugriffs-Geschwindigkeit
im ersten Absatz beschriebene Verfahren erstellt wurden. Dort wurde bereits gezeigt, dass
dieses Verfahren zu keinen sinnvollen Ergebnissen führen kann.
Berücksichtigt man also die Bedingungen, die an Trainingsvektoren gestellt werden, kann
man bereits anhand der Visualisierung einer SOM erkennen, ob diese eine verwendbare
Projektion des Eingaberaums darstellt.
4.3.4.2 Interaktive Visualisierung der kalibrierten Karte
Abbildung 4.6: Interaktive Darstellung einer kalibrierten SOM
Während oben beschriebene Visualisierung als Rasterbild bereits einen Aufschluss über die
Abbildungsstruktur der SOM gibt, ist daraus nicht ersichtlich, welche Trainingselemente
nun tatsächlich auf welche Knoten abgebildet wurden. Daher wurde mit der Klasse SOMDisplayer eine interaktive Visualisierung implementiert, welche, analog zur Visualisierung
als Rasterbild, die attribuierten Knoten einer übergebenen, kalibrierten SOM als Gitter aus
Quadraten darstellt. Diese sind entsprechend der Anzahl der mit dem jeweiligen Knoten attribuierten Trainingselementen mit einem Graustufenwert eingefärbt (siehe Gleichung 4.7).
Klickt man nun mit der Maus auf eines dieser Quadrate, so werden in einer zusätzlichen
Ansicht alle mit dem durch dieses Quadrat dargestellten Knoten attribuierten Trainingselemente aufgelistet. Dies ist in Abbildung 4.6 dargestellt.
48
4.3 Komponenten
Inbesonders bei gemittelter semantischer Aggregation (siehe Abschnitt 4.3.2.4: Gemittelte
semantische Aggregation) lassen sich hier die semantischen Beziehungen von Seiteninhalten, abgebildet durch den vereinfachten Klickpfad, gut erkennen, da Aufrufe von inhaltlich
zusammengehörigen Inhalten bei dieser Art von Trainingsvektoren örtlich nah beieinander
abgebildet werden (siehe Abschnitt 3.4.1: Klickpfad). Bei anderen Aggregationsverfahren, die
eine wesentlich größere Zahl an Trainingsvektoren erzeugen, wird diese Ansicht aber schnell
unübersichtlich, da die Kalibrierung hier häufig zu viele Trainingselemente mit einem Knoten
attribuiert, als dass inhaltliche Zusammenhänge noch offensichtlich wären.
Im konkreten Fall des für diese Arbeit entwickelten Prototypen wurde diese Visualisierung mit Hilfe der Benutzerschnittstellen-Bibliothek wxPython (eine Kapselung der C++Bibliothek wxWidgets für Python) erstellt. Die hier beschriebene Darstellungsart ist aber
allgemeingültig und damit nicht an diese Bibliothek gebunden.
Darstellung von Kontrolldaten
Zur Auswertung der berechneten Karten wurden per Hand
gefilterte Zugriffsprotokolle als Kontrolldaten geschaffen: Eine Protokolldatei, die ausschließlich protokollierte Zugriffe von Bots beinhaltet, sowie eine Datei, die ausschließlich Zugriffe
von Menschen protokolliert.
Die Klasse BotDisplayer, eine Spezialisierung der Klasse SOMDisplayer, erlaubt nun die
Darstellung dieser Kontrolldaten im Kontext einer auf ungefilterten Protokollen basierten
SOM :
Abbildung 4.7: Einfärbung von Knoten, auf die Kontrolldaten abgebildet werden
Der Konstruktor der Klasse benötigt zwei kalibrierte Karten als Parameter. Die erste ist die
auf üblichem Weg erzeugte Karte, wie sie auch von den oben genannten, anderen Verfahren
visualisiert wird. Bei der zweiten handelt es sich um die gleiche Karte, welche allerdings nachträglich durch die Klasse BotEvaluator (siehe Abschnitt 4.3.5.1: Kalibrierung mit fremden
Daten) mit den Kontrolldaten kalibriert wurde.
49
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
Es wird nun die erste Karte dargestellt, analog zur oben beschriebenen interaktiven Visualsierung, zusätzlich jedoch werden Quadrate, die Knoten repräsentieren, welche auch auf der
zweiten Karte mit Trainingselementen attribuiert sind, rot eingefärbt (siehe Abbildung 4.7).
Dadurch lässt sich leicht erkennen, auf welche Bereiche der Karte die Kontrolldaten abgebildet werden - unterscheiden diese sich signifikant von den Abbildungsbereichen der normalen
Trainingsdaten, so lässt sich bereits anhand dessen ein Kriterium für das Erkennen von Bots
anhand einer Selbstorganisierenden Karte ableiten. Entgegen erster Erwartungen war dies
bei den im Rahmen dieser Arbeit durchgeführten Experimenten aber nicht der Fall.
4.3.5 Evaluierung
Das Modul Evaluierung kapselt alle Verfahren zur Bewertung und Auswertung trainierter
und kalibrierter SOMs. Im Folgenden werden daher gleichermaßen Verfahren beschrieben,
welche als Indikator für die Qualität einer Abbildung durch eine SOM dienen, wie auch
solche, die zur Erkennung von Bots verwendet wurden.
Abbildung 4.4 zeigt die Klassendiagramme dieses Moduls.
4.3.5.1 Kalibrierung mit fremden Daten
Wie zuvor erwähnt, wurden zur Auswertung der SOMs Kontrolldaten erstellt, um das Abbildungsverhalten von ausschließlich menschlichen, beziehungsweise ausschließlich automatisierten Zugriffen kontrolliert testen zu können. Hierfür wurden die zum Training der Karten
verwendeten protokollierten Zugriffe per Hand in solche, bei denen es sich nach den in Abschnitt 3.3: Kriterien zur Erkennung beschriebenen Kriterien eindeutig um automatisiert
erfolgende Zugriffe handelt, und solche, die eindeutig durch menschliche Benutzer getätigt
wurden, sortiert.
Um nun herauszufinden, auf welche Bereiche einer bereits trainierten Karte diese Kontrolldaten abgebildet werden, muss die SOM mit diesen fremden 9 Daten kalibriert werden. Hierfür
wird aus den Kontrolldaten durch das gleiche Verfahren, mit dem auch die Trainingsdaten der
Karte zu Trainingsvektoren aufbereitet wurden, Kontrollvektoren gebildet (siehe Abschnitt
4.3.2.4: Kontext-Aggregation). Die dafür verwendeten Wortvektoren werden allerdings nicht
neu erzeugt, sondern aus dem bereits für das Training der Karte erzeugten Alphabet entnommen. Enthält dieses zu einer in den Kontrolldaten vorkommenden URL keinen Wortvektor,
so kann der entsprechende Aufruf nicht für diese Kalibrierung verwendet werden.
9
Protokollierte Zugriffe, die nicht für das Training der SOM verwendet, sondern nachträglich zu ihrer Bewertung auf die Karte abgebildet werden, werden zum einfacheren Verständnis in dieser Arbeit als fremde
Daten bezeichnet.
50
4.3 Komponenten
Zu den so erstellten Kontrollvektoren werden auf der Karte jeweils Best Matching Units gesucht, welche mit den durch Trainingsvektoren repräsentierten, protokollierten Zugriffen aus
den Kontrolldaten attribuiert werden. Auf diese Weise entsteht eine Karte, die ausschließlich mit den Kontrolldaten kalibriert ist, obwohl diese nicht direkt zum Training der Karte
verwendet wurden.
Dieses Verfahren wird durch die Klasse BotEvaluator implementiert. Ihr Konstruktor erfordert die Knoten einer trainierten SOM (Variable nodes), sowie das zu ihrem Training
verwendete Alphabetverzeichnis (Variable alphabet) als Parameter. Die Funktion getCalibratedMapForLines() berechnet nun eine entsprechende Karte, die mit den an diese Funktion
als Parameter übergebenen Zugriffsprotokollzeilen attribuiert ist.
4.3.5.2 Qualitäts-Berechnung
Da das Endergebnis einer SOM von vielen Parametern abhängt (beispielweise von dem verwendeten Lernratenfaktor, dem initialen Radius oder der Größe der Karte, siehe Abschnitt
2.1.4.4: Annäherung der Referenzvektoren), ist es leicht ersichtlich, dass mit verschiedenen
Parametern trainierte SOMs den gleichen Eingaberaum unterschiedlich genau abbilden können [Koh01, Seite 161]. Dies gilt insbesondere, wenn die Referenzvektoren mit zufälligen
Werten initialisiert wurden.
Die Klasse SomQualityCalculator implementiert daher zwei Funktionen, um die Abbildungsqualität einer trainierten SOM anhand übergebener Knoten und verwendeter Trainingsvektoren zu beurteilen:
Quantisierungsfehler Die Funktion getQuantizationError() berechnet den so genannten
Quantisierungsfehler [Koh01, Seite 161]. Hierbei handelt es sich um das arithmetische Mittel
q der Differenzbeträge aus den n Trainingsvektoren ~xi und den Referenzvektoren der jeweils
zugehörigen BMUs m
~ ci (vergleiche Abschnitt 2.1.4.3: Bestimmung der Best Matching Unit):
q=
Pn
xi
i=0 k~
−m
~ ci k
n
(4.9)
Der Quantisierungsfehler gibt hier also den mittleren Fehler bei der Abbildung der Trainingsvektoren an: Je kleiner dieser Wert, desto präziser die Abbildung.
Topologieerhaltung
Es existieren mehrere Methoden, um die Genauigkeit der topologi-
schen Abbildung (also dem Erhalt der Nachbarschaftsbeziehungen zwischen Elementen des
Eingaberaums) zu bestimmen [Koh01, Seite 161]. Die für diese Arbeit verwendete Methode
51
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
ist der Vergleich des Knotens mit dem Referenzvektor, der zu einem Trainingsvektor die geringste Euklidische Distanz hat (die Best Matching Unit), mit jenem, welcher zum gleichen
Trainingsvektor die zweitkleinste Euklidische Distanz hat (die Second Best Matching Unit).
Sind diese Knoten keine direkten Nachbarn, so wurde die Topologie des Eingaberaums durch
die Abbildung der SOM verzerrt [Koh01, Seite 161].
Bezeichnet der Vektor ~kdi die Knotenposition der Second Best Matching Unit zum Trainingsvektor ~xi auf der Karte und ~kci die der Best Matching Unit, so lässt sich die TopologieErhaltung t als arithmetisches Mittel der Entfernungen dieser zueinander ausdrücken:
t=
Pn
~
i=0 kkdi
− ~kci k
n
(4.10)
Werden die Knoten einer SOM, wie in der in Abschnitt 4.3.3.3: SelfOrganizingMap beschriebenen Implementierung, als zweidimensionales Feld mit ganzzahligen Indizes gehalten, so
gibt es für zwei direkt benachbarte Knoten zwei mögliche Entfernungen: Genau 1, 0, wenn
die Knoten horizontal oder vertikal benachbart sind, oder ∼ 1, 41, wenn sie diagonal gegenüber liegen. Übersteigt t also hier diese Beträge, so sind beim Training der SOM topologische
Abbildungsfehler entstanden.
Auch hier gilt: Je kleiner der Wert, desto präziser die Abbildung.
4.3.5.3 Distanz-Berechnung
Wurde eine der in Abschnitt 4.3.2.4: Kontext-Aggregation beschriebenen Generierungsarten
für Trainingsvektoren verwendet, so bildet eine damit trainierte SOM eine Form des Klickpfad der zu analysierenden Webseite ab (vergleiche Abschnitt 3.3: Kriterien zur Erkennung).
Es werden also sich ähnelnde Zugriffsmuster örtlich nah beieinander auf der Karte abgebildet.
Wird nun analog zur Kalibrierung mit fremden Daten (siehe oben) die Best Matching Units
zu fremden Zugriffsmustern eines menschlichen Benutzers, der sich naturgemäß an diesen
zeitlichen Klickpfad hält, ermittelt, so ist davon auszugehen, dass die BMUs zu aufeinanderfolgenden Zugriffsmustern ebenfalls örtlich nah beieinander liegen. Entsprechend ist zu
erwarten, dass dies bei Zugriffsmustern eines Bots, der diesen Klickpfad nicht befolgt, nicht
der Fall ist. Hieraus lässt sich ein Kriterium zum Erkennen von automatisierten Zugriffen
anhand von auf obige Art trainierten SOMs ableiten:
Ist das arithmetische Mittel a der Knotenabstände von BMUs aufeinander folgender Zugriffsmuster eines Benutzers nah genug an 0 oder einem Abstandsmaximum amax , so handelt es
sich bei dem Benutzer um einen Bot. Ein Abstandsmittel nahe an 0 bedeutet hierbei, dass
die Zugriffsmuster des Benutzers immer wieder zu der selben BMU führen. Das ist nur möglich, wenn auch immer wieder die gleichen Webinhalte aufgerufen werden - beispielsweise
52
4.3 Komponenten
dann, wenn zusätzliche Inhalte wie Bilder und CSS-Stylesheets nicht geladen werden und
der Bot sich nur innerhalb der selben Seite bewegt, etwa weil er zur Navigation benötigtes
JavaScript oder Ähnliches nicht auswertet.
Ist das arithmetische Mittel der Abstände hingegen nahe am Abstandsmaximum amax , so
ruft der Benutzer offensichtlich Inhalte nacheinander auf, die nicht durch den Klickpfad
miteinander verbunden sind, oder die zeitlichen Distanzen der Zugriffe sind für diese Inhalte
unüblich (siehe oben).
Das Abstandsmaximum amax lässt sich nun auf zweierlei Art bestimmen: Entweder, es wird
tatsächlich das Maximum aller auftretenden Abstände von zu Zugriffsmustern gehörenden
BMUs genommen, was eine Auswertung aller protokollierten Zugriffe einer Zugriffsprotokolldatei vor der eigentlichen Analyse erfordern würde. Oder aber es genügt eine Schätzung
dieses Wertes anhand der Größe der verwendeten SOM, etwa durch folgenden Ausdruck:
amax =
h+w
3
(4.11)
Damit lässt sich das Kriterium als folgende aussagenlogische Formel beschreiben:
((a − ǫ) ≤ 0) ∨ ((a + ǫ) ≥ amax )
(4.12)
Wobei ǫ eine Konstante ist, welche die erlaubte Differenz des Abstandsmittels zu 0 oder amax
angibt, bei der der Benutzer noch als Bot gewertet wird.
Alternativ zu einer absoluten Aussage kann der Differenzbetrag der Minimal- beziehungsweise Maximalwerte zum Abstandsmittel auch als pronzentuale Angabe interpretiert werden,
die die Wahrscheinlichkeit angibt, mit der es sich bei einem Benutzer um einen Bot handelt.
Reicht die Präzision der Erkennung nicht für eine automatisierte Auswertung aus, so kann
diese Prozentangabe verwendet werden, um die manuelle Bewertung von Zugriffsprotokollen
zu unterstützen.
Dieses Verfahren wird im Folgenden als mittlere Abbildungsdistanz bezeichnet und vorrangig
zur Bewertung trainierter SOMs verwendet.
53
4 Prototyp einer Zugriffsprotokollanalyse auf Basis von SOMs
54
5 Analyse und Bewertung der Ergebnisse
In diesem Kapitel sind die im Rahmen dieser Arbeit durchgeführte Experimente zur Analyse
der Eignung des SOM -Algorithmus zur Erkennung automatisierter Zugriffe auf Webseiten
im Detail beschrieben und kritisch bewertet.
5.1 Beschreibung der Testumgebung
Dieser Abschnitt beschreibt die zur Durchführung der im Folgenden beschriebenen Experimente verwendete Testumgebung. Sie setzt sich zusammen aus der Plattform, auf der die
entsprechenden SOMs und Trainingsvektoren berechnet wurden, und der Quelle der für die
Experimente verwendeten Zugriffsprotokolle.
5.1.1 Plattform
Tabelle 5.1 listet die relevanten Daten der für die Durchführung der Experimente verwendeten Testplattform auf. Die in diesem Kapitel beschriebene Laufzeiten beziehen sich auf diese
Konfiguration.
Prozessor
R
Intel
CoreTM 2 Duo P8400 @ 2.26GHz
Arbeitsspeicher
3,0 GiB DDR2 SDRAM
Betriebssystem
Ubuntu Linux 9.10 - Karmic Koala
Python-Interpreter
Python 2.6.4
SciPy-Bibliothek
SciPy 0.7.0
Tabelle 5.1: Technische Daten der Testplattform
5.1.2 Quelle der Testdaten
Alle in dieser Arbeit verwendeten Zugriffsprotokolle entstammen der E-Commerce-Webseite
www.cereal-club.de. Hierbei handelt es sich um eine komplexe Webseite mit dynamischen In-
55
5 Analyse und Bewertung der Ergebnisse
halten, welche an vielen Stellen JavaScript und AJAX 10 verwendet, um die Benutzerführung
und Präsentation aufzubereiten.
Die in dieser Arbeit vorgestellte Bewertungen der Ergebnisse müssen also daher vor dem
Hintergrund einer derartigen Seitenstruktur betrachtet werden, lassen sich aber in der Regel
auch auf andere Arten von Webseiten übertragen.
5.2 Präsentation ausgewählter Experimente
Im Folgenden ist eine beispielhafte Auswahl der im Rahmen dieser Arbeit durchgeführten
Experimente aufgeführt. Es handelt sich dabei nur um eine kleine Teilmenge der Experimente, welche die Auswirkungen der vorgestellten Verfahren und ihre Wirksamkeit für die
Erkennung automatisierter Zugriffe zeigen. Ähnliche Experimente, die sich nur in der Wahl
bestimmter Parameter unterscheiden, aber für diese Thesis keine zusätzlichen Informationen
erbringen, sind daher nicht aufgeführt.
Die folgenden Tabellen geben jeweils Aufschluss über die Eigenschaften der jeweiligen SOMs
und ihrer Bedeutung für die Erkennung automatisierter Zugriffe. Sie sind in jeweils drei
Abschnitte unterteilt:
Der erste Abschnitt der jeweiligen Tabellen bezieht sich auf die Konfiguration der SOM und
gibt Angaben über laufzeitrelevante Eigenschaften der verwendeten Trainingsvektoren. Da
das Training der SOMs aufgrund der hohen Laufzeiten an mehreren Stellen unterbrochen
wurde, ist die angegebene Gesamtlaufzeit des Trainings der jeweiligen SOM eine gerundete
Schätzung, ermittelt aus der durchschnittlichen Dauer einzelner Iterationen.
Bei den Angaben zu den Quantisierungs- und Topologiefehlern handelt es sich um Kennzahlen zur Qualität der SOM, welche nach dem in Abschnitt 4.3.5.2: Qualitäts-Berechnung
beschriebenen Verfahren berechnet wurden.
Als letzter Abschnitt der Tabelle folgt die prozentuelle Aussage, wie viele der in den Kontrolldaten aufgeführten Bots durch die jeweilige SOM korrekt erkannt wurden. Zur Bestimmung dieses Wertes wurde das in Abschnitt 4.3.5.3: Distanz-Berechnung beschriebe Verfahren verwendet. Darauf aufbauend gibt die Fehlerquote das Verhältnis von insgesamt als
Bots erkannten Benutzern zu fälschlicherweise als Bots erkannte an. Wurden beispielsweise
vier Benutzer als Bot erkannt, wovon aber zwei tatsächlich menschliche Benutzer waren, so
beträgt die Fehlerquote 50%.
Alle hier vorgestellten SOMs benötigten etwa 1000 Iterationen bis zur Terminierung.
10
AJAX ist ein Akronym für Asynchronous JavaScript and XML und bezeichnet eine Technik, um Seiteninhalte dynamisch nachzuladen, ohne einen erneuten Seitenaufruf zu benötigen [UD07, Seiten 2ff].
56
5.2 Präsentation ausgewählter Experimente
5.2.1 Einfache semantische Aggregation
Größe in Knoten
16 × 16
Anzahl der Trainingsvektoren
111791
Dimension der Trainingsvektoren
78
Gesamtlaufzeit des Trainings
37 Stunden
Filterung der Zugriffsprotokolle
Keine
Topologiefehler
2,36
Quantisierungsfehler
1,46
Erkennung von Bots
13,92%
Fehlerquote
21,42%
Tabelle 5.2: Klickpfad-SOM ohne zeitliche Komponente
Die Trainingsvektoren, die für das Training der in Tabelle 5.2 dargestellten SOM verwendet
wurden, wurden durch das in Abschnitt 4.3.2.4: Einfache semantische Aggregation beschriebene Verfahren erstellt. Den dadurch abgebildeten Zugriffsmustern fehlt also jegliche zeitliche
Information, wodurch ausschließlich das Erkennen von Bots möglich ist, die sich nicht an
den Klickpfad halten (siehe Abschnitt 3.3.1: Klickpfad) oder nur einzelne Inhalte abrufen.
Entsprechend ist es nicht verwunderlich, dass dieses Verfahren nur ∼ 14% aller in den Kontrolldaten aufgeführten Bots als solche erkennt: Viele dieser Bots sind so genannte Crawler,
die zur Analyse (etwa zur Indizierung für Suchmaschinen) einer Webseite den dort angegebenen Hyperlinks folgen und sich somit an den Klickpfad der Seite halten [Wik10a]. Da sich
die meisten dieser Bots als solche zu erkennen geben, kann diese Klickpfad-SOM als unterstüzendes Werkzeug in Kombination mit regelbasierten Verfahren wie einer Auswertung der
Browserkennung und statistischen Analyse der Zugriffsgeschwindigkeit verwendet werden.
Bei den (im Verhältnis zu anderen Experimenten) geringen Fehlerkennungen von menschlichen Benutzern als Bots handelt es sich um zwei Benutzer, die durch die manuelle Eingabe
der URL einer Unterseite den Klickpfad durchbrochen haben, sowie um einen Benutzer aus
dem AOL-Netzwerk11 . Durch das Einführen von Sonderregeln zur Behandlung dieser Art
11
Benutzer aus dem AOL (früher America Online) - Netzwerk beziehen ihren Internetzugang über einen
gemeinsam genutzten Proxy-Server, welcher Inhalte zwischenspeichert und nur unbekannte oder veraltete
Inhalte neu abruft [AO04]. Dadurch können Zugriffe des gleichen AOL-Benutzers auf unterschiedliche
57
5 Analyse und Bewertung der Ergebnisse
von Benutzern, welche sich beispielsweise über die Referer-Information beziehungsweise die
Browserkennung erkennen lassen, könnten auch diese Fehlerkennungen verhindert werden.
5.2.2 Gemittelte semantische Aggregation
Größe in Knoten
16 × 16
Anzahl der Trainingsvektoren
4395
Dimension der Trainingsvektoren
150
Gesamtlaufzeit des Trainings
6 Stunden
Filterung der Zugriffsprotokolle
Keine
Topologiefehler
2,23
Quantisierungsfehler
0,99
Erkennung von Bots
20,25%
Fehlerquote
44,82%
Tabelle 5.3: Gemittelte Klickpfad-SOM ohne zeitliche Komponente
Für die in Tabelle 5.3 dargestellte SOM gelten die gleichen Beurteilungen, wie für die zuvor genannte. Die Trainingsvektoren wurden hier mit dem in Abschnitt 4.3.2.4: Gemittelte
semantische Aggregation vorgestellten Verfahren erstellt. Zugriffsmuster von Bots sind also
gleichwertig zu denen von menschlichen Benutzern abgebildet.
Anders als zuvor vermutet, bereitet diese gleichwertige Abbildung keine Probleme bei der
Erkennung. Im Gegenteil wird durch dieses Verfahren ein größerer Anteil der in den Kontrolldaten aufgeführten Bots erkannt, als durch die einfache semantische Aggregation. Allerdings
ist hier auch die Fehlerquote deutlich höher, was sich dadurch erklären lässt, dass menschliche Benutzer mit unregelmäßigem Verhalten (etwa AOL-Benutzer) aufgrund der gemittelten
Aggregation eher auf Knoten abgebildet werden, welche zuvor durch in den Trainingsdaten
vorhandene Bot-Zugriffe geprägt wurden. Diese lassen sich gut in der Visualisierung erkennen: Die außen und mittig liegenden, grau eingefärbten Knoten entsprechen den Zugriffsmustern von Bots, während die Ballung von hell dargestellten Knoten im unteren Bereich
der Karte aus dem Zugriffsverhalten von menschlichen Benutzern resultiert. Dadurch ist
die mittlere Abbildungsdistanz aufeinanderfolgender Zugriffe dieser abweichenden Benutzer
höher als die solcher, die sich ausschließlich in der unteren Ballung bewegen.
IP-Adressen verteilt sein und das Anfordern ganzer Inhaltsgruppen überspringen, was für diese Analyse
wie ein Verlassen des Klickpfades wirkt.
58
5.2 Präsentation ausgewählter Experimente
Dementsprechend sind über 60% der fehlerhaft als Bot erkannten Zugriffe solche aus dem
AOL-Netzwerk.
Anhand der Visualisierung lässt sich zudem eine große Streuung der mit Trainingselemente
attribuierten Knoten erkennen. Daraus folgt, dass diese SOM für die geringe Anzahl an
Trainingsvektoren zu groß ist und eine kleinere Karte eine präzisere Abbildung darstellen
könnte. Der Topologiefehler ist mit einem Wert von 2,23 (Werte im Bereich von 1,0 bis 1,41
wären optimal, vergleiche auch Abschnitt 4.3.5.2: Topologieerhaltung) allerdings (besonders
im Vergleich zu unten aufgeführten Experimenten) noch unbedenklich. Der Zeitaufwand
einer erneuten Berechnung dieser SOM ist daher nicht gerechtfertigt.
5.2.3 Semantische Aggregation mit zeitlicher Unterscheidung
Größe in Knoten
32 × 24
Anzahl der Trainingsvektoren
20181
Dimension der Trainingsvektoren
21
Gesamtlaufzeit des Trainings
30 Stunden
Filterung der Zugriffsprotokolle
Keine
Topologiefehler
9,5
Quantisierungsfehler
0,76
Erkennung von Bots
3,79%
Fehlerquote
25%
Tabelle 5.4: Klickpfad-SOM mit Zeitdistanz-Unterscheidung 1
In Tabelle 5.4 ist eine SOM dargestellt, welche mit Trainingsvektoren trainiert wurde, die
durch das in Abschnitt 4.3.2.4: Semantische Aggregation mit zeitlicher Unterscheidung vorgestellte Verfahren erstellt wurde. Es ist offensichtlich, dass dieses Verfahren nicht zum erwarteten Präzisionsgewinn durch Berücksichtigung der zeitlichen Komponente führt, was
sich durch eine Reihe von Gründen erklären lässt:
Die Größe der SOM sorgt für eine sehr starke Streuung nur leicht verschiedener Trainingselemente, was der sehr große Topologiefehler von 9,5 verdeutlicht. Dadurch kommt es, wie
oben beschrieben, zu Unregelmäßigkeiten in der mittleren Abbildungsdistanz.
Dies allein erklärt aber noch nicht die verschwindend geringe Erkennungsquote. Der Grund
hierfür liegt im Verfahren selbst: Werden Zugriffe auf gleiche Inhalte mit unterschiedlicher,
59
5 Analyse und Bewertung der Ergebnisse
zeitlicher Distanz auf völlig verschiedene Wortvektoren abgebildet, so ist die Wahrscheinlichkeit hoch, dass auch daraus entstehende Trainingsvektoren für gleiche Zugriffsmuster
verschieden sind. Der SOM -Algorithmus bildet diese also auf verschiedene Bereiche der Karte ab, die mitunter weit voneinander entfernt sein können.
Je nach der zeitlichen Distanz von Zugriffen eines Benutzers kann dies dazu führen, dass
zwei aufeinander folgende Zugriffe auf weit voneinander entfernte Knoten abgebildet werden,
obwohl die Zugriffe dem Klickpfad folgen. Die mittlere Abbildungsdistanz ist hier daher kein
Kriterium für die Erkennung automatisierter Zugriffe.
Größe in Knoten
16 × 16
Anzahl der Trainingsvektoren
111734
Dimension der Trainingsvektoren
129
Gesamtlaufzeit des Trainings
32 Stunden
Filterung der Zugriffsprotokolle
Keine
Topologiefehler
5,16
Quantisierungsfehler
1,51
Erkennung von Bots
1,26%
Fehlerquote
92,85%
Tabelle 5.5: Klickpfad-SOM mit Zeitdistanz-Unterscheidung 2
Tabelle 5.5 zeigt eine SOM, bei der durch die Verkleinerung der Größe und Erhöhung der
Dimension der Trainingsvektoren versucht wurde, die im vorherigen Abschnitt beschriebenen
Probleme zu korrigieren.
Obwohl dies erwartungsgemäß zu einer Verringerung des Topologiefehlers führte, ist hier die
Erkennungsquote noch schlechter als zuvor. Zusammen mit einer fast einhundertprozentigen
Fehlerquote zeigt dies, dass die semantische Aggregation mit zeitlicher Unterscheidung für
die Erkennung automatisierter Zugriffe gänzlich ungeeignet ist.
In Tabelle 5.6 ist ein letzter Versuch gezeigt, mit dieser Art von Trainingsvektorgenerierung
verwertbare Resultate zu erzeugen. Hierfür wurden die Zugriffsprotokolle so gefiltert, dass
nur Zugriffe auf HTML-Inhalte für die Analyse berücksichtigt werden. Protokollierte Aufrufe
von JavaScript-Dateien, CSS-Stylesheets und Bilder wurden also ignoriert.
60
5.2 Präsentation ausgewählter Experimente
Größe in Knoten
16 × 16
Anzahl der Trainingsvektoren
20181
Dimension der Trainingsvektoren
75
Gesamtlaufzeit des Trainings
9 Stunden
Filterung der Zugriffsprotokolle
Nur HTML
Topologiefehler
3,66
Quantisierungsfehler
0,82
Erkennung von Bots
15.18%
Fehlerquote
82,08%
Tabelle 5.6: Klickpfad-SOM mit Zeitdistanz-Unterscheidung 2
Durch eine derartige Beschränkung wurde erwartet, dass die oben beschriebene Streuung
weniger ins Gewicht falle und eine Auswertung durch Berechnung der mittleren Abbildungsdistanz vereinfacht würde.
Dies ist aber nur zum Teil der Fall: Zwar wird eine größere Anzahl der in den Kontrolldaten
aufgeführten Bots erkannt, die Fehlerquote ist mit 82% allerdings noch immer unbrauchbar
hoch. Vor allem, da es sich beim Großteil der fälschlicherweise als Bot erkannten Benutzer
um menschliche Benutzer mit gewöhnlichem Zugriffsverhalten handelt (im Gegensatz zu
oben beschriebenen Ergebnissen auf Basis einer Aggregation ohne zeitliche Komponente),
unterstreicht dieses Ergebnis nur die zuvor gefällte Beurteilung der semantische Aggregation
mit zeitlicher Unterscheidung als ungeeignet.
5.2.4 Zeitsensitive semantische Aggregation
Die Trainingsvektoren, die zum Training der in Tabelle 5.7 vorgestellten SOM verwendet
wurden, sind mit dem in Abschnitt 4.3.2.4: Zeitsensitive semantische Aggregation beschriebenen Verfahren erstellt worden. Dabei wird die zeitliche Distanz zwischen zwei Zugriffen
eines Benutzers als zusätzliche Dimension in die Trainingsvektoren skaliert eingefügt, statt
wie im oben verwendeten Verfahren für unterschiedliche Zeitdistanzen auch verschiedene
Trainingsvektoren zu generieren.
Wird diese Zeitdistanz dabei auf einen Wert skaliert, so dass sie gleichwertig zu den die
aufgerufenen Inhalte repräsentierenden Wortvektoren ist, so werden Trainingsvektoren zu
inhaltlich verwandten Zugriffsmustern durch den SOM -Algorithmus auch örtlich nah bei-
61
5 Analyse und Bewertung der Ergebnisse
Größe in Knoten
16 × 16
Anzahl der Trainingsvektoren
112446
Dimension der Trainingsvektoren
21
Gesamtlaufzeit des Trainings
17 Stunden
Filterung der Zugriffsprotokolle
Keine
Topologiefehler
5,40
Quantisierungsfehler
1,05
Erkennung von Bots
28,74%
Fehlerquote
34,28%
(17,85%)
Tabelle 5.7: Klickpfad-SOM mit integrierter Zeitdifferenz 1
einander abgebildet (vergleiche Abschnitt 3.4.3: Zu hohe oder sonst unübliche Zugriffs-Geschwindigkeit).
In der hier gezeigten SOM ist dies der Fall. Da sich so eine Abbildung des Klickpfads
menschlicher Benutzer mit integrierter, zeitlicher Information bildet, weist diese SOM die
im Vergleich zu anderen höchste Erkennungsquote auf: Fast ein Drittel der in den Kontrolldaten aufgeführten Bots wurden erkannt. Nicht erkannte Bots sind hierbei, wie auch
bei der einfachen semantischen Aggregation ohne zeitliche Komponente, zu großen Teilen
Crawler, deren Zugriffsverhalten dem von Menschen sehr ähnlich ist, aber durch einfache,
regelbasierte Verfahren erkannt werden können.
Die Fehlerquote ist hier ebenfalls vergleichbar mit der der einfachen semantischen Aggregation. Ignoriert man bei der Berechnung der Fehlerquote zudem Zugriffe von Benutzern
aus dem AOL-Netzwerk (siehe oben), so reduziert sie sich auf 17,85% (in Tabelle 5.7 in
Klammern angegeben).
Die Präzision dieses Verfahren ist jedoch nicht ausreichend, um Zugriffe durch Bots automatisiert zu behandeln, da hier zu viele menschliche Benutzer fälschlicherweise als Bots
klassifiziert würden. Für eine Unterstützung einer manuellen Auswertung von Zugriffsprotokollen ist es aber durchaus verwertbar.
Tabelle 5.8 zeigt eine SOM, die verdeutlich, wie entscheidend auch die Betrachtung der
Visualisierung für die Bewertung ist. Der optimale Betrag des Topologiefehlers von 1,0 und
die fast einhundertprozentige Erkennung von Bots lässt zunächst ein traumhaftes Ergebnis
62
5.2 Präsentation ausgewählter Experimente
Größe in Knoten
16 × 16
Anzahl der Trainingsvektoren
112446
Dimension der Trainingsvektoren
53
Gesamtlaufzeit des Trainings
17 Stunden
Filterung der Zugriffsprotokolle
Keine
Topologiefehler
1,0
Quantisierungsfehler
10,21
Erkennung von Bots
93,75%
Fehlerquote
85,40%
Tabelle 5.8: Klickpfad-SOM mit integrierter Zeitdifferenz 2
vermuten. Lediglich die Fehlerquote von 85% und der Quantisierungsfehler von 10,21 geben
Anlass zur Verwunderung.
Durch einen Blick auf die Visualisierung ist aber schnell klar, dass hier durch die Kalibrierung
nur ein einziger Knoten mit allen Trainingselementen attribuiert wurde. Dies ist dadurch zu
erklären, dass die zeitliche Distanz zwischen zwei Zugriffen hier nicht ausreichend skaliert
und daher überrepräsentiert wurde. Die Wortvektoren, welche die aufgerufenen Inhalte repräsentieren, fallen somit für die Berechnung der Euklidischen Distanz zweier Trainingsvektoren nicht mehr ins Gewicht, was die durch den SOM -Algorithmus erzielte Abbildung auf
eine eindimensionale Information reduziert (vergleiche Abschnitt 3.4.3: Zu hohe oder sonst
unübliche Zugriffs-Geschwindigkeit).
63
5 Analyse und Bewertung der Ergebnisse
64
6 Zusammenfassung und Ausblick
In diesem Kapitel wird die vorliegende Arbeit zusammenfassend dargestellt und eine abschließende Beurteilung der Ergebnisse präsentiert. Es wird auf aus den Experimenten offensichtliche Probleme bei der Verwendung des SOM -Algorithmus zur Erkennung automatisierter Zugriffe eingegangen und es werden Anregungen zur eventuellen Behebung dieser
durch zukünftige Arbeiten gegeben.
6.1 Zusammenfassung
Um die Eignung des Self-Organizing Map-Algorithmus zur Erkennung von automatisierten
Zugriffen auf Webseiten zu ermitteln, wurde in der vorliegenden Arbeit eine detaillierte Erklärung des Algorithmus präsentiert. Es wurden die Eigenschaften des Verfahrens, seine Besonderheiten und sinnvolle Varianten zu Teilaspekten gezeigt. Mehrere Methoden zur Abbildung von Zugriffsprotokollen des Apache-Webservers durch den SOM -Algorithmus wurden
erarbeitet und nach ihrer Eignung zur Klassifizierung von protokollierten Zugriffsmustern
menschlicher und automatisierter Benutzer (Bots) bewertet. Anhand einer beispielhaften
Software-Architektur wurde zudem gezeigt, wie eine Software zur Verwendung dieser Verfahren und ihrer Bewertung gestaltet werden kann.
6.2 Bewertung der Ergebnisse
In diesem Abschnitt werden die durch das in der vorliegenden Arbeit präsentierte Verfahren
gewonnenen Erkenntnisse kritisch betrachtet und auf dabei aufgetretene Probleme erläutert.
6.2.1 Präzision
Die in Abschnitt 5.2: Präsentation ausgewählter Experimente vorgestellten Auswertungen
zeigen deutlich auf, dass der SOM -Algorithmus nicht für eine automatisierte Erkennung
und anschließender Verarbeitung von automatisierten Zugriffen auf Webseiten geeignet ist.
Insbesondere die mangelnde Erkennungsquote von Bots (im besten Fall nicht einmal 30%),
65
6 Zusammenfassung und Ausblick
zusammen mit häufigen Fehlerkennungen, erfordern eine anschließende, manuelle Bewertung
der Ergebnisse des vorgestellten Verfahrens.
Im genannten Abschnitt wurde allerdings auch gezeigt, dass der größte Teil nicht erkannter
Bots und fälschlicherweise als Bots erkannter, menschlicher Benutzer durch eine Kombination
des SOM -Verfahrens mit regelbasierten Kriterien (vergleiche Abschnitt 3.3: Kriterien zur
Erkennung) ausgeschlossen werden kann. Da in dieser Arbeit aber ausschließlich die Eignung
des SOM -Algorithmus als Alternative zu regelbasierten Verfahren ermittelt wurde, müsste
eine Kombination beider weiter untersucht werden, um eine endgültige Aussage zu fällen.
Der SOM -Algorithmus ist zudem kein klassisches Klassifizierungsverfahren an sich, sondern ist lediglich dazu geeignet, komplexe Quelldaten in eine einfachere, niederdimensionale
Darstellungsform zu übertragen. Daher ist nicht auszuschließen, dass es neben den in dieser Arbeit vorgestellten Verfahren noch andere Möglichkeiten gibt, Zugriffsprotokolle durch
SOMs abzubilden und auszuwerten.
Aufgrund der in dieser Arbeit gewonnenen Erkenntnisse kann ein weiteres Studium des SOM Algorithmus zu diesem Zweck aber nicht empfohlen werden. Es ist anzunehmen, dass die
Verwendung von anderen Verfahren, die direkt für die Klassifizierung von hochdimensionalen
Daten konzipiert wurden (zum Beispiel Support Vector Maschines, siehe [Kar08] für eine
detaillierte Erläuterung des Verfahrens), deutlich zielführender ist.
6.2.2 Laufzeit
Die mit der in dieser Arbeit präsentierten Beispielimplementation berechneten Experimente
benötigten für das Training einer SOM mehrere Stunden Berechnungszeit, in einigen Fällen sogar mehrere Tage. Da das zur Erstellung der Trainingsvektoren benötigte Alphabet
von Wortvektoren (vergleiche Abschnitt 4.3.2.2: Alphabetgenerierung) direkt von der Anzahl
eindeutiger Seiteninhalte abhängt, müsste eine entsprechende SOM bei jeder Änderung der
Seitenstruktur neu trainiert werden. Für Webseiten, deren Struktur sich regelmäßig ändert
(etwa bei solchen mit dynamischen oder tagesaktuellen Inhalten), ist eine solche Trainingszeit
nicht aktzeptabel.
Allerdings ist bei dieser Betrachtung zu berücksichtigen, dass der im Rahmen dieser Arbeit
entwickelte Prototyp auch nur in geringem Maße algorithmisch in Bezug auf die Laufzeit
optimiert wurde (siehe Abschnitt 2.3: Verfahren zur Optimierung). Eine Implementierung
der algorithmischen Kernelemente in C oder einer vergleichbaren, hardwarenahen Sprache,
würde die Laufzeit des Verfahrens stark reduzieren. Wie bereits in Abschnitt 4.1.2: Wahl
der Programmiersprache beschrieben, kann dies auch durch einzelne Module geschehen, welche von der Python-Implementierung des Prototyps verwendet werden können. Zusätzlich
zu solchen Optimierungen ist es möglich, den SOM -Algorithmus und die zu ihm gehören-
66
6.3 Abschließende Bewertung des Verfahrens
den Verfahren zu parallelisieren, so dass die benötigten Berechnungen auf mehrere CPUs
aufgeteilt werden können. Dadurch kann, bei geschickter Skalierung, eine weitere, enorme
Laufzeitreduzierung erzielt werden. Eine entsprechende Architektur ist in [LAR99] vorgestellt.
6.3 Abschließende Bewertung des Verfahrens
Trotz der oben beschriebenen Probleme ist der SOM -Algrithmus grundsätzlich geeignet, um
komplexe und nur schwer lesbare Zugriffsprotokolle eines Webservers in ein von Menschen
les- und auswertbares Format zu bringen. Die damit verbundenen Verfahren zur Erkennung
automatisierter Zugriffe sind zwar nicht geeignet, um Protokolldateien automatisiert auszuwerten, können aber eine manuelle Beurteilung von Zugriffsmustern durch eine Aufbereitung
und erste Bewertung stark erleichtern.
Für einen entsprechenden Produktiveinsatz ist aber insbesondere eine Optimierung der Laufzeit und der Präsentation der Ergebnisse des hier vorgestellten Prototyps nötig.
67
6 Zusammenfassung und Ausblick
68
A Beispiel eines automatisierten Benutzers
Dies ist ein Ausschnitt der zur Beurteilung des vorgestellten Verfahrens verwendeten Kontrolldaten. Es handelt sich um die protokollierten Zugriffe eines einzelnen, offensichtlich
automatisierten Benutzers. Die Protokollzeilen wurden zur besseren Lesbarkeit auf die wesentlichen Informationen gekürzt.
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
-
[22:16:33]
[22:16:33]
[22:16:33]
[22:16:35]
[22:16:36]
[22:16:36]
[22:16:37]
[22:16:37]
[22:16:37]
[22:16:38]
[22:16:38]
[22:16:39]
[22:16:39]
[22:16:39]
[22:16:40]
[22:16:41]
[22:16:41]
[22:16:41]
[22:16:42]
[22:16:42]
[22:16:42]
[22:16:42]
[22:16:42]
[22:16:44]
[22:16:44]
[22:16:44]
[22:16:44]
[22:16:45]
[22:16:46]
[22:16:46]
[22:16:49]
[22:16:50]
[22:16:52]
[22:16:52]
[22:16:54]
[22:16:55]
[22:16:55]
[22:16:55]
[22:16:55]
[22:16:56]
[22:16:56]
[22:16:57]
[22:16:57]
[22:16:59]
[22:16:59]
[22:17:00]
[22:17:00]
[22:17:00]
[22:17:01]
[22:17:01]
[22:17:03]
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
/ HTTP/1.1" 301 194 "-" "Java/1.6.0_16"
/ HTTP/1.1" 200 19825 "-" "Java/1.6.0_16"
/ HTTP/1.1" 200 19841 "-" "Java/1.6.0_16"
/muesli/%22 HTTP/1.1" 404 19791 "-" "Java/1.6.0_16"
/muesli/%22 HTTP/1.1" 404 19771 "-" "Java/1.6.0_16"
/faq HTTP/1.1" 200 20583 "-" "Java/1.6.0_16"
/faq HTTP/1.1" 301 200 "-" "Java/1.6.0_16"
/imprint HTTP/1.1" 200 12885 "-" "Java/1.6.0_16"
/faq HTTP/1.1" 200 20583 "-" "Java/1.6.0_16"
/js/new_slotmachine.js HTTP/1.1" 200 7206 "-" "Java/1.6.0_16"
/muesli-blog/index.php HTTP/1.1" 301 - "-" "Java/1.6.0_16"
/imprint HTTP/1.1" 301 208 "-" "Java/1.6.0_16"
/imprint HTTP/1.1" 200 12885 "-" "Java/1.6.0_16"
/muesli-blog/ HTTP/1.1" 200 95281 "-" "Java/1.6.0_16"
/js/new_slotmachine.js HTTP/1.1" 200 7206 "-" "Java/1.6.0_16"
/terms HTTP/1.1" 301 204 "-" "Java/1.6.0_16"
/terms HTTP/1.1" 200 17609 "-" "Java/1.6.0_16"
/terms HTTP/1.1" 200 17609 "-" "Java/1.6.0_16"
/firmenkunden HTTP/1.1" 301 218 "-" "Java/1.6.0_16"
/firmenkunden HTTP/1.1" 302 133 "-" "Java/1.6.0_16"
/firmenkunden HTTP/1.1" 302 133 "-" "Java/1.6.0_16"
/firmenkunden/5/weihnachtsmuesli.html HTTP/1.1" 200 12974 "-" "Java/1.6.0_16"
/firmenkunden/5/weihnachtsmuesli.html HTTP/1.1" 200 12974 "-" "Java/1.6.0_16"
/js/main.js HTTP/1.1" 200 7746 "-" "Java/1.6.0_16"
/js/main.js HTTP/1.1" 200 7746 "-" "Java/1.6.0_16"
/presse HTTP/1.1" 200 18248 "-" "Java/1.6.0_16"
/muesli-blog/index.php HTTP/1.1" 301 - "-" "Java/1.6.0_16"
/muesli-blog/ HTTP/1.1" 200 95281 "-" "Java/1.6.0_16"
/muesli-blog HTTP/1.1" 301 246 "-" "Java/1.6.0_16"
/muesli-blog/ HTTP/1.1" 200 95281 "-" "Java/1.6.0_16"
/presse HTTP/1.1" 301 206 "-" "Java/1.6.0_16"
/presse HTTP/1.1" 200 18248 "-" "Java/1.6.0_16"
/muesli/cereal_creator HTTP/1.1" 301 236 "-" "Java/1.6.0_16"
/muesli/cereal_creator HTTP/1.1" 200 92292 "-" "Java/1.6.0_16"
/muesli-blog/xmlrpc.php HTTP/1.1" 200 42 "-" "Java/1.6.0_16"
/js/drag_drop_animation.js HTTP/1.1" 200 3105 "-" "Java/1.6.0_16"
/muesli-blog/?p=3056 HTTP/1.1" 301 - "-" "Java/1.6.0_16"
/muesli-blog/2009/10/halloween-musli-gruseln-und-gewinnen/ HTTP/1.1" 200 47712 "-" "Java/1.6.0_16"
/js/draggable_ext.js HTTP/1.1" 200 32348 "-" "Java/1.6.0_16"
/muesli/cereal_lounge HTTP/1.1" 302 234 "-" "Java/1.6.0_16"
/muesli/cereal_creator HTTP/1.1" 200 92287 "-" "Java/1.6.0_16"
/muesli/cereal_show HTTP/1.1" 301 230 "-" "Java/1.6.0_16"
/muesli/cereal_show HTTP/1.1" 200 35166 "-" "Java/1.6.0_16"
/js/drag_drop_animation.js HTTP/1.1" 200 3105 "-" "Java/1.6.0_16"
/js/draggable_ext.js HTTP/1.1" 200 32348 "-" "Java/1.6.0_16"
/muesli/cereal_lounge HTTP/1.1" 302 236 "-" "Java/1.6.0_16"
/muesli/zutaten HTTP/1.1" 301 222 "-" "Java/1.6.0_16"
/muesli/cereal_show HTTP/1.1" 200 35166 "-" "Java/1.6.0_16"
/muesli/zutaten HTTP/1.1" 200 258585 "-" "Java/1.6.0_16"
/muesli/zutaten HTTP/1.1" 200 258585 "-" "Java/1.6.0_16"
/cereal_pedia/2/fertigmueslis.html HTTP/1.1" 301 260 "-" "Java/1.6.0_16"
69
A Beispiel eines automatisierten Benutzers
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
70
-
[22:17:04]
[22:17:05]
[22:17:08]
[22:17:10]
[22:17:11]
[22:17:12]
[22:17:12]
[22:17:13]
[22:17:15]
[22:17:15]
[22:17:15]
[22:17:16]
[22:17:16]
[22:17:17]
[22:17:19]
[22:17:19]
[22:17:19]
[22:17:20]
[22:17:20]
[22:17:21]
[22:17:23]
[22:17:23]
[22:17:25]
[22:17:25]
[22:17:25]
[22:17:25]
[22:17:26]
[22:17:27]
[22:17:27]
[22:17:30]
[22:17:31]
[22:17:32]
[22:17:32]
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
/cereal_pedia/2/fertigmueslis.html HTTP/1.1" 200 11355 "-" "Java/1.6.0_16"
/muesli/faq/%22 HTTP/1.1" 404 19856 "-" "Java/1.6.0_16"
/cereal_pedia/2/fertigmueslis.html HTTP/1.1" 200 11355 "-" "Java/1.6.0_16"
/muesli/imprint/%22 HTTP/1.1" 404 19829 "-" "Java/1.6.0_16"
/muesli/faq/%22 HTTP/1.1" 404 19820 "-" "Java/1.6.0_16"
/muesli/imprint/%22 HTTP/1.1" 404 19832 "-" "Java/1.6.0_16"
/muesli/terms/%22 HTTP/1.1" 404 19844 "-" "Java/1.6.0_16"
/cereal_pedia/3/sportlermueslis.html HTTP/1.1" 200 14069 "-" "Java/1.6.0_16"
/images/bookmarking/facebook.png HTTP/1.1" 200 2938 "-" "Java/1.6.0_16"
/muesli-blog/feed HTTP/1.1" 301 - "-" "Java/1.6.0_16"
/muesli/firmenkunden/%22 HTTP/1.1" 404 19906 "-" "Java/1.6.0_16"
/firmenkunden/1/firmenmuesli.html HTTP/1.1" 301 258 "-" "Java/1.6.0_16"
/muesli-blog/feed/ HTTP/1.1" 200 55408 "-" "Java/1.6.0_16"
/firmenkunden/1/firmenmuesli.html HTTP/1.1" 200 16301 "-" "Java/1.6.0_16"
/firmenkunden/2/einzelhandel.html HTTP/1.1" 301 258 "-" "Java/1.6.0_16"
/firmenkunden/2/einzelhandel.html HTTP/1.1" 200 14052 "-" "Java/1.6.0_16"
/muesli-blog/kundenmeinungen HTTP/1.1" 301 - "-" "Java/1.6.0_16"
/firmenkunden/3/gastronomie_und_hotellerie.html HTTP/1.1" 301 286 "-" "Java/1.6.0_16"
/muesli-blog/kundenmeinungen/ HTTP/1.1" 200 42982 "-" "Java/1.6.0_16"
/firmenkunden/3/gastronomie_und_hotellerie.html HTTP/1.1" 200 15471 "-" "Java/1.6.0_16"
/muesli-blog/partner HTTP/1.1" 301 - "-" "Java/1.6.0_16"
/muesli-blog/partner/ HTTP/1.1" 200 46672 "-" "Java/1.6.0_16"
/firmenkunden/4/mueslipromotion.html HTTP/1.1" 301 264 "-" "Java/1.6.0_16"
/muesli-blog/sponsoring HTTP/1.1" 301 - "-" "Java/1.6.0_16"
/muesli-blog/sponsoring/ HTTP/1.1" 200 43556 "-" "Java/1.6.0_16"
/firmenkunden/4/mueslipromotion.html HTTP/1.1" 200 15834 "-" "Java/1.6.0_16"
/muesli-blog/wp-includes/wlwmanifest.xml HTTP/1.1" 200 1053 "-" "Java/1.6.0_16"
/firmenkunden/5/weihnachtsmuesli.html HTTP/1.1" 301 266 "-" "Java/1.6.0_16"
/firmenkunden/5/weihnachtsmuesli.html HTTP/1.1" 200 12974 "-" "Java/1.6.0_16"
/images/bookmarking/facebook.png HTTP/1.1" 200 2938 "-" "Java/1.6.0_16"
/muesli/presse/%22 HTTP/1.1" 404 19799 "-" "Java/1.6.0_16"
/presse/10/bildmaterial_zum_download.html HTTP/1.1" 301 274 "-" "Java/1.6.0_16"
/presse/10/bildmaterial_zum_download.html HTTP/1.1" 200 23596 "-" "Java/1.6.0_16"
B Beispiel eines menschlichen Benutzers
Dies ist ein Ausschnitt der zur Beurteilung des vorgestellten Verfahrens verwendeten Kontrolldaten. Es handelt sich um die protokollierten Zugriffe eines einzelnen, menschlichen
Benutzers. Die Protokollzeilen wurden zur besseren Lesbarkeit auf die wesentlichen Informationen gekürzt.
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
-
[17:48:37]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:38]
[17:48:39]
[17:50:02]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
[17:50:03]
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
/firmenkunden/5/weihnachtsmuesli.html HTTP/1.1" 200 4403 "-" "Mozilla/4.0 ..."
/sf/prototype/js/scriptaculous.js HTTP/1.1" 200 2404 "-" "Mozilla/4.0 ..."
/js/main.js HTTP/1.1" 200 7746 "-" "Mozilla/4.0 ..."
/sf/prototype/js/builder.js HTTP/1.1" 200 4638 "-" "Mozilla/4.0 ..."
/css/news_comment.css HTTP/1.1" 200 1460 "-" "Mozilla/4.0 ..."
/css/b2b.css HTTP/1.1" 200 322 "-" "Mozilla/4.0 ..."
/sf/prototype/js/effects.js HTTP/1.1" 200 37872 "-" "Mozilla/4.0 ..."
/css/tcc.css HTTP/1.1" 200 35118 "-" "Mozilla/4.0 ..."
/sf/prototype/js/prototype.js HTTP/1.1" 200 71261 "-" "Mozilla/4.0 ..."
/sf/prototype/js/slider.js HTTP/1.1" 200 10403 "-" "Mozilla/4.0 ..."
/sf/prototype/js/controls.js HTTP/1.1" 200 28980 "-" "Mozilla/4.0 ..."
/sf/prototype/js/dragdrop.js HTTP/1.1" 200 30645 "-" "Mozilla/4.0 ..."
/images/Basics.jpg HTTP/1.1" 200 1326 "-" "Mozilla/4.0 ..."
/images/Cereals.jpg HTTP/1.1" 200 1417 "-" "Mozilla/4.0 ..."
/images/BasicsRed.jpg HTTP/1.1" 200 1547 "-" "Mozilla/4.0 ..."
/images/CerealsRed.jpg HTTP/1.1" 200 1685 "-" "Mozilla/4.0 ..."
/images/Choco.jpg HTTP/1.1" 200 1336 "-" "Mozilla/4.0 ..."
/images/ChocoRed.jpg HTTP/1.1" 200 1564 "-" "Mozilla/4.0 ..."
/images/Fruits.jpg HTTP/1.1" 200 1321 "-" "Mozilla/4.0 ..."
/images/FruitsRed.jpg HTTP/1.1" 200 1529 "-" "Mozilla/4.0 ..."
/images/Nuts.jpg HTTP/1.1" 200 1550 "-" "Mozilla/4.0 ..."
/images/NutsRed.jpg HTTP/1.1" 200 1904 "-" "Mozilla/4.0 ..."
/images/Specials.jpg HTTP/1.1" 200 1512 "-" "Mozilla/4.0 ..."
/images/SpecialsRed.jpg HTTP/1.1" 200 1824 "-" "Mozilla/4.0 ..."
/images/ajax-loader.gif HTTP/1.1" 200 3720 "-" "Mozilla/4.0 ..."
/images/logo.gif HTTP/1.1" 200 5795 "-" "Mozilla/4.0 ..."
/images/Creator.gif HTTP/1.1" 200 1178 "-" "Mozilla/4.0 ..."
/images/Show.gif HTTP/1.1" 200 1195 "-" "Mozilla/4.0 ..."
/images/Lounge.gif HTTP/1.1" 200 1340 "-" "Mozilla/4.0 ..."
/images/Search.gif HTTP/1.1" 200 833 "-" "Mozilla/4.0 ..."
/images/Search-Bg.gif HTTP/1.1" 200 174 "-" "Mozilla/4.0 ..."
/images/top.gif HTTP/1.1" 200 364 "-" "Mozilla/4.0 ..."
/images/Pedia-KA.gif HTTP/1.1" 200 1434 "-" "Mozilla/4.0 ..."
/favicon.ico HTTP/1.1" 200 617 "-" "Mozilla/4.0 ..."
/muesli-blog/tag/wintermuesli/ HTTP/1.1" 200 11087 "-" "Mozilla/4.0 ..."
/muesli-blog/wp-includes/js/tw-sack.js?ver=1.6.1 HTTP/1.1" 200 4969 "-" "Mozilla/4.0 ..."
/muesli-blog/wp-content/plugins/wp-polls/polls-js-packed.js?ver=2.40 HTTP/1.1" 200 2690 "-" "Mozilla/4.0 ..."
/muesli-blog/wp-content/plugins/wp-polls/polls-css.css?ver=2.40 HTTP/1.1" 200 2835 "-" "Mozilla/4.0 ..."
/muesli-blog/wp-includes/images/smilies/icon_smile.gif HTTP/1.1" 200 174 "-" "Mozilla/4.0 ..."
/uploads/news/default/d4b4be8ef9ca99b583b7a4a1d2fc0d5f.jpg HTTP/1.1" 200 6846 "-" "Mozilla/4.0 ..."
/uploads/news/default/48d9053581601ed61f90fee1b9c4e128.jpg HTTP/1.1" 200 9291 "-" "Mozilla/4.0 ..."
/muesli-blog/wp-content/uploads/2008/11/wellfit_logo_kl.jpg HTTP/1.1" 200 3331 "-" "Mozilla/4.0 ..."
/muesli-blog/wp-content/themes/cerealclub/style.css HTTP/1.1" 200 36327 "-" "Mozilla/4.0 ..."
/uploads/news/default/7424dc363bfb03ef049b2c4e2cc5afbd.jpg HTTP/1.1" 200 19759 "-" "Mozilla/4.0 ..."
/bilder/extern/facebook_blog.jpg HTTP/1.1" 200 4297 "-" "Mozilla/4.0 ..."
/bilder/extern/Flickr_blog.jpg HTTP/1.1" 200 2120 "-" "Mozilla/4.0 ..."
/bilder/extern/soupio_blog.gif HTTP/1.1" 200 845 "-" "Mozilla/4.0 ..."
/bilder/extern/twitter_blog.jpg HTTP/1.1" 200 8601 "-" "Mozilla/4.0 ..."
/muesli-blog/wp-content/plugins/wp-polls/images/loading.gif HTTP/1.1" 200 771 "-" "Mozilla/4.0 ..."
/images/bookmarking/misterwong.gif HTTP/1.1" 200 642 "-" "Mozilla/4.0 ..."
/images/bookmarking/yigg.gif HTTP/1.1" 200 1026 "-" "Mozilla/4.0 ..."
71
B Beispiel eines menschlichen Benutzers
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
<IP>
72
-
[17:50:03]
[17:50:03]
[17:50:04]
[17:50:04]
[17:50:04]
[17:50:04]
[17:50:04]
[17:50:04]
[17:50:04]
[17:50:04]
[17:50:04]
[17:50:04]
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
"GET
/images/bookmarking/google.gif HTTP/1.1" 200 314 "-" "Mozilla/4.0 ..."
/images/bookmarking/myspace.gif HTTP/1.1" 200 910 "-" "Mozilla/4.0 ..."
/images/bookmarking/facebook.png HTTP/1.1" 200 2938 "-" "Mozilla/4.0 ..."
/images/bookmarking/reddit.gif HTTP/1.1" 200 289 "-" "Mozilla/4.0 ..."
/images/bookmarking/webnews.gif HTTP/1.1" 200 173 "-" "Mozilla/4.0 ..."
/images/bookmarking/icio.gif HTTP/1.1" 200 1081 "-" "Mozilla/4.0 ..."
/images/bookmarking/favoriten.gif HTTP/1.1" 200 353 "-" "Mozilla/4.0 ..."
/images/bookmarking/linkarena.ico HTTP/1.1" 200 894 "-" "Mozilla/4.0 ..."
/images/bookmarking/infopirat.gif HTTP/1.1" 200 618 "-" "Mozilla/4.0 ..."
/images/bookmarking/delicious.gif HTTP/1.1" 200 113 "-" "Mozilla/4.0 ..."
/images/bookmarking/stumbleupon.gif HTTP/1.1" 200 250 "-" "Mozilla/4.0 ..."
/favicon.ico HTTP/1.1" 200 617 "-" "Mozilla/4.0 ..."
Literaturverzeichnis
[Amb05]
Ambler, Scott W.: The Elements of UML 2.0 Style. Cambridge University
Press, Cambridge, UK, 2005.
[AO04]
America Online, Inc.: Webmaster.Info : AOL Proxy Info, 2004. URL http://
webmaster.info.aol.com/proxyinfo.html, Abgerufen am 21. Februar 2010.
[Apa]
Apache Software Foundation: Log Files - Apache HTTP Server. URL
http://httpd.apache.org/docs/2.0/logs.html, Abgerufen am 15. Januar
2010.
[Dam64]
Damerau, Fred J.: A technique for computer detection and correction of spelling errors. Communications of the ACM, 7(3):171–176, März 1964.
[dud06]
Duden Deutsches Universal Worterbuch. Bibliographisches Institut & FA Brockhaus AG, October 2006.
[FGM+ 99] Fielding, R., J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach
und T. Berners-Lee: Hypertext Transfer Protocol – HTTP/1.1. RFC 2616,
Juni 1999. Updated by RFC 2817.
[GHJV04] Gamma, E., R. Helm, R. Johnson und J. Vlissides: Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software. Addison Wesley Verlag,
Bonn, Juli 2004.
[Hon97]
Honkela, Timo: Self-Organizing Maps In Natural Language Processing. Doktorarbeit, Helsinki University of Technology, Neural Networks Research Centre,
1997.
[Kar08]
Karafiat, Helga: Support Vector Machine zur Gender Recognition mit Visualisierung des Lernprozesses. Diplomarbeit, Fachhochschule Wedel, Feldstrasse
143, 22880 Wedel, Deutschland, Juni 2008.
[Kas98]
Kaski, Samule: Dimensionality Reduction by Random Mapping: Fast Similarity Computation for Clustering. Neural Networks Proceedings, IEEE World
Congress on Computational Intelligence, 1(1):413–418, Mai 1998.
[KKL+ 01] Kohonen, Teuvo, Samuel Kaski, Krista Lagus, Jarkko Salojarvi, Vesa Paatero und Antti Saarela: Self Organization of a Massive Document
Collection. IEEE Transactions on Neural Networks, 11:574–585, 2001.
[Koh01]
Kohonen, Teuvo: Self-Organizing Maps. Springer, Berlin / Heidelberg, 3. Auflage, 2001.
[Kra87]
Krause, Eugene F.: Taxicab Geometry. Dover, 1987.
[LAR99]
Lawrence, R. D., G. S. Almasi und H. E. Rushmeier: A Scalable Parallel Algorithm for Self-Organizing Maps with Applicationsto Sparse Data Mining
Problems. Data Mining and Knowledge Discovery, 3(2):171–195, 1999.
73
Literaturverzeichnis
[LKK04]
Lagus, Krista, Samuel Kaski und Teuvo Kohonen: Mining massive document collections by the WEBSOM method. Information Sciences, 163/1-3:135–
156, 2004.
[McD03]
McDuffie, Tina Spain: JavaScript Concepts and Techniques: Programming
Interactive Web Sites. Franklin, Beedle and Associates, 2003.
[MCSC02] Mu-Chun Su, Ta-Kang Liu und Hsiao-Te Chang: Improving the SelfOrganizing Feature Map Algorithm Using an Efficient Initialization Scheme.
Tamkang Journal of Science and Engineering, 5(1):35–48, Februar 2002.
[Mey07]
Meyer, Eric: Cascading Style Sheets: The Definitive Guide. O’Reilly, Sebastopol, 3. Auflage, 2007.
[Mon94]
Monnerjahn, Jürgen: Speeding-up Self-organizing Maps: The Quick Reaction.
Proceedings of the International Conference on Artificial Neural Networks, 1(12):326–329, Mai 1994.
[Pre10]
Preiss, Bruno R.: Brute-Force and Greedy Algorithms, 2010. URL http://
www.brpreiss.com/books/opus4/html/page441.html, Abgerufen am 16. Februar 2010.
[Sch02]
Schatzman, M.: Numerical Analysis. Clarendon Press, Oxford, 2002.
[Ste07]
Stein, Clifford: Algorithmen – Eine Einführung. Oldenbourg Wissenschaftsverlag, München, 2. Auflage, 2007.
[UD07]
Ullman, Chris und Lucinda Dykes: Beginning Ajax. wrox, März 2007.
[Wik10a]
Wikipedia: Bot — Wikipedia, Die freie Enzyklopädie, 2010. URL http://de.
wikipedia.org/w/index.php?title=Bot&oldid=69200658, Abgerufen am 05.
Februar 2010.
[Wik10b]
Wikipedia: Internet bot — Wikipedia, The Free Encyclopedia, 2010.
URL
http://en.wikipedia.org/w/index.php?title=Internet_bot&
oldid=340962112, Abgerufen am 05. Februar 2010.
74
Eidesstattliche Erklärung
Ich erkläre hiermit an Eides statt, dass ich die vorliegende Arbeit selbstständig und ohne
Benutzung anderer als der angegebenen Hilfsmittel angefertigt habe; die aus fremden Quellen
direkt oder indirekt übernommenen Gedanken sind als solche kenntlich gemacht. Die Arbeit
wurde bisher in gleicher oder ähnlicher Form keiner anderen Prüfungskommission vorgelegt
und auch nicht veröffentlicht.
Datum, Ort
John Freytag
75