Data Mining von Sequenzdaten - Fachgebiet Datenbanken und ...

dbs.uni.hannover.de

Data Mining von Sequenzdaten - Fachgebiet Datenbanken und ...

Data Mining von Sequenzdaten

Diplomarbeit

zur Erlangung des Grades eines Diplom-Wirtschaftsingenieurs

der Fakultät für Elektrotechnik und Informatik, Fakultät für Maschinenbau und

Wirtschaftswissenschaftlichen Fakultät der Leibniz Universität Hannover

vorgelegt von

Name: Ngo Duc Vorname: Kien

Geb. am: 27. August 1982 in: Hanoi

Erstprüfer: Prof. Dr. Udo Lipeck

Hannover, den 18. Juni 2008


III

Danksagung

Diese Arbeit wurde von Herrn Prof. Dr. Udo Lipeck und Herrn Dipl.-Math. Christian

Stahlhut betreut. Hiermit möchte mich bei Herrn Lipeck für die Betreuung und für die

wertvollen Hinweise bedanken. Auch möchte ich mich bei Herrn Stahlhut für die Betreuung

und die hilfreichen Tipps bedanken. Ferner wendet sich mein Dank an diejenigen,

die mir in der Zeit der Bearbeitung dieser Arbeit Mut zugesprochen haben.


IV

Zusammenfassung

Das Forschungsfeld Data Mining hat sich aufgrund der steigenden Nachfrage in

den letzten Jahrzehnten sehr stark entwickelt. Im Zuge dieser Entwicklung entstanden

viele Teildisziplinen des Data Minings, welche sich auf Nicht-Standard-Arten

von Daten spezialisiert haben. In diese Arbeit soll die relativ neue Teildiszplin

Data Mining von Sequenzdaten betrachtet werden.

Das Ziel dieser Arbeit ist es, aus konkret vorliegenden Sequenzdaten, sequenzbezogenes

Wissen zu entdecken. Dazu wird zunächst eine Einführung über das

Data Mining von Sequenzdaten gegeben. Danach werden ausgewählte Konzepte

des Data Minings von Sequenzdaten vorgestellt.

Darauf aufbauend werden Algorithmen dieser Konzepte ausgearbeitet, ausgewählt

und implementiert. Durch Anwendung der implementierten Algorithmen

auf die Sequenzdaten wird versucht, sequenzbezogenes Wissen zu entdecken. Die

daraus resultierenden Ergebnisse werden vorgestellt und interpretiert.

Ferner wurde eine grafische Benutzeroberfläche implementiert, welche die Bedienung

der implementierten Algorithmen erleichtern soll, und darüberhinaus eine

komfortable Möglichkeit für das Data Mining von Sequenzdaten darstellt.


INHALTSVERZEICHNIS

V

Inhaltsverzeichnis

1 Einleitung 1

1.1 Data Mining von Sequenzdaten - eine Einführung . . . . . . . . . . . . . 1

1.2 Beispiele und Anwendungen von Sequenzdaten . . . . . . . . . . . . . . . 2

1.2.1 Beispiele von Sequenzdaten . . . . . . . . . . . . . . . . . . . . . 2

1.2.2 Beispiele für Anwendungen des Data Minings von Sequenzdaten . 4

1.3 Aufgabenstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Grundlagen 7

2.1 Vorüberlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2.1 Sequentielle Muster . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2.2 Maximale und geschlossene sequentielle Muster . . . . . . . . . . 11

2.2.3 Partielle Ordnungen . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Algorithmen 20

3.1 Suche nach sequentiellen Mustern . . . . . . . . . . . . . . . . . . . . . . 20

3.1.1 Der GSP-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . 20

3.1.2 Der PrefixSpan-Algorithmus . . . . . . . . . . . . . . . . . . . . . 25

3.2 Suche nach häufigen, geschlossenen partiellen Ordnungen . . . . . . . . . 29

3.2.1 Der TranClose-Algorithmus . . . . . . . . . . . . . . . . . . . . . 30

3.2.2 Der Frecpo-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . 32

3.3 Vergleich der Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.4 Algorithmen für die Beseitigung von Redundanz . . . . . . . . . . . . . . 41

3.5 Andere Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4 Durchführung des Data Minings 44

4.1 Datenaufbereitung und -bereinigung . . . . . . . . . . . . . . . . . . . . . 44

4.2 Darstellung der Ergebnisse mit GraphViz . . . . . . . . . . . . . . . . . . 48

5 Implementierung 52


INHALTSVERZEICHNIS

VI

5.1 PrefixSpan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.2 Frecpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.3 Grafische Benutzeroberfläche SeqPO . . . . . . . . . . . . . . . . . . . . 65

5.3.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.3.2 Funktionalitäten . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.3.3 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

6 Ergebnisse 78

6.1 Gruppe bach0003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

6.2 Gruppe bach04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

6.3 Gruppe mas0003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.4 Gruppe mas04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

6.5 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

7 Schluss 97

7.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

7.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

8 Anhang 99

8.1 Beispiel für die Verwendung von PrefixSpan . . . . . . . . . . . . . . . . 99

8.2 Beispiel für die Verwendung von Frecpo . . . . . . . . . . . . . . . . . . . 100

8.3 Beispiel einer Speicherdatei von SeqPO . . . . . . . . . . . . . . . . . . . 101

8.4 Regelstudienplan des Bachelorstudiums Informatik ab WS 04/05 . . . . . 102


1 EINLEITUNG 1

1 Einleitung

1.1 Data Mining von Sequenzdaten - eine Einführung

Die rasante technologische Entwicklung der letzten Jahrzehnte führte zu einer gigantischen

Allgegenwart von Computern und Netzwerken in vielen verschiedenen Bereichen

der Wirtschaft und Wissenschaft. Während die Rechenleistung von Computern kontinuierlich

anstieg, sanken gleichzeitig die Kosten für Datenträger. Dies ermöglichte eine

enorme Ansammlung von Datenbeständen, welche mit der Zeit zu unüberschaubaren

Datenmengen heranwuchsen. Um diese riesige Datenmenge bewältigen zu können, entwickelte

sich Ende der 80er Jahre das Forschungsfeld Data Mining mit der Zielsetzung, in

den Daten wertvolle Informationen zu finden um dadurch die Daten nutzbar zu machen.

So sind Unternehmen daran interessiert mehr über ihre Kunden zu lernen um Werbekampagnen

danach auszurichten, zukünftige Produkttrends vorherzusagen oder Betrugsfälle

zu erkennen. Banken und Versicherungen wollen Investmentrisiken richtig einschätzen

und zukünftige Börsenentwicklungen frühzeitig erkennen. Wissenschaftler aus

vielen Bereichen suchen Muster in Daten aus ihren Experimenten. Auf der Suche nach

geeigneten Behandlungsmethoden werden Gen- und Krankheitsdaten von Patienten in

der Medizin nach möglichen Ursachen analysiert. Viele diese Bestrebungen können mit

Hilfe von geeigneten Data Mining-Konzepten realisiert werden.

In dieser Arbeit soll Data Mining als die Verwendung von spezifischen Algorithmen

interpretiert werden um Muster aus Daten zu extrahieren. Aufgrund der starken Nachfrage

gibt es inzwischen eine Vielzahl an Data Mining-Algorithmen und -Methoden für

die verschiedensten Anwendungen. Deshalb ist es nicht verwunderlich, dass es verschiedene

Teildisziplinen des Data Minings gibt, die sich auf Nicht-Standard-Arten von Daten

spezialisiert haben. Gegenstand dieser Arbeit ist die noch relativ neue und dynamische

Teildisziplin: Data Mining von Sequenzdaten.

Sequenzdaten kann man überall im täglichen Leben antreffen. Zum Beispiel stellt

jeder Tagesablauf eine Sequenz von Tätigkeiten dar. Ein Gespräch zwischen zwei Personen

kann man als eine Sequenz von Wörtern speichern. Wenn man mit der Straßenbahn

fährt, wird eine bestimmte Sequenz von Haltestellen durchfahren. Aufgrund der besonderen

Ordnungseigenschaft einer Sequenz eröffnen sich viele interessante und wichtige

Anwendungen des Data Minings von Sequenzdaten.

Sequenzen treten auch häufig in vielen wissenschaftlichen, medizinischen oder wirtschaftlichen

Bereichen auf. So können viele Data Mining-Probleme erst gelöst werden,

wenn die zugrundeliegenden Daten als Sequenzdaten betrachtet werden. Ein klassisches

Beispiel hierfür ist die das Gebiet der Analyse von DNA-Strukturen. Die DNA ist ein

langes Kettenmolekül aus vielen Bausteinen, die als Nukleotide bezeichnet werden. Fasst

man nun die DNA als eine Sequenz von Nukleotiden auf, bei der die Nukleotide nach

ihren natürlichen Vorkommen in der DNA geordnet sind, können Konzepte des Data

Minings von Sequenzdaten angewendet werden um interessante Muster in der DNA-

Struktur zu finden.


1 EINLEITUNG 2

Ein anderes wichtiges Gebiet ist die Analyse von menschlichem Verhalten. Personen

üben Tätigkeiten zu einem bestimmten Zeitpunkt aus. Wenn für jede Tätigkeit einer

Person der Zeitpunkt bekannt ist, kann der zeitliche Ablauf von Tätigkeiten der Person

als eine Sequenz von hintereinander folgenden Tätigkeiten aufgefasst werden. Auf diese

Weise können Sequenzen dazu genutzt werden, um zum Beispiel Käuferverhalten oder

Weblogs zu beschreiben.

Die Möglichkeit der Betrachtung von Daten als Sequenz hat dazu geführt, dass riesige

Mengen von Sequenzen im Rahmen von medizinischen Studien, Sicherheitsanwendungen

oder Unternehmensanwendungen gesammelt wurden. Um den verschiedenen Anwendungsanforderungen

zu genügen, muss die Analyse der Daten auf verschiedenen Wegen

und effizient realisiert werden. Für die Extraktion von nützlichem, verstecktem Wissen

aus Sequenzdaten stellt das Data Mining von Sequenzdaten die dafür erforderlichen

Werkzeuge und Konzepte zur Verfügung.

1.2 Beispiele und Anwendungen von Sequenzdaten

In diesem Abschnitt werden typische Beispiele und Anwendungen von Sequenzdaten 1

vorgestellt, welche die Vielfalt des Data Mings von Sequenzdaten unterstreichen sollen.

1.2.1 Beispiele von Sequenzdaten

Biologische Sequenzen: DNA, RNA und Protein

Biologische Sequenzen sind sehr hilfreich für das Verständnis von Strukturen und

Funktionen von verschiedenen Molekülen. Das Entschlüsseln von biologischen Sequenzen

ist für die Diagnose und Behandlung von Krankheiten von großer Bedeutung. Es gibt

drei Haupttypen von biologischen Sequenzen: Desoxyribonukleinsäuren (DNA), Ribonukleinsäuren

(RNA) und Proteine. Die Erbinformationen sind in den Genen gepeichert.

Ein Gen ist ein Abschnitt auf der DNA, der die Grundinformationen zur Herstellung von

RNA und Proteinen enthält. Die DNA liegt in Form eines Kettenmoleküls von Nukleotiden

vor. In der DNA kommen die folgenden vier Nukleotide vor: Adenin (A), Guanin

(G), Thymin (T) und Cytosin (C). In Abbildung 1 ist ein mögliches DNA-Fragment

dargestellt.

ACAAGTACGTACGATCAGACTACGGGATTAGTCATCACGACATCAGCATACT

CGATCGATCGATCGATCGATCGATCGCAATCCCAAATTAGAGACTCGCAACG

AACTCATCCCCCACCATGTGTACCACAATTGGGGAATCATCGCTCGACACCA

Abbildung 1: Fragment einer DNA-Sequenz

Mit Hilfe der DNA-Sequenz-Analyse können beispielsweise Gene in unbekannten DNA-

Sequenzen gefunden werden oder defekte DNA-Fragmente identifiziert werden. Auch ge-

1 vgl. [DP07] S. 2-5


1 EINLEITUNG 3

meinsame Muster innerhalb der DNA von Patienten mit gleicher Erkrankung können

Aufschlüsse über mögliche Ursachen der Erkrankung geben.

Ereignissequenzen: Weblogs, Kaufverhalten und Verkaufszahlen

Ereignissequenzen stellen eine der Hauptgruppen von Sequenzdaten dar. Solche Sequenzen

sind nützlich um zu verstehen wie die betreffenden Akteure sich verhalten. Auf

diese Weise kann für jeden Akteur ein Verhaltensmuster aufgestellt werden. Im Folgenden

sind Beispiele für Ereignissequenzen aufgeführt.

Ein Weblog ist eine Sequenz von Paaren aus Benutzerkennung und Ereignis. Ein Ereignis

kann dabei eine Anforderung an eine bestimmte Web-Ressource, wie zum Beipiel

eine Internetseite oder ein Web-Service sein. Zum Beispiel können bei jedem Aufruf einer

Internetseite verschiedenste Daten registriert werden. So kann der Inhalt der Internetseite

oder die Zeitdauer, die der Benutzer auf der Internetseite verbracht hat, gespeichert

werden. Ereignisse in einem Weblog werden zeitlich aufsteigend in einer Liste gespeichert.

In Abbildung 2 ist ein Beispiel eines Weblogs dargestellt. Dabei bezeichnen die

Buchstaben a, b, c, d und e die Ereignisse und die Zahlen 100, 200, 300 und 400 die Benutzerkennungen.

〈100, a〉 , 〈100, b〉 , 〈200, a〉 , 〈300, b〉 , 〈200, b〉 , 〈400, a〉 , 〈100, a〉 , 〈400, b〉

〈300, a〉 , 〈100, c〉 , 〈200, c〉 , 〈400, a〉 , 〈400, e〉

Abbildung 2: Auschnitt aus einer Weblog-Sequenz

Kaufverhalten von Kunden sind Sequenzen von Tupeln. Ein Tupel besteht zum Beispiel

aus der Kundenkennung, der Kaufzeit, dem Kaufort und der Menge der gekauften

Waren. In Abbildung 3 sind Kaufverhalten von Kunden dargestellt.

〈223100, 05/05/08, 8:05, Hauptbahnhof, {Baguette, Kaffee}〉,

〈223101, 05/05/08, 12:10, Kaufland, {Brot, Cola}〉,

〈223100, 06/05/08, 8:02, Hauptbahnhof, {Baguette, Kaffee}〉,

〈223100, 06/05/08, 14:05, Saturn, {Drucker}〉.

〈223101, 06/05/08, 17:30, Saturn, {MP3-Player, Batterien}〉,

Abbildung 3: Kaufverlauf von Kunden

Verkaufszahlen von Filial-Ketten sind Sequenzen von Tupeln, die beispielsweise die

Filial-ID, den betreffenden Zeitraum, die Verkaufszahlen der einzelnen Waren für diesen

Zeitraum und andere relevante Informationen enthalten. In Abbildung 4 sind die

Verkaufszahlen einer Filialkette dargestellt.


1 EINLEITUNG 4

〈32100, 05/08, {〈Brot : 150T Euro〉 , 〈Butter : 70T Euro〉 , 〈Milch : 110T Euro〉 , · · · }〉,

〈32101, 05/08, {〈Brot : 90T Euro〉 , 〈Butter : 55T Euro〉 , 〈Milch : 80T Euro〉 , · · · }〉,

〈32100, 06/08, {〈Brot : 180T Euro〉 , 〈Butter : 100T Euro〉 , 〈Milch : 60T Euro〉 , · · · }〉,

〈32101, 06/08, {〈Brot : 80T Euro〉 , 〈Butter : 60T Euro〉 , 〈Milch : 90T Euro〉 , · · · }〉,

Abbildung 4: Verkaufszahlen einer Filialkette

1.2.2 Beispiele für Anwendungen des Data Minings von Sequenzdaten

Suche nach häufigen Teilsequenzen

Der Marketing-Manager eines Kaufhauses möchte eine Werbe-Kampagne mit den

folgenden Aspekten starten. Zum einen soll eine geeignete Menge von Waren für die

Werbe-Kampagne ausgesucht werden. Zum anderen soll die Werbe-Kampagne an eine

dafür empfängliche Kundengruppe adressiert werden. Dadurch soll nicht nur der Verkauf

der ausgewählten Waren stimuliert, sondern auch die Kundenbindung zum Kaufhaus

weiter ausgebaut werden.

Dafür wurden in der Vergangenheit Transaktionsdaten von Kunden gespeichert. Jede

Transaktion enthält die Kunden-ID, die gekauften Produkte in der Transaktion und einen

Zeitstempel dieser Transaktion. Durch Gruppierung der Transaktionen nach Kunden und

Sortierung in aufsteigender Reihenfolge der Zeitstempel erhält der Marketing-Manager

eine Kaufsequenzdatenbank, in der jede Sequenz das Kaufverhalten eines Kunden widerspiegelt.

Durch die Suche nach häufigen Teilsequenzen, die bei vielen Kunden vorkommen,

kann der Marketing-Manager interessante Kaufmuster identifizieren. Diese Kaufmuster

als häufige Teilsequenzen sind sehr gut geeignet um das Kaufverhalten von Kunden zu

verstehen. Der Marketing-Manager kann sowohl die geeigneten Produkte für die Werbe-

Kampagen, als auch die zu adressierenden Kunden aus den gefundenen Kaufmustern

ableiten.

Klassifikation von Sequenzen

Der Sicherheitschef einer Fluggesellschaft ist für die Bremssysteme von Flugzeugen

verantwortlich. Die Zustandsprotokolle für jedes Flugzeug liegen als Sequenzen von Einträgen

vor. Eine Wartung der Flugzeuge an einem sogenannten Knoten-Flughafen ist

anstrebenswert, da die Wartungskosten deutlich niedriger sind als die Kosten für die

Wartung an einem Gäste-Flughafen. Auch sollte die Wartung der Flugzeuge nicht zu

häufig geschehen, weil sonst nur unnötige Kosten entstehen würden.

Deshalb ist der Sicherheitschef mit der folgenden Problemstellung konfrontiert: wie

kann man anhand der Sequenz von Zustandseinträgen eines Flugzeuges mit hoher Genauigkeit

vorhersagen, ob ein Flugzeug eine Wartung benötigt, bevor es zum nächsten


1 EINLEITUNG 5

Knoten-Flughafen fliegt. Es handelt sich hierbei um ein Klassifikationsproblem, da Vorhersagen

anhand von Vergangenheitsdaten getroffen werden sollen.

Clustering von Sequenzen

Ein Analyst der Medizin ist zuständig für die Untersuchung von Reaktionen von Patienten

auf ein neues Medikament. Für jeden Patient, der das Medikament einnimmt,

wird eine Sequenz an Reaktionen des Patienten, wie zum Beispiel die Veränderungen

der Temperatur oder des Blutdrucks, erstellt. Um die Ergebnisse der Untersuchung zusammenzufassen

muss der Analyst die Patienten in Teilgruppen aufteilen, so dass alle

Patienten in einer Teilgruppe ähnliche Reaktionen auf das Medikament aufweisen, während

Patienten aus verschiedenen Teilgruppen erheblich abweichende Reaktionen auf das

Medikament haben.

Es handelt sich hierbei um ein Clustering-Problem, da die Aufteilung der Teilgruppen

nur auf der Ähnlichkeit zwischen Sequenzen basiert.

Typische Studienverläufe

Ein Professor einer Fakultät möchte die Studien- und Prüfungsordnung eines Studiengangs

an das Studienverhalten der Studierenden anpassen. Dazu will er wissen welche

typischen Studienverläufe es von Studierenden gibt.

Für die Lösung des Problems liegt eine Prüfungsdatenbank vor, in welcher Prüfungsleistungen

für jeden Studenten für jedes Semester gespeichert sind. Werden für jeden

Studenten belegte Prüfungsleistungen eines Semesters als eine Transaktion betrachtet,

und in aufsteigender Reihenfolge des Semesters sortiert, erhält der Professor einer Sequenzdatenbank

von Studienverläufen. Ein Studienverlauf sagt dann aus, dass zum Beispiel

ein Student im ersten Semester die Fächer a und b , im zweiten Semester das Fach

c usw. belegt hat. Durch das Suchen von häufigen Teilsequenzen in der Sequenzdatenbank

kann der Professor typische Studienverläufe finden, welcher von den Studierenden

gewählt wurden.

Dieses Beispiel soll zeigen, dass es in der Praxis, neben den großen Bereichen wie

Wirtschaft und Medizin, viele Problemstellungen gibt, die erst durch Betrachtung der

zugrundeliegenden Daten als Sequenzdaten zu Lösungen führt.

1.3 Aufgabenstellung

Es liegen Prüfungsdaten von Studenten der Informatik an der Leibniz Universität Hannover

vor. Ohne Vorwissen über die Prüfungsdaten soll durch Anwendung von Konzepten

des Data Minings von Sequenzdaten sequenzbezogenes Wissen in diesen Daten entdeckt

werden. Insbesondere sollen dabei Teilsequenzmustern als typische Studienverläufe identifiziert

werden.


1 EINLEITUNG 6

Dabei sollen die Daten nach geeigneten Modellen aufbereitet werden, so dass Werkzeuge

des Data Minings von Sequenzdaten darauf angewendet werden können. Für die

Lösung des Problems sollen Algorithmen ausgearbeitet, ausgewählt und implementiert

werden, welche Muster in den Prüfungsdaten finden. Gegebenfalls können dabei Data

Mining-Algorithmen der Open-Source-Anwendung Weka [Weka07] verwendet werden.

Darüberhinaus sollen die verwendeten Algorithmen in einer grafischen Benutzeroberfläche

eingebunden werden, so dass dem Benutzer eine komfortable Möglichkeit geboten

wird, die implementierten Algorithmen auf Sequenzdaten anzuwenden. Zusätzlich soll

die grafische Benutzeroberfläche die gefundenen Muster aussagekräftig darstellen können,

und eine komfortable Handhabung der Ergebnisse ermöglichen.

1.4 Aufbau der Arbeit

Diese Arbeit ist so aufgebaut, dass alle notwendigen Schritte zur Lösung der Aufgabenstellung

nacheinander behandelt werden. Im Kapitel 2 werden als erstes Vorüberlegungen

getroffen, inwieweit Konzepte des Data Minings von Sequenzdaten dazu geeignet sind,

die Aufgabenstellung zu lösen. Danach werden die für geeignet befundenen Konzepte

vorgestellt.

Das dritte Kapitel beschäftigt sich mit den Algorithmen, die für die vorgestellten Konzepte

aus Kapitel 2 geeignet sind. Es werden für jedes Konzept stellvertretend jeweils

zwei Algorithmen vorgestellt. Anschließend wird im Zuge eines Vergleichs der Algorithmen

eine Auswahl getroffen, welche Algorithmen implementiert werden sollen. Zusätzlich

werden eigene Algorithmen für die Redundanzbehebung vorgestellt. Am Ende des Kapitels

wird noch auf weitere Algorithmen verwiesen, die aufgrund ihres Umfangs nicht

behandelt werden können.

In Kapitel 4 werden zwei wichtige Schritte im Data Mining-Prozess beschrieben. Zuerst

werden die zugrundeliegenden Daten für das Data Mining vorgestellt. Darüberhinaus

wird beschrieben wie die Daten bereinigt und aufbereitet wurden. Danach erfolgt

eine Erläuterung, wie die Ergebnisse des Data Minings dargestellt werden können. Insbesondere

wird das Visualisierungprogrammpaket GraphViz vorgestellt, welche für die

Darstellung der Ergebnisse verwendet wird.

Nach diesen Betrachtungen befasst sich das Kapitel 5 mit der Implemeniertung der

augewählten Data Mining-Algorithmen aus Kapitel 3 und der grafischen Benutzeroberfläche.

Bezüglich der Implementierung der Algorithmen werden dabei die verwendeten

Datenstrukturen und Techniken beschrieben. Im Anschluss daran werden die Funktionalitäten

und Benutzungshinweise für die grafische Benutzeroberfläche erläutert.

Schließlich werden die Ergebnisse, die mit Hilfe der implementierten Algorithmen

in den Prüfungsdaten gefunden wurden, in Kapitel 6 vorgestellt und interpretiert. Es

erfolgt danach ein Fazit über die gefundenen Muster in den Sequenzdaten. Im Kaptitel 7

wird eine Zusammenfassung der Arbeit dargelegt. Darauffolgend wird im Rahmen eines

Ausblicks auf mögliche Verbesserungen hingewiesen.


2 GRUNDLAGEN 7

2 Grundlagen

In diesem Kapitel werden Konzepte des Data Minings von Sequenzdaten vorgestellt, die

für die Lösung der Aufgabenstellung geeignet sind. Dazu werden zuerst Vorüberlegungen

bezüglich der Anwendbarkeit von verschiedenen Konzepten auf die gegebene Problemstellung

angestellt. Als Schlussfolgerung daraus werden die grundlegenden Begriffe der

ausgewählten Konzepte vorgestellt.

2.1 Vorüberlegungen

Angesichts der Aufgabenstellung ist es das Ziel dieser Arbeit aus den gegebenen Prüfungsdaten

sequenzbezogenes Wissen zu extrahieren und typische Teilsequenzmustern

zu finden. Dafür sollen die zugrundeliegenden Prüfungsdaten als Sequenzdaten aufgefasst

werden, wobei für jeden Student der dazugehörige Studienverlauf (siehe Abschnitt

1.2.2) vorliegt. Ein Studienverlauf ist demnach eine nach der Semesterzahl sortierte Sequenz

von Transaktionen, wobei jede Transaktion alle Prüfungsleistungen enthalten, die

in einem Semester belegt wurden.

Es stellt sich nun die Frage welches Konzept des Data Minings von Sequenzdaten

auf die Daten angewendet werden sollte. Zuerst sollen die folgenden drei grundlegenden

Konzepte des Data Minings von Sequenzdaten betrachtet werden: Klassifikation von

Sequenzen, Clustering von Sequenzen und sequentielle Muster als die Suche von

häufigen Teilsequenzen. Offensichtlich ist das Konzept der Klassifikation von Sequenzen

nicht für die Lösung der Problemstellung geeignet, da mit Methoden der Klassifikation

Vorhersagen getroffen werden sollen. Das steht im Widerspruch mit der Aufgabenstellung,

die eher darauf konzentriert ist, typische Strukturen in den Daten zu finden.

Um typische Strukturen in den Daten zu entschlüsseln, bietet sich das Konzept des

Clusterings von Sequenzen an. Dieses Konzept versucht ähnliche Sequenzen in Cluster

einzuteilen und somit Gruppierungen in den Daten zu finden. Allerdings muss dazu betrachtet

werden, welche Art von Cluster als Ergebnis herauskommen könnten. Mit dem

Aspekt, dass Muster ohne Vorwissen über die Daten gefunden werden sollen, ist es kaum

möglich eine gute Distanzfunktion für die Suche nach Clustern zu finden. Auch handelt

es sich bei den Prüfungsdaten um Studenten eines einzigen Studienganges, nämlich Informatik,

d.h. es ist damit zu rechnen, dass Studienverläufe als Sequenzen von vornherein

sehr ähnlich sind. Wenn also das Clustering von Sequenzen auf die Daten angewendet

werden würde, könnte vielleicht Cluster hinsichtich den verschiedenen Studienordnungen

oder Cluster von Bachelor- oder Master-Studenten gefunden werden. Solche Informationen

sind aber für jeden Studenten in den Prüfungsdaten gespeichert und müssen nicht

erst durch Clustering gefunden werden.

Wie oben beschrieben sind die Konzepte Klassifikation und Clustering von Sequenzen

nicht bzw. nur bedingt geeignet für die Lösung der Aufgabenstellung. Es verbleibt ein

Konzept des Data Minings von Sequenzdaten, nämlich die Suche nach sequentiellen Mus-


2 GRUNDLAGEN 8

tern. Mit Hilfe des Konzepts der sequentiellen Muster können aus Sequenzdaten häufige

Teilsequenzen gefunden werden. Dies deckt sich mit dem Ziel typische, also häufige,

Teilsequenzmuster in den Prüfungsdaten zu finden.

Das Konzept der sequentiellen Muster ist demnach geeignet für die Lösung der Aufgabenstellung

und soll in dieser Arbeit angewendet werden, um typische Teilsequenzmuster

von Studienverläufen zu finden.

Neben den drei großen Konzepten des Data Minings von Sequenzdaten, gibt es die

folgenden Konzepte, welche zum Teil auf die oben beschriebenen Konzepte aufbauen:

1. Sequenzmotive

2. Differenzierte, sequentielle Muster

3. Suche nach sequentiellen Mustern mit Nebenbedingungen

4. Maximale und geschlossene sequentielle Muster

5. Suche nach partiellen Ordnungen in Sequenzen

Das Konzept Sequenzmotive befasst sich mit Identifikation und Charakterisierung von

Sequenzfamilien und stellt eine Hybridmethode zwischen Clustering und Klassifikation

von Sequenzen dar. Auch ist das Konzept der differenzierten, sequentiellen Muster eine

Sonderform der Klassifikation. Aus den oben genannten Gründen sind diese Konzepte

deshalb nicht geeignet für die Lösung der Aufgabenstellung.

Ein anderes interessantes Konzept ist die Suche nach sequentiellen Mustern mit Nebenbedingungen.

Bei diesem Konzept wird nur nach sequentiellen Mustern gesucht, welche

eine bestimmte Nebenbedingung erfüllen. Es stellt somit eine Erweiterung zum Konzept

der Suche nach sequentiellen Mustern dar. Allerdings ist es nur sinnvoll Nebenbedingungen

zu stellen, wenn ein sogenanntes ”

Expertenwissen“ vorhanden ist. Da gemäß

der Aufgabenstellung davon ausgegangen werden soll, dass keinerlei Vorwissen über die

Prüfungsdaten vorliegen, ist auch dieses Konzept nicht geeignet.

Es bleiben die zwei Konzepte maximale und geschlossene sequentielle Muster und

die Suche nach partiellen Ordnungen in Sequenzen übrig. Erstere befasst sich mit der

Redundanzbehebung von sequentiellen Mustern, letztere betrachtet Sequenzen als partielle

Ordnungen. Beide lassen sich problemlos neben dem Konzept der sequentiellen

Mustern auf die Aufgabenstellung anwenden. Ferner können diese zwei Konzepte zu

besseren Ergebnissen führen, da zum einen Redundanzen in den sequentiellen Mustern

behoben werden, und zum anderen, durch Betrachtung der Sequenzen als partielle Ordnungen,

interessante Ordnungsbeziehungen gefunden werden können, welche nicht in den

Teilsequenzmustern vorkommen. Im nächsten Abschnitt werden diese drei ausgewählten

Konzepte vorgestellt.


2 GRUNDLAGEN 9

2.2 Konzepte

2.2.1 Sequentielle Muster

Die Suche nach sequentiellen Mustern gehört zu den grundlegenden Aufgaben des Data

Minings von Sequenzdaten. Das Problem der Suche nach sequentiellen Mustern wurde

von Agrawal und Srikant in [AS95] zum ersten Mal wie folgt formuliert: Ausgehend von

einer gegebenen Menge von Sequenzen, wobei jede Sequenz aus einer Liste von Elementen

und jedes Element aus einer Menge von Items besteht, und einer benutzer-definierten

MinSupport-Schwelle, ist die Suche nach sequentiellen Mustern das Finden von allen

häufigen Teilsequenzen, d.h. Teilsequenzen, deren Häufigkeit ihres Vorkommens in der

Menge der Sequenzen nicht kleiner als der MinSupport ist.

