k-Anonymität von GPS-Spuren mit Hilfe von DBSCAN
Transcription
k-Anonymität von GPS-Spuren mit Hilfe von DBSCAN
Fachbereich Mathematik/Informatik AG Datenbanksysteme Bachelorarbeit k-Anonymität von GPS-Spuren mit Hilfe von DBSCAN und OPTICS vorgelegt am: 17. Juli 2013 Autor: Christian Windolf christianwindolf@web.de Betreuer: MSc. Sebastian Müller sebastian.mueller@fu-berlin.de Prüferin: Prof. Dr. Agnès Voisard Zweitprüfer: Prof. Dr. Wolgang Mulzer 2 abstract In this work will be evaluated, if the algorithms DBSCAN and OPTICS suit for ensuring k-anonymity on GPS-traces. To evaluate these algorithms, a prototype was created that tries to find clusters in GPS datasets, that can be aggregated in a way, that it preserves as much as possible from the original data. Because a trace usually does not go along closely with another trace over the whole length, the prototype splits them at crossroads. The crossroads are found by the assumption, that the density rises locally at crossroads and can be found by OPTICS. After splitting the tracks into segments, DBSCAN is used to detect clusters on them. Finally, these cluster will be aggregated. Zusammenfassung In dieser Arbeit wird untersucht, wie gut die Cluster-Algorithmen DBSCAN und OPTICS geeignet sind, um k-Anonymität auf GPS-Spuren zu ermöglichen. Um dies zu evaluieren, wurde ein Prototyp geschrieben, der versucht, Cluster in GPS-Datensätzen zu finden, die so aggregiert werden können, dass möglichst viele Informationen über den ursprünglichen Datensatz erhalten bleiben. Allerdings verlaufen Spuren normalerweise nicht die ganze Zeit nebeneinander, sondern nur partiell. Um dieses Problem zu umgehen, werden die Spuren an Kreuzungen in Segment zerlegt. Die Kreuzungen werden anhand der Annahme ermittelt, dass die Punktdichte in ihrer Nähe lokal ansteigt und OPTICS geeignet ist, diese zu finden. Nachdem diese zerlegt worden sind, wird DBSCAN eingesetzt, um Cluster zu erkennen, die schlussendlich aggregiert werden können. Inhaltsverzeichnis 1. Einleitung 1.1. Aufgabenstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Verwandte Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Grundlagen 2.1. k-Anonymität . . . . . . . . . . . . . 2.2. Clusteranalyse . . . . . . . . . . . . . 2.2.1. DBSCAN . . . . . . . . . . . 2.2.2. OPTICS . . . . . . . . . . . . 2.3. Distanzfunktionen . . . . . . . . . . . 2.3.1. Fréchet-Distanz . . . . . . . . 2.3.2. Hausdorff-Distanz . . . . . . . 2.4. Unterstützende Funktionen . . . . . . 2.4.1. UTM-Projektion . . . . . . . 2.4.2. RBaum . . . . . . . . . . . . 2.4.3. Ramer-Douglas-Peucker-Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 7 . . . . . . . . . . . 8 8 9 9 11 13 14 16 17 17 18 19 3. Design 3.1. Kreuzungserkennung . . . . 3.1.1. OPTICS . . . . . . . 3.1.2. Clusterextraktion . 3.1.3. Schwankungsanalyse 3.2. Aggregierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 22 25 28 28 4. Implementierung 4.1. Eingabe . . . . . . . 4.2. Bereinigung . . . . . 4.3. Karte . . . . . . . . . 4.4. Algorithmen . . . . . 4.5. Kreuzungserkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 30 31 32 32 33 . . . . . . . . . . . . . . . . . . . . 5. Evaluation 36 5.1. Kreuzungserkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4 5.1.1. Optische Evaluation . 5.1.2. Statistische Evaluation 5.2. Aggregierung . . . . . . . . . 5.2.1. Optische Evaluation . 5.2.2. Statistische Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 40 42 42 45 6. Fazit & Ausblick 47 6.1. Kreuzungserkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.2. Aggregierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7. Literaturverzeichnis 50 A. Verwendete Bibliotheken 53 B. CD-Inhalt 54 5 1 | Einleitung Die Hürden, große Mengen an Bewegungsdaten über einzelne Personen zu sammeln, sind in den vergangenen fünf Jahren deutlich gesunken. Durch die wachsende Verbreitung von Smartphones[Gar13] steigt automatisch auch die Verbreitung con GPSSensoren. (Im iPhone[App12] sind sie enthalten; Google empfiehlt für Android, das laut Gartner[Gar13] beliebteste Betriebssystem für Smartphones ist, dass ein GPS-Sensor eingebaut ist.[Goo13, Abschnitt 7.3.3]). Dadurch ergeben sich beispielsweise für Sozialwissenschaften neue Möglichkeiten, Bewegungsdaten kostengünstig zu sammeln, da Teilnehmer einer Studie nur überredet werden müssen, Messungen auf ihrem Telefon zuzulassen, anstatt ihnen einen GPS-Empfänger zur Verfügung zu stellen.[ROE09] Für die Veröffentlichung der in einer Studie gesammelten Daten gibt es dann auch mehrere Gründe: Zum einen erfordern wissenschaftliche Standarts, dass die Schlussfolgerungen in den Arbeiten nachvollziehbar sein sollen. Zum anderen erleichtert die Veröffentlichung anderen Forschungsgruppen, Ausgangsdatensätze für ihre Arbeiten zu erstellen. 1.1 | Aufgabenstellung In dieser Arbeit wird untersucht, in wie weit sich die Algorithmen DBSCAN und OPTICS eignen, um k-Anonymität auf GPS-Spuren sicher zu stellen, so dass die Daten problemlos weiter gegeben werden können. Die Funktionsweise der verwendeten Algorithmen wird in den Abschnitten 2.2.1 und 2.2.2 sowie zusätzliche Distanzfunktionen (2.3) und andere Werkzeuge (2.4) erläutert. In Kapitel 3 wird erläutert, wie diese Verfahren bei der Aggregation verwendet werden solllen. Die konkrete Implementierung wird in 5 erläutert und die Ergebnisse werden in Kapitel 5 diskutiert. 1.2 | Motivation Neben Forschungsprojekten gibt es auch Benutzergruppen, die Daten für ein bestimmtes Projekt sammeln. Ein Beispiel dafür ist das OpenStreetMap-Projekt, dessen Ziel es ist, eine frei verfügbare Karte zu erstellen. Werden diese Datensätze veröffentlicht, reicht es allerdings nicht, die Namen der Personen aus dem Datensatz zu entfernen. Philippe Golle und Kurt Partige ermittelten in ihrer Studie [PG09], dass eine Reindentifizierung möglich ist, sobald einem Angreifer Wohnort und Arbeitsplatz bekannt ist. Auch hilft es wenig, wenn man die Enden an Straßenblöcken „abschneidet“. Golle und Partige zeigten, 6 dass danach immer noch eine Wahrscheinlichkeit von 10% besteht, dass die Spuren noch ihrem Besitzer zugeordnet werden können. Bei dieser Arbeit wird davon ausgegangen, dass einem Angreifer A ein k − anonymer Datensatz aus Bewegungsdaten DSk−anonym zur Verfügung steht. A weiß, dass die Person P , über die A mehr wissen will, in DSk−anonym enthalten ist. A besitzt zudem auch noch weitere Bewegungsinformationen DScache über P , über die man jedoch keine konkreten Annahmen machen kann, da die möglichen Quellen vielfältig sind. A und P könnten sich möglicherweise begegnet sein, was A einen Ort und einen Zeitstempel liefert. Es ist wünschenswert, dass DSk−anonym es nicht zulässt, dass A dem Datensatz DScache keine weiteren Informationen hinzufügen kann und gleichzeitig weiterhin statistische Auswertungen von DSk−anonym noch möglich sind. Um diese Anonymisierung zu gewährleisten, werden die Spuren aggregiert, das heißt. es werden mehrere Spuren zu einer Spur zusammen gefasst. Eine aggregierte Spur setzt sich dann aus mindestens k Einzelspuren zusammen, um k-Anonymität zu gewährleisten. 1.3 | Verwandte Arbeiten Das Aggregieren von GPS-Spuren hat in den vergangenen Jahren deutlich an Bedeutung gewonnen. Das hängt verständlicherweise damit zusammen, dass auch die Menge der verfügbaren Daten deutlich angestiegen ist und dies nicht nur aus datenschutz-rechtlicher Sicht Probleme aufwirft. Johannes Mitlmeier [Mit12] beschäftigte sich ebenfalls mit diesem Thema. Er setzte jedoch keine Clustering-Algorithmen ein, sondern lief entlang einer Spur und suchte währenddessen passende weitere Spuren. Beim Aggregieren wird dann berücksichtigt, dass eine Spur bereits ein Aggregat sein kann und deshalb „schwerer“ sein kann. Als mögliche zusätzlich Motivation für die Aggregierung von GPS-Daten nennt er die Komprimierung iner sehr großen Datenmenge. Diese Arbeit baut dabei auf Ideen aus [MV12] auf. Einen ähnlichen Ansatz wie Mitlmeier haben bereits Zhang und Sester [ZS10] geschildert, die allerdings nicht aggregierte Spuren nahmen und diese mit Einzelspuren veränderten, sondern Kartendaten nahmen und diese mit GPS-Spuren aktualisierten. Cao und Krumm [CK09] stellen hingegen einen Ansatz vor, bei dem sie Anziehungskräfte zwischen den Spuren simulieren. Dies diente vor allem dem Zweck, Messungenauigkeiten von GPS auszugleichen, wäre jedoch auch für eine Aggregation ein interessanter Ansatz. Könnecke [Kö13] nutzt in seiner Bachelorarbeit ebenfalls ein Verfahren zur Clusteranalye, allerdings k-means. Das Verfahren, um die gefundenen Cluster zu aggregieren, ist dem Verfahren, das hier in dieser Arbeit vorgestellt wird, sehr ähnlich. Daher unterscheiden sich diese Arbeiten hauptsächlich durch die Verwendung der Clusteralgorithmen. Franz Gatzke beschäftigte sich ebenfalls mit dem Thema k-Anonymität. Er evaluierte dabei gleich vier verschiedene, wenn auch einfachere Algorithmen zur Aggregation.[Gat12] 7 2 | Grundlagen In diesem Kapitel werden die wichtigsten Begriffe erläutert. In Abschnitt 2.1 wird erläutert, was die in 2.2 vorgestellten Algorithmen erreichen sollen. Darauf folgend werden in Abschnitt 2.3 Distanzfunktionen erläutert, die diese Algorithmen verwenden können. Der letzte Abschnit 2.4 widmet sich einerseits der UTM -Projektion (2.4.1), die die Implementierung der Algorithmen erleichtert und stellt den RBaum (2.4.2) vor - eine Datenstruktur, die eine Beschleunigung der Laufzeit ermöglicht. Als letztes wird der RDP-Filter vorgestellt (2.4.3). 2.1 | k-Anonymität Der Begriff k-Anonymität wurde von Latanya Sweeney eingeführt.[Swe02] Sie beschrieb anhand von Datensätzen aus Krankenhäusern die entstandenen Datenschutzprobleme. Krankenhäuser veröffentlichen Daten darüber, welche Fälle sie behandelt haben. Zusätzlich veröffentlich sie Postleitzahl, Geschlecht und Geburtsdatum der Patienten. Die Namen wurden hingegen entfernt. Sweeney zeigte, dass es trotzdem möglich ist, die eigentlichen Patienten zu reidentifizieren. Die Kombination aus den drei genannten Attributen macht dies bei 87% aller US-Bürger möglich. Daher wurde von ihr der Begriff quasi-Identifizierer eingeführt. Quasi-Identifizierer sind Attribute, die auch in anderen Datenquellen auftauchen können und dadurch die Identifizierung doch noch ermöglichen, obwohl die Daten auf den ersten Blick kaum den Eindruck erwecken, eine ganz bestimmte Person zu beschreiben. Sensible Attribute sind wiederrum die Attribute, bei denen nicht gewollt ist, dass sie einer bestimmten Person zugeordnet werden können. Beispielsweise die Diagnose über eine bestimmte Krankheit. Mit Hilfe des ebenfalls öffentlich zugänglichen Wöhlerregisters konnten die Behandlungen (also die sensiblen Attribute) den Personen zugeordnet werden, obwohl im Ausgangsdatensatz nur Quasi-Identifizierer vorhanden waren. Daher können solche Datensätze nicht als anonym betrachtet werden. Definition 1 (k-Anonymität) Ein Datensatz ist dann k-anonym, wenn die Informationen für jede Person nicht von denen von mindestens k − 1 anderen Individuen im Datensatz unterscheidbar sind.1 8 k-Anonymität auf GPS-Spuren sicher zu stellen ist auch eine Frage, wie es interpretiert werden soll. Man kann den Datensatz nicht in sensible und quasi-identifizierende Attribute unterteilen. Jeder Teil einer Spur kann quasi-identifizierend sein, weil A für diesen bestimmten Ort bereits Informationen über P hat. Und umgekehrt kann jede Stelle die sensible Information sein, an der A wirklich interessiert ist. 2.2 | Clusteranalyse Eine Clusteranalyse dient dazu, Gruppierungen in Datensätzen zu entdecken. Sie wird vor allem im Datamining und beim Knowledge Discovery eingesetzt. Die dazu eingesetzten Clusteralgorithmen liefern jedoch unterschiedliche Arten von Clustern. Hierarchische Clusterverfahren liefern innerhalb der Gruppierungen noch einmal Untergruppierungen während partitionierende Verfahren die Objekte in Gruppen einordnen. Jeder Clusteralgorithmus benötigt neben dem Datensatz als Eingabe noch zusätzlich eine Distanzfunktion, die eine Ähnlichkeit zwischen zwei Objekten ermittelt.[SE00, S. 46f] Dabei bedeutet ein kleinerer Ergebniswert eine größere Ähnlichkeit. Für eine Distanzfunktion dist müssen die folgenden zwei weiteren Eigenschaften gelten: 1. Sie muss symmetrisch sein, also dist(x1 , x2 ) = dist(x2 , x1 ). 2. Falls sie identische Objekte vergleicht, so gilt: dist(x1 , x1 ) = 0. 2.2.1 | DBSCAN DBSCAN steht für „Density-Based Spatial Clustering of Application with Noise“. Der Algorithmus ist ein dichte-basierter Cluster-Algorithmus und wurde 1996 an der LMU München entwickelt.[SEKX96]. Der Algorithmus erhält als Eingabe neben dem Datensatz und der Distanzfunktion noch zwei weitere Parameter: ist der maximale Radius, in dem nach Objekten gesucht werden kann. minP ts ist die minimale Anzahl an Objekten, die ein Cluster enthalten muss. Zum Verständnis von DBSCAN sind zunächst einige Definitionen notwendig. Definition 2 (-Umgebung) Sei D der Datensatz und als Eingabeparameter gegeben. Dann ist die -Umgebung N (p) eines Objektes p ∈ D wie folgt definiert:2 N (p) = {q ∈ D|dist(p, q) ≤ } 1 Vom Autor aus dem Englischen übersetzt. Original: „A release provides k-anonymity protection if the information for each person contained in the release can not be distinguished from at least k − 1 individuals whose information also appears in the release.“ [Swe02, S.1] 2 Übersetzung aus dem Englischen vom Autor. Original: „The Eps-Neighbourhood of a point p, denoted by Neps (p), is defined by Neps = {q ∈ D|dist(p, q) ≤ “ 9 Darauf aufbauen kann auch gleich die direkte Dichte-Erreichbarkeit (directly densityreachablity) definiert werden. Definition 3 (direkte Dichte-Erreichbarkeit) Ein Objekt p ist direkt dichteerreichbar von q, wenn für die gegebenen Parameter und minP ts folgende Eigenschaften gelten: 3 1. p ∈ N (q) 2. |N (q)| ≥ minP ts Zwei weitere Definitionen (Def. 4 und Def. 5) sind für das Verständnis von DBSCAN notwendig. Sie werden zusätzlich in der Abbildung 2.1 erläutert. Definition 4 (Dichte-Erreichbarkeit) Ein Objekt p ist von q dichteerreichbar, wenn es eine Kette von Objekten p1 . . . pn gibt mit p1 = q und pn = p für die gilt: pi+1 ist direkt dichte-erreichbar von pi .4 p p q o q Abbildung 2.1.: Links: Dichte-Erreichbarkeit von q nach p, sofern minP ts = 3 und durch die angezeigten Kreise dargestellt wird. Rechts zeigt die DichteVerbundenheit, welche eine symmetrische Beziehung darstellt. p und q sind hier dichte-erreichbar von o aus. Definition 5 (Dichte-Verbundenheit) Ein Punkten p ist dichte-verbunden zu q, wenn es einen Punkt o gibt, von dem sowohl p als auch q dichte-erreichbar sind. 5 3 Übersetzung aus dem Englischen vom Autor. Original: „A point p is directly density-reachable from point q wrt Eps, MinPts if 1) p ∈ Neps (q) and 2) |Neps (q)| ≥ minP ts“ 4 Übersetzung aus dem Englischen vom Autor. Original: „point p is density- reachable from a point q wrt. Eps and MinPts if there is a chain of points p1 , . . . , pn , p1 = q, pn = p such that pi+1 is directly density-reachable from pi .“ 10 Nun kann man einen Cluster für DBSCAN definieren. Definition 6 (Cluster) Sei D ein Datensatz und C eine nicht-leere Teilmenge von D, die folgende Eigenschaften erfüllt:6 1. ∀p, q : falls p ∈ C ind q ist dichte-erreichbar von p, dann ist q ∈ C. (Maximalität) 2. ∀p, q ∈ C : p ist dichte-verbunden mit q. (Verbundenheit) DBSCAN überprüft im Grunde genommen, ob diese Eigenschaften auf die Objekte im Datensatz zutreffen. Treffen sie zu, werden sie Clustern zugeordnet, tun sie es nicht, dann werden sie als Rauschen (noise) betrachtet. DBSCAN hat vor allem zwei Vorteile im Gegensatz zum weit verbreiteten ClusterAlgorithmus k-means: Zum einen muss die Anzahl der Cluster nicht vor der Ausführung festgelegt werden und zum anderen führen beeinflussen einzelne isolierte Obejkte nicht das Endergebnis sondern werden als Rauschen erkannt. Komplexität Der Algorithmus DBSCAN muss jedes einzelne Objekt untersuchen. Also tut er es insgesamt n-mal, wenn die Größe des Datensatzes n beträgt. Bei der Untersuchung eines jeden Punktes, muss die -Umgebung bestimmt werden, bei der ebenfalls noch einmal der komplette Datensatz durchlaufen werden muss. Dadurch entsteht insgesamt ein Laufzeitverhalten mit O(n2 ). Die Autoren vom Algorithmus machen jedoch auf die Möglichkeit aufmerksam, einen spatialen Index einzusetzen, der die Bestimmung der -Umgebung von O(n) auf O(log n) reduzieren kann. Ein solcher spatialer Index, wie er auch in dieser Arbeit eingesetzt wird, ist der RBaum. [Gut84], wird auch in Abschnitt 2.4.2 erläutert. Auf diese Weise lässt sich die Gesamtkomplexität auf O(n·log n) reduzieren. Allerdings stimmt diese Annahme nur unter der Vorraussetzung, dass die Distanzfunktion eine Laufzeit von O(1) hat. 2.2.2 | OPTICS Der Algorithmus OPTICS ist eine Erweiterung von DBSCAN. Sein Name OPTICS steht dabei für „Ordering Points To Identify the Clustering Structure“. Er wurde ebenfalls an der LMU München entwickelt und einige Autoren von DBSCAN wirkten auch an der Entstehung von OPTICS mit. (Jörg Sanders und Hans-Peter Kriegel). Seine Eingabeparameter, neben dem Datensatz und der Distanzfunktion, sind ebenfalls minP ts und . 5 Übersetzung aus dem Englischen vom Autor. Original: „A point p is density- connected to a point q wrt. Eps and MinPts if there is a point o such that both, p and q are density-reachable from o wrt. Eps and MinPts. “ 6 Übersetzung von Autor aus dem Englischen. Original: „Let D be a database of points. A cluster C wrt. Eps and MinPts is a non-empty subset of D satisfying the following conditions: 1) ∀p, q : if p ∈ C and q is density-reachable from p wrt. Eps and MinPts, then q ∈ C. (Maximality) 2) ∀p, q ∈ C : p is density-connected to q wrt. EPS and MinPts. (Connectivity) “ 11 ist für das Funktionieren von OPTICS nicht zwingend notwendig, bietet allerdings eine effektive Möglichkeit, Rechenleistung zu sparen und sollte daher mit angegeben werden. OPTICS löst das Problem, dass für DBSCAN vor der Ausführung die Dichte (die sich eben aus minP ts und zusammen setzt) mit angegeben werden muss. Setzt man zu hoch und minP ts zu niedrig, so kann es passieren, dass DBSCAN sämtliche Objekte in einem einzigen Cluster zusammen fasst, obwohl die Daten im Datensatz gleichmäßig verteilt sind. Umgekehrt kann ein zu niedriges und zu hohes minP ts dazu führen, dass alles als Rauschen betrachtet wird. Außerdem ist DBSCAN nicht in der Lage, Untercluster zu finden, so wie es hierarchische Clusteralgorithmen tun. Das Problem wird in Abbildung 2.2 noch einmal explizit dargestellt. OPTICS ist dabei kein klassischer Clusteralgorithmus, der in den Daten Klassen diskrete Klassen findet, sondern die Punkte des Datensatzes in der in Algorithmus 1 auf Seite 23 bestimmten Reihenfolge darstellt und jedem Punkt eine Erreichbarkeitsdistanz zuordnet. Das Ergebnis von OPTICS, das Erreichbarkeitsdistanzdiagramm, bietet für die manuelle Auswertung einen groben Überblick über Zusammenhänge in den Datensätzen. (siehe auch Abbildung 2.3).[KSAB99] Automatische Verfahren werden in den Abschnitten 3.1.2 und 3.1.3 vorgestellt. Für das Verständnis von OPTICS sind ebenfalls noch A B C1 C3 C C2 Abbildung 2.2.: DBSCAN hat das Problem, dass es keine Untercluster, hier C1 , C2 und C3 nicht finden kann, sondern einfach nur C findet. zwei weitere Definitionen notwendig: Definition 7 (Kerndistanz) Sei D ein Datensatz, p ∈ D, minP ts ∈ N, > 0 und N die Nachbarschaftsfunktion, minP ts−distance die Distanzfunktion zum minP ts’ Nachbarn. Dann ist die Kerndistanz von p wie folgt definiert:7 UNDEFINED wenn |N (p)| < minP ts core − distance(p),minP ts = minP ts − distance(p) sonst 7 Übersetzung aus dem Englischen durch den Autor. Original: Let p be an object from a database D, let be a distance value, let N (p) be the -neighborhood of p, let M inP ts be a natural number and 12 Definition 8 (Erreichbarkeitsdistanz) Sei p, o ∈ D, N (x) die Nachbarschaftsfunktion, minP ts ∈ N, dann ist die Erreichbarkeitsdistanz von o nach p wie folgt definiert: 8 UNDEFINED, wenn |N (o)| < minP ts reachability − distance,minP ts = max (core − distance(o), dist(o, p)) sonst Aus der Definition für die Erreichbarkeitsdistanz folgt, dass p direkt dichte-erreichbar von o ist.(siehe dazu auch Def. 4) Komplexität Ähnlich wie DBSCAN ist es notwendig, dass OPTICS jeden Punkt betrachtet und zu diesem die -Umgebung bestimmt. Die Laufzeit liegt damit bei O(n2 ), kann jedoch ebenfalls durch einen Index auf O(n · log n) reduziert werden. 2.3 | Distanzfunktionen Im vorherigen Abschnitt wurden Cluster-Algorithmen besprochen, die zum Funktionieren eine Distanzfunktion benötigen. Dabei muss die Dimension eines jeden Datenobjektes immer gleich sein. Bei GPS-Punkten ist dies noch trivial. Es gibt den Längen- und Breitengrad und dadurch ist die Dimension für jeden Punkt eindeutig definiert: zwei. Wenn man möchte, kann man noch den Zeitstempel oder die Höhe über dem Meeresspiegel mit einbeziehen, aber es bleibt sehr offensichtlich, welche Dimension die Daten haben. Bei Spuren hingegen wird es schwieriger. Eine Spur besteht aus mindestens zwei Punkten. Die Dimension lässt sich jetzt nur noch bestimmen, wenn man alle Punkte in einer Menge zusammen fässt und diese als nur eine einzige Dimension betrachtet. Die in diesem Abschnitt vorgestellten Distanzfunktionen, die Fréchet- und die Hausdorff-Distanz, ermöglich die Bestimmung der Distanz zwischen zwei Spuren. Beide Funktionen eignen sich als Distanzfunktionen für Clusteralgorithmen, da sie sowohl symmetrisch als auch bei zwei gleichen Eingaben den Wert 0 zurück liefern. (siehe auch Abschnitt 2.2). let M inP ts − distance(p) be the distance from ( p to its M inP ts neighbor. Then, the core-distance UNDEFINED, if Card(N (p)) < M inP ts of p is defined as core − distance,M inpts = M inP ts − Distance(p), otherwise 8 Übersetzung aus dem Englischen vom Autor. Original: Let p and o be objects from a database D, let N (o) be the -neighborhood of o, and let M inP ts be a natural number. Then, the reachability-distance of p with respect to o is defined as reachability − distance,M inP ts (o, p) = ( UNDEFINED, if Card(N (p)) < M inP ts max (core − distance(o), dist(o, p)) 13 Abbildung 2.3.: Das Erreichbarkeitsdistanzdiagramm von OPTICS. Auf der x-Achse befinden sich die Punkte in der von OPTICS bestimmten Anordnung (siehe auch Algorithmus 1). Auf der y-Achse ist die ermittelte Erreichbarkeitsdistanz. In den „Tälern“ dieses Diagrammes befinden sich nun die Cluster 2.3.1 | Fréchet-Distanz Die Fréchet-Distanz ist ein Abstandsmaß zwischen zwei Strecken. In der Literatur gibt es häufig das Beispiel mit dem Hund und seinem Besitzer, die auf den zwei zu messenden Strecken entlang laufen. Der Besitzer ist mit seinem Hund über eine Leine verbunden. Beiden ist es erlaubt, sich in beliebiger, aber nicht negativer Geschwindigkeit von ihrem jeweiligen Startpunkt zum Zielpunkt zu bewegen. Die Freéchet-Distanz ist definiert als Antwort auf die Frage, wie lang die Leine mindestens sein muss, damit Hund und Herrchen ihre jeweilige Strecke ablaufen können.[HA95] Definition 9 (Fréchet-Distanz) Seien f : [a, a0 ] → V und f : [b, b0 ] → V polygonale Linien. Dann beschreibt δF (f, g) deren Fréchet-Distanz, falls für δF (f, g) folgendes gilt: δF (f, g) := inf 0 max dist (f (α(t)), g(β(t))) α[0,1]→[a,a ] β[0,1]→[b,b0 ] t∈[0,1] Dabei sind α, β sind stetige, monoton steigende Funtionen mit α(0) = a, α(1) = a0 , β(0) = b) und β(1) = b0 .9 vom Autor aus dem Englischen. Original: „Let f : [a, a0 ] and g : [b, b0 ] be curves. Then δF (f, g) denotes their Fréchet-distance, defined as: 9 Übersetzung 14 Bei der Berechnung der Fréchet-Distanz wird zwischen der allgemeinen und der diskreten Fréchet-Distanz unterschieden. Die diskrete Fréchet-Distanz benötigt neben den zwei angegebenen Strecken noch als Parameter. Definition 10 (Diskrete Fréchet-Distanz) Seien f und g zwei polygonale Linien und sei ∈ R, > 0. Dann ist die diskrete Fréchet-Distanz dδF (f, g, ) wie folgt definiert: wahr falls δF (f, g) ≤ dδF (f, g, ) := falsch sonst Für den Prototypen wurde die Fréchet-Distanz implementiert, allerdings kann diese nur mit Koordinaten in einer ebenen Fläche umgehen und nicht mit sphärischen Koordinaten (wie Längen- und Breitengrad sind). Die Umgehung des Problems wird in Abschnitt 2.4.1 behandelt. Diese Implementierung baut dabei auf einem Algorithmus auf, den Alt und Godau [HA95] entwickelt haben. Die Funktionsweise des Algorithmus kann anschaulich mit einem Free-Space-Diagramm dargestellt werden. Für ein Free-Space-Diagramm (Abbildung 2.4) für die Fréchet-Distanz zwischen den Polylinien P und Q werden die Koordinaten dieser beiden Polylinien auf der x- bzw. y-Achse aufgetragen. Sei außerdem p(i), i ∈ [0, 1], bei der p(0) der Startpunkt von P und p(1) der letzte Punkt von P ist. Analog gilt dies für q(i). Sofern dist(p(x), q(y)) > , so wird (x, y) im Free-Space-Diagramm rot eingefärbt. Ist es danach noch möglich, eine monoton steigende Kurve von (0, 0) nach (1, 1) zu „zeichnen“, so gibt die diskrete Fréchet-Distanz den Wert „wahr“ zurück. Nun gibt es allerdings unendlich viele Punkte in diesem Diagram und damit ist es nicht berechenbar. Der „Trick“ bei der Berechnung dieses Diagramms ist folgender: Das Free-Space-Diagramm zwischen zwei Kanten (eine Kante ist hier die direkte Verbindung von genau zwei Punkten) bildet, sofern vorhanden, immer eine konvexe Ellipse. (Beweis steht in [HA95]). Dadurch reicht es aus, die Schnittpunkte mit den Rändern der einzelnen Zellen zu berechnen, um das Free-Space-Diagramm zu berechnen. Komplexität Jede Zelle des Free-Space-Diagrammes kann mit konstanter Laufzeit O(1) berechnet werden. Insgesamt müssen p · q Zellen berechnet werden. Danach muss noch überprüft werden, ob man eine monoton steigende Funktion durch dieses Diagramm zeichnen kann. Hierfür wird jede Zelle daraufhin untersucht, ob durch sie selbst eine monoton steigende Funktion gezeichnet werden kann. Dies wird mit Hilfe der Schnittpunkte an den Kanten mit der konvexen Free-Space-Ellipse errechnet. Danach δF (f, g) := inf α[0,1]→[a,a0 ] β[0,1]→[b,b0 ] max |f (α(t)), g(β(t))| t∈[0,1] where α, β range over continous and increasing functions with α(0) = a, α(1) = a0 , β(0) = b and β(1) = b0 only.“ 15 wird noch überprüft, ob die Zelle links oder unter der eigenen von (0, 0) aus erreichbar ist. Insgesamt ergibt sich damit für die diskrete Fréchet-Distanz eine Laufzeit von O(p · q). Da für den Prototypen nur die diskrete Fréchet-Distanz implementiert wurde, ist sie nur für den Algorithmus DBSCAN geeignet und nicht für OPTICS, weil DBSCAN sich tatsächlich nur für die Frage interessiert, ob die Distanz kleiner ist als . Abbildung 2.4.: Das Free-Space-Diagramm für ein gegebenes und die polygonalen Linien P und Q. Dabei wird in dem Diagramm für jede Stelle auf P und Q ein roter Punkt gesetzt, falls die Distanz größer als ist und weiß, falls sie kleiner ist. Kann man nun eine monoton steigende Funktion von links unten (0, 0) nach (1, 1) einzeichnen, so ist die Fréchet-Distanz δF (P, Q) ≤ . Das Diagramm wurde aus der Arbeit von Alt und Godau entnommen. [HA95] 2.3.2 | Hausdorff-Distanz Als Alternative für die Fréchet-Distanz kann auch die Hausdorff-Distanz verwendet werden.[Hen99] Sie ist jedoch nicht direkt auf Strecken von Punkten definiert sondern vergleicht ungeordnete Mengen von Punkten. Definition 11 (Hausdorff-Distanz) Die Hausdorff-Distanz für zwei endliche Mengen P und Q ist wie folgt definiert: ( ) d(P, Q) = max sup (e, Q) , sup (e, P ) e∈P e∈Q Daher wird der Winkel bzw. die Richtung α der Strecken mit berücksichtigt. α wird dabei nur zwischen dem Start- und Endpunkt eines Segmentes berechnet. Dieser Wert wird trotzdem als repräsentativ für das gesamte Segment betrachtet, da nach der Zerlegung 16 der Spuren die Segmente selten mehr als 100 Meter lang sind und meistens auch einen geraden Verlauf haben. Wenn bei zwei Strecken s1 und s2 die Differenz einen Grenzwert von 37 Grad überschreitet, wird die Distanz als unendlich hoch betrachtet. Damit die Hausdorff-Distanz bei nah aneinander verlaufenden Segmenten niedrigere Werte als bei Strecken, die fernab voneinander verlaufen, müssen auch die Punkte den selben Abstand haben. Abbildung 2.5 verdeutlicht dies noch einmal. Ein Vorteil der Hausdorff-Distanz ist hingegen, dass sie ohne Projektion auskommt (abgesehen vom Index), da im Gegensatz zur Fréchet-Distanz nur Abstandsfunktionen zwischen zwei Punkten (bestehend aus Längen- und Breitengrad) benötigt wird, die bereits implementiert wurden. Insgesamt ergibt sich damit für die diskrete Fréchet-Distanz eine Laufzeit von O(p · q). Da jeder Punkt mit jedem verglichen werden muss, liegt die Laufzeit der Hausdorff-Distanz ebenfalls bei O(|P | · |Q|). (a) Die Abstände der Punkte müssen normalisiert werden (b) Die Hausdorff-Distanz beachtet nicht unterschiedliche Richtungen Abbildung 2.5.: Links sieht man zwei Strecken, die sich in ihrem Verlauf stark ähneln. Die Fréchet-Distanz würde einen einen geringen Abstand zwischen den Strecken ermitteln, die Hausdorff-Distanz jedoch einen vergleichsweise hohen Wert. Damit die Hausdorff-Distanz einen ähnlich niedrigen Wert liefert wie die Fréchet-Distanz, müssen müssen die Punkte auf den Strecken einen regelmäßigen Abstand haben. Rechts ist ein anderes Problem mit der Hausdorff-Distanz dargestellt. Die Strecken verlaufen zwar nah beieinander, aber in völlig unterschiedliche Richtungen. Die Fréchet-Distanz würde deshalb auch hier einen hohen Wert liefern, die Hausdorff-Distanz allerdings nicht. Deshalb wird ein maximaler Winkelabstand zwischen den Strecken festgelegt, welcher bei Überschreitung dazu führt, dass die Distanz zwischen den beiden Strecken als unendlich betrachtet wird. 2.4 2.4.1 | Unterstützende Funktionen | UTM-Projektion Die Koordinaten aus dem GPX-Format sind Winkelangaben auf einer Kugel. Allerdings lassen sich viele Berechnungen leichter durchführen, wenn sie in einer ebenen Fläche lägen. Da auch für die Kartenerstellung eine ebene Repräsentation nötig ist, gibt es 17 bereits eine Vielzahl möglicher Projektionen. Für den Prototypen fiel die Wahl auf die UTM -Projektion. UTM steht für universal transverse mercator coordinate system. Die UTM -Projektion wurde 1947 beim US-Militär wingeführt, um rechtwinkelige Koordinaten weltweit auf militärischen Karten einheitlich benennen zu können. Bereiche nördlich des 84. nördlichen Breitengrades und südlich des 80. südlichen Breitengrades werden allerdings nicht betrachtet. Jede Zone ist dabei 6 Längengrade „breit“, jedoch kann die „Höhe“ schwanken.[Syn87, S. 57f] Für Bereiche jenseits des 84. nördlichen bzw. 80. südlichen Breitengrades sollten andere Projektionssystem verwendet werden, z.B. die UPS -Projektion. UTM wird in Deutschland schon länger auch zivil genutzt, insbesondere bei bei der Feuerwehr und dem Katastrophenschutz. [Str96, S. 54] Durch die UTM -Projektion entstehen Koordinaten, die in einer ebenen Fläche liegen. Aufgrund der Mercator-Projektion sind diese winkeltreu. Ihre Abweichungen bei der Distanz sind am Mittelmeridian (der Längengrad, der eine Zone vertikal in genau zwei cm und sind damit für unsere gleich große Hälften teilt) am größten und betragen 40 km Zwecke vernachlässigbar. [Str96, S. 55] Allerdings ist der Prototyp dadurch gezwungen, mit Datensätzen zu arbeiten, bei denen sämtliche Punkte in einer Zone liegen. Innerhalb einer Zone werden Koordinaten zweidimensional jeweils in Metern angegeben. Einmal der Ost-Wert und einmal der Nord-Wert. Außerdem wird bei einer UTM Koordinate auch immer angegeben, in welcher Zone die Koordinate liegt. Die Bezeichnungen der Zonen bestehen aus einem Buchstaben und einer Zahl. Die Zonen sind von Süden nach Norden mit Buchstaben versehen und von Westen nach Osten mit Zahlen. Berlin liegt beispielsweise in der Zone U32. 2.4.2 | RBaum Der RBaum ist eine dynamische Indexstruktur für räumliches Suchen („A Dynamic Index Structure for Spatial Searching“ [Gut84]. Im Gegensatz zu den meisten Indexstrukturen, die nur eindimensional arbeiten, ist er in der Lage, mit beliebig vielen Dimensionen umzugehen. Er benötigt allerdings zusätzlich eine spatiale Datenbank, in der jedes gespeicherte Objekt mit einem eindeutigen Schlüssel versehen ist. Er ist wie ein B-Baum ausgeglichen und speichert in seinen Blättern die Schlüssel für die Datenobjekte. Jeder Eintrag in den Blättern (ein Blatt kann mehrere Einträge haben, wie bei einem B-Baum gibt es auch eine Mindestanzahl an Einträgen, für den Fall, dass die Wurzel kein Blatt ist) besteht aus dem Schlüssel, der auf den eigentlichen Eintrag in der Datenbank zeigt, und einer Mengen an Intervallen. Für jede Dimension wird ein Intervall angelegt, in dem das Objekt liegt. Aus den einzelnen Intervallen entsteht also eine Bounding-Box. Jeder Knoten besteht ebenfalls aus einer Bounding-Box und Zeigern zu Kinderknoten bzw. Blättern. Eine Suchanfrage S wird ebenfalls in Form einer Bounding-Box gestellt. Die Suche beginnt ebenfalls wie bei einem B-Baum in der Wurzel, allerdings, im Gegensatz zum B-Baum, kann es passieren, dass bei Knoten mehrere Unterbäume untersucht werden müssen. Dies liegt daran, dass mehrere Bounding-Boxen der Kindsknoten sich mit S schneiden. Die Laufzeit beträgt daher im best-case O(log n) - das ist die Höhe des 18 Baumes - und ist im wort-case O(n). 2.4.3 | Ramer-Douglas-Peucker-Filter p9 p3 p3 p4 p6 p5 (1) p9 p8 p6 e 1 p5 p7 p1 p7 p8(2) p1 p2 p2 p9 e3 p3 p9 p3 p4 e4 p6 p5 e2 p4 p4 p8 p8 p5 p6 p7 p8(4) p1 (3) p2 p2 p9 p3 p8 p1 p2 (5) Abbildung 2.6.: Exemplarischer Ablauf des RDP-Filters, seine Funktionsweise wird in Abschnitt 2.4.3 erläutert Der RDP-Filter glättet Strecken und versucht so viel wie möglich vom eigentlichen Streckenverlauf zu erhalten.[DP73] Der Algorithmus arbeitet rekursiv. Er zieht eine Kante vom Start- zum Endpunkt und überprüft, ob alle Punkte einen Abstand kleiner als zu dieser Kante haben. Ist dies der Fall, so werden sie einfach gelöscht. Wenn nicht, wird der Punkt genommen, der den größten Abstand zu dieser Kante hat. An diesem Punkt wird die Strecke unterteilt und der Algorithmus wird rekursiv auf die entstandenen Teilstrecken angewendet. Der Ablauf der Algorithmus wird hier exemplarisch erläutert und bezieht sich dabei auf das in Abbildung 2.6 gezeigte Beispiel. 19 1. Gegeben ist eine Polylinie, die durch die Punkte p1 , . . . , p9 definiert ist. 2. Es wird eine Kante e1 zwischen p1 und p9 gezogen. Dabei wird festgestellt, dass p3 am weitesten von der Kante entfernt ist und diese Entfernung auch überschreitet. 3. Der Vorgang wird rekursiv wiederholt. Einmal für {p1 , p2 , p3 } und einmal für {p3 , . . . , p9 }. p2 hat dabei eine zu große Entfernung zur neuen Kante e2 , weshalb die Strecke hier ebenfalls unterbrochen wird. Die neuen beiden Strecken {p1 , p2 } und {p2 , P3 } bestehen nur aus zwei Punkten und der Algorithmus bricht ab. p8 ist ebenfalls zu weit von der Kante e3 entfernt, allerdings entsteht hierbei nur eine Teilstrecke {p8 , p9 }, die nur aus einer Kante besteht. Die Strecke {p3 , . . . , p8 } hat hingegen mehr Punkte und der Algorithmus kann hier weiter fortgesetzt werden. 4. Sämtliche Punkte zwischen p3 und p8 haben eine Distanz kleiner als zur Kante e4 und werden deshalb gelöscht. 5. Der Algorithmus bricht ab. 20 3 | Design Bei der Aggregierung besteht das Problem, dass Spuren häufig über eine gewisse Strecke nah beieinander laufen und danach wieder getrennte Wege gehen, wie Abbildung 3.1 dargestellt. Beide der in Abschnitt 2.3 besprochenen Distanzfunktionen liefern bei sol3 2 1 Abbildung 3.1.: Die Fréchet-Distanz zwischen den Strecken (1) und (2) gleicht ungefähr der zwischen (3) und (1), obwohl letztere zumindestens teilweise nah beieinander laufen. Dadurch muss eine sinnvolle Zerlegung für die Strecken gefunden, damit die Fréchet-Distanz sinnvolle Ergebnisse liefert. chen Strecken hohe Werte und es wäre daher wünschenswert, die Spuren an Kreuzungen zu zerlegen. Nachdem Spuren an Kreuzungen in Segmente zerlegt wurden, verbinden sie im Idealfall eine Kreuzung mit der anderen. Bei zwei Segmenten, die die selben Kreuzungen verbinden wird nun erwartet, dass sie eine niedrige Distanz zueinander haben und DBSCAN dies auch so einordnet. Die zwei grundlegenden Arbeitsschritte, Kreuzungserkennung und Aggregierung, werden in diesem Kapitel erläutert. 3.1 | Kreuzungserkennung Die grundlegende Hypothese, wie Kreuzungen erkannt werden können, beruht auf folgenden zwei Hypothesen. Hypothese 1 An einer Kreuzung überlagern sich die Spuren von mindestens zwei Straßen. Spuren bestehen wiederum aus Punkten, was zur Folge hätte, dass an Kreuzungen die Dichte der Punkte ansteigt. 21 Hypothese 2 GPS-Emprfänger, wie beispielsweise die Kombination aus einem AndroidTelefon und der App mytracks [Sch10]1 , sind in der Lage, ihre Position in einem regelmäigen zeitlichen Intervall aufzuzeichnen. An Kreuzungen müssen Verkehrsteilnehmer ihre Geschwindigkeit reduzieren, zeitbasierte GPS-Empfänger messen deshalb auch in kürzeren räumlichen Abständen. Dadurch steigt die Dichte und OPTICS ermittelt für diese Punkte eine niedrigere Erreichbarkeitsdistanz. Letztendlich wird erwartet, dass die Punkt-Dichte an Kreuzungen ansteigt. Jedoch erscheint es kaum sinnvoll, einen Grenzwert für die Punktdichte festzulegen, um damit die Kreuzungen zu erkennen. Eine Hauptstraße hat überall meistens eine höhere Punktdichte als eine Kreuzung von Nebenstraßen. Bei OPTICS wird nun erwartet, dass bestimmte „Täler“, egal auf welche „Höhe“ darauf hindeuten, dass dort eine Kreuzung sein könnte. 3.1.1 | OPTICS Der Pseudocode von OPTICS wird in Algorithmus 1 dargestellt und hier erläutert. Die Zeilen 2 und 3 sind Initialisierungsschritte. Die Variable results soll später die Objekte aufnehmen und sie in der Reihenfolge speichern, in der sie dort eingetragen wurden. Im Initialzustand sind alle Objekte als unverarbeitet markiert und ihrer Erreichbarkeitsdistanz ist auf unendlich gesetzt. Als ersten Schritt nimmt OPTICS ein beliebiges unverarbeites Objekt o und bestimmt dessen -Umgebung N (o). (Zeile 5) Danach wird die Erreichbarkeitsdistanz auf unendlich, bzw. undefiniert gesetzt (Zeile 6) und die Kerndistanz ermittelt (Zeile 7). Außerdem wird o als verarbeitet (Zeile 8) markiert und an die geordnete Liste angehängt. Sofern in N (o) bzw. neighbours weniger als minP ts Elemente vorhanden waren, so geht OPTICS zur Überprüfung des nächsten Punktes über. (Zeile 10) Wenn nicht, so wird die Prozedur update() aufgerufen, deren Pseudocode auf Seite 24 zu finden ist. Ihre Aufgabe ist es, für jedes Objekt p ∈ N (o) die Erreichbarkeitsdistanz von o nach p zu ermitteln. Danach werden sie in der in Zeile 3 erstellten Prioritätswarteschlange eingefügt, in der die Erreichbarkeitsdistanz als Schlüssel zum Ordnen genutzt wird. Dabei ist die Priorität umso höher, je niedriger die Erreichbarkeitsdistanz ist. In Zeile 12 wird damit begonnen, die Prioriätswarteschlange abzuarbeiten. Jedes Element o2 aus der Prioritätswarteschlange wird als verarbeitet markiert (Zeile 15) und an result (Zeile 16) angehängt. Außerdem wird erneut die -Umgebung N (o2) bestimmt (Zeile 14) und die Kerndistanz (Zeile 17) ermittelt. Ebenfalls wird, falls |N (o2)| ≥ minP ts ist, was gleichbedeutend mit der Tatsache ist, dass die Kerndistanz nicht unendlich bzw. definiert ist, noch einmal update() aufgerufen. Dadurch können sich bisherige Einträge in der Prioritätswarteschlange nach vorne verschieben bzw. neue hinzu kommen. Es ist durchaus möglich, dass die Prioritätswarteschlange erst dann leer wird, wenn 1 Es können auch andere Aufzeichnungsmodi genutzt werden wie zum Beispiel in einem regelmäßigen Entfernungsintervall 22 Algorithmus 1: OPTICS Data : A dataset to cluster (DS), minimum amount of points (minPts), maximum radius (eps) Result : The dataset in the order created by OPTICS and each object is annotated with a reachability-distance 1 begin 2 OrderedList results := new OrderedList(); /* queue is ordered by reachability-distance */ := 3 PriorityQueue queue new PriorityQueue(); 4 for o ∈ DS do 5 if o not processed then 6 neighbours := DS.getNeighbours(eps, o); 7 o.reachability_distance := UNDEFINED; /* See also def. 7 for the core distance */ 8 o.setCoreDistance(DS, minPts, eps); 9 o.setProcessed(TRUE); /* The very first point of the data set will always have an undefined reachability distance */ 10 results.append(o); 11 if o.core_distance not UNDEFINED then /* calculate the reachability distance from each object in the neighbourhood to o and store them in the ordered queue. Pseudo code for update() can be found on page 24 */ 12 update(queue, neighbours, o); 13 while queue.hasNext() do 14 o2 := queue.next(); 15 neighbours2 := DS.getNeighbours(eps, o); 16 o2.setProcessed(TRUE); 17 results.append(o2); 18 o2.setCoreDistance(DS, minPts, eps); 19 if o2.core_distance not UNDEFINED then /* manipulate the ordered queue again */ 20 update(queue, neighbours2, o2); 21 end 22 end 23 end 24 end 25 end 26 end 23 Prozedur update(PriorityQueue queue, neighbours, centerObject) /* if you look up upon algorithm 1 you can see, that this procedure will be only invoked if the centerObject has a defined core distance */ 1 core_distance := centerObject.core_distance; 2 for o ∈ neighbours do 3 if o not processed then 4 tmp_reachability_distance := max(core_distance, dist(o, centerObject); /* o can only be in the priority queue, if it has already a valid reachability distance and it is not processed. If the new reachability-distance for o is valid (that means below eps) it should be stored in the priority queue. */ 5 if o.reachablity_distance is UNDEFINED then /* o is not stored in the priority queue yet. Update the reachability disance and insert it into the queue */ 6 o.reachablity_distance := tmp_reachability_distance; 7 queue.insert(o); 8 else 9 if o.reachability_distance > tmp_reachability_distance then 10 o.reachability_distance := tmp_reachability_distance; 11 queue.move_up(o); 12 24 der komplette Datensatz abgearbeitet ist. Dies ist der Fall, wenn alle Punkte im Datensatz keine undefinierte Kerndistanz haben. Wenn nicht, wird vor der Abarbeitung des kompletten Datensatzes die Schleife in Zeile 12 abgebrochen und der Algorithmus führt Zeile 5 erneut aus. Nach Abschluss der Ausführung ist jedes Objekt in der geordneten Liste und mit einer Erreichbarkeitsdistanz versehen. Daraus kann man dann ein Erreichbarkeitsdistanzdiagramm erstellen, wie z.B. die Abbildungen 3.2 und 2.3. Von einer Kreuzung wird nun erwartet, dass sie zu einem Tal im Erreichbarkeitsdistanzdiagramm führt, da dort eine lokale Erhöhung der Dichte erwartet wird. Abbildung 3.2 zeigt, wie vermutlich sich das Bild einer Kreuzung auf den Cluster auswirkt. In den folgenden zwei Abschnitten werden Verfahren vorgestellt, die diese Täler erkennen und extrahieren können. 3.1.2 | Clusterextraktion Für das Extrahieren der Cluster aus dem Erreichbarkeitsdistanzdiagramm (eine Folge von Objekten {x1 , x2 , . . . , xn }) gibt es einen Algorithmus (der ebenfall in [KSAB99] beschrieben), bei dem steile Umgebungen (steep areas) ermittelt werden. Jedem Objekt xi ist eine Erreichbarkeitsdistanz zugeordnet, die mittels r(i) ermittelt werden kann. Der Algorithmus erhält zusätzlich als Eingabeparameter die Zahl ξ, welche zwischen 0 und 1 liegt und den Wert minP ts, bei dem Ankerst et al [KSAB99] empfehlen, ihn mit minP ts bei der ursprünglichen Ausführung von OPTICS gleichzusetzen. Definition 12 (ξ-steil fallendes Objekt) Ein Objekt ξi ist dann ξ-steil fallend (ξ-steep downward point), wenn seine Erreichbarkeitsdistanz multipliziert mit (1 − ξ) größer ist als die des Nachfolgers. r(i) · (1 − ξ) ≥ r(i + 1) Analog kann man auch einen ξ-steil steigenden Punkt definieren.2 Definition 13 (ξ-steil fallende Umgebung) Ein Intervall I = [xs , xe ], das eine Teilmenge des Ergebnisses von OPTICS ist. I wird als ξ-steil fallende Umgebung bezeichnet, genau dann, wenn: • xs und xe sind ξ-steil fallende Objekte 2 Übersetzung aus dem Englischen vom Autor. Original: „A point p ∈ {1, . . . , n − 1} is called a ξ-steep downward point iff p’s successor is ξ% lower: DownP ointξ (p) ⇔ r(p) × (1 − ξ) ≥ r(p + 1)“ 25 Kreuzung Straße Straße Kreuzung Abbildung 3.2.: Die Vermutung ist, dass bei Kreuzungen die Dichte steigt und die Erreichbarkeitsdistanz sinkt. 26 • ∀i, s < i ≤ e : r(i) ≤ r(i − 1) • I hat nicht mehr als minP ts aufeinander folgende Objekte, die keine ξ-steil fallenden Objekte. ∀[xs , xe ] ⊆ I mit @xi ∈ [xs , xe ] ist ξ-steil fallendes Objekt ⇒ e − s < minP ts • I ist maximal: ∀J : (I ⊆ J ∧ J ist ξ-fallende Umgebung ⇒ I = J) Analog kann auch die ξ-steil steigende Umgebung definiert werden.3 Ein Cluster sind dann alle Punkten, zwischen einer fallenden steilen Umgebung und einer steigenden steilen Umgebung. Im Idealfall bilden der erste Punkt s der fallenden steilen Umgebung und der letzte Punkt e der steigenden steilen Umgebung die „Grenzen“ des Clusters, sofern |r(s) − r(e)| ≤ ξ · r(e) ist. Falls dies nicht der Fall ist, wird nach einer anderen möglichen Kombination aus den beiden steilen Gebieten gesucht, oder es kann kein gültiger Cluster erstellt werden. Zudem gilt ∀i, s < i < e : r(i) < r(s) ∧ r(i) < r(e), was bedeutet, dass kein Punkt eine größere Erreichbarkeitsdistanz haben darf als die beiden begrenzenden Punkte. Cluster Abbildung 3.3.: Die beiden steilen Umgebungen sind rot hervor gehoben. Innerhalb eines Clusters darf kein Punkt eine höhere Erreichbarkeitsdistanz als die beiden begrenzenden Punkte haben. Dieses Verfahren würde erst einmal alle Cluster extrahieren. Auf Abbildung 3.2 würde dies bedeuten, dass es auch die Straße extrahiert. Daher werden alle Cluster entfernt, 3 Übersetzung vom Autor aus dem Englischen. Original: „An interval I = [s, e] is called a ξ-steep upward area U pAreaξ (I) iff it satisfies the following conditions: s is a ξ-steep upward point U pP ointξ (s); e is a ξ-steep upward point; each point between s and e is at least as hight as its predecessor: ∀, x, s < x ≤ e : r(x) ≥ r(x − 1); I does not contain more than minP ts consecutive points that are not ξ-steep upward: ∀[s, e] ⊆ [s, e] : ((∀x ∈ [s, e] : ¬U pwardP ointξ (x)) ⇒ e − s < minP ts, I is maximal: ∀J : (I ⊆ J, U pAreaξ (J) ⇒ J = I 27 die Subcluster enthalten. Oder anderes formuliert: Es werden nur die Cluster extrahiert, die auf der niedrigsten Hierarchieebene liegen. 3.1.3 | Schwankungsanalyse Alternativ zu den eben vorgestellten Verfahren wurde noch ein zweites Verfahren zur Kreuzungserkennung entwickelt. Es erhält zwei Parameter: Zum einen ξ, ein Wert zwischen 0 und 1 sowie ∈ N. Sei D = {x1 , x2 , . . . xn } der Datensatz und r(xi ) die Funktion, die die Erreichbarkeitsdistanz ermittelt. Der Algorithmus errechnet dann für jedes i ∈ {, + 1, . . . , n − } die durchschnittliche Erreichbarkeitsdistanz (i, ), die wie folgt definiert ist: i+ P (i, ) = j=i− ! r(xj ) − r(xi ) 2· Sofern (i, ) · ξ ≥ r(xi ) ist, so wird xi als möglicher Repräsentant für eine Kreuzung betrachtet. Eine in diesem Verfahren ermittelte Kreuzung hat meistens dann auch mehrere Repräsentatanten. Dieses Verfahren ermittelt keine Cluster im eigentlichen Sinne, sondern analysiert, wie stark die Erreichbarkeitsdistanz in einem Bereich des Diagrammes schwankt. 3.2 | Aggregierung Im vorhergehenden Abschnitt wurde gezeigt, wie Kreuzungen mit der Hilfe von OPTICS erkannt werden können. Mit Hilfe dieser automatischen Erkennung können nun die Spuren an den Kreuzungen zerlegt werden. Da die Strecken jetzt nur noch die Länge eines Straßenabschnittes haben, sinkt damit deutlich die Wahrscheinlichkeit, dass die Distanzfunktion hohe Werte zurück liefert, obwohl sie teilweise nah beieinander verlaufen. Als Distanzfunktion können zwei verschiedene Distanzen eingesetzt werden: 1 die Fréchet-Distanz und die Hausdorff2 3 6 Distanz. Mit der von DBSCAN durchge4 5 führten Clusteranalyse werden die einzelnen Spursegmente zwar in Gruppen zu1 sammen gefasst oder als Rauschen de2 3 6 klariert und verworfen, aber die Zusam4 5 menfassung, also das Aggregieren ist noch Abbildung 3.4.: Zusammenfassen eines Clunicht geschehen. sters zu einer aggregierten Das Verfahren zum Ermitteln des CluSpur. Schwarz sind zwei ursterzentrums arbeitet mit Spuren, die alsprünglicher Spuren dargele aus n Punkten bestehen. Daher müssen stellt und grün die neu entdie Spuren, nachdem sie geclustert wurstandenen. den, auf eine einheitliche Punktzahl gebracht werden. Dabei werden alle Punkte jeder Spur durchnummeriert. Danach wird 28 für jedes i ∈ [1, . . . , n] der Schwerpunkt aller Punkte mit der Nummer i berechnet. Abbildung 3.4 zeigt schematisch, wie dieser Algorithmus arbeitet. 29 4 | Implementierung Um die in der vorher gehenden Verfahren anwenden zu können, wurde ein Prototyp in Java 7 geschrieben, der diese Algorithmen implementiert und einige Werkzeuge zur Evaluation liefert. Der Prototyp wurde GPSk genannt und erweitert den Prototypen agg2graph, den Johannes Mitlmeier [Mit12] geschrieben hat. 4.1 | Eingabe Format Die Daten für dieses Projekt stammen von OpenStreetMap - sie wurden mit Hilfe des Clients JOSM herunter geladen und als GPX-Datei auf der Festplatte gespeichert. Die Abkürzung GPX steht für GPS Exchange Format und basiert auf dem XML-Format.[Top13] Es ist ein einfaches Dateiformat, in dem Punkte einzeln als waypoints abgelegt werden können oder auch ganze Strecken. Entweder als route, welche eine einfache Strecke darstellt, oder als track, in dem mehrere trackparts enthalten sind. Die Punkte werden einfach mit Breiten- und Längengrad in einer GPX-Datei angegeben. Zusätzlich gibt es noch die Möglichkeit, Angaben über den Zeitstempel, Messungenauigkeiten oder die aktuelle Höhe zu machen. Da dies nur optional ist, sollte man sich keinesfalls darauf verlassen, dass diese Daten bei einer Eingabedatei vorhanden sind. Außerdem kann an jede Spur und an jeden Punkt auch noch ein <extensions-Element angehängt werden, in dem völlig beliebige Daten abgespeichert werden. In diesem Projekt wird dies dazu genutzt, um zusätzliche Informationen, wie zum Beispiel die errechnete Erreichbarkeitsdistanz, zu speichern. Das Einlesen und die Ausgabe der Daten erfolgt mit Hilfe von JAXB. JAXB ist ein Teil der Java-Bibliothek, die es ermöglicht, XML-Dokumente in einer JavaBean abzubilden und umgekehrt. Der Vorteil dieser Technologie ist, dass die Verarbeitung der Daten sehr einfach ist und JAXB eine valide Ausgabe von XML zusichert.[OM03] Der Nachteil ist, dass JAXB das Dokument nicht einlesen kann, wenn der namespace in der GPX-Datei nicht korrekt definiert wurde. In Listing 4.1 ist der Kopf einer GPX-Datei zu sehen, die mit den Ergebnissen von OPTICS angereichert wurde. Listing 4.1: Kopf einer von GPSk ausgegebenen GPX-Datei. <n s 2 : g p x x m l n s : n s 2=" h t t p : //www. t o p o g r a f i x . com/GPX/1/1 " x m l n s : n s 3=" h t t p : // i n f . fu−b e r l i n . de / agg2graph / e x t e n s i o n s / gpsk " version=" 1 . 1 " c r e a t o r=" gpsk "> <ns2:wpt l a t=" 52. 5177 37300 0000 0028 8946 4667 5325 9301 18560 7910 1562 5 " 30 l o n=" 13 .375974 199999 9999251 258486 7654368 2813644 409179 6875 "> <n s 2 : e x t e n s i o n s> <n s 3 : p o i n t −meta> <r e a c h a b i l i t y D i s t a n c e>INF</ r e a c h a b i l i t y D i s t a n c e> </ n s 3 : p o i n t −meta> </ n s 2 : e x t e n s i o n s> </ ns2:wpt> <ns2:wpt l a t=" 52. 5177 6600 0000 00172 4856 7019 1235 8403 2058 7158 20312 5 " l o n=" 1 3.37 59429 9999 9999 4720 3832 5620 8151 57890 3198 2421 875 "> <n s 2 : e x t e n s i o n s> <n s 3 : p o i n t −meta> <r e a c h a b i l i t y D i s t a n c e> 6.406228352046712 </ r e a c h a b i l i t y D i s t a n c e> </ n s 3 : p o i n t −meta> </ n s 2 : e x t e n s i o n s> Datenquelle Die Daten für dieses Projekt stammen von OpenStreetMap. Diese wurden mit Hilfe des OSM-Clients JOSM herunter geladen. JOSM unterstützt nativ den Export im osm-Format, bietet aber auch an, die Daten im GPX-Format zu exportieren.[Com13] Beim Herunterladen kann man eine Bounding Box festlegen, in der die Daten liegen. Außerdem kann festlegen, ob es Rohdaten seien sollen, die herunter geladen werden oder Kartendaten. Da Kartendaten praktisch schon anonym sind, wurden ausschließlich Rohdaten verwendet. 4.2 | Bereinigung Einige Spuren von OpenStreetMap verlaufen sowohl innerhalb als auch außerhalb der festgelegten Bounding Box. JOSM löscht dann einfach alle Punkte, die außerhalb der Bounding Box liegen. Wenn jedoch eine Spur die Bounding Box verlässt und später wieder eintritt, so entsteht dadurch eine Kante in der Spur, die entlang des Randes der Bounding Box entlang läuft. Um diesen Effekt zu vermeiden, werden die solche Kanten entfernt und Spuren zerlegt. Ebenfalls sind in Spuren Kanten vorhanden, die außergewöhnlich lang sind und die eigentlich nur Sinn ergeben, wenn die Person mit dem Flugzeug unterwegs war. Eine andere Erklärung dafür sind Tunnel: In einem Tunnel gibt es keinen Empfang und manche GPS-Spuren verbinden direkt Tunnelanfang mit dem -ende. agg2graph bietet dafür eine effektive Filterfunktion, die für die Bereinigung der Daten genutzt wurde. Sämtliche Datensätze, auf denen Operationen ausgeführt wurden (dies betrifft alle Ergebnisse der Evaluation in Kapitel 5), wurden vorher von der agg2graphBibliothek bereinigt. Die Parameter dafür stehen in Tabelle 4.1. Johannes Mitlmeier erläutert sie kurz in [Mit12, S.35ff]. 31 minSegmentLength 1 minEdgeLength 0.1 maxSegmentLength ∞ maxEdgeLength 500 minEdgeLengthIncreaseFactor 10 maxZigZagAngle 30 minEdgeLengthAfterIncrease 30 maxNumOutliers 2 Tabelle 4.1.: Parameter für die Bereinigung der GPS-Spuren 4.3 | Karte Graphisch dargestellt wird alles im MapPanel dargestellt, welches die Klasse JXMapViewer erweitert, welcher aus der swingX-Bibliothek[Lab13] stammt. Obwohl agg2graph bereits eine ähnliche Funktionaliät bereit stellt, wird diese nicht genutzt, da sie auf dem JMapViewer (ohne X) basiert, die unter GPL-Lizenz steht und damit es nicht ermöglicht, GPSk unter einer anderen Lizenz als GPL zu veröffentlichen.[Fou13] Der JXMapViewer lädt automatisch die Kacheln, quadratische 256 × 256 Pixel große PNG-Bilder, die für die Darstellung der Karte zusammen gefügt werden, von OpenStreetMap herunter. Diese Kacheln werden zusätzlich auch auf der Festplatte gespeichert, um bei einer späteren Ausführung des Prototypen immer noch eine Karte zeichnen zu können, selbst wenn keine Internetverbindung vorhanden ist. Zwar ist die Darstellung einer Karte für das Funktionieren des Prototypen nicht notwendig, allerdings lässt sich damit sehr einfach überprüfen, ob z.B. Kreuzungen richtig erkannt wurden. 4.4 | Algorithmen Fast implementierte Algorithmus in GPSK erweitert die Klasse AbstractAlgorithm. Alternativ, wenn der Algorithmus mehr als zwei Datensätze benötigt, kann dieser stattdessen auch die Klasse MultipleInputAlgorithm erweitert werden. Ausgenommen ist allerdings der Algorithmus OPTICS, der Dieser muss nur die Methode call() implementieren und eine @Options enthalten, die auf die Klasse für die Optionen zeigt. Eine solche Options-Klasse ist beispielhaft in Listing 4.2 zu finden. Per reflections wird diese von der Klassse RunAlgorithmAction ausgewertet und eine GUI erstellt, wie man sie in Abbildung 4.1 sehen kann. RunAlgorithmAction erweitert die Klasse AbstractAlgorithm aus der Java-Bibliothek. Ihr Konstruktor erhält die Klasse vom Algorithmus und das Objekt muss nur noch in einer entsprechenden Swing-Komponenente (JButton, JMenuItem eingefügt werden. Jeder Datensatz besteht aus Spuren und Punkten, die einem Objekt der GPSkEnvironment-Klasse gespeichert werden. Zusätzlich werden sämtliche GPSkEnvironment’s in einer HashMap in der Singleton-Klasse EnvironmentManager gespeichert. Bei einem Klick auf eine RunAlgorithmAction wird ein GUI-Element gebaut, in dem eine DropDown-Liste alle vorhandenen Datensätze auflistet (Algorithmen-Klassen können Filter angeben, um unsinnige Eingabe zu verhindern) und es wird ein Textfeld angeboten, in 32 dem man den Schlüssel angeben kann, unter dem das Ergebnis gespeichert werden kann. Beispielhaft ist eine solche Klasse für DBSCAN in Listing 4.2 zu finden. Listing 4.2: Optionen Klasse für DBSCAN. Die Felder können zusätzliche Annotationen haben (hier @Min, um Bedingungen für diese Objekte festzulegen. Die @Description-Annotation kann von der OptionsDialog-Klasse benutzt werden, um Tooltips zu erstellen. Sie wurde in diesem Listing weggelassen, um Platz zu sparen. package de . fub . agg2graph . gpsk . a l g o r i t h m s ; import de . fub . agg2graph . gpsk . a n n o t a t i o n s . D e s c r i p t i o n ; import de . fub . agg2graph . gpsk . a n n o t a t i o n s . Min ; /∗ ∗ ∗ ∗ @author C h r i s t i a n Windolf c h r i s t i a n w i n d o l f @ w e b . de ∗/ public c l a s s DBSCANoptions { @Min( v a l u e =0) @Description ( value = " [ . . . ] " ) public int minPts = 5 ; @Min( v a l u e =0) @Description ( value = " [ . . . ] " ) public double eps = 1 0 0 ; @Override public S t r i n g t o S t r i n g ( ) { return " DBSCANoptions{ " + " minPts=" + minPts + " , ␣ eps=" + eps + ’ } ’ ; } } 4.5 | Kreuzungserkennung Die Laufzeit von OPTICS lässt sich mit Hilfe eines Indizes, wie in Abschnitt 2.4.2 vorgestellt, von O(n2 ) auf O(n · log n) reduzieren. Diese Reduktion ist nicht nur in der Theorie, sondern auch in der Praxis ausgesprochen relevant. Ein System, das mit einem Core Duo T2400 und 2 GB RAM ausgestattet war benötigte bei einem Datensatz mit 3000 Punkten ungefähr 30 Sekunden, wenn kein Index verwendet wurde. Mit Index konnte die Laufzeit auf weniger als eine Sekunde reduziert werden. Die verwendete Bibliothek für den RBaum ist die jsi-Bibliothek [Mor13]. Sie kann jedoch nur mit Koordinaten umgehen, die in einer ebenen Fläche liegen. Längen- und 33 Abbildung 4.1.: Beispielhafter Startdialog für DBSCAN. Das Feld input ist eine DropDown-Liste, die alle vorhandenen Datensätze aus der GPSkEnvironment auflistet. Bei output steht, unter welchem Schlüssel die Ergebnisse nach der Ausführung in die GPSkEnvironment eingefügt werden sollen. Darunter stehen die Felder, die durch die Klasse DBSCANoptions automatisch erstellt wurden sowie den aus der @DescriptionAnnotation Tooltip. (siehe auch Listing 4.2) 34 Breitengrad sind keine solchen Koordinaten, weshalb die UTM -Projektion zum Einsatz kommt. (siehe Abschnitt 2.4.1. Die im Prototypen verwendetete Implementierung stammt aus der jsi-Bibliothek.[Mor13] Allerdings kann ein R-Baum nur mit Rechtecken als Suchanfrage umgehen. [Gut84][S.49] Dies führt dazu, dass die Nachbarschaftsanfrage N (p) (welche kreisförmig ist) nicht ganz korrekt beanwortet wird und alle Punkte x mit dist(p, x) > nachträglich entfernt werden müssen, wie man in Abbildung 4.2 sehen kann. Der zu große Abfragebereich und die Tatsache, dass Anfragen an den R-Baum nicht nur im best-case mit einer Laufzeit von O(log n) beantwortet werden können, führt dazu, dass die Implementierung nicht den best-case erreicht. 2· 2· Abbildung 4.2.: Links eine normale Abfrage mit dem R-Baum, die zu viele Werte zurück liefert. Rechts ist ein konstruierter worst-case, bei dem die Abfrage eine Laufzeit von O(n) benötigt unter der Annahme, dass gleich dem Durchmesser des Datensatzes ist. Allerdings kann man auch deutlich erkennen, dass die zukünftigen Nachbarschaftsanfragen (es wird für jeden Punkt eine gemacht) weniger als O(n) Schritte benötigen. Wenn so groß wie der Durchmesser der Daten ist, führt dies auch dazu, dass eine Abfrage den kompletten Datensatz zurück liefert und die Laufzeit den worst-case von O(n2 ) erreicht. 35 5 | Evaluation Um die Qualität der vorgestellten Verfahren und des Prototypen zu evaluieren, wurden Testdurchläufe mit Datensätzen von OpenStreetMap durchgeführt. Für die Überprüfung der Kreuzungserkennung wurde ein Datensatz aus der Umgebung des Berliner Hauptbahnhofes genommen. (resources/hbf/hbf.gpx). Als Distanzfunktion wurde die Fréchet-Distanz verwendet. Für die Aggregierung wurde ein Datensatz aus West-Berlin, der sich vom Brandenburger Tor bis zum Bahnhof Westend erstreckt verwendet. Der Prototyp erlaubt ist in der Lage, seine Ergebnisse in einem JXMapViewer einzuzeichnen und damit eine optische Evaluation der Daten zu ermöglichen. 5.1 | Kreuzungserkennung Die Kreuzungserkennung ist ein elementarer Vorverarbeitungsschritt für die Aggregierung. Das in Abschnitt 3.2 vorgestellte Verfahren kann ohne sie wenn überhaupt, nur mit einem sehr großen Informationsverlust arbeiten. Die Wahl auf die Umgebung des Berliner Hauptbahnhofes fiel vor allem deshalb, weil sich dort mehrere Szenarien überlagern. 1. Eine Mischung aus geschwungenen Verkehrswegen (insbesondere an der Spree) und geraden Verkehrswegen. 2. Es gibt drei verschiedene Verkehrsmittel: die Straßen (die sich wiederum in Radfahrer, Autofahrer und Fußgänger aufteilen können), die Bahn und die Schifffahrt. Außerdem gibt es Spuren, die von einem zum anderen Verkehrsmittel wechseln. 3. Es gibt Stellen im Datensatz, an denen sich Spuren überschneiden, aber keine Kreuzungen erkannt werden sollen. Eine Brücke über die Spree ist keine Kreuzung zwischen der Straße und dem Fluss. Ebenfalls soll eine S-Bahn-Brücke nicht als Kreuzung zwischen einer Straße und den Gleisen gewertet werden. 5.1.1 | Optische Evaluation Der RDP-Filter (siehe Abschnitt 2.4.3) wurde ursprünglich in den Prototypen eingebaut, um Rechenleistung zu sparen und die Daten (wenn auch verlustbehaftet) zu komprimie- 36 Abbildung 5.1.: Die ermittelten Kreuzungen, die rot dargestellt sind, wurden ohne RDP-Filter erzeugt. Die blauen Punkte sind hingegen mit RDP-Filter als Vorverwarbeitungsschritt durchgeführt. GPSk hat dabei die blauen Punkte in einer höheren Ebene gezeichnet als die roten, was bedeutet, dass die roten einfach dort übermalt wurden, wo ursprünglich blaue waren. Bei fast allen blauen Punkten liegt jedoch ein roter Punkt direkt darunter, abgesehen von den Rändern. Dort liegt meistens kein roter Punkt unter einem blauen Punkt. Die Punkte wurden mit Hilfe der Schwankungsanalyse aus dem Erreichbarkeitsdistanzdiagramm von OPTICS ermittelt. Links ist ein Bereich markiert, der auf der Kurve einer S-Bahn-Schiene liegt. Hier liegen unter den blauen Punkten keine roten Punkte. Dies liegt daran, dass die Strecke dort eine Kurve macht und der RDP-Filter dort sehr viele Punkte nicht löscht. Der markierte Bereich links oben zeigt hingegen wiederum eine Kreuzung, die ohne RDP (rot) gefunden wurde, mit jedoch übersehen wurde. Der genaue Verlauf der Kurve in diesem Bereich wird in Abbildung 5.2 dargestellt. Man sieht, dass dort eine einzige Spur an genau dieser Kreuzung sehr viele Punkte hat, jedoch wird dies vom RDP-Filter auf einen Punkt reduziert. 37 (a) ohne RDP (b) mit RDP Abbildung 5.2.: Der RDP-Filter reduziert diese Stelle auf einen einzigen Punkt macht es in diesem Sonderfall unmöglich dies als Kreuzung zu erkennen. ren. Die optische Analyse zeigt jedoch sehr deutlich, dass dieser Schritt die Ergebnisse der Kreuzungserkennung deutlich verbessern kann. Dies liegt daran, dass die in Abschnitt 3.1 vorgestellten Hypothesen nicht wirklich zutreffen. Die erste Hypothese stimmt zwar, die zweite jedoch nicht. Fußgänger bleiben an Kreuzungen nicht stehen, wenn sie keine Straße überqueren müssen und erhöhen die Dichte der Punkte bei einer zeitbasierten Aufzeichnung nicht. PKWs wiederum müssen ebenfalls kaum ihre Geschwindigkeit reduzieren, wenn die Ampel grün ist und sie geradeaus fahren. Umgekehrt können sie im Stau stecken bleiben und die Kreuzungserkennung ordnet dies als Stau ein. Wenn man jedoch den RDP-Filter als Vorverarbeitungsschritt durchlaufen lässt, so werden die Spuren geglättet. Wenn eine Spur abbiegt, so muss der RDP-Filter an dieeser Stelle den Punkt belassen. Wenn bei einem geraden Straßenverlauf nahezu alle Punkte gelöscht werden, an Kreuzungen jedoch nicht, so entsteht wieder das Muster, auf das in Abbildung 3.2 gehofft wurde. Um die Auswirkungen des RDP-Filters besser zeigen zu können, wurden die Kreuzungen (mit und ohne RDP-Filter) ermittelt und mit Hilfe von GPSk auf einer Karte eingezeichnet. Dies wurde zwei Mal durchgeführt. Einmal wurde für das Erreichbarkeitsdistanzdiagramm mit der Schwankungsanalyse ausgewertet (Abbildung 5.1) und einmal mit der Clusterextraktion (Abbildung 5.3). Auf beiden Abbildungen kann man gut erkennen, dass mit dem RDP-Filter praktisch genau so viele Kreuzungen erkannt werden wie ohne. Allerdings werden ohne RDP-Filter weitaus mehr Fehler gemacht als mit dem Filter. OPTICS wurde für diese Abbildungen mit den Parametern = 75 Meter und minP ts = 15 ausgeführt. Bei der Variante mit RDP-Filter (blaue Punkte) wurde auf 25 Meter gesetzt. Für die mit der Schwankungsanalyse erstellte Abbildung 5.1 wurde ξ = 0.9 und = 10 gewählt. Die Variante mit der Clusterextraktion in Abbildung 5.3 bekam die Parameter ξ = 0.05 und minP ts = 15. Der RDP-Filter hat jedoch nicht nur positive Auswirkungen auf die Ergebnisse. An der Kreuzung Otto-Dix-Straße/Lesser-Ury-Weg (links oben auf Abbildung auf Abbildung 5.1, Vergrößerung mit Spuren aus dem Datensatz statt erkannten Kreuzungen sind in Abbildung 5.2 zu sehen) verläuft nur eine Spur, bei der auf einmal die Punktdichte an einer Kreuzung deutlich ansteigt. Ohne RDP-Filter wird dies auch deshalb als Kreuzung erkannt, aber mit RDP-Filter wird diese Punkte auf genau einen Punkt reduziert, mit der Folge, dass sie nicht mehr erkannt wird. Ein weiteres Problem ergibt sich mit der Besonderheit, dass Daten von OpenStreetMap 38 Abbildung 5.3.: Ein zweiter Vergleich bei der Kreuzungserkennung, diesmal allerdings mit der Clusterextraktion statt mit der Schwankungsanalyse. Deutlich zu sehen ist dabei, dass weniger Punkte entstehen als in Abbildung 5.1. Erneut zeigen die roten die Berrechnung ohne RDP-Filter und die blauen Punkte mit RDP-Filter an. Man sieht allerdings wieder ähnliche Artefakte: Ränder des Datensatzes und Kurven (z.B. auf der S-BahnStrecke im Südwesten) werden als Kreuzungen erkannt. 39 verwendet wurden. Diese Daten sind nur ein Ausschnitt des Gesamtdatensatzes und Spuren, die die festgelegte Bounding Box um den Hauptbahnhof verlassen, werden sie an den Rändern abgeschnitten. Die Endpunkte dieser abgeschnittenen Punkte liegen dadurch automatisch am Rand der Bounding Box. Der RDP-Filter wiederum entfernt niemals die Endpunkte einer Strecke. Wenn jedoch wieder der RDP-Filter überall Punkte läscht, jedoch nicht am Rand, so steigt dort die Dichte (und es sinkt die Erreichbarkeitsdistanz). Die Folge ist, dass diese als Kreuzung eingestuft werden. Deshalb gibt es in GPSk auch ein Werkzeug, dass einfach sämtliche Punkte, die weniger als x Meter Abstand zum Rand haben, entfernt werden (Voreinstellung sind 25 Meter). Bei der Erstellung der Abbildungen 5.1 und 5.3 ist jedoch dieses Tool nicht zum Einsatz gekommen, um genau diesen Effekt zeigen zu können. Ebenfalls auffällig ist die sehr große Ansammlung an Punkten auf dem Hauptbahnhof. Dies ist erst einmal grundsätzlich nicht schlecht, da der Hauptbahnhof ein Verkehrsknotenpunkt ist. Wünschenswert wäre es natürlich, wenn er diesen auf einige sehr wenige Punkte reduzieren würde, allerdings ist dieses Gelände sehr unübersichtlich. Beim Vergleich zwischen den Abbildungen 5.1 (Schwankungsanalyse) und 5.3 (Clusterextraktion) fällt auf, dass die Schwankungsanalyse häufig einen ganzen Satz an Punkten für eine Kreuzung erkennt, während die Clusterextraktion sich auf einen beschränkt. Dafür gibt es zwei Gründe: Die Schwankungsanalyse betrachtet eine steile Umgebung als Kreuzung. Bei einer steil abfallenden Umgebung hat der letzte Punkt dieser Umgebung nur Punkte, die eine höhere Erreichbarkeitsdistanz haben als er selbst und rechts einen ungefähr ähnlichen hohen Wert. Unterm Strich ist die durchschnittliche Erreichbarkeitsdistanz in seiner näheren Umgebung niedriger als seine eigene und die Schwankungsanalyse „sieht“ eine Kreuzung. Nun ist jedoch in der Clusteranalyse jeder Cluster von zwei steilen Umgebungen begrenzt. Der zweite Grund ist der, dass die Schwankungsanalyse auch Cluster erkennt, die weniger als minP ts Punkte haben. 5.1.2 | Statistische Evaluation Bei der optischen Evaluation lieferte die Clusterextraktion mit dem RDP-Filter deutlich bessere Ergebnisse, daher wird in diesem Abschnitt ihr Verhalten noch einmal statistisch untersucht. Für die statistische Evaluation wird erneut der Datensatz vom Hauptbahnhof DSc verwendet. Dieser soll nun mit einem Referenzdatensatz DSr verglichen werden, in dem manuell alle Kreuzungen eingetragen wurden, die erkannt werden sollten. Die Referenzdaten befinden sich in der Datei resources/hbfRef.gpx. Damit eine eine Kreuzung in diesen Referenzdatensatz eingetragen wurde musste sie folgende zwei Bedingungen erfüllen: 1. Auf einer Straßenkarte muss eine Kreuzung erkennbar sein. (Es wurde dabei Bing Maps in der höchsten Zoomstufe verwendet) 2. An der Stelle verlief auch eine Spur aus dem Datensatz. Für den Vergleich zwischen diesen beiden Datensätzen wird die Erkennungs- (Def. 14) und die Fehlerrate (Def. 15) ermittelt. 40 Definition 14 (Erkennungsrate) Sei DSc ein Datensatz mit errechneten Kreuzungen, DSr ein Referenzdatensatz mit manuell eingetragenen Kreuzungen und > 0 ein Maximalabstand. Dann ist die Erkennungsrate φ wie folgt definiert: φ= |{p|p ∈ DSr ∧ ∃q ∈ DSc : dist(p, q) ≤ }| |DSr | Definition 15 (Fehlerrate) Sei DSc ein Datensatz mit errechneten Kreuzungen, DSr ein Referenzdatensatz mit manuel eingetragenen Kreuzungen und > 0. Dann ist die Fehlerrate Φ wie folgt definiert: Φ= |{p|pinDSc ∧ ∃q ∈ DSr : dist(p, q) ≤ }| |DSc | Φ/φ 0, 7 0, 6 Fehlerrate Φ Erkennungsrate φ 0, 5 ξ 0, 04 0, 08 0, 12 0, 16 0, 20 Abbildung 5.4.: Graphische Darstellung der ermittelten Erkennungsrate- bzw. Fehlerrate. Die Kreuzungen wurden mit Hilfe von OPTICS ( = 75 Meter, minP ts = 15 und anschließender Clusterextraktion (minP ts = 15, ξ siehe x-Achse) ermittelt. Zudem wurden Kreuzungen entfernt, die weniger als 25 Meter Abstand zum Rand des Datensatzen haben. Die Graphik 5.4 zeigt, wie sich der Wert der Fehlerrate Φ und der Erkennungsrate φ verhalten, wenn der Parameter ξ bei der Clusterextraktion verändert wird. Je niedriger ξ wird, umso höher wird die Erkennungsrate und die Fehlerrate sinkt. Der Grund dafür sind Kurven. Eine Kurve auf einer Straße führt dazu, dass alle Verkehrteilnehmer dazu gezwungen werden, abzubiegen und dem Straßenverlauf zu folgen. An genau diesen Stelle löscht nun der RDP-Filter keine Punkte, um möglichst viel vom eigentlichen 41 Spurverlauf zu erhalten. An einer Kreuzung hingegen haben die Verkehrsteilnehmer die Wahl, ob sie geradeaus fahren oder abbiegen wollen. Daher sind die Täler im Erreichbarkeitsdistanzdiagramm an Kurven deutlich tiefer als an Kreuzungen und werden selbst bei einem sehr hohen ξ noch erkannt. Je niedrige ξ wird, umso mehr werden auch die etwas weniger tiefen Täler der Kreuzungen bemerkt. Die Tatsache, dass die Fehlerrate mit fallendem ξ ebenfalls sinkt, bedeutet nicht, dass in absoluten Zahlen weniger Fehler gemacht werden. Dadurch, dass mehr Kreuzungen korrekt erkannt werden, fällt einfach die relative Fehlerrate. 5.2 | Aggregierung Die Evaluation des Endergebnisses erfolgt ebenfalls mit optischen und statistischen Methoden. Da bei der optischen Analyse der Kreuzungserkennung die Kombination aus RDP-Filter, OPTICS und Clusterextraktion die besten Ergebnisse lieferte, wurden diese eingesetzt, um die Spuren aufzuteilen, bevor die Aggregierung begann. 5.2.1 | Optische Evaluation Die graphischen Ergebnisse entsprechen weitestgehen den Erwartungen. In den meisten verlaufen die aggregierten Spuren über Hauptstraßen, Nebenstraßen werden selten „erkannt“. Dies hängt häufig damit zusammen, dass im Quelldatensatz (resources/dbscan/berlin.gpx) zu wenig Spuren dort verlaufen. Ein anderer Grund ist die Tatsache, dass die Kreuzungserkennung auf Nebenstraßen selten Kreuzungen erkennt, so dass es zu keiner Aufspaltung kommt. Dies führt dann wieder zu dem in Abbildung 3.1 dargestellten Problem, dass Segmente, die nur partiell nah beieinander laufen, nicht als Cluster erkannt werden. Auf den Hauptstraßen sind zudem häufig zwei Spuren zu sehen. Die Erklärung dafür ist einfach: Jede Richtung hat ihre eigene Spur. Manche Straßen haben trotzdem nur eine Spur, hier ist häufig ebenfalls der Mangel an Spuren der Grund für die andere Richtung der Grund. Abbildung 5.5 zeigt graphisch das Ergebnis der Aggregierung. Interessant ist dabei auch ein Blick auf einen Fritz-Schloss-Park (Abbildung 5.6). Man würde zumindestens erwarten, dass in der aggregierten Datei Hauptstraßen eher erkannt werden als Parkwege. Allerdings laufen im Ursprungsdatensatz (weiterhin resource/dbscan/berlin.gpx) auf der Haupstraße weitaus weniger Spuren entlang als im Park. Es ist im Sinne der Anoynmität, dass Spuren, die zu wenige Nachbarn haben, entfernt werden. Insofern liefert der Algorithmus das gewünschte Ergebnis. Die Grundaussage des Datensatzes, dass OpenStreetMap-Nutzer sich häufig im Fritz-Schloss-Park aufhalten (oder ihn einfach nur oft vermessen), bleibt erhalten - wie sie ihn erreicht haben (woraus sich schließen ließe, wo sie wohnen), wurde gelöscht. Allerdings bilden sich in unübersichtlichen Situationen (z.B. Fußgängerzonen) Cluster, bei denen die Ermittlung des Zentroiden kaum noch möglich ist. Als Beispiel dient hier die nähere Umgebung des Kölner Doms. Zwar werden hier noch einige Spuren aggregiert, allerdings haben einige Aggregate eine kurze Länge, die kaum noch die ursprünglichen 42 Abbildung 5.5.: Die schwarzen Linien sind das Ergebnis der Durchführung mit den Parametern = 50 Meter und minP ts = 2. Bei den blauen Linien wurde stattdessen minP ts stattdessen auf 5 gesetzt. Dabei liegen die blauen Linien in einer höheren Schicht, und übermalen dabei fast alle schwarzen Linien. Das heißt, alles, was mit minP ts = 5 erkannt wurde, wurde auch mit minP ts = 2 erkannt. 43 Abbildung 5.6.: Der Fritz-Schloss-Park. Die aggregierten Spuren sind blau eingezeichnet, die Original-Spuren rot. DBSCAN wurde hier mit den Parametern = 50 Meter und minP ts = 5 ausgeführt. 44 Bewegungen wieder spiegeln. Abbildung 5.7 zeigt den Ausgangsdatensatz in Köln und die Ergebnisse. (a) Kölner Hauptbahnhof/Dom. Die bluen Linien sind die aggregierten. Es wird zwar noch anatzweise das Netz der dortigen Fußgängerzone wieder gegeben, allerdings sehr unsauber. (b) Bei ausreichend vielen weiteren Strecken fässt DBSCAN die beiden schwarzen Strecken zu einem einzigen Cluster zusammen. Abbildung 5.7.: Die Fußgängerzone in der Nähe des Kölner Doms stellt ein Problem dar, da sich dort Cluster bilden, deren Zentroide nur noch etwas sehr unscheinbares darstellen. Die rechte Skizze zeigt beispielhaft, wie in solchen Situationen unterm Strich zwei Spuren zusammen gefasst werden, die eigentlich eine recht hohe Fréchet-Distanz haben. 5.2.2 | Statistische Evaluation Eine wichtige Stellschraube für die Aggregierung ist der Parameter minP ts. Er bestimmt direkt, ob eine Straße, auf der x Spuren verlaufen, ins Aggregat hinein kommen oder nicht. Die logische Konsequenz ist, dass mit steigendem minP ts die Anzahl der aggregierten Spuren (also Zentren der ermittelten Cluster) sinkt. Auch die Summe der Länge sämtlicher Aggregate müsste sinken. Testläufe mit dem Datensatz aus der Datei resources/dbscan/berlin.gpx, deren Ergebnisse in der Abbildung 5.8 eingetragen wurden, bestätigen diese Vermutung. Die Messreihen einmal mit dem Parameter = 50 Meter und einmal mit = 20 Meter durchgeführt. 45 = 50m, Länge = 50m, Anzahl der Cluster = 20m, Länge 480 2400 400 2000 320 1600 240 1200 160 800 80 400 4 8 12 16 20 Anzahl der Cluster Länge aller Strecken in Kilometer = 20m, Anzahl der Cluster 24 minPts Abbildung 5.8.: Die blauen Linien sind die statistischen Ergebnisse für = 50 Meter und die grünen Linien sind die Ergebnisse mit = 20 Meter. Die Linien, die die Gesamtlänge aller aggregierten Spuren darstellen, sind durchgezogen. Die Linien, die die Anzahl der Cluster bzw. aggregierten Spuren widerspiegeln sind gestrichelt. 46 6 | Fazit & Ausblick In dieser Arbeit wurden bei der Kreuzungserkennung verschiedene Verfahren implementiert und evaluiert. Dabei lieferte das Verfahren mit RDP-Filter, OPTICS und der Clsuterextraktion die besten Ergebnisse. In dieser Arbeit konnte darauf eine Art bestpractise ermittelt werden, wie Spuren mit dem Prototypen GPSk anonymisiert werden können. Diese best-practise ist in dem Fließdiagramm in Abbildung 6.1 dargestellt. Import Reinigung RDP-Filter OPTICS Splitter Clusterextraktion DBSCAN Aggregierung Abbildung 6.1.: Empfohlener Ablauf für die Anonymisierung der Spuren mit GPSk. Dabei stehen die durchgezogenen Linien für Spuren, die von einem Verarbeitungsschritt übergeben. Die gepunkteten Linien stehen hingegen Punkte. 6.1 | Kreuzungserkennung Für die Anonymisierung mittels DBSCAN ist die Zerlegung der Spuren zwingend notwendig. (Ein Testdurchlauf mittels DBSCAN mit der Datei resources/dbscan/berlin.gpx 47 fand keinen einzigen Cluster). Die in der Arbeit vorgestellte Methode mit RDP-Filter, OPTICS und der Clusterextraktion ist in erster Linie eine Kurvenerkennung, bei der nebenbei Kreuzungen erkannt werden. Unterm Strich kann DBSCAN mit Hilfe dieses Vorverarbeitungsschrittes plausible Ergebnisse liefern, allerdings könnten die Ergebnisse durch eine bessere Kreuzungserkennung insgesamt verbessert werden. 6.2 | Aggregierung Es hat sich gezeigt, dass DBSCAN durchaus geeignet ist, um Spuren zu anonymisieren. Die Anonymität wird dabei vor allem dadurch gewährleistet, dass Spuren entfernt werden. Ein Angreifer A kann aus der Tatsache, dass er weiß, P ’s Spuren im Datensatz vorhanden ist, nicht schließen, dass P ’s Spuren in den aggregierten und veröffentlichten Datensatz eingeflossen sind. k-Anonymität wird schließlich dadurch zugesichert, dass DBSCAN Cluster erzeugt, die eine Mindestgröße von minP ts + 1 haben. Dadurch gibt es immer minP ts + 1 nicht unterscheidbare Quasi-Identifizierer. Also st k-Anonymität zugesichert unter der Vorraussetzung, dass bei DBSCAN der Parameter minP ts ≥ k − 1 ist. Die aggregierten Ergebnisse wären auch dann noch k-anonym, wenn keine Spuren gelöscht würden. Es ist zwar sehr unwahrscheinlich, dass DBSCAN in einem gewöhnlichen GPS-Datensatz kein Rauschen erkennt und nirgends eine Spur einzeln verläuft, dennoch sollte man darauf achten, dass DBSCAN einen Teil der Spuren entfernt, bevor ein Datensatz veröffentlicht. Eine zweite Eigenschaft der Ergebnisse, nämlich dass die verbleibenden Segmente nur noch Kreuzungen miteinander verbinden, erhöht ebenfalls die Anonymität. Selbst wenn ein Angreifer A die Information hat, dass P in genau diesem Aggregat enthalten ist, kommt er nur bis zur nächsten Kreuzung. Innerhalb einer Großstadt ist dies bei einer hohen Kreuzungsdichte kein Problem, in ländlichen Regionen ist der Abstand dazwischen deutlich größer. Neben der Anonymisierung ist dieses Verfahren auch zur Straßenerkennung geeignet. Die Ergebnisse auf Abbildung 5.5 für minP ts = 2 liegen ziemlich genau auf den Straßen - der niedrige Wert für minP ts führt nicht dazu, dass Straßen erkannt werden, die besser als Rauschen hätten erkannt werden sollen. 6.3 | Ausblick Bei dem in dieser Arbeit vorgestellten Verfahren werden nur Distanzfunktionen verwendet, die räumliche Entfernungen messen. Bei der Aggregierung werden dadurch sämtliche Zeitstempel zerstört. Sowohl bei der Definition der Distanzfunktionen für die Clusteranalyse als auch der Bestimmung der Clusterzentren könnte man diesen jedoch berücksichtigen. Sofern die Datendichte nicht hoch genug ist, kann man auch stattdessen bestimmte Features der Zeitstempel extrahieren. Beispielsweise wäre es möglich, nur die Wochentage oder die Geschwindigkeit zu berücksichtigen, um so einen höheren Informationserhalt 48 trotz Anonysierung zu ermöglichen. Eine weitere, noch nicht untersuchte Möglichkeit wäre, zu versuchen, die Kreuzungserkennung zu verbessern. Einen interessanten Ansatz dafür lieferte Simon Könnecke, der überprüfte, ob Kanten sich schneiden und ob sie es annähernd rechtwinklig tun. [Kö13] Das Verfahren lieferte vor allem bei einer dünnen Datendichte bessere Ergebnisse und könnte mit dem hier vorgestellten Aggregationsverfahren kombiniert werden. Anonymität Der entscheidende Unterschied zwischen Krankenhausdaten (auf deren Basis häufig die Diskussion über Anonymität geführt wird) und GPS-Spuren ist eben, dass es keine Trennung zwischen quasi-identifizierenden und sensiblen Attributen gibt. 1 Homogenitätsattacken Bei Krankenhausdaten sind mit einer Wahrscheinlichkeit von 81 möglich, wenn die Datensätze 5-anonym sind. [MGKV06, S. 2] Machanavajjhala et al. führten deshalb den Begriff der l-Diversität ein. l-Diversität bedeutet, dass für jede vollständige Gruppe (also jede Gruppe enthält alle Tupel, die einen bestimmten QuasiIdentifizierer haben) aus Tupeln, die homogene Quasi-Identifizierer haben, dass sie min1 für die destens l verschiedene sensible Attribute haben. Der „niedrige“ Wert von 81 Wahrscheinlichkeit der Homogenität der sensiblen Attribute deutet darauf hin, dass die meisten 5-anonymen Krankenhausdatensätze automatisch zumindestens 2-divers sind. Wenn jedoch sensible und quasi-identifizierende Attribute gleich sind, bedeutet dies, dass alle k-anonymen Datensätze nur 1-divers sind. Zwar anonymisiert das hier vorgestellte Verfahren GPS-Spuren, aber das Kriterium k-Anonymität ist ein schlechter Indikator für die tatsächliche Anonymität. Für die Evaluation zukünftiger Anonymisierungsverfahren auf GPS-Spuren wäre es daher sinnvoll, wenn zusätzliche Kriterien für die Anonymität auf GPS-Spuren diskutiert werden würden. 49 7 | Literaturverzeichnis [App12] Apple Computer Inc.: iPhone 3G - Technical Specifications. 2012. – http://support.apple.com/kb/SP495, zuletzt aufgerufen am 25. Juni 2013 [CK09] Cao, Lili ; Krumm, John J.: From GPS Traces to a Routable Road Map. In: Procedings from the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems, 2009, S. 3–12 [Com13] Community, JOSM: WikiStart - JOSM. 2013. – http://josm. openstreetmap.de/wiki/De:WikiStart zuletzt aufgerufen am 21. Juni 2013 [DP73] Douglas, David ; Peucker, Thomas: Algorithms for the reduction of the number of points required to represent a digitised line or its caricature. In: The Canadian Cartographer 10 (1973), S. 112 – 122 [Fou13] Foundation, Free S.: Frequently Asked Questions About The GNU License. 2013. – http://www.gnu.org/licenses/gpl-faq.html# GPLRequireSourcePostedPublic, zuletzt aufgerufen am 21. Juni 2013 [Gar13] Gartnet Inc.: Worldwide PC, Tablet and Mobile Phone Shipments to Grow 5.9 Percent in 2013. 2013. – http://www.gartner.com/newsroom/ id/2525515, zuletzt aufgerufen am 25. Juni 2013 [Gat12] Gatzke, Franz: Anwendung von k-Anonymisierung auf statischen GPSDaten, Freie Universiät Berlin, Institut für Informatik, Bachelorarbeit, 2012 [Goo13] Google Inc.: Android 4.2 Compatibility Definition. 2013. – http:// static.googleusercontent.com/external_content/untrusted_dlcp/ source.android.com/de//compatibility/4.2/android-4.2-cdd.pdf [Gut84] Guttman, A.: A Dynamic Index Structure for Spatial Searching. In: ACM SIGMOD International Conference on Management of Data (1984) [HA95] Helmut Alt, Michael G.: Computing the Frèchet-Distance between two polygonal curves. In: International Journal of Computational Geometry and Applications 5 (1995), S. 75–91 50 [Hen99] Henrikson, Jeff: Completeness And Total Boundedness of the Hausdorff Metric. In: MIT Undergraduate Journal of Mathematics (1999) [KSAB99] Kriegel, Hans-Peter ; Sander, Jörg ; Ankerst, Mihael ; Breuning, Markus: OPTICS: Ordering Points to Identify the Clustering Structure. In: ACM SIGMOD international conference on Management of data (1999) [Kö13] Könnecke, Simon: Untersuchung einer Clustermethode zur Aggregation von GPS-Spursegmenten, Freie Universiät Berlin, Institut für Informatik, Bachelorarbeit, 2013 [Lab13] Labs, Swing: Swing Labs: Swing Component Extensions. 2013. – https: //swingx.java.net/ zuletzt aufgerufen am 11. Juli 2013 [MGKV06] Machanavajjhala, Ashwin ; Gehrke, Johannes ; Kifer, Daniel ; Venkitasubramaniam, Muthuramakrishnan: l-diversity: Privacy beyond kAnoymity. In: ACM Transactions on Knowledge Discovery from Data (TKDD) (2006) [Mit12] Mitlmeier, Johannes: Generierung von Straßengraphen aus aggregierten GPS-Spuren, Freie Universität Berlin, Institut für Informatik, Masterarbeit, 2012 [Mor13] Morris, Aled: JSI (Java Spatial Index) Rtree Library. 2013. – http: //jsi.sourceforge.net/ zuletzt aufgerufen am 22. Juni 2013 [MV12] Müller, Sebastian ; Voisard, Agnés: Storing aggregated traces for map construction. In: 8. GI/KuVS-Fachgespräch Ortsbezogene Anwendungen und Dienste, 2012, S. 8–11 [OM03] Ort, Ed ; Mehta, Bhakti: Java Architecture for XML Binding (JAXB). 2003. – http://www.oracle.com/technetwork/articles/ javase/index-140168.html zuletzt aufgerufen am 21. Juni 2013 [PG09] Philippe Golle, Kurt P.: On the Anonymity of Home/Work Location Pairs. In: Pervasive (2009) [ROE09] Raento, Mika ; Oulasvirta, Antti ; Eagle, Nathan: Smartphones, an emerging tool for social scientists. In: Socialogical & Methods and Research (2009), S. 426–454 [Sch10] Schmidt, Torsten: My tracks - eigene GPS-Daten aufzeichnen. 2010. – http://www.netz-online.com/2010/09/13/ my-tracks-eigene-gps-daten-aufzeichnen/ zuletzt aufgerufen am 6. Juli 2013 [SE00] Sanders, Jörg ; Esters, Martin: Knowledge Discovery in Databases: Techniken und Anwendungen. Springer-Verlag GmbH, Heidelberg, 2000 51 [SEKX96] Sander, Jörg ; Ester, Martin ; Kriegel, Hans-Peter ; Xiaowei, Xu: A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise. In: Proceedings of the Second International Conference on Knowledge Discovery and Data Mining (1996) [Str96] Strehmel, Ralf: Amtliches Bezugssystem der Lage: ETRS89. In: Vermessung Brandenburg 1/96 (1996) [Swe02] Sweeney, L.: k-anonymity: A model for protecting privacy. In: International Journal on Uncertainty, Fuzziness and Knowledge-based Systems (2002) [Syn87] Synder, John P.: Map Projections: A Working Manual. Geological Survey (U.S.), 1987 [Top13] TopoGrafix: GPX 1.1 Schema Documentation. 2013. – http://www. topografix.com/GPX/1/1/ zuletzt aufgerufen am 20. Juni 2013 [ZS10] Zhang, Lijuan ; Sester, Monika: Incremental Data Acquisition from GPSTraces. (2010) 52 A | Verwendete Bibliotheken Der Prototyp GPSk erweitert den Prototypen agg2graph und nutzt einige seiner Funktionen. • commons-jxpath-1.3.jar Erlaubt XPath-Ausdrücke auf JavaBeans http://commons. apache.org/proper/commons-jxpath/ • frechet-0.0.1-SNAPSHOT.jar Vom Autor erstellte Implementierung der diskreten Fréchet-Distanz • frechet.jar Implementierung der Fréchet-Distanz vom mytraj-Projekt. http: //code.google.com/p/mytraj/ Wird nicht mehr wirklich verwendet, da sie abstürzt, wenn sich Spuren schneiden. • hamcrest.jar Bibliothek zum Erstellen von Unit-Tests. http://code.google. com/p/hamcrest/ • jarjar-1.4.jar Ant-Task, die das Erstellen einer Executable Jar erleichtern. https://code.google.com/p/jarjar/ • jens.jar Die Implementierung der Fréchet Distanz durch Jens Fischer. Wird nicht mehr benutzt, weil sie ein Speicherleck hat. • jscience.jar Enthält die UTM -Projektion. http://jscience.org/ • jsi-1.0b8.jar Enhält eine RBaum-Implementierung http://jsi.sourceforge. net/ • jts-1.8.jar Geometrie-Bibliothek. Wird von frechet.jar benötigt. Außerdem existiert in GPSk ein Tool (welches nicht in der Arbeit selbst diskutiert wurde, da es für die Erstellung der Ergebnisse, die in der Evaluation besprochen wurden, nicht verwendet wurde), das Polygone um Kreuzungen zeichnen kann. • junit-4.11.jar Framework zum Erstellen von Unit-Testsi http://junit.org/ • log4j-1.2.6 Framework zum Loggen von Ereignissen • swingx-all-1.6.4.jar Enthält den JXMapViewer zum Darstellen von Karten. 53 B | CD-Inhalt Dieser Arbeit liegt eine CD für Beispieldaten und Code bei. • main.pdf Digitale Version dieser Arbeit • resources Beispieldateien, die in der Evaluation verwendet wurden. • GPSk Der Prototyp – build_gpsk.gpx Ant-Skript zum Erstellen einer ausführbaren Jar-Datei. – gpsk.jar auführbare Jar-Datei, die den Prototypen startet. – res Ordner mit Resource für den Prototypen – test Testdateien für Unit-Tests – unit-test Quellcodes für Unit-Tests. • de Quellpaket de. • com Quellpaket com. • org Quellpaket org. 54