Das folgende Beispiel eines Online-Shops soll die Bedeutung von sequentiellen Mustern

verdeutlichen.

Beispiel 2.1. Angenommen, ein Online-Shop bietet verschiedene Produkte an. Jedem

Kunden, der beim Online-Shop Produkte kauft, wird eine Kunden-id zugeordnet. Eine

Kundentransaktion besteht aus einer Menge von gekauften Produkten zum gleichen

Zeitpunkt. Alle Transaktionen, die beim Online-Shop getätigt wurden, werden in einer

Sequenzdatenbank gespeichert.

Mit Hilfe der gespeicherten Transaktionsdaten kann der Online-Shop nun sequentielle

Kaufmuster von Kunden suchen. Dabei wird für jeden Kunden eine Sequenz seiner getätigten

Transaktionen, aufsteigend geordnet nach den Zeitpunkten der Transaktionen,

gebildet. In der Tabelle 1 ist eine solche Transaktionssequenzdatenbank dargestellt, wobei

die Buchstaben a, b, c, d, e, f und g die angebotenen Produkte des Online-Shops

kennzeichnen. Eine Sequenz besteht also aus einer Anzahl von Transaktionen. Zum Bei-

Kunden-id

K1

K2

K3

K4

Transaktionssequenz

a(abc)(ac)d(cf)

(ad)c(bc)(ae)

(ef)(ab)(df)cb

eg(af)cbc

Tabelle 1: Transaktionssequenzdatenbank

spiel besteht die Sequenz zu K1 aus fünf Transaktionen, wobei in der ersten Transaktion

nur das Produkt a gekauft wurde. Angenommen wir suchen nach sequentiellen Mustern,

die bei mindestens 50% der Kunden auftreten. Es ist erkennbar, dass die Teilsequenz

(ab)dc bei K1 und K3 auftritt. Dann ist (ab)dc ein sequentielles Muster in der Transaktionssequenzdatenbank.

Das sequentielle Muster (ab)dc gibt an, dass mindestens 2

Kunden die Produkte a und b innerhalb einer Transaktion kauften, und danach in einer

späteren Transaktion d und erst nach d wurde dann das Produkt c gekauft.

Bezüglich der Marketingstrategie des Online-Shops kann dieses gefundene Kaufmuster

in vielerlei Hinsicht von Nutzen sein. Wenn zum Beispiel c ein sehr profitables Produkt


2 GRUNDLAGEN 10

ist, und d ein Produkt, welches billig eingekauft werden kann. Der Online-Shop könnte

versuchen das Produkt d sehr günstig anzubieten, in der Hoffnung dass die Kunden d und

in der Konsequenz in einer späteren Transaktion auch c kaufen. Eine andere Möglichkeit

wäre, dass für einen Kunden die Transaktionssequenz (ab)d ermittelt wurde. Der Online-

Shop kann dann gezielt Werbung für das Produkt c an den Kunden richten. Da die

Wahrscheinlichkeit hoch ist, dass das gefundene Kaufmuster (ab)dc sich bestätigt.

Grundlegende Begriffe

Ein Item steht für ein bestimmtes Ereignis von Interesse. So bezeichnet das Item a

aus Beispiel 2.1 den Kauf des Produktes a. Sei I = {i 1 , i 2 , . . . , i n } eine Menge von

unterschiedlichen Items, dann ist ein Itemset eine Teilmenge von I. Eine Sequenz ist

dann eine geordnete Liste von Itemsets. Es wird dabei folgende Schreibweise verwendet:

Sequenz s = s 1 s 2 · · · s l , wobei jedes s j (1 ≤ j ≤ l) ein Itemset ist. s j = (x 1 x 2 · · · x m )

wird als ein Element oder eine Transaktion von s an der Position j bezeichnet, wobei

x k (1 ≤ k ≤ m) ein Item ist. Aus Gründen der Übersichtlichkeit werden die Klammern

weggelassen, wenn ein Element nur ein einzelnes Item beinhaltet: (x) −→ x. Die i-

Länge s gibt die Summe der Items in allen Elmenten von s wieder. Eine Sequenz mit

der i-Länge l wird als l-Sequenz bezeichnet.

Definition 2.2 (Teilsequenzbeziehung). Eine Sequenz α = a 1 a 2 · · · a n wird als Teilsequenz

einer anderen Sequenz β = b 1 b 2 · · · b m und β als Obersequenz von α bezeichnet,

gekennzeichnet als: α ⊑ β , wenn ganzzahlige Werte 1 ≤ j 1 < j 2 < · · · < j n ≤ m

existieren, so dass gilt: a 1 ⊆ b j1 , a 2 ⊆ b j2 , . . . , a n ⊆ b jn .

sid

s

1 s 1

2 s 2

.

n

.

s n

Tabelle 2: Sequenzdatenbank S

Definition 2.3 (Support einer Sequenz). Sei eine Sequenzdatenbank S (siehe Tabelle

2) als eine Menge von Tupeln in der Form (sid, s) gegeben. Ein Tupel (sid, s) enthält

die Sequenz α, wenn α ⊑ s gilt. Der Support einer Sequenz α in einer Sequenzdatenbank

S ist die Anzahl der Tupel in S, die α enthalten. Es gilt:

Support S (α) = | {(sid, s)|(sid, s) ∈ S ∧ (α ⊑ s)} | (1)

Definition 2.4 (Sequentielle Muster). Bei einer gegebenen positiven ganzen Zahl

MinSupport als die Support-Schwelle, wird eine Sequenz α als sequentielles Muster

oder als häufige Sequenz in der Sequenzdatenbank S bezeichnet, wenn folgende


2 GRUNDLAGEN 11

Bedingung erfüllt ist:

Support S (α) ≥ MinSupport (2)

Beispiel 2.5 (laufendes Beispiel). Gegeben seien MinSupport = 2 und die Sequenzdatenbank

aus Tabelle 1. Dann ist die Menge der Items in der Sequenzdatenbank I =

{a, b, c, d, e, f, g}. Während in der 9-Sequenz K1 a zwar drei mal vorkommt, trägt K1

nur ein mal zum Support(a) bei. Support(a) beträgt 4, da a in allen 4 Sequenzen als Teilsequenz

auftritt. Weil die Sequenzen K1 und K2 die einzigen zwei Sequenzen sind, die

die Sequenz s = a(bc)a als Teilsequenz beinhaltet, hat s einen Support von 2. s ist also

ein sequentielles Muster mit der i-Länge 4, deshalb wird s als ein 4-Muster bezeichnet.

2.2.2 Maximale und geschlossene sequentielle Muster

Die komplette Menge der sequentiellen Muster in eine Sequenzdatenbank kann redundante

Informationen aufweisen. Für die Darstellung oder Weiterverarbeitung von sequentiellen

Mustern ist es oftmals von Vorteil, wenn diese Redundanz behoben werden kann

um somit eine komprimierte Menge von sequentiellen Mustern zu erhalten. In diesem

Abschnitt werden die Konzepte der maximalen und geschlossenen sequentiellen Muster

vorgestellt. Beide Konzepte nutzen die Apriori-Eigenschaft des Supports um redundante

Informationen zu identifizieren.

Eigenschaft 2.6 (Apriori-Eigenschaft). Gegeben seien zwei Sequenzen s und s ′ mit

s ′ ⊒ s innerhalb einer Sequenzdatenbank, dann gilt: Support(s ′ ) ≤ Support(s). Daraus

folgt: wenn s ′ ein sequentielles Muster ist, so ist auch s ein sequentielles Muster.

Die Apriori-Eigenschaft besagt, dass wenn eine Sequenz häufig ist, dann ist auch jede

Teilsequenz davon häufig. Umgekehrt gilt, dass wenn eine Sequenz nicht häufig ist, dann

kann auch keine Obersequenz davon häufig sein.

Definition 2.7 (Maximale sequentielle Muster). Innerhalb einer gegebenen Menge

von sequentiellen Mustern ist ein sequentielles Muster s maximal, wenn es kein sequentielles

Muster s ′ mit s ′ ❂ s gibt.

Definition 2.8 (Geschlossene sequentielle Muster). Innerhalb einer gegebenen

Menge von sequentiellen Mustern ist ein sequentielles Muster s geschlossen, wenn es

kein sequentielles Muster s ′ mit s ′ ❂ s und Support(s ′ ) = Support(s) gibt.

Kunden-id

K1

K2

K3

K4

Transaktionssequenz

a(abc)(ac)d(cf)

(ad)c(bc)(ae)

(ef)(ab)(df)cb

eg(af)cbc

Tabelle 3: Transaktionssequenzdatenbank


2 GRUNDLAGEN 12

Beispiel 2.9. Gegeben sei die Sequenzdatenbank in der Tabelle 3 und ein MinSupport

= 3. Die komplette Menge der sequentiellen Muster, sind in der Tabelle 4 aufgelistet. Die

Menge der maximalen und geschlossenen Muster sind in den Tabellen 5 und 6 dargestellt.

1-Muster Support 2-Muster Support 3-Muster Support

a 4 ab 4 acb 3

b 4 ac 4 acc 3

c 4 bc 3

d 3 cb 3

e 3 cc 3

f 3 dc 3

Tabelle 4: Menge der sequentiellen Muster

1-Muster Support 2-Muster Support 3-Muster Support

e 3 bc 3 acb 3

f 3 dc 3 acc 3

Tabelle 5: Menge der maximalen sequentiellen Muster

1-Muster Support 2-Muster Support 3-Muster Support

e 3 ab 4 acb 3

f 3 ac 4 acc 3

bc 3

dc 3

Tabelle 6: Menge der geschlossenen sequentiellen Muster

Es ist erkennbar, dass durch Anwendung des Konzepts der maximalen sequentiellen

Muster nur noch sechs Muster übrig bleiben. Aus diesen sechs Mustern können durch Bildung

von Teilsequenzen die ursprünglichen 14 sequentiellen Mustern abgeleitet werden.

Man spricht auch von einer verlustlosen Komprimierung der Daten, da keine Muster

bei der Komprimierung veloren geht. Allerdings ist die Komprimierung mit Hilfe des

Konzepts der maximalen Muster bezüglich der Supportinformationen nicht verlustlos.

Beispielsweise kann die Information, dass das sequentielle Muster ab einen Support von

vier besitzt, nicht aus der Menge der maximalen sequentiellen Muster abgeleitet werden.

Wenn also sowohl die Sequenz als auch die dazugehörige Supportinformation verlustlos

komprimiert werden soll, dann ist das Konzept der geschlossenen sequentiellen

Mustern das geeignete Komprimierungsverfahren. In vielen Anwendungen reicht es aber

aus, die gefundenen Muster als Muster ohne Supportinformationen zu betrachten. In dem

Fall bietet sich das Konzept der maximalen sequentiellen Muster an, da es die höchste

Komprimierung der Muster garantiert.


2 GRUNDLAGEN 13

2.2.3 Partielle Ordnungen

Die Suche nach partiellen Ordnungen ist ein eigenständiges Konzept innerhalb des Data

Minings von Sequenzdaten. Mit diesem Konzept sollen häufige partielle Ordnungen

zwischen Items in einer Sequenzdatenbank gefunden werden. Interessanterweise können

dadurch auch völlig widersprüchliche häufige partielle Ordnungen gefunden werden, die

unterschiedliche, häufige Ordnungsbeziehungen zwischen den Items kennzeichnen.

In Abschnitt 2.2.1 wurde das Konzept der Suche nach sequentiellen Mustern durch

Finden von häufigen Teilsequenzen in der Sequenzdatenbank vorgestellt. Mitunter können

häufige Teilsequenzen nicht vollständig die inhärenten Ordnungsbeziehungen zwischen

den Items in einer Sequenzdatenbank entschlüsseln. Das folgende Beispiel über

die Suche nach häufigen Studienverläufen soll dies verdeutlichen.

Beispiel 2.10. Angenommen, eine Universität bietet ein Aufbaustudiengang an. Das

Vorlesungsangebot umfasst sechs verschiedene Fächer, die im Folgenden mit den Buchstaben

a, b, c, d, e und f gekennzeichnet werden. Die Studenten dürfen pro Semester

nur eine Prüfung in einem Fach belegen. Alle bestandenen Prüfungen wurden in eine

Sequenzdatenbank gespeichert. Die Sequenzdatenbank enthält die folgenden vier Prüfungssequenzen

der Studenten:

s 1 = abcdef

s 2 = acbde

s 3 = dabce

s 4 = dcabe

Die Sequenz s 1 kennzeichnet zum Beispiel den Studienverlauf, dass zuerst das Fach a

bestanden wurde und in einem späteren Semester das Fach b, danach das Fach c usw.,

bestanden wurde.

Weiterhin sollten aber noch mehr Informationen genutzt werden, welche implizit in

den Sequenzen schon vorhanden sind. Betrachtet wird wieder die Sequenz s 1 . s 1 gibt nicht

nur die Beziehung bezüglich der direkten zeitlichen Abfolge der sechs Fächer a, b, c, d, e

und f, sondern auch implizit die Beziehung bezüglich der indirekten zeitlichen Abfolge

zwischen jeweils zwei verschiedenen Fächern wieder. Man kann also die zusätzliche Information

aus s 1 gewinnen, dass a vor b, a vor c, a vor d, a vor e und a vor f bestanden

wurde. Analog dazu können Aussagen über die Fächer b, c, d und e getroffen werden.

Eine Ausnahme bildet das Fach f aus s 1 , da es das letzte Element aus s 1 ist und deshalb

vor keinem anderen Fach bestanden wurde.

Diese zusätzliche Information innerhalb einer Sequenz lässt sich gut in einem Graph

darstellen, wobei die Items der Sequenz als Knoten und die Beziehungen zwischen jeweils

zwei Items als gerichtete Kanten abgebildet werden. Zum Beispiel kennzeichnet die Kante

a → b die Beziehung, dass das Fach a vor Fach b bestanden wurde. In der Abbildung 5

sind die vier Sequenzen als Graphen dargestellt.


2 GRUNDLAGEN 14

Abbildung 5: Darstellung der vier Sequenzen als Graphen

Abbildung 6: Gesamtgraph aus den Sequenzen s 1 , s 2 , s 3 und s 4


2 GRUNDLAGEN 15

Fügt man nun diese vier Graphen zu einem einheitlichen Graph zusammen, erhält

man den Gesamtgraph in der Abbildung 6. Es ist erkennbar, dass zwischen den Knoten

a, b, c, d und e die Kantendichte besonders hoch ist. Weiterhin ist erkennbar, dass die

Kanten a → b, a → e, b → e, c → e und d → e bei allen vier Sequenzen auftreten.

Anders ausgedrückt: alle vier Sequenzen besitzen die Beziehung a vor b, a vor e, b vor

e, c vor e und d vor e. In der Abbildung 7 sind diese gemeinsamen Beziehungen als

separater Graph dargestellt. Aus dem Kontext heraus kann interpretiert werden, dass

zum Beispiel ein Student zuerst das Fach a bestehen muss um das Fach b zu belegen bzw.

um Fach e zu belegen muss ein Student die bestandenen Fächer a, b, c, und d vorweisen

können.

Abbildung 7: Gemeinsame Beziehungen der vier Sequenzen s 1 , s 2 , s 3 und s 4

Das Beispiel zeigt, dass man die impliziten Beziehungen zwischen den Sequenzen bei

Betrachtung der Sequenzen nicht sofort erkennen kann. Weiterhin kann beobachtet werden,

dass alle Pfade des Graphen aus Abbildung 7 Teilsequenzen von allen Sequenzen in

der Sequenzdatenbank sind. Der Graph stellt also eine Zusammenfassung der sequentiellen

Muster mit Support = 4 dar. Im Folgenden wird u.a. gezeigt, dass der Graph aus

Abbildung 7 eine partielle Ordnung darstellt.

Grundlegende Begriffe

Definition 2.11 (Partielle Ordnung). Eine partielle Ordnung R über eine Grundmenge

M ist eine binäre Beziehung, welche reflexiv, antisymmetrisch und transitiv ist.

Definition 2.12 (Totale Ordnung). Eine totale Ordnung ist eine partielle Ordnung

R für die folgendes gilt: Für je zwei beliebige Elemente x und y in M mit x ≠ y ist

entweder die Beziehung R(x, y) oder die Beziehung R(y, x) erfüllt.

Definition 2.13 (Darstellung als Graph). Eine partielle Ordnung R lässt sich als

gerichteter, azyklischer Graph darstellen. Dabei sind die Elemente von M die Knoten

und x → y eine Kante des Graphen, wenn (x, y) ∈ R und x ≠ y gilt. Eine Kante x → y

wird mit xy abgekürzt.


2 GRUNDLAGEN 16

Zum Beispiel ist die partielle Ordnung (b) aus Abbildung 8 ein Graph mit sechs

Knoten und sechs Kanten. Darüberhinaus ist diese partielle Ordnung durch die Knotenmenge

M = {a, b, c, d, e, f} und die Kantenmenge K = {ab, ac, bd, cd, de, df} eindeutig

beschrieben.

Definition 2.14 (Transitive Hülle C(R)). Die transitive Hülle C(R) einer partiellen

Ordnung R ist R erweitert um alle transitiven Beziehungen in R.

Zum Beispiel ist die partielle Ordnung (a) die transitive Hülle von der partiellen

Ordnung (b) (siehe Abbildung 8).

Abbildung 8: Transitive Hülle (a) und partielle Ordnung (b)

Definition 2.15 (Transitive Reduktion). Die transitive Reduktion einer partiellen

Ordnung R ist eine partielle Ordnung R ′ mit der kleinsten Anzahl an binären Beziehungen,

so dass C(R) = C(R ′ ) gilt.

Zum Beispiel ist die partielle Ordnung (b) die transitive Reduktion von der partiellen

Ordnung (a) (siehe Abbildung 8).

Definition 2.16 (Beziehungen zwischen Ordnungen). Gegeben seien zwei verschiedene

Ordnungen R 1 und R 2 . Wenn C(R 1 ) ⊂ C(R 2 ) gilt, wird R 1 als schwächere Ordnung

und R 2 als stärkere Ordnung bezeichnet. Es wird folgende Notation verwendet:

R 1 ≺ R 2 ⇔ C(R 1 ) ⊂ C(R 2 ).

Zum Beispiel besteht zwischen den vier Ordnungen in Abbildung 9 die Beziehungen

R 1 ≻ R 2 ≻ R 3 ≻ R 4 .

Definition 2.17 (Hasse-Diagramm). Das Hasse-Diagramm für eine partielle Ordnung

R über eine Grundmenge M ist ein gerichteter Graph, wobei die Elemente von M die

Knoten bilden. Zwei Knoten x uns y werden durch eine Kante verbunden, wenn R(x, y)

gilt und es kein z mit R(x, z) und R(z, y) gibt. Die Richtung der Kante wird dadurch

zum Ausdruck gebracht, dass sich der Knoten x oberhalb von y befindet. Solch eine

Anordnung lässt sich erreichen, da das Hasse-Diagramm zyklenfrei ist. Schleifen bei

Reflexivität werden weggelassen.


2 GRUNDLAGEN 17

Abbildung 9: Vier Ordnungen mit R 1 ≻ R 2 ≻ R 3 ≻ R 4

Aus Gründen der Übersichtlichkeit und besseren Vergleichbarkeit werden partielle

Ordnungen in einem Hasse-Diagramm dargestellt. So werden nur die transitive Reduktion

einer partiellen Ordnung R dargestellt und nicht geordnete Elemente von R

werden weggelassen. In Abbildung 9 sind vier Ordnungen als direkter azyklischer Graph

im Hasse-Diagramm dargestellt.

Definition 2.18 (Support von partiellen Ordnungen). Ein Tupel (sid, s) in einer

Sequenzdatenbank S enthält die partielle Ordnung R, wenn R ⊆ C(s) gilt. Der Support

einer partiellen Ordnung R in einer Sequenzdatenbank S ist die Anzahl der Tupel in S,

die R enthalten. Es gilt:

Support S (R) = | {(sid, s)|(sid, s) ∈ S ∧ (R ⊆ C(s))} | (3)

Definition 2.19 (Häufige partielle Ordnungen). Bei einer gegebenen positiven ganzen

Zahl MinSupport als die Support-Schwelle, wird eine partielle Ordnung R als

häufige partielle Ordnung in der Sequenzdatenbank S bezeichnet, wenn folgende Bedingung

erfüllt ist:

Support S (R) ≥ MinSupport (4)

Eigenschaft 2.20 (Apriori-Eigenschaft von häufigen partiellen Ordnungen).

Gegeben seien zwei partielle Ordnungen R und R ′ mit R ′ ≻ R innerhalb einer Sequenzdatenbank,

dann gilt: Support(R ′ ) ≤ Support(R). Daraus folgt: wenn R ′ eine häufige

partielle Ordnung ist, so ist auch R eine häufige partielle Ordnung.

Definition 2.21 (Häufige, geschlossene partielle Ordnungen). Innerhalb einer

gegebenen Menge von häufigen partiellen Ordnungen ist eine häufige partielle Ordnung R

geschlossen, wenn es keine häufige partielle Ordnung R ′ mit R ′ ≻ R und Support(R ′ ) =

Support(R) gibt.


2 GRUNDLAGEN 18

Wie schon im Anfangsbeispiel beschrieben wurde, enthalten Sequenzen Informationen

über die zeitliche Abfolge zwischen den Elementen und somit auch zwischen den Items

aus unterschiedlichen Elementen. Wenn nun die zeitliche Abfolge zwischen zwei Items aus

unterschiedlichen Elementen als eine Beziehung betrachtet wird, dann ist eine Sequenz

s innerhalb einer Sequenzdatenbank S eine partielle Ordnung über die Grundmenge der

Items in S. Zum Beispiel kennzeichnet eine Sequenz s = a(bc) folgende Beziehungen: a

liegt zeitlich vor b, a liegt zeitlich vor c. Die Sequenz s definiert demnach die partielle

Ordnung R = {ab, ac}.

Wenn eine Sequenz als eine partielle Ordnung aufgefasst werden soll, muss die ursprüngliche

Definition von Sequenzen einschränkt werden. So darf jedes Item maximal

nur ein Mal innerhalb einer Sequenz enthalten sein. Diese Einschränkung ist notwendig

aufgrund der Anti-Symmetrie-Bedingung von partiellen Ordnungen (siehe Definition

2.11). Deshalb wird im Folgenden zwei Arten von Sequenzen definiert, welche die Anti-

Symmetrie-Bedingung von partiellen Ordnungen erfüllen.

Definition 2.22 (String). Ein String s = x 1 · · · x l ist eine spezielle Sequenz, wobei

x i (1 ≤ i ≤ l) ein Item darstellt und x i ≠ x j (1 ≤ i ≤ l, 1 ≤ j ≤ l) gilt.

Folgerung 2.23 (Transitive Hülle C(s) eines Strings). Sei ein String s = x 1 · · · x l

gegeben. Die transitive Hülle C(s) lässt sich dann wie folgt berechnen:

C(s) = {x i x j |1 ≤ i < j ≤ l} (5)

In vielen Anwendungen reicht es aus die zugrundeliegenden Daten als Strings zu betrachten.

Ein gutes Beispiel hiefür ist das Weblog-Mining (siehe Abschnitt 1.2.1). In

dieser Anwendung liegen die Daten in Form von Ereignissequenzen vor. Da zu jedem

Zeitpunkt nur ein Ereignis auftreten kann, ist eine Ereignissequenz eines Benutzers eine

zeitlich aufsteigend geordnete Liste von Ereignissen. Werden die Ereignisse als Items

betrachtet und es gibt kein Mehrfachvorkommen von Ereignissen innerhalb einer Ereignissequenz,

kann jede Ereignissequenz als ein String betrachtet werden.

Beispielsweise ist in einigen Anwendungen nur interessant, wann ein Ereignis zum

ersten Mal innerhalb eines definierten Zeitraums eintritt (z.B. das erste Login eines

Benutzers innerhalb eines Tages), d.h. alle späteren Eintreten eines Ereignisses werden

ignoriert bzw. nicht gespeichert. Auf diese Weise kann die Bedingung, dass es keine

Mehrfachvorkommen von Ereignissen innerhalb einer Ereignisssequenz gibt, garantiert

werden.

Da innerhalb eines Strings nur Elemente mit einem Item erlaubt sind, können viele

Sequenzdaten nicht als Strings betrachtet werden. Um auch in Sequenzen nach partiellen

Ordnungen zu suchen, in denen ein Element mehrere Items beinhalten kann, werden im

Folgenden der Begriff eingeschränkte Sequenz definiert.

Definition 2.24 (Eingeschränkte Sequenz). Eine eingeschränkte Sequenz s mit

s = (x 11 x 21 · · · x m1 )(x 12 x 22 · · · x m2 ) · · · (x 1l x 2l · · · x ml ) und l Elementen ist eine spezielle

Sequenz, wobei x ai ≠ x aj (1 ≤ i ≤ l, 1 ≤ j ≤ l) für i ≠ j gilt. D.h. kein Item darf


2 GRUNDLAGEN 19

mehrfach in einer Sequenz vorkommen.

Folgerung 2.25 (Transitive Hülle C(s) und transitive Reduktion T R(s) einer

eingeschränkten Sequenz). Gegeben sei eine eingeschränkte Sequenz s mit s =

(x 11 x 21 · · · x m1 )(x 12 x 22 · · · x m2 ) · · · (x 1l x 2l · · · x ml ). Die transitive Hülle C(s) und die transitive

Reduktion T R(s) lässt sich dann wie folgt bestimmen:

C(s) = { x ai x bj |1 ≤ i < j ≤ l, 1 ≤ a ≤ m i , 1 ≤ b ≤ m j

}

T R(s) = { x ai x bi+1 |1 ≤ i < l, 1 ≤ a ≤ m i , 1 ≤ b ≤ m i+1

}

(6)

(7)

Es handelt sich bei Strings und eingeschränkte Sequenzen also um eine eingeschränkte

Form von allgemeinen Sequenzen. Die Suche nach häufigen partiellen Ordnungen ist

deshalb nur in Sequenzdaten mit Sequenzen in der eingeschränkten Form möglich.

Erwähnt sei, dass ohnehin die Suche nach häufigen partiellen Ordnungen in Sequenzdaten

nur sinnvoll ist, wenn anzunehmen ist, dass innerhalb der Sequenzdaten partielle

Ordnungen vermutet werden können. Dies ist zum Beispiel der Fall bei Sequenzdaten von

bestandenen Prüfungen. Hierbei ist leicht ersichtlich, dass inhärent partielle Ordnungen

zu vermuten wäre; wie zum Beispiel, dass eine bestandene Prüfung a Voraussetzung ist

für eine Prüfung b.

Gerade in diesem Beispiel wird deutlich, dass die beschriebene Einschränkung der

zugrundeliegenden Sequenzdaten auf jeden Fall erfüllt wird, da keine Prüfung zweimal

bestanden werden kann. So kann die Einschränkung als ”

natürlich“ angesehen werden,

und muss nicht weiter beachtet werden, wenn die Sequenzen schon in der eingeschränkten

Form vorliegen.

Wenn eine eingeschränkte Sequenz oder ein String als eine Ordnung über der Grundmenge

aller Items in der Sequenzdatenbank betrachtet wird, gelten dementsprechend

alle Definitionen von partiellen Ordnungen auch für diese speziellen Sequenzen. Folglich

werden bei der Suche nach häufigen partiellen Ordnungen in Sequenzdaten ausschließlich

nur Strings oder eingeschränkte Sequenzen berücksichtigt.


3 ALGORITHMEN 20

3 Algorithmen

In diesem Kapitel werden Algorithmen vorgestellt, die für die Durchführung des Data

Minings in Frage kommen. Da es gerade beim Konzept der sequentiellen Muster viele

verschiedene Algorithmen gibt, werden stellvertretend nur jeweils zwei Algorithmen für

jedes Konzept vorgestellt. Im Anschluss daran werden die Algorithmen bezüglich ihrer

Effizienz miteinander verglichen. Basierend auf diesem Vergleich soll eine Auswahl eines

Algorithmus für jedes Konzept für die Implementierung getroffen werden. Im Abschnitt

3.4 wird gezeigt wie aus der Menge der sequentiellen Muster geschlossene und maximale

sequentielle Muster bzw. aus der Menge der häufigen, geschlossenen partiellen Ordnungen

häufige, maximale partielle Ordnungen berechnet werden können. Schließlich wird

im Abschnitt 3.5 auf andere Algorithmen verwiesen.

3.1 Suche nach sequentiellen Mustern

Im Folgenden werden für die Suche nach sequentiellen Mustern stellvertretend zwei

Algorithmen vorgestellt, welche für zwei gegensätzliche Ansätze im Bereich der Suche

nach sequentiellen Mustern stehen. Als ”

Klassiker“ der sogenannten ”

Generate-and-test“-

Algorithmen soll hier der GSP-Algorithmus [SA96] beschrieben werden, welcher ein verbesserter

AprioriAll-Allgorithmus [AS95] ist, dem ersten Algorithmus für die Suche nach

sequentiellen Mustern. In Vergleich dazu wird mit dem PrefixSpan-Algorithmus [PH01]

ein Vertreter der ”

Pattern-growth“-Algorithmen vorgestellt. PrefixSpan stellt dabei eine

Optimierung des FreeSpan-Algorithmus [HP00] dar, dem ersten ”

Pattern-growth“-

Algorithmus für die Suche nach sequentiellen Mustern.

3.1.1 Der GSP-Algorithmus

GSP [SA96] ist ein effizienter, auf Breitensuche basierender Algorithmus für die Suche

nach sequentiellen Mustern in einer Sequenzdatenbank. Bei der Suche nach sequentiellen

Mustern wird die Sequenzdatenbank mehrmals durchlaufen. GSP verwendet dabei

die Apriori-Eigenschaft, so dass nur die häufigen Items in der Sequenzdatenbank als

Ausgangsmenge für die Suche nach sequentiellen Mustern berücksichtigt werden.

Der erste Durchlauf bestimmt den Support für jedes Item, das in der Sequenzdatenbank

auftritt, also für jede Sequenz mit der i-Länge = 1. Diejenigen 1-Sequenzen mit

Support ≥ MinSupport werden in der Zielmenge der 1-Muster L 1 aufgenommen. Die

gefundenen Muster in einem Durchlauf dienen jeweils als Ausgangsmenge L k−1 für den

darauffolgenden Durchlauf. Aus dieser Ausgangsmenge L k−1 wird die Kandidatenmenge

C k generiert. Die Kandidatengenerierung wird dabei durch eine Joinphase und eine

Pruningphase realisiert.

Für alle k-Kandidaten aus C k wird wiederum der Support ermittelt. Die k-Kandidaten,

welche die MinSupport-Bedingung erfüllen, werden in die Zielmenge der k-Muster L k


3 ALGORITHMEN 21

aufgenommen. Der Algorithmus ist beendet, wenn am Ende eines Durchlaufs die Menge

L k leer ist und somit keine Kandidaten mehr generiert werden kann. In Abbildung 10

ist der GSP-Algorithmus dargestellt.

Eingabe: Sequenzdatenbank S, Supportschwelle MinSupport

Ausgabe: Die komplette Menge der sequentiellen Muster

Vorgehen:

1. L 1 = die Menge aller Items in S mit Support(Item) ≥ MinSupport.

2. for (k=2; L k−1 ≠ ∅; k++) {

C k = die Menge der k-Kandidaten, generiert aus L k−1 .

Für jede Sequenz s ∈ S inkrementiere für alle Kandidaten c ∈ C k

den Support(c) wenn c ⊑ s.

L k = die Menge der Kandidaten c ∈ C mit Support(c) ≥ MinSupport.

}

3. Gib ⋃ k L k als die komplette Menge der sequentiellen Muster zurück.

Abbildung 10: GSP-Algorithmus

Im Folgenden wird die Kandidatengenerierung des GSP-Algorithmus beschrieben,

welches aus einer Join- und Pruningphase besteht.

1. Joinphase. Ziel der Joinphase ist es, aus der Ausgangsmenge L k−1 die Kandidatenmenge

C k zu generieren. Die k-Kandidaten werden durch einen Verbund von

L k−1 mit L k−1 erzeugt. Dabei wird eine Sequenz s 1 mit einer Sequenz s 2 gejoint,

wenn das (k−2)-Suffix von s 1 gleich dem (k−2)-Präfix von s 2 ist. Das (k−2)-Suffix

einer k − 1-Sequenz s erhält man, in dem das erste Item von s gelöscht wird, respektive

erhält man das (k−2)-Präfix durch das Entfernen des letzten Items von s.

Die, aus dem Join von s 1 und s 2 , entstandene Kandidatensequenz c ist die Sequenz

s 1 erweitert um das letzte Item von s 2 . Das hinzugefügte Item aus s 2 wird

als eigenständiges Element in s 1 aufgenommen, wenn es auch ein eigenständiges

Element in s 2 war. Anderenfalls wird es als ein Teil des letzten Elementes in s 1

hinzugefügt.

Eine Ausnahme bildet das Joinen von L 1 mit L 1 . In diesem Fall wird das Item

aus s 2 sowohl als eigenständiges Element, als auch als Teil der Itemmenge von s 1

hinzugefügt.

2. Pruningphase. In dieser Phase werden diejenigen Kandidatensequenzen aus C k

entfernt, die Teilsequenzen, welche die MinSupport-Bedingung nicht erfüllen, beinhalten.


3 ALGORITHMEN 22

Um zu zeigen, dass bei der Kandidatengenerierung kein sequentielles Muster verloren

geht, muss gezeigt werden, dass C k ⊇ L k gilt.

Satz 3.1. Sei die Menge aller (k − 1)-Muster L k−1 gegeben. Dann erzeugt die Kandidatengenerierung

aus der Ausgangsmenge L k−1 eine Obermenge von L k , die Menge aller

k-Muster.

Beweis. Der Join ist äquivalent mit der Erweiterung von L k−1 um jedes häufige Item

und dem Entfernen der Sequenzen, deren (k − 1)-Suffix nicht in L k−1 sind. Wenn das

(k − 1)-Suffix /∈ L k−1 ist, dann ist das (k − 1)-Suffix nicht häufig. Ferner kann aufgrund

der Apriori-Eigenschaft keine Obersequenz von dem (k − 1)-Suffix häufig sein. Auf diese

Weise werden nur die Sequenzen gelöscht, die nicht in L k vorkommen können. Es gilt

nach dem Joinschritt: C k ⊇ L k .

Dementsprechend gilt auch für den Pruningschritt, dass das Löschen aller Sequenzen

aus C k , deren Teilsequenzen nicht in L k−1 sind, keine Sequenz entfernt wird, welche in

L k sein könnte. Es gilt nach dem Pruningschritt: C k ⊇ L k .

Beispiel 3.2. Gegeben sei die folgende Sequenzdatenbank und ein MinSupport = 2:

Kunden-id

K1

K2

K3

K4

Transaktionssequenz

a(abc)(ac)d(cf)

(ad)c(bc)(ae)

(ef)(ab)(df)cb

eg(af)cbc

Tabelle 7: Transaktionssequenzdatenbank

Zuerst wird für alle Items in der Sequenzdatenbank der Support ermittelt. Alle Items

mit Support ≥ MinSupport werden in L 1 , die Menge der 1-Muster, aufgenommen (siehe

Tabelle 8).

1-Kandidaten Support 1-Muster

a 4 a

b 4 b

c 4 c

d 3 d

e 3 e

f 3 f

g 1

Tabelle 8: C 1 −→ L 1

Aus der Menge der 1-Muster L 1 soll nun die Menge der potientiellen 2-Mustern C 2

erzeugt werden. Wie oben beschrieben unterscheidet sich der Join von L 1 mit L 1 von

allen folgenden Joinphasen.


3 ALGORITHMEN 23

1-Muster

2-Kandidaten

Länge 1 Länge 2

a (ab), (ac), (ad), (ae), (af) aa, ab, ac, ad, ae, af

b (bc), (bd), (be), (bf) ba, bb, bc, bd, be, bf

c (cd), (ce), (cf) ca, cb, cc, cd, ce, cf

d (de), (df), da, db, dc, dd, de, df

e (ef) ea, eb, ec, ed, ee, ef

f

fa, fb, fc, fd, fe, ff

Tabelle 9: L 1 −→ C 2

Aufgrund der Tatsache, dass bei den 1-Mustern implizit keine Information darüber

vorhanden ist, ob es als eigenständiges Element oder Teil eines Elementes innerhalb

einer Datensequenz vorliegt, müssen in der Joinphase beide Möglichkeiten berücksichtigt

werden.

Auch besitzen alle 1-Muster den gleichen Präfix bzw. Suffix - nämlich die leere Menge,

so dass jedes 1-Muster mit sich selbst und allen anderen 1-Muster gejoint wird. Ein

Pruning erübrigt sich, da alle Teilsequenzen der 2-Kandidaten 1-Muster sind und deshalb

nicht mehr auf MinSupport geprüft werden müssen (siehe Tabelle 9).

Die nachfolgenden Join- und Pruningphasen verlaufen nach einem einheitlichen Vorgehen.

Zur Veranschaulichung wird der Schritt von L 3 zu L 4 in der Tabelle 10 dargestellt.

Die Joinbedingung von L 3 mit L 3 ist, dass das 2-Suffix von Sequenz s 1 gleich dem

2-Präfix einer Sequenz s 2 sein muss. Die aus dem Join entstandene 4-Sequenz ist die

Sequenz s 1 erweitert um das letzte Item aus s 2 als eigenständiges Element oder als Teil

des letzten Elements von s 1 - je nachdem wie das letzte Item von s 2 in s 2 vorlag (siehe

oben).

Aus den 4-Muster konnten durch den Join keine potentiellen 5-Mustern generiert

werden. Der Algorithmus ist somit beendet (siehe Tabelle 11).


3 ALGORITHMEN 24

3-Muster 2-Präfix 2-Suffix 4-Kandidaten 4-Muster

nach Join nach Pruning

aba ab ba a(bc)a a(bc)a a(bc)a

abc ab bc adcb (ab)dc (ab)dc

a(bc) ab (bc) (ab)dc eabc eacb

aca ac ca bdcb eacb efcb

acb ac cb eaba efbc

acc ac cc eabc efcb

adc ad dc ea(bc)

(ab)c (ab) bc eaca

(ab)d (ab) bd eacb

(ab)f (ab) bf eacc

bdc bd dc efbc

(bc)a (bc) ca efcb

dcb dc cb

eab ea ab

eac ea ac

ebc eb bc

ecb ec cb

efb ef fb

efc ef fc

fbc fb bc

fcb fc cb

Tabelle 10: L 3 −→ C 4 −→ L 4

4-Muster 3-Präfix 3-Suffix 5-Kandidaten 5-Muster

nach Join nach Pruning

a(bc)a a(bc) (bc)a ∅

(ab)dc (ab)d bdc

eacb eac acb

efcb efc fcb

Tabelle 11: L 4 −→ C 5


3 ALGORITHMEN 25

3.1.2 Der PrefixSpan-Algorithmus

PrefixSpan [PH01] ist ein effizienter auf Tiefensuche basierter Algorithmus für die Suche

nach sequentiellen Mustern in einer Sequenzdatenbank. Ein wesentlicher Unterschied

zum GSP-Algorithmus ist, dass PrefixSpan keine Kandidatengenerierung benötigt. Ausgehend

von einem gefundenen Muster erweitert PrefixSpan dieses Muster immer weiter

um häufige Items bis das Muster nicht in der Sequenzdatenbank vorkommt. Man spricht

deshalb auch von einem ”

Pattern-growth“-Algorithmus. Dabei benutzt PrefixSpan die

Konzepte Präfix und Suffix.

Es wird im Folgenden vorausgesetzt, dass die Items innerhalb eines Elementes nach

einer einheitlichen Ordnung sortiert sind. Hier soll die alphabetische Ordnung gewählt

werden, da in den Beispielen die Items als Buchstaben gekennzeichnet sind.

Definition 3.3 (Präfix). Für eine gegebene Sequenz α = e 1 e 2 · · · e n , wobei jedes e i (1 ≤

i ≤ n) ein Element ist, wird eine Sequenz β = e ′ 1e ′ 2 · · · e ′ m(m ≤ n) als Präfix von α

bezeichnet, wenn folgendes gilt: (1) e ′ i = e i für i ≤ m − 1; (2) e ′ m ⊆ e m ; und (3) alle

Items in (e m − e ′ m) alphabetisch hinter den Items in e ′ m liegen.

Beispiel 3.4. Sei die Sequenz s = a(abc)(ac)d(cf) gegeben. Dann ist die Sequenz s ′ =

a(ab) ein Präfix von s, da s ′ die folgenden drei Bedingungen erfüllen: (1) a = a, (2)

(ab) ⊆ (abc) und (3) Item c ist alphabetisch hinter Item a und b geordnet.

Definition 3.5 (Suffix). Betrachtet wird eine Sequenz α = e 1 e 2 · · · e n , wobei jedes

e i (1 ≤ i ≤ n) ein Element ist. Sei β = e ′ 1e ′ 2 · · · e ′ m−1e ′ m(m ≤ n) eine Teilsequenz von α.

Dann ist eine Sequenz γ = e ′′

l e l+1 · · · e n ein Suffix von α bezüglich β, gekennzeichnet als

γ = α/β, wenn folgendes gilt:

1. l = i m , so dass 1 ≤ i 1 < · · · < i m ≤ n für e ′ j ⊆ e ij (1 ≤ j ≤ m) existiert, und

i m minimiert ist. Mit anderen Worten: e 1 · · · e l ist das kürzeste Präfix von α, das

e ′ 1e ′ 2 · · · e ′ m−1e ′ m als Teilsequenz beinhaltet; und

2. e ′′

l ist eine Menge von Items in e l − e ′ m, die alphabetisch hinter alle Items in e ′ m

liegen.

Ist e ′′

l nicht leer, wird das Suffix als ( items in e ′′

l )e l+1 · · · e n gekennzeichnet. Wenn β

keine Teilsequenz von α ist, ist das Suffix von α bezüglich β leer.

Beispiel 3.6. Sei die Sequenz s = a(abc)(ac)d(cf) und die Sequenz s ′ = ab mit s ′ ⊑ s

gegeben. Dann ist die Sequenz s ′′ = ( c)(ac)d(cf) das Suffix von s bezüglich s ′ , da die

folgenden zwei Bedingungen erfüllt werden: (1)s p = a(abc) ist das Präfix von s mit der

minimalen Anzahl an Elementen, so dass gilt: s ′ ⊑ s p und (2) Item c ist alphabetisch

hinter Item a und b geordnet.

Auf Basis des Konzepts von Präfix und Suffix wird das Problem der Suche nach

sequentiellen Mustern wie folgt aufgeteilt:


3 ALGORITHMEN 26

1. Sei {x 1 , x 2 , . . . , x n } die komplette Menge der sequentiellen Muster mit der i-Länge

1 in eine Sequenzdatenbank S. Dann kann die komplette Menge der sequentiellen

Muster in S in n disjunkte Teilmengen aufgeteilt werden. Die i-te Teilmenge (1 ≤

i ≤ n) ist die Menge der sequentiellen Muster mit dem Präfix x i .

2. Sei α ein sequentielles Muster mit der i-Länge l und {β 1 , β 2 , . . . , β m } eine Menge

von allen sequentiellen Mustern der i-Länge (l + 1) mit dem Präfix α. Dann kann

die komplette Menge der sequentiellen Muster mit dem Präfix α, ausgenommen α

selber, in m disjunkte Teilmengen aufgeteilt werden. Die j-te Teilmenge (1 ≤ j ≤

n) ist die Menge der sequentiellen Muster mit dem Präfix β j .

Diese rekursive Partitionierung in Teilmengen von sequentiellen Mustern basiert auf

das ”

Teile und herrsche“-Prinzip. Dabei durchläuft PrefixSpan mit Hilfe der Tiefensuche

den in Abbildung 11 dargestellten Sequenzaufzählungsbaum.

Abbildung 11: Der Sequenzaufzählungsbaum für das Itemset {a, b, c, d}.

Für die Suche nach Teilmengen von sequentiellen Muster verwendet PrefixSpan eine

projizierte Datenbank.

Definition 3.7 (Projizierte Datenbank). Sei α ein sequentielles Muster in eine Sequenzdatenbank

S. Dann ist die α-projizierte Datenbank, gekennzeichnet als S| α , eine

Sammlung von Suffixen von Sequenzen in S bezüglich dem Präfix α.

Kunden-id

K1

K2

K3

K4

Transaktionssequenz

a(abc)(ac)d(cf)

(ad)c(bc)(ae)

(ef)(ab)(df)cb

eg(af)cbc

Tabelle 12: Transaktionssequenzdatenbank

Das folgende Beispiel beschreibt diesen präfix-basierten Ansatz.


3 ALGORITHMEN 27

Beispiel 3.8. Sei die Sequenzdatenbank in Tabelle 12 und ein MinSupport = 2 gegeben.

Dann kann die Suche nach sequentiellen Mustern in S mit der Präfixprojektionsmethode

in den folgenden Schritten ablaufen:

1. Suche nach sequentiellen Muster mit der i-Länge 1. Bei diesem ersten

Durchlauf in S werden alle Items gefunden, die die MinSupport-Bedingung erfüllen.

Folgende 1-Muster mit den zugehörigen Support sind in S: a : 4, b : 4, c : 4, d : 3,

e : 3 und f : 3.

2. Teile den Suchraum. Die komplette Menge der sequentiellen Muster wird in

folgende 6 Teilmengen bezüglich den 6 Präfixen partitioniert: (1) diejenigen mit

Präfix a, (2) diejenigen mit Präfix b, . . ., und (6) diejenigen mit Präfix f.

3. Suche Teilmengen von sequentiellen Mustern. Die Teilmengen von sequentiellen

Mustern können durch Erzeugung der betreffenden Menge mit einer projizierten

Datenbank (siehe Tabelle 13) rekursiv gefunden werden. Dies geschieht wie

folgt:

(a) Suche nach sequentiellen Mustern mit Präfix a. Nur Sequenzen, die

a beinhalten, sollen gesammelt werden. Von diesen Sequenzen werden nur

diejenigen Teilsequenzen mit dem ersten Erscheinen von a als Präfix berücksichtigt.

Zum Beispiel wird bei der Sequenz (ef)(ab)(df)cb nur die Teilsequenz

( b)(df)cb berücksichtigt. Die erzeugte a-projizierte Datenbank besteht dann

aus den folgenden 4 Suffix-Sequenzen: (abc)(ac)d(cf), ( d)c(bc)(ae), ( b)(df)cb

und ( f)cbc. Beim Durchlauf in der a-projizierten Datenbank werden wiederum

alle Items gefunden, die die MinSupport-Bedingung erfüllen: a : 2, b : 4,

b : 2, c : 4, d : 2 und f : 2. Daraus lässt sich die 2-Muster mit Präfix a

ableiten: aa : 2, ab : 4, (ab) : 2, ac : 4, ad : 2 und af : 2.

Rekursiv werden alle sequentielle Muster mit dem Präfix a in 6 Teilmengen

partitioniert: (1) diejenigen mit Präfix aa, (2) diejenigen mit Präfix ab, . . .,

und (6) diejenigen mit Präfix af.

Der Vorgang wird beendet, wenn die projizierte Datenbank leer ist.

(b) Suche nach sequentiellen Mustern mit Präfix b, c, d, e und f. Analog

wie beim Präfix a werden die b-, c-, d-, e- und f-projizierten Datenbanken

erzeugt und rekursiv nach häufigen Items durchsucht. In Abbildung 14 sind

die projizierten Datenbanken mit den darin enthaltenen sequentiellen Mustern

abgebildet.

4. Die komplette Menge der sequentiellen Muster ist die Menge der rekursiv

gefundenen Muster PrefixSpan findet genau die gleiche Menge von sequentiellen

Mustern wie der GSP-Algortihmus. In Abbildung 12 ist der PrefixSpan-

Algorithmus dargestellt.


3 ALGORITHMEN 28

Präfix projizierte (Suffix-) Datenbank häufige Items Muster

a (abc)(ac)d(cf), ( d)c(bc)(ae), a: 2, b: 4, b: 2, aa: 2, ab: 4, (ab): 2,

( b)(df)cb, ( f)cbc c: 4, d: 2, f: 2 ac: 4, ad: 2, af: 2

aa ( bc)(ac)d(cf), ( e) ∅ ∅

ab ( c)(ac)d(cf), ( c)(ae), c a: 2, c: 2, c: 2 aba: 2, abc: 2,

a(bc): 2

aba ( c)d(cf), ( e) ∅ ∅

abc ( c)d(cf) ∅ ∅

a(bc) (ac)d(cf), (ae) a: 2 a(bc)a: 2

a(bc)a ( c)d(cf), ( e) ∅ ∅

(ab) ( c)(ac)d(cf), (df)cb c: 2, d: 2, f: 2 (ab)c: 2, (ab)d: 2,

(ab)f: 2

(ab)c d(cf), b ∅ ∅

(ab)d (cf), ( f)cb c: 2 (ab)dc: 2

(ab)dc ( f), b ∅ ∅

(ab)f cb ∅ ∅

ac (ac)d(cf), (bc)(ae), b, bc a: 2, b: 3, c: 3 aca: 2, acb: 3,

acc: 3

aca ( c)d(cf), ( e) ∅ ∅

acb ( c)(ae), c ∅ ∅

acc d(cf), ( c)(ae) ∅ ∅

ad (cf), ( f)cb c: 2 adc: 2

adc ( f), b ∅ ∅

af cb ∅ ∅

Tabelle 13: a-projizierte Datenbank und daraus abgeleitete projizierte Datenbanken mit

allen Mustern darin

Präfix projizierte (Suffix-) Datenbank sequentielle Muster

a (abc)(ac)d(cf), ( d)c(bc)(ae) a, aa, ab, a(bc), a(bc)a, aba, abc), (ab),

( b)(df)cb, ( f)cbc (ab)c, (ab)d, (ab)f, (ab)dc, ac, aca, acb,

acc, ad, adc, af

b ( c)(ac)d(cf), ( c)(ae), (df)cb, c b, ba, bc, (bc), (bc)a, bd, bdc, bf

c (ac)d(cf), (bc)(ae), b, bc c, ca, cb, cc

d (cf), c(bc)(ae), ( f)cb d, db, dc, dcb

e ( f)(ab)(df)cb, (af)cbc e, ea, eab, eac, eacb, eb, ebc, ec, ecb, ef

efb, efc, efcb

f (ab)(df)cb, cbc f, fb, fc, fcb

Tabelle 14: Projizierte Datenbank und alle sequentielle Muster


3 ALGORITHMEN 29

Eingabe: Sequenzdatenbank S, Supportschwelle MinSupport

Ausgabe: Die komplette Menge der sequentiellen Muster

Vorgehen: P refixSpan(∅, 0, S) aufrufen

Methode P refixSpan(α, l, S| α )

Parameter:

α: sequentielles Muster

l: i-Länge von α

S| α : α-projizierte Datenbank, wenn α ≠ ∅, sonst Sequenzdatenbank S

Vorgehen:

1. Durchsuche S| α , finde jedes Item b mit Support(b) ≥ MinSupport , so dass

(a) b im letzten Element von α eingefügt werden kann um ein sequentielles Muster

zu erhalten;

oder

(b) b als letztes Element von α eingefügt werden kann um ein sequentielles Muster

zu erhalten.

2. Für jedes Item b, füge es α (gemäß Schritt 1) hinzu um ein sequentielles Muster α ′

zu erhalten. Gib α ′ aus;

3. Für jedes α ′ , erzeuge eine α ′ -projizierte Datenbank S| α ′, und rufe

P refixSpan(α ′ , l + 1, S| α ′) auf.

Abbildung 12: PrefixSpan-Algorithmus

3.2 Suche nach häufigen, geschlossenen partiellen Ordnungen

Die Suche nach häufigen, geschlossenen partiellen Ordnungen steht in besonderer Beziehung

zu der Suche nach sequentiellen Mustern. Schließlich werden bei beiden Konzepten

nach Mustern in Sequenzen gesucht. Während sich die Suche nach sequentiellen Mustern

auf häufige Teilsequenzen in den Sequenzen konzentriert, werden bei der Suche nach häufigen,

geschlossenen partiellen Ordnungnen die häufigen Ordnungsbeziehungen zwischen

den Items in den Sequenzen betrachtet.

Im Vergleich zum Konzept der sequentiellen Muster stellt das Konzept der Suche

nach häufigen, geschlossenen partiellen Ordnungen ein kleines und dementsprechend

wenig erforschtes Teilgebiet des Data Minings von Sequenzdaten dar. Folglich gibt es

eine geringe Auswahl an Algorithmen bezüglich dieses Problems. Im Folgenden wird für

die Suche nach häufigen, geschlossenen partiellen Ordnungen die Algorithmen TranClose

und Frecpo, welche in [PW06] beschrieben sind vorgestellt. Beide Algorithmen verwenden


3 ALGORITHMEN 30

dabei unterschiedliche, interessante Ansätze um nach häufigen, geschlossenen partiellen

Ordnungen zu suchen.

3.2.1 Der TranClose-Algorithmus

TranClose [PW06] ist ein einfach nachzuvollziehender Algorithmus für die Suche nach

häufigen, geschlossenen partiellen Ordnungen in einer Stringdatenbank. Dabei löst Tran-

Close das Problem der Suche nach häufigen, geschlossenen partiellen Ordnungen durch

die Umwandlung des Problems in die Suche nach häufigen, geschlossenen Itemsets. Dazu

wird zuerst der Begriff Transaktionsdatenbank definiert.

sid C(s)

1 C(s 1 )

2 C(s 2 )

. .

n C(s n )

Tabelle 15: Transaktionsdatenbank TDB

Definition 3.9 (Transaktionsdatenbank). Sei eine Transaktionsdatenbank T DB (siehe

Tabelle 15) als eine Menge von Tupeln in der Form (sid, C(s)) gegeben. Dann enthält

ein Tupel (sid, C(s)) die partielle Ordnung R, wenn R ⊆ C(s) gilt. Der Support einer

partiellen Ordnung R in einer Transaktionsdatenbank TDB ist die Anzahl der Tupel in

der Datenbank, die R enthalten. Es gilt:

Support T DB (R) = | {(sid, C(s))|(sid, C(s)) ∈ T DB ∧ (R ⊆ C(s))} | (8)

TranClose findet häufige, geschlossene partielle Ordnungen mittels einer Drei-Schritt-

Methode. Anhand des folgenden Beispiels soll die Arbeitsweise des TranClose-Algorithmus

erläutert werden.

Beispiel 3.10. Gegeben seien die ersten zwei Spalten der Tabelle 16 als eine Stringdatenbank

SDB und ein MinSupport = 2.

sid s C(s)

1 abcdef ab, ac, ad, ae, af, bc, bd, be, bf, cd, ce, cf, de, df, ef

2 acbde ac, ab, ad, ae, cb, cd, ce, bd, be, de

3 dabce da, db, dc, de, ab, ac, ae, bc, be, ce

4 dcabe dc, da, db, de, ca, cb, ce, ab, ae, be

Tabelle 16: Transaktionsdatenbank TDB

Im ersten Schritt werden die transitiven Hüllen für die Strings in SDB berechnet,

so dass die Kantenmenge jeder transitiven Hülle eines Strings in eine Transaktion umgewandelt

wird. Auf diese Weise wird eine Transaktionsdatenbank T DB erzeugt (siehe

dritte Spalte der Tabelle 16).


3 ALGORITHMEN 31

Ausgehend von der Transaktionsdatenbank T DB wird im zweiten Schritt nach häufigen,

geschlossenen Kantenmengen gesucht. Betrachtet man die Kanten in der transitiven

Hülle als Items und die Kantenmenge als Itemset kann jeder Algorithmus für die

Suche nach häufigen, geschlossenen Itemsets, wie zum Beispiel CHARM [ZH02] oder

CLOSET+ [WH03], dazu verwendet werden, um häufige, geschlossene Kantenmengen

in T DB zu finden. Dabei ist jede gefundene, häufige, geschlossene Kantenmenge die

transitiven Hülle einer häufigen, geschlossenen partiellen Ordnung in SDB.

Um aus den häufigen, geschlossenen Kantenmengen die entprechenden häufigen, geschlossenen

partiellen Ordnungen zu erhalten, wird im dritten Schritt die die transitive

Reduktion der häufigen, geschlossenen Kanten berechnet.

In Abbildung 13 ist der TranClose-Algorithmus abbgebildet.

Eingabe: Stringdatenbank SDB, Supportschwelle MinSupport

Ausgabe: Die komplette Menge der häufigen, geschlossenen partiellen Ordnungen

Vorgehen:

1. Erzeuge eine Transaktionsdatenbank T DB duch Umformung jedes Strings in SDB

in seine transitiven Hülle und wandle die Kantenmenge in der transitiven Hülle zu

einer Transaktion um.

2. Suche nach häufigen, geschlossenen Kantenmengen in T DB mit Support(Kantenmenge)

≥ MinSupport

3. Für jede häufige, geschlossene Kantenmenge :

Berechne die transitive Reduktion als eine häufige, geschlossene partielle

Ordnung.

Abbildung 13: TranClose-Algorithmus

In Abbildung 14 sind die sechs häufigen, geschlossenen partiellen Ordnung als Graph

und die dazugehörigen häufigen, geschlossenen Kantenmengen in der Stringdatenbank

SDB dargestellt.

Die Grundidee von TranClose ist also die Umwandlung einer Stringdatenbank in einer

Transaktionsdatenbank. Die Suche nach häufigen, geschlossenen partiellen Ordnungen

basiert demnach ausschließlich auf die transitiven Hüllen als Kantenmengen. Da mit der

Folgerung 2.25 eine einheitliche Berechnungsvorschrift für eingeschränkte Sequenzen gegeben

ist, kann TranClose auch auf Sequenzdatenbanken mit eingeschränkten Sequenzen

angewendet werden.


3 ALGORITHMEN 32

Abbildung 14: geschlossene PO-Muster und die transitive Reduktion davon als Graph

3.2.2 Der Frecpo-Algorithmus

Frecpo [PW06] ist ein effizienter auf Tiefensuche basierter Algorithmus für die Suche nach

häufigen, geschlossenen partiellen Ordnungen in einer Stringdatenbank. Dabei findet

Frecpo häufige, geschlossene partielle Ordnungen in der transitiv-reduzierten Form direkt

aus einer Stringdatenbank ohne die transitive Hülle zu berechnen.

In Abbildung 17 ist eine Sequenzdatenbank mit vier Strings dargestellt.

sid Sequenz

1 abcdef

2 acbde

3 dabce

4 dcabe

Tabelle 17: Sequenzdatenbank S

Zuerst soll der Arbeitsweise des Frecpo-Algorithmus anhand der obigen Sequenzdatenbank

mit Strings erläutert werden. Dann erfolgt eine Verallgemeinerung des Frecpo-

Algorithmus für eingeschränkte Sequenzen

Frecpo durchsucht mittels Tiefensuche ein Mengenaufzählungsbaum für transitive

Reduktionen von partiellen Ordnungen. Grundsätzlich kann eine partielle Ordnung R

eindeutig als die Menge von Kanten in der transitiven Reduktion von R dargestellt wer-


3 ALGORITHMEN 33

den. Ferner können alle Kanten in diese Menge alphabetisch geordnet 2 werden, so dass

sie als eine Liste geschrieben werden können. Folglich können alle partiellen Ordnungen

in einer alphabetischen Reihenfolge aufgezählt werden.

Für zwei Ordnungen R 1 und R 2 in einem Mengenaufzählungsbaum von partiellen

Ordnungen gilt: R 1 ist Vorfahre von R 2 und R 2 ist Nachkomme von R 1 genau dann, wenn

die Liste der Kanten aus R 1 das Präfix der Liste der Kanten aus R 2 ist. In Abbildung

15 ist zum Beispiel ein Mengenaufzählungsbaum für transitive Reduktionen von allen

möglichen partiellen Ordnungen des Itemsets {a, b, c} dargestellt.

Abbildung 15: Der Mengenaufzählungsbaum für transitive Reduktionen von allen möglichen

partiellen Ordnungen des Itemsets {a, b, c}.

Aufgrund der Tiefensuche im Mengenaufzählungsbaum für transitive Reduktionen

von partiellen Ordnungen übersieht Frecpo keine häufigen, geschlossenen partiellen Ordnungen,

so dass die komplette Menge der häufigen, geschlossenen partiellen Ordnungen

gefunden wird. Dabei wird jeweils eine gefundene häufige, geschlossene Ordnung R zu

R’s Nachkommen expandiert. Dies geschieht mit Hilfe einer R-projizierten Datenbank,

die wie folgt definiert ist:

Definition 3.11 (R-projizierte Datenbank). Alle Sequenzen s in der Sequenzdatenbank

S, die R in ihrer transitiven Hülle beinhalten, formen die R-projizierte Datenbank.

Es gilt:

S| R = {s ∈ S|R ⊆ C(s)} (9)

Interessanterweise ist eine Sequenz s zugleich eine Obersequenz aller Kanten ∈ C(s)

(siehe Definition 2.2 und 3.11). Auf diese Weise braucht Frecpo bei der Generierung der

R-projizierten Datenbank nicht die transitive Hülle C(s) zu berechnen. Ferner genügt

es zu testen, ob alle Kanten ∈ R auch Teilsequenzen von s sind.

Das Pruning in Frecpo geschieht auf zwei Arten. Zum einen kann aus der Eigenschaft

2.20 folgendes Lemma abgeleitet werden.

Lemma 3.12 (Pruning durch Support). Ein Item oder eine Kante, die nicht häufig

ist, kann nicht in einer häufigen partiellen Ordnung vorkommen.

So werden nicht häufige Items und nicht häufige Kanten sofort geprunt. Nur die

übrig gebliebenen Items und Kanten bilden die Ausgangsmenge für die weitere Suche

2 Tatsächlich funktioniert jeder Art von globaler Ordnung der Kanten. Hier wird die alphabetische

Ordnung gewählt, da in den Beispielen die Items als Buchstaben gekennzeichnet sind.


3 ALGORITHMEN 34

nach häufigen, geschlossenen partiellen Ordnungen. Es werden demnach nur die häufigen

Kanten, welche zusammen mit einer häufigen, geschlossenen partiellen Ordnung R in der

Sequenzdatenbank erscheinen, verwendet, um R’s Nachkommen zu generieren.

Zum anderen wird die Tatsache genutzt, dass in der transitiven Reduktion einer häufigen,

geschlossenen partiellen Ordnung nicht jede häufige Kante vorkommen kann. Für

diese Beobachtung wird der Begriff von verbotenen Kanten definiert.

Definition 3.13 (Verbotene Kante in einer Sequenzdatenbank). Eine Kante xy

wird als eine verbotene Kante in einer Sequenzdatenbank S bezeichnet, wenn ein Item

z existiert, so dass für jede Sequenz s in S, die xy enthält, s auch xzy enthält.

Lemma 3.14 (Pruning von verbotenen Kanten). Eine verbotene Kante kann nicht

in der transitiven Reduktion einer häufigen, geschlossenen partiellen Ordnung vorkommen.

Frecpo verwendet eine Detektionsmatrix um sowohl die häufigen Kanten, als auch

die verbotenen Kanten zu identifizieren. Im folgenden Beispiel wird die Funktionsweise

der Detektionsmatrix erläutert.

Beispiel 3.15. Sei die Sequenzdatenbank S in der Abbildung 17 und ein MinSupport

= 2 gegeben.

Beim ersten Durchlauf findet Frecpo die häufigen Items in S. Dem Lemma 3.12 folgend,

wird das Item f geprunt, da Support(f) = 1 beträgt.

Um die nicht häufigen Kanten und die verbotenen Kanten zu prunen, wird die Sequenzdatenbank

ein zweites Mal durchlaufen. Bei diesem Durchlauf wird die Detektionsmatrix

(siehe Tabelle 18) generiert. In der Detektionsmatrix wird für jede Kante

xy, wobei x und y häufige Items sind, der Support(xy) und eine Ankermenge gespeichert.

Die Ankermenge für eine Kante xy ist die Menge der Items, welche in allen bisher

durchsuchten Sequenzen, die xy enthalten, zwischen x und y vorkommen.

a b c d e

a 4, ∅ 3, ∅ 2, {b, c} 4, {b}

b 0, ∅ 2, ∅ 2, ∅ 4, ∅

c 1, ∅ 2, ∅ 2, ∅ 4, ∅

d 2, ∅ 2, {a} 2, ∅ 4, ∅

e 0, ∅ 0, ∅ 0, ∅ 0, ∅

Tabelle 18: Detektionsmatrix von S

Ausgehend von der Detektionsmatrix können die nicht häufigen Kanten, zum Beispiel

die Kante ca, sofort geprunt werden. Aufgrund der Tatsache, dass eine Kante eine

verbotene Kante ist, wenn die Ankermenge der Kante nicht leer ist, können verbotene

Kanten gemäß dem Lemma 3.14 ebenfalls geprunt werden. Im Beipiel gibt es die

folgenden verbotenen Kanten: ad, ae und db.


3 ALGORITHMEN 35

Die Sequenzdatenbank S enthält sechs verschiedene Items. Es gibt also in S 6×5 = 30

mögliche, unterschiedliche Kanten. Nach dem Pruning von f sind noch 20 mögliche,

unterschiedliche Kanten verblieben. Am Ende sind durch das Pruning mit Hilfe der

Detektionsmatrix nur noch 11 Kanten übrig geblieben. Diese 11 Kanten werden als die

global passenden Kanten bezeichnet. Ausgehend von den global passenden Kanten

sucht Frecpo nach häufigen, geschlossenen partiellen Ordnung in S. Frecpo nutzt dabei

das folgende Lemma:

Lemma 3.16. In einer Sequenzdatenbank S ist die Menge der global passenden Kanten

mit Support = |S| die transitive Reduktion der häufigen, geschlossenen partiellen

Ordnung R mit Support(R) = |S|.

Beweis. Es gibt nur eine häufige, geschlossene partielle Ordnung mit Support = |S|.

Anderenfalls, wenn es zwei häufige, geschlossene partielle Ordnungen R 1 und R 2 mit

Support(R 1 ) = Support(R 2 ) = |S| gibt, dann sind sowohl R 1 als auch R 2 (R 1 ≠ R 2 )

in allen Sequenzen in S enthalten. Daraus folgt, dass R 1 ∪ R 2 in allen Sequenzen in S

enthalten ist, und somit eine häufige partielle Ordnung mit Support = |S| bildet. Das

führt dann zum Widerspruch zu der Annahme, dass R 1 und R 2 geschlossen sind.

R ist die häufige, geschlossene partielle Ordnung mit Support = |S|. Die im Lemma

angeführte Menge ist demnach eine Obermenge der transitiven Reduktion von R. Auf

der anderen Seite wurden verbotene Kanten mittels der Detektionsmatrix identifiziert

und gehören nicht zu den global passenden Kanten. Folglich ist die betreffende Menge

exakt die transitive Reduktion von R.

Das Lemma 3.16 ermöglicht Frecpo die transitive Reduktion von häufigen partiellen

Ordnungen direkt zu identifizieren. So werden verbotene Kanten durch die Detektionsmatix

erkannt und weggekürzt. Frecpo braucht deshalb nicht die transitive Reduktion

von häufigen, geschlossenen partiellen Ordnungen explizit zu berechnen. Der Algorithmus

von Frecpo ist in Abbildung 16 dargestellt.

Beispiel 3.17 (laufendes Beispiel). Nach dem Pruningschritt bleiben die folgenden

global passenden Kanten ab, ac, bc, bd, be, cb, cd, ce, da, dc und de übrig. Nur die global

passenden Kanten können verwendet werden um die transitive Reduktion von einer

häufigen, geschlossenen partiellen Ordnung zu konstruieren. Unter den global passenden

Kanten haben die Kanten ab, be, ce und de einen Support = 4, d.h. sie sind in jeder

Sequenz in S enthalten. Aufgrund von Lemma 3.16 können diese Kanten sofort als

häufige, geschlossene partielle Ordnung identifiziert werden. Frecpo hat die erste häufige,

geschlossene partielle Ordnung R 1 = {ab, be, ce, de} gefunden (siehe Abbildung 18). R 1

ist die häufige, geschlossene partielle Ordnung, die in allen Sequenzen in S enthalten ist.

Alle anderen häufigen, geschlossenen partiellen Ordnungen in S sind demnach stärker

als R 1 .


3 ALGORITHMEN 36

Eingabe: Sequenzdatenbank S, Supportschwelle MinSupport

Ausgabe: Die komplette Menge der häufigen, geschlossenen part. Ordnungen (HGP O)

Vorgehen: findF CP O(∅, 0, S) aufrufen

Methode findF CP O(R, i, S| R )

Parameter:

R: Präfix im Mengenaufzählungsbaum für transitive Reduktionen

i: Ebene im Mengenaufzählungsbaum für transitive Reduktionen

S| R : R-projizierte Datenbank, wenn R ≠ ∅, sonst Sequenzdatenbank S

Vorgehen:

1. Finde die Menge der häufigen Items I h in S

2. Generiere die Detektionsmatrix D[x, y] mit x, y ∈ I h und x ≠ y;

Für jede Kante xy in D:

Support(xy) = 0;

Ankermenge(xy) = I h ;

Für jede Sequenz s ∈ S:

if(xy ⊑ s){

Support(xy) + + ;

if(Ankermenge(xy) ≠ ∅){

Ankermenge(xy) = Ankermenge(xy) ∩ Menge der Items zwischen x und y

in s;

} }

3. Sei R die Menge der global passenden Kanten mit Support = |S|;

4. Wenn R ≠ ∅ dann gib R als HGP O aus;

5. Sei L = e 1 , . . . , e n die Liste der global passenden Kanten mit Support < |S|;

6. Für jede Kante e i in L:

Wenn R ∪ {e i } keine transitiven Kanten enthält und es gibt kein zuvor gefundenes

HGP O R ′ , so dass R ′ ≻ (R ∪ {e i }) und Support(R ′ ) = Support(e i ) gilt,

dann generiere die R ∪ {e i }-projizierte Datenbank S| R∪{ei };

und rufe findF CP O(R ∪ {e i } , i + 1, S| R∪{ei }) auf.

Abbildung 16: Frecpo-Algorithmus


3 ALGORITHMEN 37

Die anderen häufigen, geschlossenen partiellen Ordnungen in der transitiven Reduktion

können, entsprechend der alphabetischen Reihenfolge der restlichen global passenden

Kanten (ac, bc, bd, cb, cd, da und dc), in folgende Teilmengen partitioniert werden: (1)

diejenigen mit der Kante ac in der transitiven Reduktion; (2) diejenigen mit der Kante

bc aber keiner Kante ac in der transitiven Reduktion; · · · ; und diejenigen mit der Kante

dc aber keiner anderen Kanten in der transitiven Reduktion. Diese Teilmengen können

in Form einer Tiefensuche durchlaufen werden.

sid Sequenz

1 abcde

2 acbde

3 dabce

Tabelle 19: (R 1 ∪ {ac})-projizierte Datenbank S| R1 ∪{ac}

Zum Beispiel wird zuerst die Teilmenge der häufigen, geschlossenen partiellen Ordnungen

mit der Kante ac in der transitiven Reduktion durchsucht. Sie beinhalten alle

R 1 . Um die (R 1 ∪ {ac})-projizierte Datenbank zu generieren, werden alle Sequenzen in

S gesammelt, die Obersequenzen von ac sind. In der Sequenzdatenbank S sind es die

Sequenzen 1, 2 und 3. Nach dem Prunen der nicht häufigen Items in der (R 1 ∪ {ac})-

projizierten Datenbank (siehe Abbildung 19) kann folgende Detektionsmatrix erzeugt

werden:

a b c d e

a 3, ∅ 3, ∅ 2, {b, c} 3, {b, c}

b 0, ∅ 2, ∅ 2, ∅ 3, ∅

c 0, ∅ 1, ∅ 2, ∅ 3, ∅

d 1, ∅ 1, {a} 1, ∅ 3, ∅

e 0, ∅ 0, ∅ 0, ∅ 0, ∅

Tabelle 20: Detektionsmatrix von S| R1 ∪{ac}

Die lokal passenden Kanten in S| R1 ∪{ac} mit Support = |S| R1 ∪{ac}| werden als häufige,

geschlossenen partielle Ordnung R 2 = R 1 ∪ {ac} = {ab, ac, be, ce, de} identifiziert.

Alle anderen häufigen, geschlossenen partiellen Ordnungen mit der Kante ac in der transitiven

Reduktion müssen stärker als R 2 sein und können entsprechend den restlichen

lokal passenden Kanten in folgende drei Teilmengen partitioniert werden: (1) diejenigen

mit den Kanten ac und bc, (2) diejeinigen mit den Kanten ac und bd aber nicht die

Kante bc, und (3) diejenigen mit den Kanten ac und cd aber weder die Kante bc noch

bd in ihrer transitiven Reduktion.

Betrachtet werden soll die Teilmenge (1) von R 2 . R 2 hat die Kante ab in der transitiven

Reduktion und jede häufige, geschlossene partielle Ordnung mit der Kante ac ist eine

Obermenge von R 2 . Es ist erkennbar, dass ab, ac und bc nicht innerhalb der selben

transitiven Reduktion vorkommen können, da in diesem Fall die Kante ac transitiv


3 ALGORITHMEN 38

ist. Deshalb braucht die projizierte Datenbank S| R1 ∪{ac}∪{bc} nicht erzeugt werden. Alle

übrigen häufigen, geschlossenen partiellen Ordnungen können auf gleicher Weise rekursiv

gefunden werden (siehe Abbildung 17).

Abbildung 17: Rekursive Suche im Mengenaufzählungsbaum für transitive Reduktionen.

In Abbildung 18 sind alle häufigen, geschlossenen partiellen Ordnungen in der Sequenzdatenbank

S als Graph dargestellt.

Abbildung 18: Alle häufigen, geschlossenen partiellen Ordnungen in der Sequenzdatenbank

S

Im Folgenden soll gezeigt werden, dass der Frecpo-Algorithmus auch auf eingeschränkte

Sequenzen, wie in Abschnitt 2.2.3 beschrieben, angewendet werden kann.


3 ALGORITHMEN 39

Der einzige Unterschied zwischen einem String und einer eingeschränkten Sequenz ist,

dass innerhalb eines Elementes mehrere Items vorkommen können. Entsprechend wird

die transitive Hülle einer eingeschränkten Sequenz anders berechnet als die transitive

Hülle eines Strings.

Da mit der Folgerung 2.25 eine einheitliche Berechnungsvorschrift für die transitive

Hülle einer eingeschränkten Sequenz gegeben ist, und bei Frecpo nur die transitive

Hülle von Bedeutung ist, kann Frecpo uneingeschränkt auf eingeschränkte Sequenzen

angewendet werden. Ferner gilt bei einer eingeschränkten Sequenz s auch, dass jede

Kante innerhalb der transitive Hülle C(s) zugleich auch eine Teilsequenz von s ist. Frecpo

braucht also auch bei eingeschränkten Sequenzen nicht die transitive Hülle für die

Generierung der R-projizierten Datenbank explizit zu berechnen (siehe Definition 3.11).

3.3 Vergleich der Algorithmen

Im Folgenden werden die vorgestellten Algorithmen der beiden Konzepte miteinander

verglichen um eine Auswahl für die Verwendung der Algorithmen für die Durchführung

des Data Minings zu treffen.

GSP vs. PrefixSpan

Eines der Hauptkosten des GSP-Algorithmus ist die Kandidatengenerierung. Die Kandidatengenerierung

von Mustern mit der i-Länge 1 zu den Kandidaten mit der i-Länge

2 ist die Summe aus der Variation mit Wiederholung und der Kombination ohne Wiederholung

aus je 2 von n Elementen, wobei n die Anzahl der 1-Muster kennzeichnet.

Angenommen, nach dem ersten Schritt des GSP-Algorithmus wurden 100 häufige

Items in der Sequenzdatenbank gefunden. Diese 100 Items bilden dann die Menge der

Muster mit der i-Länge = 1. Ausgehend davon generiert GSP 100×100+ 100×99 = 14950

2

Kandidatensequenzen mit der i-Länge = 2. Es ist erkennbar, dass aus einer relativ kleinen

Anzahl an 1-Mustern, welche auf jeden Fall in der Praxis auftreten kann, eine sehr hohe

Anzahl an Kandidaten erzeugt wird. So wird für jede Sequenz s in der Sequenzdatenbank

14950 Mal überprüft, ob die entprechende Kandidatensequenz eine Teilsequenz von s ist.

Dies wirkt sich auch auf einen weiteren Kostenpunkt bei GSP aus, nämlich die mehrfachen

Durchläufe durch die Datenbank. Denn um zum Beispiel ein Muster mit der i-Länge

= 100 zu finden, muss GSP mindestens 100 Mal die gesamte Datenbank durchlaufen. Die

Kombination von einer potentiell großen Kandidatenmenge und der Umstand, dass für

jede i-Länge einmal die Datenbank durchlaufen werden muss, führt zwangsweise zu Problemen

bei langen sequentiellen Mustern (viele Datenbankdurchläufe) und bei niedrigem

Support (große Kandidatenmenge).

Im Vergleich dazu verwendet PrefixSpan einen anderen Ansatz. So ist durch die Tiefensuche

im Sequenzaufzählungsbaum keine Kandidatengenerierung nötig. PrefixSpan

erweitert jedes gefundene Muster solange weiter bis es nicht mehr geht (Pattern Grow-


3 ALGORITHMEN 40

th). Auch wird bei jeder Erweiterung des Musters nur die dazu gehörige projizierte

Datenbank, welche ständig kleiner wird, durchsucht, es muss also nicht wie beim GSP

immer die gesamte Datenbank durchsucht werden.

Allerdings stellt gerade die Erzeugung der projizierten Datenbank die Hauptkosten

von PrefixSpan dar. Um ein Muster mit der i-Länge = 100 zu finden muss PrefixSpan

100 Mal eine projizierte Datenbank erzeugen. Im schlechtesten Fall wird sogar für jedes

sequentielle Muster eine projizierte Datenbank erzeugt. Die Kosten für die Datenbankprojektion

sind demnach nicht unerheblich.

Fazit

GSP ist sicherlich gut geeignet für das Data Mining mit großen Support, allerdings

werden trotzdem viele Kandidatensequenzen generiert, welche nicht in der Datenbank

vorkommen. Somit entstehen unnötige Kosten für die Überprüfung dieser Kandidatensequenzen.

PrefixSpan erweitert dagegen nur die vorhandenen Muster um Items, die häufig in der

projizierten Datenbank sind, ohne unnötige Kosten aufzuwenden. Deshalb wurde Prefix-

Span für die Suche nach sequentiellen Mustern in Sequenzdatenbanken ausgewählt. Auch

in Hinblick darauf, dass die Kosten der Erzeugung der projizierten Datenbank durch die

Pseudo-Projektionstechnik (vgl. [PH01]) erheblich verringert werden können.

TranClose vs. Frecpo

Die größten Kosten entstehen bei TranClose sicherlich bei der Erzeugung der Transaktionsdatenbank.

Für einen String mit der i-Länge l wird die entsprechende transitive

Hülle mit l(l−1) Kanten berechnet. Zum Beispiel besitzt ein String mit der i-Länge 100

2

eine transitive Hülle mit 100(100−1) = 4950 Kanten. Dies führt zu der Erkenntnis, dass für

2

lange Sequenzen eine sehr große Transaktionsdatenbank generiert wird und TranClose

somit für lange Sequenzen nicht geeignet ist. Ein weiterer Nachteil von TranClose ist,

dass nach der Suche nach häufigen, geschlossenen Kantenmengen, noch die transitive

Reduktion berechnet werden muss.

Frecpo braucht dagegen die transitive Hülle von Strings nicht explizit zu berechnen.

Durch Anwendung der Detektionsmatrix können häufige, geschlossene partielle Ordnungen

direkt in der transitiven Reduktion gefunden werden. Allerdings ist die Berechnung

der Detektionsmatrix auch kostenintensiv. Werden beispielsweise 100 häufige Items in

der Sequenzdatenbank gefunden, dann werden 100×99 = 9900 Kanten generiert, für die

dann entsprechend der Support und die Ankermenge ermittelt werden muss. Allerdings

wird die R-projizierte Datenbank ständig kleiner, je tiefer die Ebene im Mengenaufzählungsbaum

für transitive Reduktionen ist.


3 ALGORITHMEN 41

Fazit

TranClose ist nicht für lange Sequenzen geeignet und hat den zusätzlichen Nachteil, dass

die transitive Reduktion noch explizit berechnet werden muss. Trotz der konstenintensiven

Berechnung der Detektionsmatrix, fiel die Auswahl für die Suche nach häufigen,

geschlossenen partiellen Ordnungen auf Frecpo. Der ausschlaggebende Punkt war, dass

Frecpo direkt häufige, geschlossene partielle Ordnungen in der transitiven Reduktion

findet und somit die Kosten für die Berechnung der transitiven Reduktion wegfallen.

Auch werden keine transitiven Hüllen von Sequenzen gebildet, so dass Frecpo auch

für lange Sequenzen geeignet ist. Ferner wird nicht für jede global und lokal passende

Kante eine R-projizierte Datenbank generiert, sodass keine Detektionsmatrix für diese

Kanten berechnet werden müssen.

3.4 Algorithmen für die Beseitigung von Redundanz

Für die in Abschnitt 2.2.2 vorgestellten Konzepte der geschlossenen und maximalen

sequentiellen Mustern werden in diesem Abschnitt die dazugehörigen Algorithmen vorgestellt.

Angenommen die Menge der sequentiellen Muster S liegen nach der i-Länge sortiert

vor. Weiterhin sei s k ein sequentielles Muster in S mit der i-Länge k und n die i-Länge des

längsten sequentiellen Musters in S. Dann lässt sich aus S die Menge der geschlossenen

und maximalen sequentiellen Mustern mit folgendem Algorithmus berechnen:

Eingabe: Menge der nach der i-Länge sortierten Muster S, Bedingung φ

Ausgabe: S

Vorgehen:

for (k=n − 1; k > 0; k − −) {

Für jedes k-Muster s k ∈ S:

for (l=k + 1; l ≤ n; l++) {

Für jedes l-Muster s l ∈ S:

if (φ) {

delete s k from S;

} } }

Abbildung 19: Algorithmus für die Redundanzbeseitigung

Der Algorithmus testet in der if-Bedingung ob φ erfüllt ist. Wenn φ erfüllt ist, ist

die Sequenz s k redundant in S und wird gelöscht. Nach Ablauf des Algorithmus sind in

S nur nicht redundante Sequenzen enthalten. Die Menge der geschlossenen sequentiellen

Muster lässt sich dann mit folgender Bedingung berechnen:

φ := (Support(s k ) = Support(s l )) ∧ (s k ❁ s l )) (10)


3 ALGORITHMEN 42

Respektive erhält man die Menge der maximalen sequentiellen Muster mit folgender

Bedingung.

φ := (s k ❁ s l ) (11)

Analog zu den sequentiellen Mustern können aus der Menge der häufigen, geschlossenen

partiellen Ordnungen die Menge der häufigen maximalen partiellen Ordnungen

berechnet werden. Sei die Menge der häufigen, geschlossenen partiellen Ordnungen R

nach der i-Länge sortiert gegeben, wobei eine Kante ein Item darstellt, dann ist s k eine

häufige, geschlossenen partielle Ordnung in R mit der i-Länge k. Sei n die i-Länge der

häufigen, geschlossenen partiellen Ordnung mit den meisten Kanten in R, dann lässt

sich die Menge der häufigen, maximalen partiellen Ordnungen mit folgender Bedingung

berechnen:

φ := (s k ≺ s l ) (12)

3.5 Andere Algorithmen

Die Suche nach sequentiellen Mustern ist ein weit erforschtes Gebiet. Dementsprechend

gibt es die verschiedensten Algorithmen. Neben den vorgestellten Algorithmen gibt es eine

Vielzahl an Algorithmen, welche nicht alle in dieser Arbeit behandelt werden können.

Hier sollen auf Algorithmen verwiesen werden, welche in der aktuellen Literatur neben

den vorgestellten Algorithmen oft erwähnt werden. Für die Suche nach sequentiellen

Mustern sind die folgenden drei Algorithmen zu nennen:

SPADE [Zaki01] teilt das Problem der Suche nach sequentiellen Mustern in Äquivalenzklassen

von häufigen Sequenzen auf. SPADE braucht nur drei Datenbankdurchläufe,

um die komplette Menge der sequentiellen Muster zu finden. Dabei werden die Sequenzen

als vertikale ID-Listen im Hauptspeicher gespeichert. Dadurch erreicht SPADE eine

hohe Effizienz beim Zählen des Supports.

SPAM [AG02] ist ein Algorithmus, der auf Tiefensuche in einem lexikografischem

Baum von Sequenzen basiert. Für die Speicherung der Sequenzen verwendet SPAM eine

vertikale Bitmap-Darstellung, so dass ein effizientes Zählen des Supports ermöglicht wird.

Dabei setzt SPAM voraus, dass die gesamte Datenbank im Hauptspeicher gespeichert

werden kann.

MEMISP [LL05] baut auf der Intention auf, dass aufgrund der sinkenden Kosten für

Hauptspeicher die Kapazitäten für Hauptspeicher stetig anwachsen, und somit kleinere

bis mittlere Datenbanken problemlos in den Hauptspeicher passen. Um mehrfache

Datenbankdurchläufe zu vermeiden, speichert MEMISP die komplette Datenbank als

Speicherdatenbank im Hauptspeicher ab. Durch Verwendung von Speicherindexen kann

dann effizient nach sequentiellen Mustern gesucht werden.

Weiterhin gibt es Algorithmen, welche direkt geschlossene sequentielle Muster finden.

Diese Vorgehensweise kann mitunter zur Effizienzsteigerung führen. Für die Suche nach


3 ALGORITHMEN 43

geschlossenen sequentiellen Mustern sind die folgenden zwei Algorithmen zu nennen:

CloSpan [YH03] gehört zu der Gruppe der ”

Generate-and-test“-Algorithmen. CloSpan

findet geschlossene sequentielle in zwei Haupstchritten. Zuerst wird eine Obermenge

von geschlossenen sequentiellen Mustern als Kandidatenmenge generiert. Danach werden

alle nicht geschlossenen sequentiellen Mustern in der Kandidatenmenge geprunt. Dabei

werden effiziente Pruningtechniken eingesetzt.

BIDE [WH04], stellt eine Erweiterung zum PrefixSpan-Algorithmus dar. Demzufolge

gehört BIDE zu der Gruppe der ”

Pattern-growth“-Algorithmen. BIDE verwendet die

sogenannte BI-direktionale Technik um zu prüfen, ob ein gefundenes sequentielles Muster

geschlossen ist.

Im Vergleich zur Suche nach sequentiellen Mustern, ist die Suche nach partiellen

Ordnungen in Sequenzdaten noch nicht weit erforscht. Im Folgenden werden auf Arbeiten

verwiesen, welche sich mit diesem Problem befassen.

In [MT97] wird das Problem der Suche von häufigen Episoden in Ereignissequenzen

betrachtet. Dabei können Episoden als partielle Ordnungen und Ereignissequenzen als

Strings aufgefasst werden. [MM00] befasst sich mit der Suche nach einer globalen partiellen

Ordnung, welche die Ordnungsbeziehungen von allen Sequenzen in den Sequenzdaten

am besten wiedergibt. Weiterhin ist in [Gar05] der Ansatz beschrieben, wie aus der Menge

der geschlossenen sequentiellen Mustern geschlossene partielle Ordnungen bestimmt

werden können.


4 DURCHFÜHRUNG DES DATA MININGS 44

4 Durchführung des Data Minings

In diesem Kapitel werden die Schritte beschrieben, welche für den Data Mining-Prozess

wichtig sind. Zuerst werden die zugrundeliegenden Daten für das Data Mining vorgestellt

und wie diese Daten bereinigt und aufbereitet wurden. Dann erfolgt eine Beschreibung

wie die Ergebnisse dargestellt werden können.

4.1 Datenaufbereitung und -bereinigung

Die Prüfungsdaten sind in einer einzigen Tabelle (PSTAT) gespeichert. Es handelt sich

dabei um eine Sammlung von Datensätzen über alle Prüfungsleistungen und Prüfungskonten

von Studierenen in den Informatik-Bachelor/Master-Studiengängen seit dem WS

00/01 (dem Startsemester des Informatik-Studiengangs) bis einschließlich SS 2006 (dem

aktuell letzten Prüfungssemester). Jeder Datensatz enthält eine Prüfungsleistung eines

Studierenden in dem jeweiligen Prüfungssemester, insbesondere mit Benotung und Kreditpunkten,

also einen sogenannten Prüfungsvorgang, oder einen sogenannten Prüfungskontostand

eines Studierenden im Prüfungssemester, z.B. für eine Fachprüfung oder für

die gesamte Master-Prüfung, mit berechneten Daten wie Duchschnittsnote oder Kreditpunktsumme.

Folgende Erklärungen und Hinweise bezüglich der Attribute der PSTAT-

Tabelle sind bekannt:

• MNR NUMBER(8): Matrikelnummer [7-stellig]

• GESCHL CHAR(1): Geschlecht

• STAAT VARCHAR2(10): Nationalitätskennzeichen [max. 3-stellig]

Diese Angabe fehlt für die ersten Prüfungssemester (Nullwerte)

• PNR NUMBER(4): Prüfungsnummer, d.h. Nummer der Prüfungsleistung oder des

Prüfungskontos

• PRUEFUNG VARCHAR2(170): Prüfungstext, d.h. Bezeichnung der Prüfungsleistung

oder Bezeichnung des Prüfungskontos

• PTAG NUMBER(2), PMONAT NUMBER(2), PJAHR NUMBER(4): Bewertungsdatum

Die Jahresangaben sind z.T. nicht echt; es gibt Quasi-Nullwerte (0.0.1900, 1.1.1904).

• PNOTE NUMBER(3): Prüfungsnote: z.B. 1,3 in der Form 130

• SEM NUMBER(2): Fachsemester

• PVERMERK CHAR(3), FREIVERM CHAR(3): Prüfungs- und Freiversuchsvermerke

Wichtig: PVERMERK=’LAN’ (Prüfungsleistung nicht absolviert, sondern anerkannt).

• PSTATUS CHAR(2): Prüfungsstatus

Wichtig: PSTATUS=’BE’|’NB’ = bestanden | nicht bestanden


4 DURCHFÜHRUNG DES DATA MININGS 45

• VERSUCH NUMBER(1): Prüfungsversuch (Zähler)

• BONUS NUMBER(3), MALUS NUMBER(3): Bonus-/Malus-Kreditpunkte: bei Bestehen

erworbene / bei Nichtbestehen verpasste Kreditpunkte

Die drei letztgenannten Angaben fehlen z.T. für die ersten Prüfungssemester (Nullwerte).

• PSEM NUMBER(5): Prüfungssemester, z.B. 20051 = SS 2005, 20052 = WS 2005/06

• STG NUMBER(3): Studiengangsnummer; hier nur 79 bzw. später umcodiert 221 (für

Informatik)

• ABSCHL NUMBER(2): Abschluss; hier nur 82 = Bachelor und 88 = Master

• PVERSION NUMBER(4): Version der Prüfungsordnung (Jahr)

Während die Version 2000 ab WS 03/04 für alle Studierenden von der Version 2003

abgelöst wurde, existieren seit dem WS 04/05 die Versionen 2003 ( ”

Angewandte

Informatik“) und 2004 ( ”

Informatik“) nebeneinander; Studierenden konnten von

Version 2003 in Version 2004 wechseln.

• ISTKTO NUMBER(1): 0|1 = Prüfungsleistung | Prüfungskonto

Gemäß der Aufgabenstellung sollen ausgehend von den vorliegenden Prüfungsdaten

typische Studienverläufe von Studierenden ermittelt werden. Dafür wird ein Studienverlauf

als eine Sequenz von Prüfungsleistungen betrachtet, wobei ein Element ein Itemset

von Prüfungsleistungen eines Fachsemesters darstellt. Aufgrund der Information des

Fachsemesters zu jeder Prüfungsleistung können die Prüfungsdaten als Sequenzdaten

aufgefasst werden. Für die Ermittlung eines Studienverlaufs als eine Sequenz werden die

folgenden Attribute gebraucht: (1) die Matrikelnummer (MNR) als eindeutige Sequenz-id,

(2) das Fachsemester (SEM) für die zeitliche Ordnung innerhalb der Sequenz und (3) die

Prüfungsnummer (PNR) oder die Prüfungsbezeichnung (PRUEFUNG) als Item.

Aufgrund der Tatsache, dass in der PSTAT-Tabelle Prüfungsdaten von Studierenden

mit verschiedenen Studienabschlüssen und Prüfungsversionen gespeichert sind, ist es

naheliegend die Daten nach Studienabschlüssen und Prüfungsversionen zu gruppieren.

Denn bei der Suche nach typischen Studienverläufen ist es beispielsweise nicht sinnvoll

Bachelor-Studenten und Master-Studenten zusammen zu betrachten, da sie nicht die

gleiche Auswahl an Prüfungsleistungen besitzen. In Abbildung 21 sind die vier ausgewählten

Gruppierungen aufgelistet.

Wie oben beschrieben können entweder das Attribut Prüfungsnummer (PNR) oder

Prüfungsbezeichnung (PRUEFUNG) als Item für Prüfungsleistungssequenzen verwendet

werden. Ferner soll eines von beiden ausgewählt werden um ein einheitliches Aussehen

der Sequenz zu erhalten. Da eine Prüfungsbezeichnung für den Laien verständlicher

ist als eine Prüfungsnummer, soll - auch auf Hinblick einer möglichst informativen

Darstellungsweise der typischen Studienverläufen - das Attribut Prüfungsbezeichnung


4 DURCHFÜHRUNG DES DATA MININGS 46

Gruppe

Attribute

bach0003 ABSCHL = 82 , PVERSION = 2000|2003

bach04 ABSCHL = 82, PVERSION = 2004

mas0003 ABSCHL = 88 , PVERSION = 2000|2003

mas04 ABSCHL = 88, PVERSION = 2004

Tabelle 21: Einteilung der Prüfungsdaten in vier Gruppen: bach0003, bach04, mas0003

und mas04

(PRUEFUNG) als Item verwendet werden. Dies ist aber insofern nur innerhalb der Gruppen

bach0003, bach04, mas0003 und mas04, da nur innerhalb dieser Gruppen eine 1:1

Zuordnung zwischen PNR und PRUEFUNG akzeptabel ist. D.h. nur innerhalb der Gruppen

führt die Verwendung der Prüfungsbezeichnung zu keinem Verlust bezüglich der

eindeutigen Zuordnung der Prüfungsleistungen durch die Prüfungsnummer.

Allerdings mussten dabei einige Korrekturen an den Datensätzen durchgeführt werden.

So sind die Prüfungsbezeichnungen für die gleichen Prüfungleistungen nicht immer

eindeutig. Zum Beispiel hat die Prüfungsleistung mit der Prüfungsnummer 14 in

verschiedenen Datensätzen entweder die Prüfungsbezeichnung ”

Einführung Betriebssysteme“

oder ”

Betriebssystem Einführung“. Innerhalb den Gruppen bach0003, bach04,

mas0003 und mas04 wurden deshalb die Prüfungsbezeichnungen nach der folgenden

Regel korrigiert: für jede Prüfungsnummer (PNR), bei der es verschiedene Prüfungbezeichnungen

gibt, wird entsprechend eine einheitliche Prüfungsbezeichnung (PRUEFUNG)

gewählt.

Die Tabellen 22 bis 24 zeigen die Prüfungsleistungen in den jeweiligen Gruppen, bei

den die Prüfungsbezeichnung einheitlich geändert werden musste.

PNR

PRUEFUNG geändert

14 Einführung Betriebssysteme

152 Wissenschaftstheorie 1

171 Philosophie 1

344 Softwarewerkzeuge im Maschinenbau

380 Technische Mechanik I

442 Grundlagen der BWL II

443 Grundlagen der BWL III

461 Grundkurs in Volkswirtschaftslehre

502 Betrieb von Straßenverkehrsanlagen I

561 Einführung in die Kartographie und GIS

715 Mobilfunk- und Intelligente Netze

734 Programmiersprachen und Übersetzer

767 Semantic Web (Internettechnologien II)

Tabelle 22: korrigierte Prüfungsbezeichnungen in bach0003


4 DURCHFÜHRUNG DES DATA MININGS 47

PNR

PRUEFUNG geändert

344 Softwarewerkzeuge im Maschinenbau

767 Semantic Web (Internettechnologien II)

Tabelle 23: korrigierte Prüfungsbezeichnungen in mas0003

PNR

PRUEFUNG geändert

73 Notebook-Seminar Mobile Internet

4106 Einführung in die Unternehmensführung I

4107 Grundlagen der Unternehmensführung II

4626 Softwarewerkzeuge im Maschinenbau

7502 Labor für Mikroelektronik

7503 Labor: Objekt- und Agentenorientierte Programmierung

7602 Projektarbeit: Mikroelektronik-Chipdesign

Tabelle 24: korrigierte Prüfungsbezeichnungen in mas04

Weiterhin soll es möglich sein innerhalb den Prüfungsdaten auch nach partiellen Ordnungen

zu suchen. Dies bedeutet, dass in einer Sequenz von Prüfungsleistungen keine

Prüfungsleistung mehrfach vorkommen darf. Um diese Bedingung zu garantieren sollen

jeweils nur der erste, bestandene Prüfungsversuch einer Prüfungsleistung eines Studierenden

berücksichtigt werden. Zusätzlich sollen anerkannte Prüfungsleistungen (PVERMERK

= ’LAN’) bei der Suche nach typischen Studienverläufen auch nicht mit berücksichtigt

werden.

Damit es beim Auslesen oder Auswählen der Datensätze keine Probleme gibt, wurden

null-Werte bei den Attributen PRUEFUNG und PVERMERK auf den Wert ’0’ gesetzt.

Somit sind alle notwendigen Bereinigungen durchgeführt worden, sodass die Prüfungsdaten

drei verschiedene Datengruppen enthalten. In Tabelle 25 sind die verschiedenen

Datengruppen mit dem entsprechenden Selektionsattribut (AUSWAHL) aufgelistet.

AUSWAHL

Datensätze

0 Alle Prüfungsleistungen

1 Alle Prüfungskonten

2 Alle Prüfungsleistungen, die für das Data Mining verwendet werden können

Tabelle 25: Übersicht der durch das AUSWAHL-Attribut gekennzeichneten Datensätze

Alle Prüfungsleistungen mit dem Attribut AUSWAHL = 2 werden also als Grundlage für

das Data Mining verwendet. In Tabelle 26 sind die vier Gruppen mit den entprechenden

Kennzahlen abgebildet.


4 DURCHFÜHRUNG DES DATA MININGS 48

Gruppe Anzahl der Sequenzen Anzahl der Items

bach0003 421 200

bach04 356 157

mas0003 30 124

mas04 136 181

Tabelle 26: Übersicht der vier Gruppen

4.2 Darstellung der Ergebnisse mit GraphViz

GraphViz (Abkürzung für Graph Visualization Software)[GraphViz08] ist ein plattformübergreifendes

Open-Source-Programmpaket und wurde von AT&T und den Bell-Labs

entwickelt. Mit Hilfe von GraphViz können Objekte und deren Beziehungen untereinander

visualisiert werden. So können gerichtete und ungerichtete Graphen mit GraphViz

gezeichnet werden. Zur Beschreibung der darzustellenden Graphen verwendet Graph-

Viz die Auszeichnungssprache DOT. Das GraphViz-Programm dot kann direkt in der

Kommandozeile aus einem DOT-Quelltext als Textdatei den entsprechenden Graph zum

Beispiel als eine Bilddatei erzeugen. Das Besondere an GraphViz ist, dass die Anordnung

der Knoten und Kanten automatisch berechnet wird. Im DOT-Quelltext werden deshalb

lediglich die Knoten und Kanten definiert. Wie der folgende DOT-Quelltext zeigt, kann

man auch durch zusätzliche Parameter die Anordnung der Knoten und Kanten beeinflussen:

}

digraph Beispiel {

node [ ];

knoten1 [label = “isolierter Knoten“];

knoten1 -> “DOT-Quelltext“ [style = invis];

GraphViz -> dot [color = “1,1,1“];

dot -> “DOT-Quelltext“ [ dir = none, constraint = false ];

{rank = same; dot; “DOT-Quelltext“;}

Abbildung 20: Aus dem DOT-Quelltext erzeugter Graph Beispiel


4 DURCHFÜHRUNG DES DATA MININGS 49

In den obigen DOT-Quelltext sind alle Elemente und Parameter von DOT angegeben,

die für die Darstellung der Ergebnisse dieser Arbeit gebraucht werden. Im Folgenden

werden diese Elemente und Parameter näher erläutert.

• digraph Name { }: Deklaration eines gerichteten Graphen mit der Bezeichnung

Name.

• node [Form]: Definition einer spezifischen Knotengestalt Form; wird Form nicht

angegeben werden die Knoten als Ellipse dargestellt (Standardwert).

• a [label = Name ]: Deklaration des Knoten a und Zuweisung der Bezeichnung

Name für a; wird die Bezeichnung eines Knotens nicht explizit zugewiesen, entspricht

die Bezeichnung des Knotens den Namen des Knotens.

• a -> b: Eine gerichtete Kante von Knoten a nach Knoten b; Knoten a wird eine

Ebene höher als Knoten b im Graph positioniert.

• a -> b [ style = invis ]: Eine unsichtbare, gerichtete Kante von Knoten a

nach Knoten b; Knoten a wird eine Ebene höher als Knoten b im Graph positioniert.

• [ color = 1,1,1 ]: Zuweisung einer spezifischen Kantenfarbe; Farben werden

durch drei Gleitkommazahlen zwischen 0 und 1 bezüglich des RGB-Farbraums

definiert.

• a -> b [ dir = none, constraint = false ]: Eine ungerichtete Kante von

Knoten a nach Knoten b; Knoten a muss nicht zwangsläufig einer Ebene höher

als Knoten b im Graph positioniert sein.

• { rank = same; a; b; }: Knoten a und Knoten b werden in der selben Ebene

positioniert.

Ausgehend von den Visualiserungsmöglichkeiten von GraphViz musste für sequentielle

Muster eine möglichst übersichtliche Darstellung gefunden werden, welche aber trotzdem

alle Informationen aus den sequentiellen Mustern wiedergibt. Es wurde deshalb eine

Darstellung als Graph mit gerichteten und ungerichteten Kanten ausgewählt.

Auf diese Weise wird ein sequentielles Muster als ein Graph dargestellt, wobei die

Knoten die Items und die Kanten die Beziehung der Items untereinander kennzeichnen.

Dabei werden Items innerhalb eines Elementes mit einer ungerichteten Kante miteinander

verbunden, während eine gerichtete Kante von Item a zu Item b die Beziehung

ausdrückt, dass b im direkten Nachfolgerelement von a enthalten ist. Da bei der gleichzeitigen

Darstellung von mehreren sequentiellen Mustern es aufgrund der vielen Kanten

sehr schnell unübersichtlich werden kann, wurde die folgende Form der Darstellung (siehe

Abbildung 21) mit einer minimalen Anzahl an Kanten gewählt.


4 DURCHFÜHRUNG DES DATA MININGS 50

(a) s 1 = (ab)c(de) (b) s 2 = (bf)(gh)(ej) (c) s 1 und s 2 in einem Graph

Abbildung 21: Darstellung von sequentiellen Mustern als Graph

In der Abbildung 21a ist das sequentielle Muster s 1 = (ab)c(de) dargestellt. s 1 ist eine

Sequenz mit drei Elementen. Aufgrund der Forderung, dass eine übersichtliche Darstellung

nur eine minimale Anzahl an Kanten enthalten soll, werden die drei Elemente von

s 1 auch nur mit zwei gerichteten Kanten gekennzeichnet. So werden jeweils die Items

in erster Position eines Elementes in der Reihenfolge der Elemente in s 1 mit einer gerichteten

Kanten miteinander verbunden. Befinden sich mehrere Items innerhalb eines

Elementes, wird ein Item jeweils mit dem Item an der darauffolgenden Position innerhalb

des selben Elementes mit einer ungerichteten Kante miteinander verbunden. Mit dieser

Art der Darstellung wird die Kantenanzahl im Graph auf ein Minimum reduziert, ohne

dass dabei Informationen bezüglich der zugrundeliegenden sequentiellen Muster veloren

geht.

So braucht es für die Darstellung von s 1 nur zwei gerichtete Kanten und zwei ungerichtete

Kanten um die Beziehung der Items in s 1 untereinander vollständig abzubilden.

Um die Übersichtlichkeit der Darstellung zu Unterstützen sind in den DOT-Quelltexten

zusätzliche Parameter enthalten, welche die gewünschte Anordnung der Knoten erlauben.

Innerhalb der Darstellung eines sequentiellen Musters garantieren diese Parameter

zum einen, dass alle Items innerhalb eines Elementes in der gleichen Ebene angeordnet

werden ({ rank = same;}), zum anderen werden Items in ein Element an der Position

i eine Ebene höher angeordnet als Items in ein Element an der Position i + 1 (-> und

->[ style = invis ]).

In der Abbildung 21c sind die sequentiellen Muster s 1 und s 2 in einem Graph dargestellt.

Beide Sequenzen haben b und e als gemeinsame Items. Gemeinsame Knoten

werden selbstverständlich nur ein Mal innerhalb eines Graphen dargestellt. Da nur auf

diese Weise Beziehungen zwischen zwei sequentielle Muster sichtbar gemacht werden können.

Aufgrund der Tatsache, dass bei mehreren sequentiellen Mustern in einem Graph

jedes sequentielle Muster eine andere Kantenfärbung zugewiesen bekommt, können die

einzelnen sequentiellen Muster problemlos aus dem Graph abgeleitet werden.


4 DURCHFÜHRUNG DES DATA MININGS 51

In Abbildung 22 ist der DOT-Quelltext für den Graph in Abbildung 21c dargestellt.

Liegt der DOT-Quelltext als dot-Datei vor, kann daraus durch Aufruf des dot-

Programms mit folgendem Kommandozeilenbefehl ein Graphbild erzeugt werden:

dot -Gcharset=latin1 -Tgif dot-Datei -o Graphbild

Dabei legt -Gcharset=latin1 (optional) den verwendeten Schriftsatz und -Tgif legt

das gewünschte Bildformat fest.

digraph Graph{

node [];

{rank = same;“a“;“b“;}

“a“->“b“[color = “red“,dir = none, constraint = false];

“a“->“c“[color = “red“];

“b“->“c“[color = “red“,style = invis];

{rank = same;“c“;}

“c“->“d“[color = “red“];

“c“->“e“[color = “red“,style = invis];

{rank = same;“d“;“e“;}

“d“->“e“[color = “red“,dir = none, constraint = false];

{rank = same;“b“;“f“;}

“b“->“f“[color = “green“,dir = none, constraint = false];

“b“->“g“[color = “green“];

“b“->“h“[color = “green“,style = invis];

“f“->“g“[color = “green“,style = invis];

“f“->“h“[color = “green“,style = invis];

{rank = same;“g“;“h“;}

“g“->“h“[color = “green“,dir = none, constraint = false];

“g“->“e“[color = “green“];

“g“->“j“[color = “green“,style = invis];

“h“->“e“[color = “green“,style = invis];

“h“->“j“[color = “green“,style = invis];

{rank = same;“e“;“j“;}

“e“->“j“[color = “green“,dir = none, constraint = false];

}

Abbildung 22: DOT-Quelltext für s 1 und s 2 in einem Graph


5 IMPLEMENTIERUNG 52

5 Implementierung

In diesem Kapitel wird die Implementierung der Algorithmen PrefixSpan, Frecpo und

der grafischen Benutzeroberfläche SeqPO vorgestellt. Zuerst werden die Algorithmen

PrefixSpan und Frecpo, welche als eigenständige Klassen implementiert wurden, vorgestellt.

Danach wird die grafischen Benutzeroberfläche SeqPO vorgestellt, welche eine

komfortable Benutzung der Algorithmen ermöglicht. Für die Implementierung wurde die

Programmiersprache Java mit der Version 1.6 3 verwendet.

5.1 PrefixSpan

Im Folgenden werden zunächst die, für die Implemtierung des PrefixSpan-Algorithmus

verwendeten Datenstrukturen vorgestellt. Danach erfolgt einer Erläuterung der Methoden

der Klasse PrefixSpan. Im Anhang 8.1 ist ein Beispiel für die Verwendung von

PrefixSpan gegeben.

Datenstrukturen

Für die Leistungsfähigkeit von Data Mining-Algorithmen sind die zugrundeliegenden

Datenstrukturen entscheidend. Im Folgenden wird erläutert, wie die Datenstrukturen

aussehen, und warum diese für die Implementierung ausgewählt wurden.

Item Ein Item wird als Zeichenkette betrachtet. Auf diese Weise können Items einfach

miteinander verglichen oder sortiert werden. Dementsprechend wurde die Datenstruktutur

String für Items gewählt.

Abbildung 23: Die Sequenz s = a(bc)d(ef) mit dazugehörigen Indexen als doppelt verschachtelte

ArrayListe

Sequenz Da PrefixSpan die Konzepte Präfix und Suffix verwendet, wird vorausgesetzt,

dass die Items innerhalb eines Elementes nach einer einheitlichen Ordnung sortiert sind.

Somit ist eine Sequenz eine geordnete Liste von Elementen und ein Element ist eine

geordnete Liste von Items. Deshalb wurde die Sequenz als doppelt verschachtelte Array-

Liste implementiert. Unter Betrachtung der Items als Zeichenkette wurde entsprechend

3 Updateversion 3


5 IMPLEMENTIERUNG 53

die Datenstruktur ArrayList in Java gewählt. In Abbildung 23

ist die Sequenz s = a(bc)d(ef) als doppelt verschachtelte ArrayListe von Zeichenketten

dargestellt.

Sequenzdatenbank Die Sequenzdatenbank wurde als eine ArrayListe von Sequenzen

implementiert. Eine Sequenzdatenbank ist demnach eine dreifach verschachtelte Array-

Liste. Wobei der Index der äußeren ArrayListe die Sequenz-id (sid) abbildet. Dafür wurde

die Datenstruktur ArrayList. In Abbildung

24 ist eine Sequenzdatenbank mit vier Sequenzen dargestellt.

Abbildung 24: Eine Sequenzdatenbank als eine ArrayListe von Sequenzen

Speicherung der sequentiellen Muster und Support Bei jedem rekursiven Aufruf

der Methode P refixSpan() kann PrefixSpan neue sequentielle Muster finden. Diese

Muster werden entsprechend angeordnet nach dem Rekursionsschritt und Muster-id in

der Datenstruktur ArrayList gespeichert.

Auf diese Weise ist jedes gefundene Muster eindeutig durch den Rekursionsschritt

und einer Muster-id innerhalb des Rekursionsschrittes adressierbar. Entprechend

mit der gleichen Adressierung wird der Support eines gefundenen sequentiellen Musters

in der Datenstruktur ArrayList gespeichert (siehe Abbildung

25).

Projizierte Datenbank Für jedes gefundende sequentielle Muster muss eine projizierte

Datenbank erzeugt werden. Deshalb ist die Konstruktion einer projizierten Datenbank

auch der Hauptaufwand beim PrefixSpan. Um eine physische Speicherung der

Suffixe als projizierte Datenbank zu vermeiden, kann die Pseudo-Projektionstechnik

angewendet werden. Anstatt einer physischen Projektion wird bei der Pseudo-Projektion

nur die Indexe für die Adressierung des letztem Präfix-Items in der Sequenzdatenbank

gespeichert. Mit Hilfe der gespeicherten Indexe des letztem Präfix-Items können auf die

entsprechenden Suffixe in der bestehenden Sequenzdatenbank zugegriffen werden. Das

physische Kopieren von Suffixen wird somit vermieden.


5 IMPLEMENTIERUNG 54

Abbildung 25: Speicherung von gefundenen sequentiellen Mustern

Durch Anwendung der Pseudo-Projektion kann die Effizienz bezüglich Zeit- und Speicheraufwand

von PrefixSpan erheblich gesteigert werden. Allerdings bedingt die Pseudo-

Projektion, dass die zugrundeliegende Sequenzdatenbank im Hauptspeicher gespeichert

werden kann. Da dies bei den vorliegenden Prüfungsdaten der Fall ist, wurde die Pseudo-

Projektionstechnik für die Erzeugung von projizierten Datenbanken gewählt.

Die Indexe für die Adressierung des letztem Präfix-Items wurde in der Datenstruktur

Integer[][] als |Sequenzdatenbank| × 2-Matrix implementiert. Für jede Sequenz-id

(sid) in der Sequenzdatenbank wird der Index des Elementes Integer[sid][0] und

der Index des Items Integer[sid][1] gespeichert. Für jedes gefundene Muster wird

entsprechend eine solche Index-Matrix für die Pseudo-Projektion erzeugt. Die Index-

Matrizen werden nach der gleichen Adressierung wie die gespeicherten Muster in der

Datenstruktur ArrayList gespeichert (siehe Abbildung

26).

Sortierung der gespeicherten sequentiellen Muster nach der i-Länge Für die

Ausgabe der Muster ist es sinnvoll die Muster nach der i-Länge zu sortieren. Ein weiterer

Vorteil ist, dass wenn die Menge der sequentiellen Muster der i-Länge nach sortiert

vorliegen, dann kann daraus die Menge der maximalen und geschlossenen Muster effizient

berechnet werden. Mit ArrayList

wurde die gleiche Datenstruktur verwendet wie für die Speicherung der sequentiellen

Muster. Dementsprechend wurden die Supportinformationen der sortierten Muster als

ArrayList gespeichert (siehe Abbildung 27).


5 IMPLEMENTIERUNG 55

Abbildung 26: Speicherung der Index-Matrizen für jedes gefundene Muster

Abbildung 27: Speicherung der sortierten sequentiellen Muster mit der i-Länge 1 und 2


5 IMPLEMENTIERUNG 56

Methodenübersicht

Im Folgenden sind alle Methoden der Klasse PrefixSpan aufgelistet. Es werden Hinweise

gegeben, wie die Methoden funktionieren und welche Voraussetzungen es gibt, um diese

Methoden aufzurufen.

• void: initSeqDB() :

Stellt eine SQL-Anfrage an die Datenbank und generiert aus dem ResultSet die

Sequenzdatenbank. Vorher müssen die Werte für folgende Variablen über die dazugehörigen

set-Methoden zugewiesen werden:

1. String Sid: Select-Attribut für die Sequenz-id in der SQL-Anfrage

2. String Zeitvariable: Select-Attribut für die Zeitvariable in der SQL-Anfrage

3. String Item: Select-Attribut für das Item in der SQL-Anfrage

4. String From: From-Klausel in der SQL-Anfrage

5. String Where: Where-Klausel in der SQL-Anfrage (optional)

6. String Treiber: Name des zu verwendenden Datenbanktreibers

7. String Url: Name der Datenbank-URL

8. String Login: Login des Benutzers

9. String Passwort: Passwort des Benutzers

Die SQL-Anfrage lautet dann wie folgt:

SELECT Sid, Zeitvariable, Item

FROM From

WHERE Where

ORDER BY Sid, Zeitvariable, Item;

Das Sid-Attribut kennzeichnet dabei, dass die dazugehörigen Items zu einer Sequenz

gehört. Bei der Wahl des Attibutes Zeitvariable muss darauf geachtet

werden, dass es sich dabei um Werte handelt, die sich auch in der gewünschten

zeitlichen Reihenfolge ordnen lassen. Beispielsweise kann ein Item mit der Zeitvariable

= 1 ausdrücken, dass es innnerhalb der selben Sequenz in einem Element vor

dem Element eines Item mit der Zeitvariable = 2 vorkommt. Im Grunde können

auch Stringwerte für die Zeitvariable ausgewählt werden, wenn diese sich einheitlichen

mit Hilfe der SQL-Anfrage sortieren lassen, z.B. a liegt vor b. Die Sortierung

der Item-Attribute ist notwendig für die Konzepte Präfix und Suffix von Prefix-

Span.

Weiterhin ist zu beachten, dass die Item-Attribute keine null-Werte aufweisen

dürfen. Wenn null-Werte in der Sequenzdatenbank vorkommen, führt dies bei

einem Zugriff darauf zu Konflikten. Gegebenfalls sollten die entsprechenden Item-

Werte in der Originaldatenbank vorher bereinigt werden.


5 IMPLEMENTIERUNG 57

• void: sortPattern() :

Sortiert die Menge der sequentiellen Muster nach der i-Länge.

• int: getCount() :

Zählt die Anzahl der sequentiellen Muster. Gib die Anzahl als int-Wert zurück.

• void: findMaximalPattern() :

Findet maximale Muster aus der Menge der sortierten sequentiellen Muster. Löscht

nicht maximale Muster.

• void: findClosedPattern() :

Findet geschlossene Muster aus der Menge der sortierten sequentiellen Muster.

Löscht nicht geschlossene Muster.

• void: outputPattern() :

Gibt die Menge der gefundenen sequentiellen Muster in der Kommandozeile aus.

• void: PrefixSpan (ArrayList Muster, int iLänge,

Integer[][] IndexMatrix):

Startet die Suche nach sequentiellen Mustern in der Sequenzdatenbank.

Wird für den ersten Durchlauf mit PrefixSpan(null,0,null) aufgerufen. Vorher

muss der absolute MinSupport-Wert für die Variable int MinSupport über die

entsprechende set-Methode zugewiesen werden.

• int: getItemLength (ArrayList Sequenz):

Berechnet die i-Länge von Sequenz und gibt die i-Länge zurück.

• ArrayList: addItem (

ArrayList Sequenz, String Item):

Fügt Item als letztes Element von Sequenz hinzu und gibt die neue Sequenz zurück.

• ArrayList: mergeItem (

ArrayList Sequenz, String Item):

Fügt Item in das letzte Element von Sequenz hinzu und gibt die neue Sequenz

zurück.

• boolean: isPrefix (ArrayList Element1,

ArrayList Element2, int Position):

Testet ob Element1 Präfix von Element2 bezüglich dem Suffix, beginnend mit dem

Index Position in Element2, ist und gibt einen boolean-Wert zurück.

• boolean: isSubElement (ArrayList Element1,

ArrayList Element2):

Testet ob Element1 Teilmenge von Element2 ist und gibt einen boolean-Wert

zurück.


5 IMPLEMENTIERUNG 58

• boolean: isSubSequence (ArrayList Sequenz1,

ArrayList Sequenz2):

Testet ob Sequenz1 eine Teilsequenz von Sequenz2 ist und gibt einen boolean-

Wert zurück.

• Integer[][]: getIndexMatrixItem (String Item,

Integer[][] IndexMatrix):

Berechnet die Item-projizierte Datenbank als IndexMatrix in Bezug auf IndexMatrix

und gibt die neue IndexMatrix zurück. Wenn IndexMatrix = null ist, wird

die Sequenzdatenbank als Bezug genommen.

• Integer[][]: getIndexMatrixSequence (

ArrayList Sequenz, Integer[][] IndexMatrix):

Berechnet die Sequenz-projizierte Datenbank als IndexMatrix in Bezug auf IndexMatrix

und gibt die neue IndexMatrix zurück.

• void: countSupport (ArrayList Sequenz,

Integer[][] IndexMatrix):

Berechnet den Support für Sequenz in Bezug auf die IndexMatrix als projizierte

Datenbank.

5.2 Frecpo

Im Folgenden werden Datenstrukturen und Methoden der Klasse Frecpo erläutert. Einige

Datenstrukturen und Methoden der Klasse PrefixSpan wurde bei der Implementierung

von Frecpo übernommen. Im Anhang 8.2 ist ein Beispiel für die Verwendung von Frecpo

gegeben.

Datenstrukturen

Im vorherigen Abschnitt wurden die grundlegenden Datenstrukturen im Bezug auf das

Data Mining von Sequenzdaten für den PrefixSpan-Algorithmus betrachtet. Für die Implementierung

des Frecpo-Algorithmus können die gleichen Datenstrukturen für Item,

Sequenz und Sequenzdatenbank verwendet. Im Folgenden werden weitere Datenstrukturen,

welche für die Implementierung von Frecpo verwendet wurden, erläutert.

Kante Eine Kante stellt eine partielle Ordnung zwischen zwei Items dar. Die Wahl einer

geeigneten Datenstruktur muss sehr sorgfältig erfolgen, da viele andere Datenstrukturen

aus Kanten bestehen. Im Abschnitt 3.2.2 wurde gezeigt, dass, wenn eine Kante

in der transitiven Hülle einer Sequenz s vorkommt, diese Kante auch eine Teilsequenz

von s sein muss. Das hat eine große Bedeutung für die Generierung der R-projizierten

Datenbank. Deshalb wurde für die Kante die gleiche Datenstruktur gewählt wie die

einer Sequenz, nämlich ArrayList. Das hat den Vorteil, dass


5 IMPLEMENTIERUNG 59

die Teilsequenzbeziehung zwischen Kante und Sequenz auf natürlicher Weise überprüft

werden kann. In Abbildung 28 ist die Kante a → b dargestellt.

Abbildung 28: Die Kante a → b in der Datenstruktur einer Sequenz

Partielle Ordnung Eine partielle Ordnung ist eine Liste von Kanten. So wurde für die

partielle Ordnung die Datenstruktur ArrayList

gewählt. In Abbildung 29 ist eine partielle Ordnung mit vier Kanten dargestellt.

Abbildung 29: Eine partielle Ordnung als eine ArrayListe von Kanten

Detektionsmatrix Für die Suche nach den global passenden Kanten in der aktuellen

Sequenzdatenbank wird jeweils eine Detektionsmatrix generiert. In der Detektionsmatrix

wird die Supportinformation und Ankermenge für jede Kante, welche aus der Menge

der häufigen Items generiert werden, gespeichert. Die Detektionsmatrix wurde mit Hilfe

von drei ArrayListen realisiert. Die erste ArrayListe wird für die Speicherung der Kanten

verwendet und weist die gleiche Datenstruktur auf wie die der partiellen Ordnung,

nämlich ArrayList. Die zweite ArrayListe mit

der Datenstruktur ArrayList speichert mit der gleichen Adressierung die

Supportinformationen der Kanten. Analog dazu ist die dritte ArrayListe für die Speicherung

der dazugehörigen Ankermengen zuständig. In einer Ankermenge werden jeweils

nur Items gespeichert, deshalb kann es als eine Menge von Items betrachtet werden.

Dementsprechend wurde für die ArrayListe der Ankermengen mit der Datenstruktur

ArrayList realisiert. Die Abbildung 30 verdeutlich den Zusammenhang

zwischen den drei ArrayListen.


5 IMPLEMENTIERUNG 60

Abbildung 30: Detektionsmatrix als drei verschiedene ArrayListen

Speicherung der häufigen, geschlossenen partiellen Ordnungen und Support

Jede gefundene häufige, geschlossene partielle Ordnung (HGPO) wird zu der Menge der

HGPO’s hinzugefügt. Die Menge der HGPO’s ist dann eine Liste von partiellen Ordnungen.

Deshalb wurde ArrayList als

geeignete Datenstruktur ausgewählt. Dabei werden die HGPO’s in der gleichen Reihenfolge

gespeichert, in der die HGPO’s gefunden wurden. Mit der selben Adressierung

werden entprechend die dazugehörigen Supportinformationen in der Datenstruktur

ArrayList gespeichert (siehe Abbildung 31).

Abbildung 31: Speicherung der gefundenen HGPO’s

Menge der global und lokal passenden Kanten und Support Beim ersten

Durchlauf durch die Sequenzdatenbank findet Frecpo global passende Kanten (GPK)

in der Sequenzdatenbank. Bei jeder weiteren rekursiven Suche in der R-projizierte Datenbank

werden die entpsrechenden lokal passenden Kanten (LPK) gefunden. Jede global

oder lokal passende Kante mit Support < |Datenbank| werden gespeichert um daraus

weitere R-projizierte Datenbanken zu erzeugen. Für die Speicherung wurde die Datenstruktur

ArrayList gewählt. D.h.

für jede rekursive Suche in einer Datenbank wird entpsrechend eine ArrayListe der global

oder lokal passenden Kanten der Datenbank gespeichert (siehe Abildung 32). Entsprechend

der selben Adressierung werden die dazugehörigen Supportinformationen in der


5 IMPLEMENTIERUNG 61

Datenstruktur ArrayList gespeichert.

Abbildung 32: Speicherung der gefundenen global und lokal passenden Kanten

R-projizierte Datenbank Eine R-projizierte Datenbank enthält nur die Sequenzen,

welche alle Kanten in R als Teilsequenzen besitzen. Mit der gleichen Begründung wie

bei der Implementierung des PrefixSpan-Algorithmus, wurde auch bei der Implementierung

der R-projizierten Datenbank die Pseudo-Projektionstechnik verwendet. So werden

nur die betreffenden Indexe der Sequenzen in der Sequenzdatenbank gespeichert, die in

der R-projizierten Datenbank vorkommen. Auf diese Weise brauchen keine Sequenzen

physisch in die R-projizierte Datenbank kopiert zu werden. Die R-projizierte Datenbank

wurde mit der einfachen Datenstruktur ArrayList realisiert. Darüberhinaus

muss die R-projizierte Datenbank nicht zwischengespeichert werden, da Frecpo so implementiert

wurde, dass die R-projizierte Datenbank bei jeder Rekursion direkt berechnet

und übergeben wird.

Sortierung der gespeicherten häufigen, geschlossenen partiellen Ordnungen

nach Anzahl der Kanten Ähnlich wie beim PrefixSpan-Algorithmus ist es sinnvoll

wenn die Menge aller gefundenen HGPO’s sortiert nach der Anzahl der Kanten vorliegen.

Auf diese Weise kann eine übersichtliche Ausgabe und eine effiziente Suche nach häufigen,

maximalen partiellen Ordnungen ermöglicht werden. Für die sortierten HGPO’s wurde

ArrayList als Datenstruktur

gewählt. Dementsprechend werden die dazugehörigen Supportinformationen

in der Datenstruktur ArrayList gespeichert (siehe Abbildung

33).


5 IMPLEMENTIERUNG 62

Abbildung 33: Speicherung der sortierten HGPO’s mit der Kantenanzahl 1 und 2

Methodenübersicht

Im Folgenden werden alle Methoden der Klasse Frecpo vorgestellt. Einige Methoden sind

die gleichen wie bei der Klasse PrefixSpan, und werden deshalb nicht weiter erläutert.

• void: initSeqDB() :

Siehe PrefixSpan.

• int: checkSeqDB() :

Testet ob die Anti-Symmetrie-Bedingung für alle Sequenzen als partielle Ordnungen

in der Sequenzdatenbank erfüllt ist. Dabei werden Mehrfachvorkommen von

Items innerhalb der Sequenzen in der Sequenzdatenbank gezählt und gibt die Anzahl

der gefundenen Mehrfachvorkommen zurück. Wenn der Rückgabewert = 0 ist,

ist die Anti-Symmetrie-Bedingung für alle Sequenzen in der Sequenzdatenbank erfüllt.

• void: sortPattern() :

Sortiert die Menge der häufigen, geschlossenen partiellen Ordnungen nach der Anzahl

der enthaltenen Kanten.

• int: getCount() :

Zählt die Anzahl der gefundenen partiellen Ordnungen. Gib die Anzahl als int-

Wert zurück.

• void: findMaximalPattern() :

Findet häufige, maximale partielle Ordnungen aus der häufigen geschlossenen partiellen

Ordnungen. Löscht nicht häufige, maximale partielle Ordnungen.

• void: transformPattern() :

Transformiert die Menge der gefundenen Muster in einer lesbare Form. D.h. eine

Kante von a nach b wird zu einem Item in Form des Strings ”

a -> b“ transformiert.


5 IMPLEMENTIERUNG 63

• void: outputPattern() :

Gibt die Menge der gefundenen häufigen partiellen Ordnungen in der Kommandozeile

aus.

• void: findFCPO (ArrayList Präfix, int PräfixEbene,

ArrayList IndexListe):

Startet die Suche nach häufigen, geschlossenen partiellen Ordnungen.

Wird für den ersten Durchlauf mit findFCPO(null,0,null) aufgerufen. Vorher

muss der absolute MinSupport-Wert für die Variable int MinSupport über die

entprechende set-Methode zugewiesen werden.

• void: findFrequentItems (ArrayList IndexListe):

Suche nach häufigen Items in der R-projizierten Datenbank als IndexListe.

Wenn IndexListe = null ist, werden nach häufigen Items in der Sequenzdatenbank

gesucht.

• void: generateEdges() :

Generiert die Kanten für die Detektionsmatrix aus der Menge der, in der aktuellen

Datenbank gefundenen, häufigen Items.

• void: generateDetectionMatrix (ArrayList IndexListe):

Berechnet den Support und die Ankermenge für jede Kante in der Detektionsmatrix

innerhalb der R-projizierten Datenbank IndexListe.

Wenn IndexListe = null ist, werden die Werte für die Sequenzdatenbank berechnet.

• boolean: isWeaker (ArrayList R1,

ArrayList R2):

Testet ob die partielle Ordnung R1 schwächer als die partielle Ordnunge R2 ist und

gibt einen boolean-Wert zurück.

• boolean: isWeakPrefix (

ArrayList Präfix,

ArrayList R):

Testet ob ein Präfix im Mengenaufzählungsbaum für transitive Reduktionen schwächer

als eine partielle Ordnung R ist.

• boolean: isClosedPattern (

ArrayList R, int Support):

Testet ob die partielle Ordnung R innerhalb der Sequenzdatenbank geschlossen ist.

• ArrayList: getPrefixGlobal (

ArrayList R,

ArrayList globaleKante):


5 IMPLEMENTIERUNG 64

Berechnet den Präfix für den Mengenaufzählungsbaum von transitiven Reduktionen

einer global passenden Kante mit Support < |Sequenzdatenbank| bezüglich R

als häufige, geschlossene partielle Ordnung mit Support = |Sequenzdatenbank|.

• ArrayList: getPrefixLocal (

ArrayList Präfix,

ArrayList lokaleKante):

Berechnet Präfix für den Mengenaufzählungsbaum von transitiven Reduktionen

einer lokal passenden Kante mit Support < |R-projizierte Datenbank| bezüglich

dem Eltern-Präfix Präfix.

• boolean: hasTransitivity (

ArrayList Präfix):

Testet ob Präfix transitive Kanten enthält.

• void: findAllAncestorNodes (

ArrayList R,

String Knoten, HashSet Elternknoten):

Findet rekursiv alle Elternknoten von Knoten in der partiellen Ordnung R als Graph

und fügt diese zu Elternknoten hinzu.

• void: findAllChildNodes (

ArrayList R,

String Knoten, HashSet Kindsknoten):

Findet rekursiv alle Kindsknoten von Knoten in der partiellen Ordnung R als Graph

und fügt diese zu Kindsknoten hinzu.

• int: findElementIndex (String Item,

ArrayList Sequenz):

Gibt den Index des Elementes innerhalb von Sequenz zurück, in dem Item zum

ersten Mal vorkommt.

• boolean: isSubElement (ArrayList Element1,

ArrayList Element2):

Siehe PrefixSpan.

• boolean: isSubSequence (ArrayList Sequenz1,

ArrayList Sequenz2):

Siehe PrefixSpan.

• ArrayList: getIndexList (

ArrayList Kante, ArrayList IndexListe):

Berechnet die Kante-projizierte Datenbank als IndexListe bezüglich IndexListe

und gibt die neue IndexListe zurück.


5 IMPLEMENTIERUNG 65

5.3 Grafische Benutzeroberfläche SeqPO

In diesem Abschnitt die grafische Obergläche SeqPO vorgestellt. Dabei soll die Benutzung

und die Implementierung von SeqPO erläutert werden. Insbesondere wird der Zusammenhang

zu den Klassen PrefixSpan und Frecpo, und die Darstellung der Data

Mining-Ergebnisse dargelegt.

5.3.1 Anforderungen

Um eine komfortable Bedienung der Algorithmen PrefixSpan und Frecpo zu ermöglichen,

soll eine graphische Benutzeroberfläche, mit der man auf die gewünschten Algorithmen

zugreifen kann, implementiert werden. Die grafische Benutzeroberfläche soll zum einen

die Eingabe der erforderlichen Einstellungen für die Algorithmen ermöglichen, zum anderen

sollen für die Analyse der Ergebnisse eine geeignete Darstellung der Ergebnisse

ermöglicht werden. Weiterhin soll es eine Möglichkeit geben die Data Mining-Ergebnisse

zu speichern und auch wieder zu laden.

5.3.2 Funktionalitäten

Angesicht der oben genannten Anforderungen wurde die grafische Benutzeroberfläche

SeqPO“ implementiert. SeqPO steht für Seqentielle Muster und partielle Ordnungen


und ermöglicht einen direkten Zugriff auf die Data Mining-Algorithmen: PrefixSpan für

die Suche nach sequentiellen Muster und Frecpo für die Suche nach häufigen, geschlossenen

partiellen Ordnungen in Sequenzdaten.

SeqPO (siehe Abbildung 34) ist in fünf folgende Bereichsfelder unterteilt: Menüleiste,

SQL-Leiste, Einstellungsleiste, Darstellungsfeld und Programmausgabe. Im Folgenden

werden anhand diese Bereichssfelder, die damit verbundene Funktionalität und Benutzungsweise

von SeqPO beschrieben.

a) Menüleiste

In der Menüleiste können die Hauptmenüs Datei, Optionen und Info aufgerufen werden.

Diese Hauptmenüs besitzen weitere Untermenüs (siehe Abbildung 35). Dabei ermöglicht

das Untermenü Oeffnen das Laden einer Speicherdatei von SeqPO. Im Untermenü von

Info können Informationen über SeqPO aufgerufen werden. Darüberhinaus können unter

Optionen die folgenden Einstellungen festgelegt werden:

• Login-Einstellung: hier kann der Benutzer seine Login-Daten eingeben. Bei Bestätigen

der Eingabe testet SeqPO sofort ob eine Verbindung zu der betreffenden

Datenbank hergestellt werden kann.

• Datenbankoptionen: hier kann der Benutzer den Datenbanktreiber und die Datenbank-

URL manuell einstellen.


5 IMPLEMENTIERUNG 66

Abbildung 34: Die grafische Benutzeroberfläche ”

SeqPO“


5 IMPLEMENTIERUNG 67

Abbildung 35: Die Menüleiste

• Graphviz-Einstellung: hier kann der Benutzer den Dateipfad für das Programm dot

von GraphViz manuell einstellen.

Die Einstellungen für Datenbankoptionen und Graphviz können auch mit Hilfe der

Konfigurationsdatei config.ini initialisiert werden. Bei jedem Starten von SeqPO wird

getestet, ob eine Konfigurationsdatei existiert und entsprechend ausgelesen. In Abbildung

36 ist die Konfigurationsdatei, die in dieser Arbeit verwendet wurde, dargestellt.

Die erste Zeile legt den gewählten Datenbanktreiber fest. Danach folgt die Angabe der

Datenbank-URL. In der letzen Zeile wird der Dateipfad des dot-Programms von Graph-

Viz festgelegt.

Abbildung 36: Die Konfigurationsdatei config.ini

b) SQL-Leiste

In diesem Bereich wird die SQL-Anfrage angegeben, welche für die Auswahl der zugrundeliegenden

Daten für die Generierung der Sequenzdatenbank zuständig ist. Die

eingestellte SQL-Anfrage wird beim Starten des Data Mining-Vorgangs an die entsprechenden

Algorithmenklassen übergeben. Dabei ist die SQL-Anfrage zum Teil vordefiniert,

d.h. man kann in der SELECT-Klausel nur die drei Attribute Sid, Zeitvariable

und Item auswählen - das Ergebnis der Anfrage wird auch nach diesen drei Attributen

sortiert. Dagegen sind FROM- und WHERE-Klausel keiner Restriktionen unterworfen

und können für Auswahl und Filterung der Daten beliebige Werte annehmen.

c) Einstellungsleiste

In der Einstellungsleiste kann der Benutzer zwischen den Algorithmen PrefixSpan und

Frecpo auswählen. Wurde eine Auswahl getroffen, können die erforderlichen Werte für

den entsprechenden Algorithmus festgelegt werden. Der Benutzter hat die Möglichkeit


5 IMPLEMENTIERUNG 68

den MinSupport-Wert als absolute Zahl oder Prozentzahl einzustellen und darüberhinaus

die gewünschte Musterart auswählen. Beim PrefixSpan-Algorithmus kann zwischen

alle, geschlossene oder maximale Muster ausgewählt werden, während beim Frecpo-

Algorithmus eine Auswahl zwischen geschlossenen und maximalen Muster möglich ist.

Schließlich ist in der Einstellungsleiste auch der Start-Knopf platziert, welche den Data

Mining-Prozess mit den getätigten Einstellungen startet. Es ist zu beachten, dass der

Start-Knopf standardmäßig inaktiv ist, und nur nach einem erfolgreichen Test der Datenbankverbindung,

welcher bei jeder Eingabe der Login-Einstellung (siehe oben) startet,

aktiviert wird.

d) Darstellungsfeld

Abbildung 37: vier verschiedene Tabs

Für jeden Data-Mining-Prozess werden die Ergebnisse in einem eigenständigem Tab

dargestellt. Da für jedes Tab die dazugehörige SQL-Anfrage und Auswahlparameter

gespeichert wird, bekommt jedes Tab einen eindeutigen Namen zugewiesen (siehe Abbildung

37). Auf diese Weise werden beim Wechseln der Tabs, entsprechend die dazugehörige

SQL-Anfrage und Auswahlparameter des aktuell geöffneten Tabs angezeigt - wie

es auch bei aktuellen Internet-Browsern der Fall ist. Weiterhin ist es möglich nicht mehr

verwendete Tabs einzeln zu schliessen.

Das Tab besteht jeweils aus zwei Bereichen für die Darstellung der Muster. Im linken

Bereich sind die Ergebnisse als Text in einer Tabelle abbgebildet. Die Tabelle besitzt bei

der der Darstellung der Ergebnisse von PrefixSpan die folgenden Spalten: ID, #Item,

Nr., Muster und Support.

• ID: eindeutige Nummerierung der Muster; Die höchste ID-Nummer ist zugleich

die Anzahl der Muster.

• #Item: die i-Länge des entsprechenden Musters; Die Muster in der Tabelle sind

nach der i-Länge sortiert.

• Nr.: eine eindeutige Nummerierung der Muster innerhalb einer Mustergruppe mit

gleicher i-Länge; Die höchste Nummer ist zugleich die Anzahl der Muster mit einer

bestimmten i-Länge.

• Muster: Darstellung der Muster in Textform;

• Support: der entsprechende Support-Wert des Musters;

Bei der Darstellung der Ergebnisse von Frecpo wird die Spalte #Item durch #Kante

ersetzt. Die Spalte #Kante gibt die jeweilige Kantenlänge des Musters an. Analog zu

PrefixSpan werden bei Frecpo alle Muster nach der Kantenlänge sortiert dargestellt.


5 IMPLEMENTIERUNG 69

Abbildung 38: Die Tasten des linken Darstellungsbereichs

In dem linken Bereich des Darstellungsfeldes sind unterhalb der Tabelle die zwei Tasten


Muster speichern“ und

Graph zeichnen“ und ein Graphauswahl-Feld angebracht

(siehe Abbildung 38). Die ”

Muster speichern“-Taste bietet dem Benutzer die Möglichkeit

die Ergebnisse zu speichern. Es werden dabei nicht nur die Mustertabelle sondern

auch die dazugehörigen Einstellungen wie SQL-Anfrage, MinSupport-Wert, Musterart

und verwendeter Algorithmus gespeichert. Die Speicherung der Daten wurde als Text

realisiert, so kann die Speicherdatei auch in jedem beliebigem Text-Editor angezeigt

werden. Standardmäßig wird vorgeschlagen, die Datei als *.seqpo-Datei zu speichern

um auf das dazugehörige Programm hinzuweisen. Man kann die Speicherdatei natürlich

auch mit anderen Endungen abspeichern, wenn es gewünscht ist. Im Anhang 8.3 ist ein

Beispiel für einer *.seqpo-Datei gegeben.

Mit der ”

Graph zeichnen“-Taste ist es möglich markierte Muster aus der Mustertabelle

als Graph darzustellen. Man kann dabei im Graphauswahl-Feld einstellen, ob die markierten

Muster in einem Gesamtgraph oder als Einzelgraphen gezeichnet werden soll.

Dabei wird mit Hilfe des dot-Programms ein entsprechender Graph der augewählten

Muster als Bild generiert. Das Graphbild wird dann im rechten Bereich des Darstellungsfeldes

angezeigt.

Abbildung 39: Die Tasten des rechten Darstellungsbereichs

Der rechte Bereich des Darstellungsfeldes ist also für die Darstellung des Graphbildes

zuständig. Unterhalb des Graphbildes befinden sich die drei Tasten Bild speichern“,


” Zoom out“ und Zoom in“ und ein Zoomauswahl-Feld (siehe Abbildung 39). Wenn


das Graphbild erzeugt ist, hat der Benutzer die Möglichkeit mit der Bild speichern“-


Taste das Graphbild abzuspeichern. Da das von dot generierte Graphbild als Gif-Datei

vorliegt, sollte die Bilddatei auch im selben Format (*.gif) gespeichert werden. Weiterhin

besteht die Möglichkeit mit den Tasten Zoom out“ bzw. Zoom in“ oder durch

” ”

das Zoomauswahl-Feld das Graphbild zu verkleinern bzw. zu vergrößern. Das ist gerade

dann praktisch, wenn das Graphbild zu groß ist um es vollständig im rechtem Bereich

des Darstellungsfeldes anzuzeigen.


5 IMPLEMENTIERUNG 70

Auch lassen sich die Teilbereiche des Darstellungsfeldes beliebig vergrößern und verkleinern.

Durch ziehen der seitlichen und oberen Begrenzung kann die gewünschte Bereichsgröße

eingestellt werden. Das Maximieren und Minimieren eines Teilbereichs kann

durch Drücken der Pfeile an den Begrenzungen realisiert werden.

e) Programmausgabe

In der Programmausgabe werden alle notwendigen Informationen während der Benutzung

von SeqPO ausgegeben. So wird zum Beispiel bei jedem Datenbank-Login ausgegeben,

ob eine Datenbankverbindung erfolgreich hergestellt wurde. Oder bei jedem Aufruf

des Frecpo-Algorithmus wird ausgegeben, ob die zugrundeliegende Sequenzdatenbank

geeignet für die Suche nach partiellen Ordnungen ist. Darüberhinaus werden Fehlermeldungen

beim Laden einer fehlerhaften Speicherdatei, beim Setzen eines falschen Support-

Wertes, etc. ausgegeben.

5.3.3 Implementierung

Die grafische Benutzeroberfläche SeqPO wurde unter Verwendung der JAVA-Pakete

AWT und SWING implementiert. Insgesamt umfasst die grafische Benutzeroberfläche

die folgende drei Klassen: SeqPO, Tab und ButtonTabComponent. Die Klasse SeqPO

selber stellt die Hauptklasse der grafischen Benutzeroberfläche dar und ist für die

Darstellung des Hauptfensters verantwortlich, während die Klasse Tab für die Darstellung

und Berarbeitung der Data Mining-Ergebnisse zuständig ist. Die Klasse Button-

TabComponent dient der Funktion des Schliessens eines Tabs.

In Abbildung 40 sind die drei Klassen in Verbindung mit den Algorithmen-Klassen in

einem Klassendiagramm dargestellt. Es ist erkennbar, dass die drei Klassen der grafischen

Benutzeroberfläche im Paket GUI gespeichert sind, während die Algorithmen-Klassen im

Paket Algorithmen sich befinden. Die Beziehung zwischen den zwei Paketen besteht

ausschließlich nur zwischen der Hauptklasse SeqPO und den Algorithmen-Klassen. Die

Klassen Tab und ButtonTabComponent stehen ebenfalls mit SeqPO in Beziehung. Im

Folgenden sollen auf einige wichtige Methoden der Klassen eingegangen werden.

Die grafische Benutzeroberfläche wird mit dem Befehl java GUI.SeqPO aufgerufen.

Dabei wird in der main-Methode von SeqPO für die Erzeugung des Hauptfensters die

Methode buildGui() aufgerufen. Im Anschluss daran wird mit der Methode initConfig()

überprüft ob die Konfigurationsdatei config.ini vorhanden ist und gegebenfalls

ausgelesen. Weiterhin besitzt die Klasse SeqPO mit der Methode openSaveFile() eine

Funktion für das Öffnen einer Speicherdatei. Eine weitere wichtige Methode ist testDB-

Connection(), welche bei jedem Login des Benutzers aufgerufen wird und überprüft, ob

mit den angegebenen Einstellungen eine Datenbankverbindung aufgebaut werden kann.

Die Klasse Tab besitzt im Gegensatz zu der Klasse SeqPO nur Funktionen bezüglich

der Verarbeitung der Muster. Bei der Erzeugung eines neuen Tabs mit dem Konstruktor

Tab() werden die Data Mining-Ergebnisse und weitere Parameter (SQL-Anfrage,


5 IMPLEMENTIERUNG 71

Abbildung 40: Klassendiagramm mit Methoden und innere Klassen


5 IMPLEMENTIERUNG 72

Auswahlparameter, etc.) an das Tab übergeben. Das Tab bildet dann die Data Mining-

Ergebnisse in einer Tabelle (JTable) ab. Mit der Methode createSaveFile() können

die Data Mining-Ergebnisse in einer Speicherdatei gespeichert werden. Für die Darstellung

der ausgewählten Muster in der Tabelle sind die Methoden toTotalGraphFrecpo()(Gesamtgraph)

und toSeparateGraphFrecpo()(Einzelgraph) zuständig, wenn es

sich um Data Mining-Ergebnisse des Frecpo-Algorithmus handelt. Bezüglich der Ergebnisse

des PrefixSpan-Algorithmus gibt es entsprechend die Methoden toTotalGraph-

PrefixSpan() und toSeparateGraphPrefixSpan() . Diese Methoden erzeugen aus den

ausgewählten Mustern eine temp.dot-Datei. Mit der Methode dotToGif() wird aus der

temp.dot-Datei einer temp.gif-Datei erzeugt, welche das Graphbild darstellt. Wurde

das Graphbild generiert und angezeigt, ermöglicht die Methode createSaveImage() das

Speichern des Graphbildes als *.gif-Datei.

Da in Java SWING die Darstellung der Tabs noch nicht ausgereift ist, musste die

Hilfsklasse ButtonTabComponent 4 verwendet werden, damit das Tab sich schliessen

lässt. Dabei besitzt die Klasse ButtonTabComponent als einzige Methode den Konstruktor

ButtonTabComponent(), die einer erzeugten Tab die Taste zum Schliessen der

Tab hinzufügt.

Abbildung 41: Sequenzdiagramm für eine mögliche Benutzung von SeqPO

4 siehe http://java.sun.com/docs/books/tutorial/uiswing/components/tabbedpane.html


5 IMPLEMENTIERUNG 73

Für den zeitlichen Verlauf einer möglichen Benutzung der grafischen Benutzeroberfläche

SeqPO und die damit verbundenen Beziehungen zwischen Klassen-Objekten und

Akteuren soll nun das Sequenzdiagramm in Abbildung 41 betrachtet werden. Insbesondere

sollen dabei der zeitliche Verlauf der Erzeugung der Klassen-Objekte und die

Interaktion zwischen den Akteuren verdeutlich werden.

Insgesamt kommen in dem Sequenzdiagramm die folgenden vier Akteure vor: Benutzer,

grafische Benutzeroberfläche SeqPO, Datenbank und dot-Programm. Zuerst startet

der Benutzer die grafische Benutzeroberfläche SeqPO, dabei wird ein neues Objekt s

der Klasse SeqPO erzeugt. Nach Eingabe der Login-Daten testet s, ob mit den eingegebenen

Daten eine Verbindung zu der Datenbank aufgebaut werden kann. Der Benutzer

gibt nun die notwendigen Parameter für den Data Mining-Vorgang ein und wählt

PrefixSpan als Data Mining-Algorithmus. Wurde die Datenbankverbindung erfolgreich

getestet, kann der Benutzer nun den Data Mining-Prozess starten. Beim Starten des

Data Mining-Prozess erzeugt s ein neues Objekt p der Klasse PrefixSpan und übergibt

die Eingabedaten des Benutzers an p. Abhängig von den Eingabedaten des Benutzers

ruft s gezielt Methoden von p auf, welche zu den gewünschten Data Mining-Ergebnissen

des Benutzers führen sollen.

Entsprechend der Methodenaufrufe holt p die zugrundeliegenden Daten für das Data

Mining von der Datenbank. Danach sucht p nach Muster in den Daten. Ist die Suche

nach Mustern beendet, erzeugt s ein neues Objekt t der Klasse Tab für die Darstellung

der Data Mining-Ergebnisse. Dabei holt t die Data Mining-Ergebnisse von p. Ist dieser

Vorgang beendet wird p von s zerstört.

Die Data Mining-Ergebnisse werden nun von t angezeigt. Der Benutzer wählt dann

eine Auswahl an Mustern und möchte den dazugehörigen Graph zeichnen lassen. Dabei

ruft t die entsprechende Methode auf und mit Hilfe eines Befehls an das dot-Programm

kann aus den ausgewählten Mustern ein Graph erzeugt werden. Am Ende wird SeqPO

vom Benutzer beendet, dabei wird t und s zerstört.

Anhand des Sequenzdiagramms konnte der zeitliche Ablauf der einzelnen Aktionen

zwischen den verschiedenen Akteuren und Objekten gezeigt werden. Im Weiteren soll

durch Betrachtung der folgenden Datenflussdiagramme die einzelnen Datenflüsse von

SeqPO erläutert werden. Insbesondere sollen dabei die Datenflüsse betrachtet werden,

welche durch die Aktionen des Benutzers unmittelbar ausgelöst werden.

In Abbildung 42a ist das Kontextdiagramm dargestellt. Das Kontextdiagrammm gibt

einen Überblick über alle Datenflüsse zwischen SeqP O und Akteuren wieder. Die einzelnen

Bezeichnungen der Datenflüsse werden im Data Dictionary des Datenflussdiagramms

erläutert (siehe Abbildung 44). Im Kontextdiagramm ist erkennbar, dass SeqPO die Dateien

temp.dot, seqpo-Datei und gif-Datei erzeugt aber nur die Dateien temp.gif

und seqpo-Datei ausliest. Weiterhin kann festgestellt werden, dass das dot-Programm

aus der Datei temp.dot die Datei temp.gif generiert. Im Folgenden soll die nächst

tiefere Ebene in der Abbildung 42b betrachtet werden.

In der Ebene 1 des Datenflussdiagrammes gibt es vier verschiedene Prozesse. In dem


5 IMPLEMENTIERUNG 74

(a) Kontextdiagramm

(b) Datenflussdiagramm der Ebene 1

Abbildung 42: Kontextdiagramm und Datenflussdiagramm der Ebene1 von SeqPO


5 IMPLEMENTIERUNG 75

Prozess ”

DB-Verbindung testen“ gehen die Datenflüsse Login-Daten und DB-Einstellung

des Benutzers ein. Mit den eingehenden Daten versucht der Prozess einer Verbindung

mit der Datenbank aufzubauen, dabei wird die Methode testDBConnection() verwendet.

Als Rückantwort liefert die Datenbank den Datenfluss Status zurück. Der Datenfluss

Status wird an Prozess ”

Data Mining starten“ geschickt. Der Prozess ”

Data Mining starten“

wird durch betätigen der entsprechenden Taste in der grafischen Benutzeroberfläche

ausgelöst. Nur wenn Status = true ist, kann dieser Prozess gestartet werden.

Nach jeder Ausführung des Prozess ”

Data Mining starten“ geht der Datenfluss Ergebnisse

in den Prozess ”

Ergebnisse als Tab darstellen“. Dieser Prozess erzeugt ein neues

Tab-Objekt für die Darstellung und Analyse der Data Mining-Ergebnisse. Der vierte

Prozess ist für das Laden einer seqpo-Datei zuständig. Der Prozess ”

Datei öffnen“ wird

dabei jeweils ausgeführt, wenn das entsprechende Untermenü in der grafischen Benutzeroberfläche

betätigt wird. Dabei verwendet der Prozess die Methode openSaveFile(),

welche ein neues Tab-Objekt für die Darstellung der gespeicherten Ergebnisse erzeugt.

Abbildung 43: Datenflussdiagramm Ebene 2 des Prozess ”

Ergebnisse als Tab darstellen“


5 IMPLEMENTIERUNG 76

Im Folgenden soll der dritte Prozess noch genauer betrachtet werden, da gerade das

Tab-Objekt die meisten Datenflüsse als Antwort auf die Aktionen des Benutzers generiert.

In Abbildung 43 ist dieser Prozess in der Ebene 2 dargestellt. Der Prozess Ergebnisse

in Mustertabelle speichern“ speichert die Daten des eingehenden Datenflusses ”

in der Mustertabelle ab. Auf diese Weise können die Prozesse Graph zeichnen“ und


Muster speichern“ auf die Daten zugreifen.


Betätigt der Benutzer die Taste für das Zeichnen der ausgewählten Muster als Graph,

wird der Prozess Graph zeichnen“ gestartet. Abhängig vom eingehenden Datenfluss


Muster-Auswahl werden die benötigten Daten aus der Mustertabelle ausgelesen und daraus

die Datei temp.dot erzeugt. Für die Erzeugung von temp.dot wird einer der Methoden

toTotalGraph...() oder toSeparateGraph...(), abhängig von Algorithmus-

Auswahl und Graph-Auswahl, verwendet. Schließlich wird mit der Methode dotToGif

das dot-Programm über Befehl aufgerufen, um aus temp.dot die Datei temp.gif zu

generieren. Die Datei temp.gif wird dann ausgelesen und im Tab-Objekt als Graphbild

dargestellt.

Analog dazu wird beim Drücken der Taste ”

Muster speichern“ der Prozess 3.3 ausgelöst.

Für die Speicherung werden zum einen die Daten aus der Mustertabelle und zum

anderen alle Einstellungsparameter bezüglich des Data Mining-Vorgangs benötigt. Aus

diesen eingehenden Datenflüssen wird eine seqpo-Datei als Speicherdatei erzeugt.

Entsprechend kann durch Betätigen der ”

Bild speichern“-Taste der Prozess 3.4 ausgelöst

werden. Dabei wird die Bilddatei temp.gif ausgelesen und daraus eine neue gif-

Datei erzeugt.

Die verbliebenen drei Prozesse 3.5, 3.6 und 3.7 dienen zur Skalierung des Graphbildes

temp.gif. Dies kann durch Drücken der Tasten ”

Bild Zoom out“ und

Bild Zoom in“

realisiert werden. Der Benutzer hat darüberhinaus die Möglichkeit über den Datenfluss

Zoom-Auswahl den Zoom-Faktor direkt auszuwählen.


5 IMPLEMENTIERUNG 77

Ebene 0:

DB-Einstellung = Datenbanktreiber + Datenbank-URL

Graphviz-Einstellung = Dateipfad des dot-Programms von GraphViz

Login-Daten = Login + Passwort

SQL = SQL-Anfrage

Algorithmus-Auswahl = [PrefixSpan | Frecpo]

MinSupport-Art = [prozentual | absolut]

MinSupport-Wert = MinSupport als Integerzahl

Muster-Art= [alle | geschlossen | maximal]

Muster-Auswahl = markierte Muster in Mustertabelle

Graph-Auswahl = [Gesamtgraph | Einzelgraph]

Zoom-Auswahl = [12,5% |, 25% |, 50% |, 75% |, 100% |, 125% |,150% ]

DB-Anfrage = DB-Einstellung + Login-Daten + SQL

ResultSet = Ergebnismenge der DB-Anfrage

Status = erfolgreiche Datenbankverbindung: [true | false]

Befehl = Kommandozeilenbefehl Graphviz-Einstellung + -Gcharset=latin1 -Tgif


temp.dot -o temp.gif“

Ebene 1:

Ergebnisse = sortierte Menge der gefundenen Muster

Ebene 2:

Zoomfaktor++ = Erhöhung des aktuellen Zoom-Faktor um eine Stufe (siehe

Zoom-Auswahl)

Zoomfaktor−− = Verringerung des aktuellen Zoom-Faktor um eine Stufe

Abbildung 44: Data Dictionary des Datenflussdiagramms


6 ERGEBNISSE 78

6 Ergebnisse

In diesem Kapitel werden die Ergebnisse der in Abschnitt 4.1 vorgestellten Gruppen

bach0003, bach04, mas0003 und mas04 vorgestellt. Um eine möglichst präzise Analyse

zu erreichen werden die Ergebnisse als maximale sequentielle Muster und häufige, maximale

partielle Ordnungen präsentiert. Das Konzept der maximalen Muster ermöglicht

dabei eine redundanzfreie Darstellung der Muster und ist in diesem Fall für die Betrachtung

der Muster als typische Studienverläufe auch notwendig. Denn nur ein maximales

Muster beschreibt einen typischen Studienverlauf eindeutig, d.h. es kommen keine Teilmuster

davon innerhalb der Menge der maximalen Muster vor. Ferner sind die genauen

Supportinformationen der Muster in dieser Analyse unwichtig, da alle gefundenen Muster

als gleichwertige Muster betrachtet werden sollen.

Da die Gruppen inhaltlich verschieden sind, ist es nicht sinnvoll diese Gruppen von

vornherein gegenüber zu stellen. Ferner soll in diesem Kapitel die Ergebnisse der einzelnen

Gruppen zuerst voneinander getrennt betrachtet und interpretiert werden. Deshalb

wurde für jede Gruppe auch ein anderer MinSupport-Wert gewählt. Erst anhand der

Interpretationen ist eine Gegenüberstellung der vier Gruppen möglich.

Bei der Wahl der entsprechenden MinSupport-Werte wurde so vorgegangen, dass zunächst

nach starken Mustern, d.h. hoher MinSupport-Wert, gesucht werden soll. Ferner

sollen aber auch Muster gefunden werden, welche einen typischen Studienverlauf identifizieren

können. Das ist erst bei Mustern, in denen mindestens zwei Items vorkommen, der

Fall. Auf dieser Basis wurde der MinSupport für die Gruppen so ausgewählt, dass in der

Ergebnismenge zwischen 10 bis 20 maximale Muster mit der i-Länge > 1 vorkommen.

Für die Suche nach typischen Studienverläufen innerhalb der vier Gruppen stehen die

Algorithmen PrefixSpan und Frecpo zur Verfügung. Dabei sollen die beiden Algorithmen

jeweils mit dem gleichen MinSupport-Wert auf die Daten angewendet werden, um eine

Vergleichbarkeit zwischen den Ergebnissen zu schaffen.

Im Folgenden werden die Ergebnisse der vier Gruppen nacheinander vorgestellt und

zugleich interpretiert. Es werden dabei jeweils die gefundenen, maximalen sequentiellen

Mustern zuerst betrachtet. Im Anschluss daran wird geprüft, welche zusätzlichen

Informationen aus der Menge der häufigen, maximalen partiellen Ordnungen gewonnen

werden können.

Am Ende des Kapitels wird noch ein Fazit gegeben, welche Interpretationen bezüglich

den vier Gruppen getroffen werden konnten. Danach wird anhand des Regelstudienplans

des Bachelorstudiums ab WS04/05 überprüft, inwieweit die getroffenen Annahmen richtig

sind, und ob es Abweichungen zwischen den häufigen Studienverläufen und dem

Regelstudienplan gibt.


6 ERGEBNISSE 79

6.1 Gruppe bach0003

Die Gruppe bach0003 umfasst alle Bachelor-Studenten mit der Prüfungsversion 2000

und 2003. Diese Gruppe enthält 421 Sequenzen und 200 unterschiedliche Items (siehe

Abschnitt 4.1). D.h. es handelt sich hierbei um 421 verschiedene Studienverläufe von

Studenten, in denen 200 unterschiedliche Prüfungsleistungen vorkommen.

Bei einem MinSupport von 38% konnten 22 maximale sequentielle Muster und 11 häufige,

maximale partielle Ordnungen gefunden werden. Um die Beziehungen zwischen den

Mustern besser darstellen zu können, werden die Muster als Gesamtgraph dargestellt.

Aus Gründen der Übersichtlichkeit werden die maximalen sequentiellen Muster mit der

i-Länge = 1 nicht im Gesamtgraph dargestellt, da diese Muster nur als isolierte Knoten

im Gesamtgraph erscheinen und keine Beziehungen zu den anderen Mustern aufweisen.

In der Tabelle 27 sind diese 1-Muster aufgelistet.

ID Muster Support

1 Elektrotechnische Grundlagen der Informationsverarbeitung I 190

2 Calculus A 239

3 Grundlagen der Theoretischen Informatik 224

4 Elektrotechnische Grundlagen der Informationsverarbeitung II 169

5 Analysis B 161

6 Programmieren I 283

Tabelle 27: maximale sequentielle Muster mit i-Länge = 1

Bei Betrachtung der Menge der maximalen sequentiellen Muster mit i-Länge = 1

kann zunächst festgestellt werden, dass diese sechs Prüfungsleistungen (siehe Tabelle

27) häufig in den Studienverläufen vorkommen. D.h. diese sechs Prüfungsleistungen sind

häufige, maximale Items in der Gruppe bach0003. Ferner ist erkennbar, dass die sechs

Prüfungsleistungen nicht in längeren, häufigen Studienverläufen vorkommen können, da

sie maximale sequentielle Muster darstellen. Daraus kann interpretiert werden, dass jede

der sechs Prüfungsleistungen zwar häufig, aber nicht häufig mit irgendeiner anderen

häufigen Prüfungsleistung in den Studienverläufen vorkommen.

Abbildung 45: bach0003 MinSupport = 38% Frecpo

Im Folgenden sollen die restlichen 16 maximalen sequentiellen Mustern mit i-Länge

= 2 im Gesamtgraph betrachtet werden (siehe Abbildung 46a). Jede Farbe einer Kante

im Gesamtgraph kennzeichnet dabei genau einen häufigen Studienverlauf. Mit Hilfe des

Gesamtgraphen können demnach alle häufigen Studienverläufe zusammengefasst werden.

Ferner werden erst durch die Betrachtung im Gesamtgraph die Beziehungen zwischen

den einzelnen Mustern deutlich.


6 ERGEBNISSE 80

(a) maximale sequentielle Muster in bach0003

(b) häufige, maximale partielle Ordnungen in bach0003

Abbildung 46: Gruppe bach0003 mit MinSupport = 38%


6 ERGEBNISSE 81

Der Gesamtgraph weist mit zwei verschiedenen Ebenen eine flache Hierarchie auf.

Somit können anhand der gefundenen Muster nur Rückschlüsse bezüglich bestandene

Prüfungsleistungen aus höchstens zwei verschiedenen Semestern gezogen werden.

Zuerst sollen die ungerichteten Kanten im Gesamtgraph betrachtet werden (siehe

Abbildung 45). Es handelt sich hierbei um drei verschiedene Muster, d.h. es sind drei

häufige Studienverläufe. Die drei häufigen Studienverläufe geben die Information wieder,

dass jeweils immer zwei der drei Prüfungsleistungen in dem selben Semester bestanden

wurden. Im Umkehrschluss bedeutet diese Feststellung, dass ein Studienverlauf, in der

diese drei Prüfungsleistungen in einem Semester bestanden wurden, nicht häufig ist.

Zumindest kann damit die Aussage getroffen werden, dass die drei Prüfungsleistungen

zwar im selben Semester angeboten, aber nicht häufig zusammen bestanden wurden.

Weiterhin ist erkennbar, dass diese drei Prüfungsleistungen in der obersten Ebene des

Gesamtgraphen platziert sind. Es gibt demnach keine häufigen bestandenen Prüfungsleistungen

im Gesamtgraph, die in einem früheren Semester bestanden wurden als die

Prüfungsleistungen in der obersten Ebene. Demnach kann angenommen werden, dass die

Prüfungsleistungen ”

Ausgewählte Kapitel des Rechts für Informatiker“, ”

Einführung Betriebssysteme“

und

Lineare Algebra A“ im ersten Semester des Bachelor-Studienganges

mit der Prüfungsversion 2000 bzw. 2003 angeboten wird.

Im Weiteren sollen die gerichteten Kanten im Gesamtgraph betrachtet werden. Zum

Beispiel stellt die gerichtete Kante von

Lineare Algebra A“ zu ”

Lineare Algebra B“

den häufigen Studienverlauf dar, dass ”

Lineare Algebra B“ in einem späteren Semester

bestanden wurde als ”

Lineare Algebra A“. Weiterhin ist erkennbar, dass es acht häufige

Studienverläufe gibt, in denen ”

Einführung Betriebssysteme“ in einem früheren Semester

bestanden wurde als die acht Prüfungsleistungen in der zweiten Ebene des Gesamtgraphen.


Einführung Betriebssysteme“ ist demnach eine Prüfungsleistung, die in vielen

häufigen Studienverläufen vorkommt, und somit höchstwahrscheinlich eine Pflichtprüfungsleistung

darstellt.

Interessanterweise geht von Ausgewählte Kapitel des Rechts für Informatiker“ nur


eine einzige gerichtete Kante aus, nämlich zu der Prüfungsleistung Software-Projekt“.


Ausgewählte Kapitel des Rechts für Informatiker“ besitzt also keine Beziehungen zu den


sieben anderen Prüfungsleistungen aus der zweiten Ebene. Dies könnte bedeuten, dass

Ausgewählte Kapitel des Rechts für Informatiker“ eine Wahlprüfungsleistung darstellt.


Wie am Anfang schon erwähnt, weist der Gesamtgraph nur zwei Ebenen auf. Es können

also nur Beziehungen bezüglich den Prüfungsleistungen zwischen höchstens zwei verschiedenen

Semestern als häufige Studienverläufe identifiziert werden. Da ein Bachelor-

Studiengang in der Regel sechs Semester dauert, ist anzunehmen, dass sich die Studienverläufe

in den späteren Semestern stark voneinander abweichen. Das führt zu dem

Schluss, dass die Prüfungsordnung so ausgelegt ist, dass es viele Wahlmöglichkeiten

zumindest ab den zweiten Semester für die Studierenden gibt (200 verschiedene Prüfungsleistungen),

wobei nicht immer festgelegt ist, wann diese Prüfungsleistungen belegt

werden müssen.


6 ERGEBNISSE 82

Im Folgenden sollen nun die gefundenen, häufigen, maximalen partiellen Ordnungen

(HMPO) betrachtet werden. Es ist zu prüfen, inwieweit die gefundenden Muster

zusätzliche Informationen bezüglich den häufigen Studienverläufen liefern können. In

Abbildung 46b sind diese Muster als Gesamtgraph dargestellt. Auf den ersten Blick sind

die HMPO’s den sequentiellen Mustern sehr ähnlich. Die Ordnungsbeziehungen aus den

HMPO’s können weitgehend auch aus dem Gesamtgraph der maximalen sequentiellen

Mustern ableitet werden. Was anders ist, sind die HGPO’s mit der Kantenanzahl = 2

bzw. mit drei Items. (siehe Abbildung 47).

Abbildung 47: zwei HMPO’s mit der Kantelänge = 2

Die linke HMPO kennzeichnet den häufigen Studienverlauf, dass zwischen den Prüfungsleistungen

Einführung Betriebssysteme“ und Lineare Algebra A“ keine Ordnungsbeziehung

besteht, während beide vor der Prüfungsleistung Analysis A“ ange-


” ”

ordnet sind. D.h. es gibt einen häufigen Studienverlauf, bei dem Einführung Betriebssysteme“

und Lineare Algebra A“ in beliebigen Semestern bestanden wurden, aber



Analysis A“ auf jeden Fall in einem späteren Semester bestanden wurde als diese beiden

Prüfungsleistungen. Ferner gibt uns die HMPO die Information, dass diese drei


Prüfungsleistungen gemeinsam in einem häufigem Studienverlauf vorkommen.

Demnach konnten zwei zusätzliche Informationen aus dem linken HMPO gewonnen

werden, welche aus der Menge der maximalen sequentiellen Mustern nicht ableitbar sind.

Zwar kommen die Pfade einer HMPO in der Menge der maximalen sequentiellen Mustern

(vgl. Beispiel 2.10) vor, aber trotzdem kann aus den maximalen sequentiellen Mustern

nicht geschlossen werden, dass es sich um ein und denselben Studienverlauf handelt.

Zum Beispiel besitzt die linke HMPO die folgenden Pfade: ”

Einführung Betriebssysteme“

→ ”

Analysis A“ und

Lineare Algebra A“ → ”

Analysis A“. Diese Pfade sind

zugleich zwei maximale sequentielle Muster, welche auch im Gesamtgraph vorkommen

(siehe Abbildung 46a). Allerdings stellen sie innerhalb des Konzepts der sequentiellen

Muster zwei verschiedene häufige Studienverläufe dar. Durch Anwendung des Konzepts

der partiellen Ordnung, konnte die linke HMPO gefunden werden, die darüberhinaus

zeigt, dass es sich um ein und denselben Studienverlauf handelt. Analog gilt die selbe

Analyse für das rechte HMPO in Abbildung 47.

Bei der Analyse der Gruppe bach0003 konnte tatsächlich gezeigt werden, dass das

Konzept der partiellen Ordnungen die impliziten Ordnungsbeziehunngen durchaus besser

abbilden kann als das Konzept der sequentiellen Muster. Allerdings sind sequentielle

Muster für die Analyse von Sequenzdaten unverzichtbar, da sie die Gleichzeitigkeit der

Items innerhalb eines Elementes, welche keine Ordnungsbeziehung darstellt, abbilden

können. Daraus folgt, dass die gleichzeitige Anwendung der beiden Konzepte eine sehr


6 ERGEBNISSE 83

gute Analyse der Sequenzdaten ermöglicht.

6.2 Gruppe bach04

In der Gruppe bach04 sind alle Bachelor-Studenten mit der Prüfungsversion 2004 enthalten.

In diese Gruppe gibt es insgesamt 356 Studienverläufe von Studenten, in denen 157

unterschiedliche Prüfungsleistungen vorkommen. Im Vergleich zu der Gruppe bach0003

konnte bei dieser Gruppe erst bei einem deutlich kleineren Support eine ausreichende

Menge an Mustern für die Analyse gefunden werden. Das zeigt deutlich, dass die Studienverläufe

in bach04 sich noch mehr voneinander unterscheiden als dies bei bach0003

der Fall ist. Dies führt zu der ersten Schlussfolgerung, dass die Prüfungsversion 2004 für

Bachelor-Studenten weitaus flexiblere Studienverläufe zulässt als die Prüfungsversionen

2000 und 2003.

ID Muster Support

1 Analysis B 66

2 Elementare Wahrscheinlichkeitstheorie und Statistik A 64

3 Grundlagen digitaler Systeme 73

4 Rechnernetze I 97

5 Grundlagen der Software-Technik, Software-Qualität 76

6 Künstliche Intelligenz I 62

7 Programmiersprachen und Übersetzer 76

8 Logik 71

Tabelle 28: maximale sequentielle 1-Muster in bach04

Bei einem MinSupport von 17% konnten 27 maximale sequentielle Muster und 20

häufige, maximale partielle Ordnungen gefunden werden. Analog zu der Analyse von

bach0003 sollen zuerst die maximalen sequentiellen Muster betrachtet werden. In Tabelle

28 sind die acht gefundenen, maximalen sequentiellen 1-Muster aufgelistet. Es kann sofort

konstatiert werden, dass diese acht 1-Muster häufige, maximale Items in bach04 sind.

D.h. sie kommen häufig in den Studienverläufen vor, sind aber nicht in längeren Mustern

enthalten.

Weiterhin konnten 15 maximale 2-Muster, drei maximale 3-Muster und ein maximales

4-Muster gefunden werden. Diese sind als Gesamtgraph in Abbildung 48a dargestellt.

Bei Betrachtung des Gesamtgraphen ist erkennbar, dass es vier Ebenen im Gesamtgraph

gibt. Im Folgenden sollen diese vier Ebenen im Gesamtgraph genauer betrachtet werden.

Mit der gleichen Begründung wie bei der Analyse von bach0003 kann angenommen

werden, dass die Prüfungsleistungen in der ersten Ebene des Gesamtgraphen tatsächlich

im ersten Semester bestanden wurden. Respektive müsste die zweite Ebene die

Prüfungsleistungen des zweiten Semesters darstellen. Sonst wären alle Prüfungsleistungen,

welche im zweiten Semester bestanden wurde, nicht häufig. Dieser Fall ist als eher

unwahrscheinlich einzustufen, da es noch weitere Ebenen im Gesamtgraph gibt, welche


6 ERGEBNISSE 84

(a) maximale sequentielle Muster in bach04

(b) häufige, maximale partielle Ordnungen in bach04

Abbildung 48: Gruppe bach04 mit MinSupport = 17%


6 ERGEBNISSE 85

kennzeichnen, dass in noch drei späteren Semestern Prüfungsleistungen häufig bestanden

wurden. Es ist davon auszugehen, dass gerade in früheren Semestern die Studienverläufe

sich ähneln. Somit können auch die Prüfungsleistungen in der dritten Ebene dem dritten

Semester zugewiesen werden, da es noch eine weitere Ebene im Gesamtgraph gibt. Allerdings

können keine genauen Aussagen bezüglich den Prüfungsleistungen in der vierten

Ebene getroffen werden, da diese in der letzten Ebene des Gesamtgraphen vorkommen.

D.h. es kann nur festgestellt werden, dass diese Prüfungsleistungen im vierten Semester

oder später bestanden wurden.

Abbildung 49: drei maximale Muster in der ersten und zweiten Ebene

Zunächst sollen die maximalen sequentiellen Muster mit ungerichteten Kanten betrachtet

werden. In Abbildung 49 sind diejenigen Muster, welche eine Gleichzeitigkeit

der drei Prüfungsleistungen des ersten Semesters kennzeichnen, abgebildet. Beispielsweise

gibt das 4-Muster mit der roten Kantenfarbe den häufigen Studienverlauf wieder,

dass Ausgewählte Kapitel des Rechts für Informatiker“, Programmieren (Scheme)“ und

” ”

” Einführung Betriebssysteme“ im selben Semester und Programmieren (Java)“ in einem

späteren Semester bestanden wurde. Durch die Posistion im Gesamtgraph kann


zusätzlich geschlussfolgert werden, dass es sich hierbei um das erste und das zweite

Semester handelt. Anhand diese drei Muster kann bezüglich der Gleichzeitigkeit von

Prüfungsleistungen interpretiert werden, dass es Studienverläufe gibt, in denen entweder

alle drei Prüfungsleistungen im ersten Semester häufig bestanden wurden, oder jeweils

Ausgewählte Kapitel des Rechts für Informatiker“ und Programmieren (Scheme)“

” ”

bzw. Programmieren (Scheme)“ und Einführung Betriebssysteme“ im ersten Semester

” ”

häufig bestanden wurden. In Abbildung 50 sind die Muster mit ungerichteten Kanten in

der zweiten und dritten Ebene des Gesamtgraphen abgebildet.

Abbildung 50: Gleichzeitigkeit in der zweiten und dritten Ebene

Anhand der Abbildung ist erkennbar, dass es einen häufigen Studienverlauf gibt, in

dem im zweiten Semester ”

Grundlagen digitaler Systeme, Grundlagen der Rechnerarchitektur“

und

Programmieren (Java)“ bestanden wurden. Weiterhin ist erkennbar, dass

bezüglich des dritten Semesters eines Studienverlaufs entweder ”

Numerik A“ und

Pro-


6 ERGEBNISSE 86

jekt Technische Informatik“ oder ”

Projekt Technische Informatik“ und

Datenstrukturen

und Algorithmen“ bestanden wurden.

In Folgenden sollen die gerichteten Kanten im Graph betrachtet werden. Durch die

Zusammenfassung aller maximalen sequentiellen Muster mit der i-Länge > 1 im Gesamtgraph

kann die zeitliche Abfolge der Prüfungsleistungen in verschiedenen Semestern

gut erkannt werden. Es handelt sich dabei weitgehend um Beziehungen zwischen zwei

verschiedenen Semestern, welche selbsterklärend sind. Hierbei soll auf das interessante

maximale 3-Muster in Abbildung 51 verwiesen werden, dass eine Beziehung zwischen

drei Semestern ausdrückt.

Abbildung 51: maximales 3-Muster

Aufgrund der Position dieses 3-Musters im Gesamtgraph kann geschlussfolgert werden,

dass innerhalb eines häufigen Studienverlaufs im ersten Semester ”

Programmieren

(Scheme)“ im zweiten Semester ”

Programmieren (Java)“ und im dritten Semester ”

Datenstrukturen

und Algorithmen“ bestanden wurden. Dieses Muster ist insofern auffällig,

da es Informationen über drei verschiedene Semester enthält. Es besteht also ein starker

Zusammenhang zwischen diesen drei Prüfungsleistungen. Es ist deshalb davon auszugehen,

dass die Prüfungsversion 2004 einen solchen Studienverlauf festlegt oder zumindest

vorschlägt.

Es sollen nun die häufigen, maximalen partiellen Ordnung im Gesamtgraph betrachtet

werden (siehe Abbildung 48b). Der Gesamtgraph weist eine ähnliche Struktur zum

Gesamtgraph der maximalen sequentiellen Mustern auf. D.h. es gibt insgesamt vier verschiedene

Ebenen, in denen die gleichen Prüfungsleistungen vorkommen wie bei den

sequentiellen Mustern.

Allerdings ist erkennbar, dass es Kantenverdichtungen zwischen einzelnen Prüfungsleistungen

gibt. So kommt die Kante ”

Programmieren (Scheme)“ → ”

Programmieren

(Java)“ vier Mal im Gesamtgraph vor. Demnach gibt es vier verschiedene, häufige Studienverläufe

in denen ”

Programmieren (Scheme)“ vor ”

Programmieren (Java)“ bestanden

wurden. Es besteht demnach eine starke Beziehung zwischen diesen zwei Prüfungsleistungen.

Diese Information führt zu der Annahme, dass ”

Programmieren (Scheme)“ eine

Voraussetzung für ”

Programmieren (Java)“ sein könnte. Analog gilt diese Annahme auch

für die Beziehungen ”

Programmieren (Scheme)“ → ”

Datenstrukturen und Algorithmen“

und

Programmieren (Java)“ → ”

Datenstrukturen und Algorithmen“. Diese Annahmen


6 ERGEBNISSE 87

stimmen mit der Interpretation des auffälligen 3-Musters in Abbildung 51 überein.

Abbildung 52: häufige, maximale partielle Ordnung mit vier Items

Als letztes soll die häufige, maximale partielle Ordnung in Abbildung 52 betrachtet

werden. In diesem Studienverlauf wurden vier Prüfungsleistungen häufig bestanden. Dieses

Muster beschreibt, dass ”

Einführung Betriebssysteme“ und

Programmieren (Scheme)“

in beliebiger Reihenfolge bestanden wurden, aber ”

Grundlagen digitaler Systeme,

Grundlagen der Rechnerarchitektur“ stets in einem späteren Semester als die beiden

Prüfungsleistungen bestanden wurde. ”

Programmieren (Java)“ in einem späteren Semester

bestanden wurde als ”

Programmieren (Scheme)“. Dieses Beispiel zeigt, dass diese

Ordnungsbeziehungen zwischen den Prüfungsleistungen innerhalb eines häufigen Studienverlaufs

nicht mit dem Konzept der sequentiellen Muster gefunden werden können.

6.3 Gruppe mas0003

Bei der Gruppe mas0003 handelt es sich um Master-Studenten mit der Prüfungsversion

2000 und 2003. In diese Gruppe gibt es insgesamt 30 verschiedene Studienverläufe, in

denen 124 unterschiedliche Prüfungsleistungen vorkommen. Es liegen also Prüfungsdaten

von nur 30 verschiedenen Studenten vor. Trotzdem ist es interessant zu erfahren, welche

Muster in diesen wenigen Studienverläufen gefunden werden können.

ID Muster Support

1 Objekt- und Agentenorientierte Programmierung 13

2 Semantic Web (Internettechnologien II) 10

3 Software-Technik II 9

4 Seminar zu Datenbanksystemen 8

5 GIS II 8

6 Approximative Zeichenkettensuche 8

7 Datenbanksysteme IIb 10

8 Räumliche Datenstrukturen 8

Tabelle 29: maximale sequentielle 1-Muster in mas0003

Bei einem MinSupport von 25% konnten 19 maximale sequentielle Muster und acht

häufige, maximale partielle Ordnungen gefunden werden. Zuerst sollen die sequentiellen

Muster betrachtet werden. In Tabelle 29 sind die acht maximalen sequentiellen 1-Muster


6 ERGEBNISSE 88

(a) maximale sequentielle Muster in mas0003

(b) häufige, maximale partielle Ordnungen in mas0003

Abbildung 53: Gruppe mas0003 mit MinSupport = 25%


6 ERGEBNISSE 89

aufgelistet. Diese acht Prüfungen wurden also häufig bestanden, sind aber nicht Bestandteil

eines längeren Musters. Darüberhinaus konnten neun maximale 2-Muster und

zwei maximale 3-Muster gefunden werden. Diese sind als Gesamtgraph in Abbildung 53a

dargestellt.

Der Gesamtgraph der maximalen sequentiellen Muster weist vier verschiedene Ebenen

auf. Es sind demnach Prüfungsleistungen von vier verschiedenen Semestern im Gesamtgraph

dargestellt. Basierend auf den Annahmen aus den vorhergehenden Gruppen,

stellen die ersten drei Ebenen auch die ersten drei Semester des Master-Studiengangs

dar. Bezüglich der Prüfungsleistung ”

Masterarbeit“ kann nur festgestellt werden, das

diese Prüfungsleistung im vierten oder in einem späteren Semester bestanden wurde.

Es soll nun die Prüfungsleistung ”

Englisch für Informatiker“ betrachtet werden, da es

sich hierbei um eine Besonderheit der Darstellung im Gesamtgraph handelt. ”

Englisch

für Informatiker“ wird nur in der zweiten Ebene des Gesamtgraphen positioniert, weil

die Prüfungsleistung eine gerichtete Kante zu ”

Praktikum (8 Wochen)“ in der dritten

Ebene besitzt. Man kann daraus nur schliessen, dass die Prüfungsleistung ”

Englisch für

Informatiker“ in einem vorherigen Semester als das dritte Semester häufig bestanden

wurde.

Ferner gilt, da ”

Englisch für Informatiker“ keine eingehenden gerichteten Kanten besitzt,

dass die Prüfungsleistung ”

Englisch für Informatiker“ im ersten Semester häufig

bestanden wurde. Dieses Beispiel zeigt, dass zwar in der Regel die Ebenen die verschiedenen

Semester kennzeichnen, es muss aber immer überprüft werden, warum eine

Prüfungsleistung in eine Ebene positioniert ist.

Auffällig im Gesamtgraph sind die zwei gerichteten Kanten von

Formale Sprachen“

zu ”

Theorie Boolescher Schaltkreise“. Das ist interessant, da diese Besonderheit in den

vorherigen Gruppen noch nicht aufgetreten ist. Im Folgenden sollen die beteiligten Muster

genauer betrachtet werden (siehe Abbildung 54).

Abbildung 54: zwei maximale sequentielle 3-Muster

Das linke Muster kennzeichnet den häufigen Studienverlauf, dass im ersten Semester

” Formale Sprachen“ und Zeichenketten“ bestanden wurden (abgeleitet aus der Position

im Gesamtgraph), und im zweiten Semester Theorie Boolescher Schaltkreise“. Beim



rechten Studienverlauf wurde anstatt Zeichenketten“ Moderne Programmiertechniken

” ”

und -methoden“ häufig bestanden. Es kann geschlussfolgert werden, dass mindestens

25% der Studenten in mas0003, welche im ersten Semester Formale Sprachen“ und im


zweiten Semester Theorie Boolescher Schaltkreise“ bestanden haben, entweder Zeichenketten“

oder Moderne Programmiertechniken und -methoden“ im ersten Semester


” ”

bestanden haben. Es handelt sich hierbei demnach um Schnittmengen von häufigen Stu-


6 ERGEBNISSE 90

dienverläufen.

Es soll nun der Gesamtgraph der häufigen, maximalen partiellen Ordnungen betrachtet

werden. Der Gesamtgraph bildet weitgehend die Beziehungen zwischen den Prüfungsleistungen

ab, welche auch aus der Menge der maximalen sequentiellen Muster abgeleitet

werden können. Die einzige Ausnahme bildet die häufige, maximale partielle Ordnung

in Abbildung 55.

Abbildung 55: eine häufige, maximale partielle Ordnung

Diese häufige, maximale partielle Ordnung besagt, dass es einen häufigen Studienverlauf

gibt, in der ”

Formale Sprachen“ und

Zeichenketten“ in beliebiger Reihenfolge,

aber jeweils vor ”

Praktikum (8 Wochen)’ bestanden wurden. Das ist eine zusätzliche

Information, da dies aus der Menge der maximalen sequentiellen Muster nicht ableitbar

ist.

6.4 Gruppe mas04

Die Gruppe mas04 umfasst alle Master-Studenten mit der Prüfungsversion 2004. In der

Gruppe gibt es insgesamt 136 Studienverläufe, in denen 181 Prüfungsleistungen vorkommen.

In mas04 konnte erst bei einem niedrigeren Support als bei mas0003 eine

ausreichende Menge an Mustern mit i-Länge > 1 für die Analyse gefunden werden. Daraus

folgt, dass für Master-Studenten die Prüfungsversion 2004 flexiblere Studienverläufe

zulässt als die Prüfungsversionen 2000 und 2003. Dieser Zusammenhang konnte auch bei

den Bachelor-Studenten festgestellt werden (siehe oben).

Bei einem MinSupport von 10% konnten 57 maximale sequentielle Muster und 7

häufige, geschlossene partielle Ordnungen gefunden werden. Allerdings kommen allein

45 1-Muster in der Menge der maximalen sequentiellen Muster vor (siehe Tabelle 30).

Es gibt also 45 Prüfungsleistungen, welche häufig, aber nie zusammen mit einer anderen

häufigen Prüfungsleistung in den Studienverläufen vorkommen. Dies zeigt, dass die

Studienverläufe sich stark voneinander unterscheiden.

In Abbildung 56a sind die 12 maximalen sequentiellen 2-Muster als Gesamtgraph

dargestellt. Interessanterweise kann man im Gesamtgraph erkennen, dass es drei verschiedene

Gruppierungen von maximalen, sequentiellen Mustern gibt. D.h. es gibt zwei

maximale sequentielle 2-Muster, die völlig isoliert von den anderen Mustern sind. Und

die restlichen 10 Muster bilden einen zusammenhängenden Graph, wie es auch in den

Gesamtgraphen der zuvor behandelten Gruppen der Fall war. In Abbildung 57 sind diese

beiden isolierten Mustergruppierungen dargestellt.


6 ERGEBNISSE 91

ID Muster Support

1 Datenbanksysteme IIa 31

2 Mustererkennung 16

3 Strukturen und Prozesse großer Entwicklungsprojekte 22

4 Datenbanksysteme IIb 17

5 GIS I/Geländemodellierung (GIS I/Topographie) 29

6 Einführung in Kartographie und GIS 24

7 GIS II 32

8 Industrielle Steuerungstechnik 16

9 Komplexitätstheorie 19

10 Labor: Graphische 3D Datenverarbeitung in der Medizin 26

11 Zeichenketten 21

12 Seminar zu Programmiersprachen 22

13 Betriebliches Rechnungswesen I 28

14 Compiler-Konstruktion I 28

15 Compiler-Konstruktion II 24

16 Entwurf von Enterprise Architekturen mit J2EE 15

17 Entwicklung sicherer Software 24

18 Theorie Boolescher Schaltkreise 20

19 Berechenbarkeit und Logik 25

20 Labor: Objekt- und Agentenorientierte Programmierung 24

21 GIS-Praxis II 18

22 Schlussübung Topographie 15

23 Semantic Web (Internettechnologien II) 30

24 Betriebliches Rechnungswesen II 21

25 Seminar zum Software Engineering 24

26 Software Engineering Experiment 14

27 Digitale Bildverarbeitung 17

28 Information Retrieval und Multimedia-Datenbanken II 14

29 Betriebspraktikum 22

30 Mikroökonomie 15

31 Rechnernetze II 24

32 Englisch für Informatiker 16

33 Technologien für das Internet I 16

34 Formale Sprachen 14

35 Geodatenvisualisierung I (Kartengestaltung) 18

36 Datenkommunikationsnetze 20

37 Intensivübung Extreme Programming 14

38 Seminar: Software-Engineering im Projekt 18

39 Moderne Software-Entwicklungsmethoden 17

40 Datenbankpraktikum 35

41 Netze und Protokolle 18

42 GIS für Fahrzeugnavigation 21

43 Seminar Grid Computing 27

44 Geodatenvisualisierung II (Interaktive 3D-Visualisierung) 18

45 Approximative Zeichenkettensuche 15

Tabelle 30: maximale sequentielle 1-Muster in mas04


6 ERGEBNISSE 92

(a) maximale sequentielle Muster in mas04

(b) häufige, maximale partielle Ordnungen in mas04

Abbildung 56: Gruppe mas04 mit MinSupport = 10%


6 ERGEBNISSE 93

Abbildung 57: zwei Gruppierungen von maximalen sequentiellen Mustern

Bei der ersten Gruppierung handelt es sich um den häufigen Studienverlauf, dass ”

Seminar:

Komplexe Systeme“ und

Systementwurf“ im selben Semester bestanden wurden.

Da dieses Muster völlig isoliert im Gesamtgraph ist, kann keine Aussage bezüglich des

Semesters getroffen werden. Daraus folgt auch, dass diese beiden Prüfungsleistungen in

keine anderen maximalen sequentiellen Muster vorkommen. D.h. dieser häufige Studienverlauf

ist völlig verschieden von allen anderen häufigen Studienverläufen in der Gruppe

mas04. Die gleichen Schlussfolgerungen gelten dementsprechend auch für die zweite

Gruppierung mit den Prüfungsleistungen ”

Anwendungen von Peer-to-Peer-Netzwerken“

und

Personalisierung und Benutzermodellierung“.

Im Folgenden soll die zusammenhängende Gruppe im Gesamtgraph betrachtet werden.

In diese Gruppierung gibt es drei verschiedene Ebenen, welche drei unterschiedliche

Semester kennzeichnen. Auffällig in diese Gruppierung sind die gegensätzlich gerichteten

Kanten zwischen Immaterialgüterrecht-Der Schutz des geistigen Eigentums“ und


Software-Anforderungen und -Entwurf“. In Abbildung 58 sind die beteiligten maximalen

sequentiellen Muster


dargestellt.

Abbildung 58: gegensätzliche, maximale sequentielle Muster

Bei dem ersten häufigen Studienverlauf wurde ”

Immaterialgüterrecht-Der Schutz des

geistigen Eigentums“ vor ”

Software-Anforderungen und -Entwurf“ bestanden. Bei dem

zweiten häufigen Studienverlauf ist es genau umgekehrt. Daraus folgt, dass trotz der

Tatsache, dass ”

Immaterialgüterrecht-Der Schutz des geistigen Eigentums“ in der ersten

Ebene der Gruppierung angeordnet ist, diese Prüfungsleistung nicht automatisch

nur häufig im ersten Semester, sondern auch in einem späteren Semester als ”

Software-

Anforderungen und -Entwurf“ bestanden wurde. D.h. ”

Immaterialgüterrecht-Der Schutz

des geistigen Eigentums“ wurde in zwei verschiedenen Semestern häufig bestanden. Respektive

gilt das gleiche auch für ”

Software-Anforderungen und -Entwurf“.

Daraus folgt, dass auch keine genauen Aussagen bezüglich des Semesters über die

Prüfungsleistungen ”

Parallele Algorithmen“, ”

Quantenrechner“ und

Software-Qualität“

getroffen werden können, da diese mit den oben beschriebenen zwei Prüfungsleistungen

in einer gleichzeitigen Beziehung stehen. Allein für die Prüfungsleistung ”

Sicherheit in


6 ERGEBNISSE 94

Informationssystemen“ kann geschlussfolgert werden, dass es sich hierbei um eine Prüfungsleistung

des ersten Semesters handelt. Da diese Prüfungsleistung an der obersten

Ebene des Gesamtgraph positioniert ist, und keine gegensätzlichen Kanten besitzt.

Zuletzt soll der Gesamtgraph der häufigen, maximalen partiellen Ordnungen in Abbildung

56 betrachtet werden. Da es sich hierbei nur um Muster mit der Kantenanzahl

= 1 handelt, sind die Ordnungsbeziehungen im Gesamtgraph auch aus der Menge der

maximalen sequentiellen Muster ableitbar.

6.5 Fazit

Durch Anwendung der Algorithmen auf die Prüfungsdaten konnten interessante Muster

gefunden werden. Ferner konnte anhand dieser Muster auch ohne Vorwissen über die Daten

Interpretationen bezüglich den häufigen bzw. typischen Studienverläufen angestellt

werden. Bei der Analyse der Ergebnisse konnten jeweils charakteristische und auffällige

Muster in den Gruppen entdeckt werden.

Ferner konnte gezeigt werden, dass die Darstellung der Muster im Gesamtgraph sich

bewährt hat, und eine geeignete Zusammenfassung der Beziehungen zwischen den häufigen

Studienverläufen darstellt. Auf diese Weise mussten häufige Studienverläufe, welche

selbterklärend im Gesamtgraph vorkamen, nicht alle explizit vorgestellt werden. Darüberhinaus

konnte auch gezeigt werden, dass das Konzept der sequentiellen Muster und

das Konzept der partiellen Ordnungen sich sehr gut ergänzen. Im Folgenden sollen die

gefundenen Ergebnisse in den vier Gruppen noch ein Mal zusammengefasst werden.

In der Gruppe bach0003 wurde eine flache Hierarchie des Gesamtgraphen festgestellt.

Einerseits liegt dies sicherlich an dem hohen Support. Andererseits ist die flache Hierarchie

ein Indiz dafür, dass die Studienverläufe sich gerade in früheren Semestern sich

ähneln. Weiterhin konnten in der Gruppe bach0003 gut erkannt werden, bei welchen

Prüfungsleistungen es sich um Pflichtprüfungsleistungen handelt.

In der Gruppe bach04 konnte ein Gesamtgraph vorgestellt werden, welcher Prüfungsleistungen

aus mindestens vier verschiedenen Semestern aufweist. Allerdings konnte erst

bei einem vergleichsweise kleinen Support, eine ausreichende Anzahl an längeren Mustern

gefunden werden. So dass interpretiert werden konnte, dass die Studienverläufe in

bach04 sich weit mehr voneinander unterscheiden als dies bei bach0003 der Fall war.

Weiterhin konnte anhand der Kantendichte im Gesamtgraph der häufigen, maximalen

partiellen Ordnungen starke Beziehungen zwischen einzelnen Prüfungsleistungen endeckt

werden.

Die Gruppe mas0003 stellt mit insgesamt 30 Studienverläufen die kleinste der vier

Gruppen dar. In diese Gruppe konnte die Auffälligkeit entdeckt werden, dass es doppelte

Kanten zwischen zwei Prüfungsleistungen im Gesamtgraph der maximalen sequentiellen

Muster gibt. Daraus folgt, dass Schnittmengen bezüglich der Teilsequenzen zwischen

zwei häufigen Studienverläufen existieren.


6 ERGEBNISSE 95

Bei der letzten Gruppe mas04 konnte erst bei einem sehr kleinen Support eine ausreichende

Menge an längeren Mustern gefunden werden. Dies bekräftigt die Annahme,

dass generell die Prüfungsversion 2004 weitaus flexiblere Studienverläufe zulässt als die

Prüfungsversionen 2000 und 2003. Es konnte in diese Gruppe drei verschiedene Gruppierungen

von häufigen Studienverläufen im Gesamtgraph gefunden werden. Die Darstellung

der Muster im Gesamtgraphen stellt also eine effektive Methode dar, um diese

Gruppierungen zu erkennen. Weiterhin konnten gegensätzliche, maximale Muster gefunden

werden, welche kennzeichnen, dass eine Prüfungsleistung in zwei verschiedenen

Semestern häufig bestanden wurden.

Dabei soll entsprechend geprüft werden, inwieweit die angestellten Interpretationen

richtig waren, und ob es Abweichungen zwischen den häufigen Studienverläufen und dem

Regelstudienplan gibt.

Dazu soll der Gesamtgraph der maximalen sequentiellen Muster in Abbildung 48a

noch ein Mal betrachtet werden. In der Analyse von bach04 wurde angenommen, dass

die ersten drei Ebenen des Gesamtgraphen auch die ersten drei Semester des Bachelor-

Studiengangs darstellen. Ferner konnte festgestellt werden, dass die Prüfungsleistungen

in der vierten Ebene des Gesamtgraphen Prüfungleistungen sind, welche häufig im vierten

oder in einem späteren Semester bestanden wurden. Diese Annahmen sollen nun

anhand des Regelstudienplans für Bachelor-Studenten mit der Prüfungsversion 2004

überprüft werden.

Dem Regelstudienplan zufolge können die folgenden Prüfungsleistungen im ersten

Semester bestanden werden: ”

Programmieren (Scheme)“, ”

Einführung Betriebssysteme“

und ein Nebenfach aus Katalog AG. Unter der Annahme, dass ”

Ausgewählte Kapitel

des Rechts für Informatiker“ ein Nebenfach aus Katalog AG ist, kann festgestellt werden,

dass die Prüfungsleistungen in der ersten Ebene des Gesamtgraphen mit den drei

Prüfungsleistungen aus dem Regelstudienplan übereinstimmt.

Weiterhin können gemäß des Regelstudienplans die folgenden Prüfungsleistungen im

zweiten Semester bestanden werden: ”

Programmieren (Scheme)“, ”

Grundlagen digitaler

Systeme, Grundlagen der Rechnerarchitektur“, ”

Lineare Algebra A und B“, ”

Analysis A

und B“, ”

Diskrete Strukturen“, ”

Elektrotechnische Grdl. I und II“ und ein Nebenfach

aus Katalog B. Vier von diesen sieben Prüfungsleistungen kommen auch in der zweiten

Ebene des Gesamtgraphen vor.

Die verbliebenen drei Prüfungsleistungen ”

Analysis A und B“, ”

Elektrotechnische

Grdl. I und II“ und ein Nebenfach aus Katalog B erscheinen überhaupt im Gesamtgraph.

Daraus folgt, dass diese Prüfungsleistungen nicht häufig im zweiten Semester bestanden

wurden. Ferner sind sie nicht Bestandteil eines maximalen sequentiellen Musters mit der

i-Länge > 2.

Hierbei sei angemerkt, dass die Prüfungsleistung ”

Analysis B“ ein maximales sequentielles

1-Muster der Gruppe bach04 darstellt (siehe Tabelle 28). D.h. ”

Analysis B“

wurde von den Bachelor-Studenten zwar häufig bestanden, ist aber nicht Bestandteil

eines längeren häufigen Studienverlaufs. Für die Prüfungleistungen ”

Analysis A und B“,


6 ERGEBNISSE 96

Elektrotechnische Grdl. I und II“ und ein Nebenfach aus Katalog B kann somit festgestellt

werden, dass sie keine häufigen bestandenen Prüfungsleistungen


darstellen.

Schließlich sollen die Prüfungsleistungen des dritten Semesters betrachtet werden.

Laut Regelstudienplan können die folgenden Prüfungsleistungen im dritten Semester bestanden

werden: Projekt Technische Informatik“, Datenstrukturen und Algorithmen“,

” ”

” Numerik A“, Wahrscheinlichkeit und Statistik A“ und ein Nebenfach aus Katalog AG.


Drei von diesen fünf Prüfungsleistungen kommen auch in der dritten Ebene des Gesamtgraphen

vor.

Die Prüfungsleistung ”

Wahrscheinlichkeit und Statistik A“ stellt dabei ein maximales

sequentielles 1-Muster der Gruppe bach04 dar. Dagegen stellt das Nebenfach aus Katalog

AG keine häufige bestandene Prüfungsleistung der Gruppe bach04 dar. D.h. ”

Wahrscheinlichkeit

und Statistik A“ wird von den Bacherlor-Studenten häufig bestanden, aber

nicht häufig im dritten Semester bestanden, wie es der Regelstudienplan vorsieht.

Im Folgenden sollen die Prüfungsleistungen in der vierten Ebene des Gesamtgraphen

dahingehend überprüft werden, ob sie tatsächlich Prüfungsleistungen des vierten

oder eines späteren Semesters darstellen. Bei Betrachtung des Regelstudienplans kann

festgestellt werden, dass ”

Grundlagen der Datenbanksysteme (Datenbanksysteme I)“ im

vierten Semester und

Software-Projekt“ im fünften Semester bestanden werden können.

Dabei stellt die Prüfungsleistung ”

SQL-Kurs“ vermutlich ein Wahlfach aus Katalog

A dar, welche auch im vierten oder einem späteren Semester bestanden werden kann.

Die unterstreicht noch ein Mal die Richtigkeit der durchgeführten Analyse der Gruppe

bach04.

Es kann festgehalten werden, dass die Ebenen im Gesamtgraph mit der Semesterzahl

des Regelstudienplans übereinstimmen. D.h. es gibt keine Abweichungen der häufigen

Studienverläufen in bach04 vom Regelstudienplan. Ferner weicht der Regelstudienplan

von den gefundenen häufigen Studienverläufen insofern ab, da nicht alle im Regelstudienplan

festgelegten Prüfungsleistungen auch in dem vorgesehenen Semester häufig bestanden

wurden (siehe ”

Wahrscheinlichkeit und Statistik A“ ).

Darüberhinaus kann festgestellt werden, dass alle Prüfungsleistungen, die im gleichen

Semester bestanden wurden, wie es der Regelstudienplan vorsieht, Bestandteil der

häufigen Studienverläufe in bach04 sind.

Es konnte anhand dieses Vergleichs festgestellt werden, dass durch Anwendung der

drei ausgewählten Konzepte sequentielle Muster, maximale und geschlossene Muster und

partielle Ordnungen eine richtige Analyse der typischen bzw. häufigen Studienverläufen

in den Prüfungsdaten auch ohne Vorwissen möglich ist.


7 SCHLUSS 97

7 Schluss

7.1 Zusammenfassung

Diese Arbeit befasste sich mit der Suche nach typischen Studienverläufen von Studierenden

der Informatik. Dafür wurden die vorliegenden Prüfungsdaten als Sequenzdaten

aufgefasst, und dementsprechend bereinigt und aufbereitet. Darauf aufbauend wurden

die Konzepte der sequentiellen Muster, der maximalen und geschlossensen Muster und

der partiellen Ordnungen vorgestellt, welche als geeignete Konzepte des Data Minings

von Sequenzdaten für die Lösung der Aufgabenstellung ausgewählt wurden. Dabei musste

das Konzept der partiellen Ordnungen um die Definition der eingeschränkten Sequenz

erweitert werden, um die Suche nach häufigen partiellen Ordnungen in den Prüfungsdaten

zu ermöglichen.

Es wurden Algorithmen für die verwendeten Konzepte vorgestellt und hinsichtlich der

Effizienz miteinander verglichen. Aufbauend auf diesen Vergleich wurden die Algorithmen

PrefixSpan für die Suche nach sequentiellen Muster und Frecpo für die Suche nach

häufigen, geschlossenen partiellen Ordnungen ausgewählt und implementiert.

Darüberhinaus wurde eine Möglichkeit zur Darstellung der Muster als Graph mit

Hilfe des Programms GraphViz vorgestellt. Auf diese Weise wurde eine informative und

geeignete Darstellungsweise der Muster bereitgestellt, in der die Beziehungen der Muster

zueinander kenntlich gemacht werden konnten.

Schließlich wurden die Algorithmen auf die Prüfungsdaten angewendet. Die daraus

resultierenden Ergebnisse wurden vorgestellt und interpretiert. Es konnte bei der Analyse

der Ergebnisse festgestellt werden, dass die Konzepte der sequentiellen Muster und der

partiellen Ordnungen sich gut ergänzten. Während die gefundenen sequentiellen Muster

die typischen Studienverläufe gut abbildete, konnte darüberhinaus durch das Konzept der

partiellen Ordnungen versteckte Ordnungsbeziehungen zwischen den Prüfungsleistungen

entdeckt werden.

Ferner wurde anhand des aktuellen Regelstudienplans für Bachelor-Studenten die Ergebnisse

und die entprechenden Interpretationen auf ihre Richtigkeit überprüft. Dabei

konnte festgestellt werden, dass alle Prüfungsleistungen, welche in den typischen Studienverläufen

vorkommen, in dem selben Semester bestanden wurden, wie es der Regelstudienplan

auch vorgesehen hat. Darüberhinaus konnte anhand des Regelstudienplans

gezeigt werden, dass die getroffenen Interpretationen auch ohne Vorwissen über die Daten

richtig waren.

Mit der Implementierung der grafischen Benutzeroberfläche SeqPO wurde eine komfortable

Möglichkeit zur Bedienung der implementierten Algorithmen geschaffen. Weiterhin

bietet SeqPO die Möglichkeit die gefundenen Muster einzeln auszuwählen und

verschiedenartig darzustellen. Ferner können die Data Mining-Ergebnisse gespeichert

und wieder geladen werden, so dass SeqPO für das Data Mining und die Analyse von

Sequenzdaten gut geeignet ist.


7 SCHLUSS 98

7.2 Ausblick

In dieser Arbeit wurde als Grundlage für die Studienverläufe jeweils nur der erste bestandene

Prüfungsversuch einer Prüfungsleistung eines Studierenden berücksichtigt. Durch

eine andere Betrachtung der Studienverläufe können auch ganz andere Muster gefunden

werden. Beispielsweise könnte man als Grundlage für die Studienverläufe jeweils

den ersten Prüfungsversuch einer Prüfungsleistung eines Studierenden verwenden. Auf

dieser Weise können andere Muster gefunden werden, die zu anderen Interpretationen

führen können.

Weiterhin wurde in dieser Arbeit die Suche nach typischen Studienverläufen unter der

Voraussetzung von keinerlei Vorwissen über die Prüfungsdaten durchgeführt. Bei entsprechendem

Expertenwissen, eröffnen sich ganz andere Möglichkeiten des Data Minings

von Sequenzdaten. Naheliegegend wäre in diesem Fall das Konzept der Suche nach sequentiellen

Mustern mit Nebenbedingungen zu nennen, bei dem nach ganz bestimmten

Studienverläufen gesucht werden kann.

Im Folgenden werden auf einige Verbesserungsmöglichkeiten bezüglich der Implementierung

hingewiesen.

Die Algorithmen PrefixSpan und Frecpo verwenden für die Erzeugung der projizierten

Datenbank die Pseudo-Projektionstechnik. Dies bedingt, dass die Sequenzdatenbank

und die projizierten Datenbanken im Hauptspeicher gespeichert werden können. Um die

Algorithmen auch auf Sequenzdatenbanken anwenden zu können, welche nicht in den

Hauptspeicher passen, muss für die Erzeugung der projizierten Datenbank eine Möglichkeit

der physischen Projektion implementiert werden.

Die grafische Benutzeroberfläche SeqPO wurde gezielt für die Bedienung der Algorithmen

PrefixSpan und Frecpo implementiert. So ist auch die Darstellung der Muster auf

die Ergebnisse der beiden Algorithmen angepasst worden. Sollte in SeqPO auch andere

Algorithmen mit eingebunden werden, muss SeqPO um Schnittstellen erweitert werden,

welche die Einbindung der Algorithmen auf einfacher Weise ermöglichen.

In dieser Arbeit wurde eine Möglichkeit der Darstellung der Muster mit Hilfe von GraphViz

vorgestellt. GraphViz bietet eine Vielzahl an weiteren Darstellungsmöglichkeiten

eines Graphen. Es ist zu untersuchen, ob es mit GraphViz noch weitere Optimierungen

der Darstellung der Muster möglich ist. Eine mögliche Verbesserung wäre das hinzufügen

von Kantenbeschriftungen in den Mustergraphen. So können die entsprechende

Supportinformation oder Muster-id als Kantenbeschriftung verwendet werden, was zu

einer Erhöhung des Informationsgehalt des Mustergraphen führt.


8 ANHANG 99

8 Anhang

8.1 Beispiel für die Verwendung von PrefixSpan

Im Folgenden soll die Verwendung des PrefixSpan-Algorithmus in einem Java-Programm

erläutert werden. Insbesondere sollen dabei die Reihenfolge der Methodenaufrufe verdeutlich

werden.

Zuerst wird dazu ein Objekt der Klasse PrefixSpan erzeugt.

PrefixSpan p = new PrefixSpan();

Danach werden die notwendigen Parameter für die Generierung der Sequenzdatenbank

über set-Methoden eingestellt.

p.setSid(String);

p.setZeitvariable(String);

p.setItem(String);

p.setFrom(String);

p.setWhere(String);

p.setTreiber(String);

p.setUrl(String);

p.setLogin(String);

p.setPasswort(String)

Sind die Parameter eingestellt, kann die Sequenzdatenbank erzeugt werden.

p.initSeqDB();

Hier wird der MinSupport-Wert eingestellt und der Data Mining-Prozess gestartet.

p.setMinSupport(int);

p.PrefixSpan(null, 0, null);

Ist der Data Mining-Prozess beendet, soll zuerst die Menge der Muster sortiert und

nicht geschlossene Muster gelöscht werden.

p.sortPattern();

p.findClosedPattern();

Mit diesem Methodenaufruf wird die Menge der gefundenen Muster in der Kommandozeile

ausgegeben.

p.outputPattern();


8 ANHANG 100

8.2 Beispiel für die Verwendung von Frecpo

Im Folgenden soll die Verwendung des Frecpo-Algorithmus in einem Java-Programm

erläutert werden. Insbesondere sollen dabei die Reihenfolge der Methodenaufrufe verdeutlich

werden.

Zuerst wird dazu ein Objekt der Klasse Frecpo erzeugt.

Frecpo f = new Frecpo();

Danach werden die notwendigen Parameter für die Generierung der Sequenzdatenbank

über set-Methoden eingestellt.

f.setSid(String);

f.setZeitvariable(String);

f.setItem(String);

f.setFrom(String);

f.setWhere(String);

f.setTreiber(String);

f.setUrl(String);

f.setLogin(String);

f.setPasswort(String)

Sind die Parameter eingestellt, kann die Sequenzdatenbank erzeugt werden.

f.initSeqDB();

Hier wird der MinSupport-Wert eingestellt und der Data Mining-Prozess gestartet.

f.setMinSupport(int);

f.findFCPO(null, 0, null);

Ist der Data Mining-Prozess beendet, sollen zuerst die HGPO’s sortiert und nicht

maximale HGPO’s gelöscht werden.

f.sortPattern();

f.findMaximalPattern();

Transformiert die HMPO’S in eine lesbare Form.

f.transformPattern();

Mit diesem Methodenaufruf werden die HMPO’s in der Kommandozeile ausgegeben.

f.outputPattern();


8 ANHANG 101

8.3 Beispiel einer Speicherdatei von SeqPO

Im Abbildung 59 ist die Speicherdatei der Ergebnisse des Frecpo-Algorithmus von der

Gruppe mas04 mit einem MinSupport = 10% abbgebildet.

mnr;sem;pruefung;pstat;pvermerk ’LAN’ and istkto = 2 and pversion =

2004 and abschl = 88;10

0;2;1

Muster

0;0;0;Immaterialgüterrecht-Der Schutz des geistigen Eigentums-

>Kryptographie

0;1;0;Immaterialgüterrecht-Der Schutz des geistigen Eigentums-

>Masterarbeit

0;2;0;Immaterialgüterrecht-Der Schutz des geistigen Eigentums->Software-

Anforderungen und -Entwurf

0;3;0;Sicherheit in Informationssystemen->Kryptographie

0;4;0;Software-Anforderungen und -Entwurf->Immaterialgüterrecht-Der

Schutz des geistigen Eigentums

0;5;0;Software-Anforderungen und -Entwurf->Masterarbeit

0;6;0;Web Data Management->Masterarbeit

Support

0;15

0;14

0;14

0;15

0;14

0;15

0;16

Abbildung 59: seqpo-Datei der Ergebnisse von mas04 mit Frecpo und MinSupport =

10%

Die Speicherdatei seqpo wurde als Text-Datei realisiert. Die Speicherinformationen in

einer Zeile werden jeweils durch einen Semikolon getrennt. Beim Laden der Speicherdatei

werden die Speicherinformationen jeweils zeilenweise ausgelesen. In der ersten Zeile

werden die Attribute für die SQL-Anfrage und der MinSupport-Wert gespeichert. In

der darauffolgenden Zeile werden die Einstellungswerte bezüglich MinSupport-Auswahl,

Muster-Auswahl und Algorithmus-Auswahl gespeichert. Die Zeile Muster kennzeichnet

den Beginn der Speicherung der Muster. Dabei wird in jede Zeile die Adressierung und

das dazugehörige Item gespeichert. Die Zeile Support kennzeichnet den Beginn der Speicherung

der Supportinformationen. Dabei wird in jede Zeile die Adressierung und die

dazugehörige Supportinformation gespeichert


8 ANHANG 102

8.4 Regelstudienplan des Bachelorstudiums Informatik ab WS

04/05


8 ANHANG 103


LITERATUR 104

Literatur

[AG02]

[AS94]

[AS95]

Ayres, J. / Gehrke, J.-E. / Yiu T. / Flannik J.: Sequential pattern

mining using bitmaps, In Proc. of the 8th ACM SIGKDD Int. Conf. on Knowledge

Discovery and Data Mining, Edmonton, Alberta, Canada, pp. 429-435

2002.

Agrawal, R. / Srikant, R.: Fast Algorithms for Mining Association Rules,

In Proc. of the 20th Int. Conf. Very Large Databases, Chile, pp. 487-499, 1994

Agrawal, R. / Srikant, R.: Mining Sequential Patterns. In Proc. of the 11th

Int’l Conference on Data Engineering, Taipei, Taiwan, pp. 3-14, 1995

[dot06] Gansner, E. / Koutsofios, E. / North, S. Drawing graphs with dot, 2006

http://www.graphviz.org/Documentation/dotguide.pdf

[DP07] Dong, G. / Pei, J.: Sequence Data Mining, Springer, 2007

[Gar05]

Garriga, G.-C.: Summarizing sequential data with closed partial orders, In

Proc. 2005 SIAM Int. Conf. Data Minning, 2005.

[GraphViz08] Graphviz Homepage http://www.graphviz.org

[HK06]

[HP00]

[LL05]

[MM00]

[MT97]

[PW06]

Han, J. / Kamber, M: Data Mining: Concepts and Techniques, Morgan

Kaufmann, 2006.

Han, J. / Pei, J. / Mortazavi-Asl, B. / Chen Q. / Dayal U. / Hsu M.-

C.: Freespan: Frequent pattern-projected sequential pattern mining, In Proc.

2000 Int. Conf. Knowledge Discovery and Data Mining (KDD’00), Boston,

MA, pp.355-359, 2000.

Lin, M.-Y. / Lee, S.-Y.: Fast discovery of sequential patterns through memory

indexing and database partitioning, Journal Information Science and

Engineering, vol. 21, pp. 109-128, 2005.

Mannila, H. / Meek, C.: Global partial orders from sequential data, In

Proc. ACM SIGKDD Int. Conf. Knowledge Discovery in Databases (KDD),

Boston, MA, pp. 161-168 2000.

Mannila, H. / Toivonen, H. / Verkamo, A.-I.: Discovery of frequent

episodes in event sequences, Data Mining and Knowledge Discovery vol. 1, no.

3, pp. 259-289, 1997.

Pei, J. / Wang, H. / Liu, J. / Wang, K. / Wang, J. / Yu, P.-S.

Discovering Frequent Closed Partial Orders from Strings, IEEE Transactions

on knowledge and data engineering, vol. 18, no. 11, pp. 1467-1481, 2006.


LITERATUR 105

[PH01]

[SA96]

[Spe07]

Pei, J. / Han, J / Mortazavi-Asl, B. / Pinto, H. / Chen, Q. / Dayal,

U. / Hsu, M.-C. PrefixSpan: Mining Sequential Patterns Efficiently

by Prefix-Projected Pattern Growth, Proc. 2001 Int. Conf. Data Eng., pp.

215-224, 2001.

Srikant, R. / Agrawal, R: Mining Sequential Patterns: Generalizations and

Performance Improvements. In Proc. of the 5th Int. Conf. Extending Database

Technology (EDBT), Avignon, France, pp. 3-17 1996

Spehling, M.: Analyse und Erweiterung von Methoden des Data Mining in

räumlichen Datenbanken, Masterarbeit, Leibniz Universität Hannover, 2007

[Weka07] Weka Homepage http://www.cs.waikato.ac.nz/ml/weka/

[WH03]

[WH04]

Wang, J. / Han, J. / Pei, J.: CLOSET+: Searching for the best strategies

for mining frequent closed itemsets. In Proc. of the 9th ACM SIGKDD Int.

Conf. on Knowledge Discovery ans Data Mining (KDD’03), Washington, D.C.,

pp. 236-245, 2003

Wang, J. / Han, J.: BIDE: Efficient mining of frequent closed sequences. In

Proc. of the 20th IEEE Int. Conf. on Data Engineering, Boston, Massachusetts,

pp. 79-90, 2004

[Wiki08] Wikipedia - Die freie Enzyklopädie:

Ordnungsrelation

Hasse-Diagramm

[YH03]

[Zaki01]

[ZH02]

Yan, X. / Han, J. / Afshar, R.: CloSpan: Mining closed sequential patterns

in large databases. In Proc. SIAM Int. Conf. Data Mining (KDD’03), San

Francisco, CA, 2003

Zaki, M.J.: SPADE: An efficient algorithm for mining frequent sequences.

Journal Machine Learning, vol. 42, nos. 1-2, pp. 31-60, 2001

Zaki, M.J. / Hsiao, C.J: CHARM: An efficient algorithm for closed itemset

mining. In Proc. SIAM Int. Conf. Data Mining, Arlington, VA, pp. 457-473,

2002


Erklärung

Hiermit versichere ich, dass ich die vorliegende Arbeit selbstständig verfasst und keine

anderen als die angegebenen Quellen und Hilfsmittel benutzt habe, dass alle Stellen

der Arbeit, die wörtlich oder sinngemäß aus anderen Quellen übernommen wurden, als

solche kenntlich gemacht und dass die Arbeit in gleicher oder ähnlicher Form noch keiner

Prüfungsbehörde vorgelegt wurde.

Hannover, 18. Juni 2008

Ngo Duc, Kien

Weitere Magazine dieses Users
Ähnliche Magazine