Modern databases contain vast quantities of undiscovered knowledge that cannot be exploited without the proper tools. Da
310 107 6MB
German Pages 328 Year 2016
Table of contents :
Vorwort
Inhaltsverzeichnis
1. Einführung
1.1 Auswertung von Massendaten
1.2 Data Mining und Business Intelligence
1.3 Ablauf einer Datenanalyse
1.4 Interdisziplinarität
1.5 Erfolgreiche Beispiele
1.6 Werkzeuge
1.6.1 KNIME
1.6.2 WEKA
1.6.3 JavaNNS
2. Grundlagen des Data Mining
2.1 Grundbegriffe
2.2 Datentypen
2.3 Abstands- und Ähnlichkeitsmaße
2.4 Grundlagen Künstlicher Neuronaler Netze
2.5 Logik
2.6 Überwachtes und unüberwachtes Lernen
3. Anwendungsklassen
3.1 Cluster-Analyse
3.2 Klassifikation
3.3 Numerische Vorhersage
3.4 Assoziationsanalyse
3.5 Text Mining
3.6 Web Mining
4. Wissensrepräsentation
4.1 Entscheidungstabelle
4.2 Entscheidungsbäume
4.3 Regeln
4.4 Assoziationsregeln
4.5 Instanzenbasierte Darstellung
4.6 Repräsentation von Clustern
4.7 Neuronale Netze als Wissensspeicher
5. Klassifikation
5.1 K-Nearest Neighbour
5.1.1 K-Nearest-Neighbour-Algorithmus
5.1.2 Ein verfeinerter Algorithmus
5.2 Entscheidungsbaumlernen
5.2.1 Erzeugen eines Entscheidungsbaums
5.2.2 Auswahl eines Attributs
5.2.3 Der ID3-Algorithmus zur Erzeugung eines Entscheidungsbaums
5.2.4 Entropie
5.2.5 Der Gini-Index
5.2.6 Der C4.5-Algorithmus
5.2.7 Probleme beim Entscheidungsbaumlernen
5.2.8 Entscheidungsbaum und Regeln
5.3 Naive Bayes
5.3.1 Bayessche Formel
5.3.2 Der Naive-Bayes-Algorithmus
5.4 Vorwärtsgerichtete Neuronale Netze
5.4.1 Architektur
5.4.2 Das Backpropagation-of-Error-Lernverfahren
5.4.3 Modifikationen des Backpropagation-Algorithmus
5.4.4 Ein Beispiel
5.5 Support Vector Machines
5.5.1 Grundprinzip
5.5.2 Formale Darstellung von Support Vector Machines
5.5.3 Ein Beispiel
6. Cluster-Analyse
6.1 Arten der Cluster-Analyse
6.2 Der k-Means-Algorithmus
6.3 Der k-Medoid-Algorithmus
6.4 Erwartungsmaximierung
6.5 Agglomeratives Clustern
6.6 Dichtebasiertes Clustern
6.7 Clusterbildung mittels selbstorganisierender Karten
6.7.1 Aufbau
6.7.2 Lernen
6.7.3 Visualisierung einer SOM
6.7.4 Ein Beispiel
6.8 Clusterbildung mittels neuronaler Gase
6.9 Clusterbildung mittels ART
6.10 Der Fuzzy-c-Means-Algorithmus
7. Assoziationsanalyse
7.1 Der A-Priori-Algorithmus
7.1.1 Generierung der Kandidaten
7.1.2 Erzeugen der Regeln
7.2 Frequent Pattern Growth
7.3 Assoziationsregeln für spezielle Aufgaben
7.3.1 Hierarchische Assoziationsregeln
7.3.2 Quantitative Assoziationsregeln
7.3.3 Erzeugung von temporalen Assoziationsregeln
8. Datenvorbereitung
8.1 Motivation
8.2 Arten der Datenvorbereitung
8.2.1 Datenselektion und -integration
8.2.2 Datensäuberung
8.2.3 Datenreduktion
8.2.4 Datentransformation
8.3 Ein Beispiel
9. Bewertung
9.1 Prinzip der minimalen Beschreibungslängen
9.2 Interessantheitsmaße für Assoziationsregeln
9.2.1 Support
9.2.2 Konfidenz
9.2.3 Gain-Funktion
9.2.4 p-s-Funktion
9.2.5 Lift
9.3 Gütemaße und Fehlerkosten
9.3.1 Fehlerraten
9.3.2 Weitere Gütemaße für Klassifikatoren
9.3.3 Fehlerkosten
9.4 Testmengen
9.5 Qualität von Clustern
9.6 Visualisierung
10. Eine Data-Mining-Aufgabe
10.1 Die Aufgabe
10.2 Das Problem
10.3 Die Daten
10.4 Datenvorbereitung
10.5 Experimente
10.5.1 K-Nearest Neighbour
10.5.2 Naive Bayes
10.5.3 Entscheidungsbaumverfahren
10.5.4 Neuronale Netze
10.6 Auswertung der Ergebnisse
A. Anhang
A.1 Iris-Daten
A.2 Sojabohnen
A.3 Wetter-Daten
A.4 Kontaktlinsen-Daten
Abbildungsverzeichnis
Tabellenverzeichnis
Verzeichnis der Symbole
Verzeichnis der Abkürzungen
Literaturverzeichnis
Index
Jürgen Cleve, Uwe Lämmel Data Mining De Gruyter Studium
Weitere empfehlenswerte Titel Advanced Data Management Lena Wiese, 2015 ISBN 978-3-11-044140-6, e-ISBN 978-3-11-044141-3, e-ISBN (EPUB) 978-3-11-043307-4
Big Data in Medical Science and Healthcare Peter Langkafel (Ed.), 2015 ISBN 978-3-11-044528-2, e-ISBN 978-3-11-044574-9; Set-ISBN 978-3-11-044575-6
Datenbanksysteme, 10. Auflage Alfons Kemper, 2015 ISBN 978-3-11-044375-2
IT-Sicherheit, 9. Auflage Claudia Eckert, 2014 ISBN 978-3-486-77848-9, e-ISBN 978-3-486-85916-4, e-ISBN (EPUB) 978-3-11-039910-3
Jürgen Cleve, Uwe Lämmel
Data Mining
2. Auflage
Autoren Prof. Dr. rer. nat. Jürgen Cleve Hochschule Wismar Fakultät für Wirtschaftswissenschaften Philipp-Müller-Straße 14 23966 Wismar [email protected]
Prof. Dr.-Ing. Uwe Lämmel Hochschule Wismar Fakultät für Wirtschaftswissenschaften Philipp-Müller-Straße 14 23966 Wismar [email protected]
ISBN 978-3-11-045675-2 e-ISBN (PDF) 978-3-11-045677-6 e-ISBN (EPUB) 978-3-11-045690-5 Library of Congress Cataloging-in-Publication Data A CIP catalog record for this book has been applied for at the Library of Congress. Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.dnb.de abrufbar. © 2016 Walter de Gruyter GmbH, Berlin/Boston Einbandabbildung: Zoonar/Zoonar/thinkstock Druck und Bindung: CPI books GmbH, Leck ♾ Gedruckt auf säurefreiem Papier Printed in Germany www.degruyter.com
Vorwort Nicht nur täglich oder stündlich, sondern in jeder Sekunde werden Tausende oder Millionen von Daten gemessen, erhoben und gespeichert. Das Sammeln von Daten gehört zu unserem Alltag. Warum werden Daten gesammelt? Zum einen werden Daten gesammelt, weil es möglich ist und das Speichern kaum oder kein Geld kostet. Zum anderen wird selbstverständlich auch ein Nutzen erwartet, oft wird diese Frage aber erst nach dem Sammeln gestellt und beantwortet. Das Datensammeln geschieht sowohl in unserem beruflichen als auch im privaten Umfeld: Unternehmensdaten, Finanztransaktionsdaten, Daten über den Kauf beziehungsweise Verkauf von Waren, Daten zur Steuerung von Fahrzeugen oder Prozessen bis hin zu Daten, die unseren Gesundheitszustand beschreiben. Unser Leben wird begleitet von einer Vielzahl von Daten. Die Anzahl der Unternehmen, die sich der Erhebung von Daten und deren Auswertung verschrieben haben, steigt ständig. Daten und die daraus abgeleitete Information sind mittlerweile zu einer Handelsware und auch zu einem Produktionsfaktor geworden. In diesem Buch behandeln wir Techniken, mit deren Hilfe solche Datenmengen ausgewertet werden können. Unser Ziel ist nicht, eine vollständige Übersicht über alle Verfahren zu geben. Vielmehr geht es in diesem Buch um eine Einführung in die Prozesse und Techniken der Mustererkennung in strukturierten Daten, die dem Teilgebiet des Data Mining zugeordnet werden. Diese Algorithmen und Basistechniken werden in vielen Anwendungen eingesetzt. Statistische Verfahren zur Datenauswertung werden nur am Rande erwähnt. Das Gebiet der Textanalyse, des sogenannten Text Minings wird von uns nicht betrachtet. Was können Sie erwarten? Das Buch gibt eine Einführung in das Gebiet des Data Minings. • Zunächst geben wir einen Überblick über Data Mining und diskutieren einige Grundbegriffe und Vorgehensweisen. • Anschließend werden Anwendungsklassen beschrieben, um die Einsatzmöglichkeiten des Data Minings erkennen zu können. • Die Möglichkeiten, die Modelle zu repräsentieren, werden vorgestellt.
• Die Verfahren zur Analyse der Daten – das eigentliche Data Mining – nehmen natürlich den größten Raum in diesem Buch ein. • Die Daten müssen vorbereitet werden, um eine Analyse zu ermöglichen beziehungsweise die Qualität der Daten zu verbessern.
VI
Vorwort Die Qualität der vorliegenden Daten kann die Resultate stark beeinflussen. Folglich ist die Datenvorverarbeitung für den Erfolg einer Datenanalyse sehr wichtig. Der Datenvorbereitung ist deshalb ein separates Kapitel gewidmet. • Es schließt sich die Bewertung der Resultate an. Sind sie neu, sind sie wirklich relevant? In diesem Kapitel gehen wir auch auf Möglichkeiten der Visualisierung ein. Das Ergebnis einer Datenanalyse muss geeignet dargestellt werden. Die adäquate Visualisierung der Resultate ist für die Akzeptanz einer Datenanalyse wichtig. • Anhand eines größeren Beispiels wird die Vorgehensweise im Data Mining illustriert. Die vorher eingeführten Analysetechniken werden eingesetzt.
Den Block zum eigentlichen Data Mining haben wir etwas anders aufgebaut. Meistens findet man in Lehrbüchern Abschnitte, die sich beispielsweise ausschließlich mit Klassifizierung befassen. Dort werden dann alle Verfahren behandelt, die für eine Klassifizierung geeignet sind. Dies hat sich aus unserer Sicht als ungeschickt herausgestellt, da zum Beispiel Entscheidungsbäume sowohl für die Klassifizierung als auch die numerische Vorhersage geeignet sind. Folglich haben wir die Aufteilung etwas anders vorgenommen. Zunächst werden im Kapitel 3 Anwendungsklassen vorgestellt. Welche typischen Anwendungsgebiete gibt es für Data Mining? Im Kapitel 4 wird dann auf geeignete Darstellungsmöglichkeiten für Data-MiningModelle eingegangen. Wie kann ein Klassifikationsmodell dargestellt werden? Wie kann man eine Cluster-Aufteilung repräsentieren? In den anschließenden Kapiteln werden dann die Verfahren – den jeweiligen Anwendungsklassen zugeordnet – behandelt. Man wird also zum Thema Klassifikation in mehreren Kapiteln etwas finden. Die Datenvorbereitung (Kapitel 8) haben wir, obwohl diese Phase natürlich in einem Data-Mining-Prozess die erste – und meistens auch eine für den Erfolg sehr wichtige – Etappe ist, weiter hinten platziert, da dies für den Leser unserer Meinung nach einfacher zu verstehen ist, wenn man die Data-Mining-Algorithmen bereits kennt. Erst nach dem Verstehen der Data-Mining-Verfahren kann man nachvollziehen, wieso und wie man bestimmte Daten vorverarbeiten muss. Im Kapitel 9 betrachten wir einige Techniken zur Bewertung der Resultate, die durch Data Mining erzielt wurden. Dieses Buch ist ein Lehrbuch. Data Mining ist mittlerweile in fast allen Curricula von Studiengängen mit einem Informatikbezug enthalten. Anliegen dieses Buchs ist es, eine Einführung in das interessante Gebiet des Data Minings zu geben. Wir haben bewusst bei einigen Verfahren auf die Darstellung der zugrunde liegenden mathematischen Details verzichtet. Ebenso haben wir uns auf grundlegende Algorithmen konzentriert. Data Mining ist ein Gebiet, welches Erfahrung verlangt. Ein Projekt, in dem blind DataMining-Werkzeug eingesetzt werden, wird sehr selten erfolgreich sein. Das Verständnis für den jeweiligen Gegenstandsbereich, die vorliegenden Daten, aber eben auch für die Data-Mining-Verfahren ist eine notwendige Voraussetzung für ein erfolgreiches Projekt.
Vorwort
VII
Die Beispiele haben wir zu großen Teilen in Knime [KNI], Weka [WEK] und JavaNNS [JAV] implementiert. Das Buch enthält viele Screenshots von Knime-Workflows. Wir empfehlen, die Beispiele mittels der Werkzeuge nachzuvollziehen. Hierzu sollte man sich vorab die kurzen Einführungen in diese Werkzeuge nicht nur durchlesen, sondern die Systeme auch installieren und ausprobieren. Es gibt mittlerweile eine Reihe von Wettbewerben, bei denen reale Probleme zu lösen sind. Die Autoren haben mit ihren Studenten mehrfach am Data Mining Cup [DMC] teilgenommen, der seit einer Reihe von Jahren unter der Leitung der Chemnitzer Firma prudsys durchgeführt wird. Ferner gibt es viele Plattformen, auf denen echte Probleme zu lösen sind, beispielsweise die Plattform www.kaggle.com. Wer an Zusatzinformationen zum Thema Data Mining interessiert ist, findet viele gute Seiten im WWW. Informationen zu unserem Buch finden Sie unter: www.wi.hs-wismar.de/dm-buch An dieser Stelle möchten wir uns bei der Firma prudsys sowie den Entwicklern von Knime und Weka bedanken, die uns die Verwendung von Beispielen aus ihrem Umfeld gestattet haben. Die Zusammenarbeit mit dem Oldenbourg-Verlag, insbesondere mit Herrn Breimeier, Herrn Dr. Gerhard Pappert und (bei der 2. Auflage) mit Herrn Leonardo Milla, war sehr angenehm und konstruktiv. Ebenso danken wir unseren Wirtschaftsinformatik-Studenten Tobias Aagard, Johannes Blersch, Roman Knolle und Dominik Schauer, die mit vielen kritischen Hinweisen zum Gelingen des Buchs beigetragen haben. In der 2. Auflage – die Sie in den Händen halten – haben wir die Grundstruktur beibehalten. Wir haben eine Reihe von Änderungen, Aktualisierungen und Erweiterungen vorgenommen. Aufgenommen haben wir zusätzlich einen Abschnitt über Fuzzy c-Means. An dieser Stelle möchten wir uns ausdrücklich für die Anregungen bedanken, die etliche Leser uns zusandten.
Wismar, Januar 2016
Jürgen Cleve und Uwe Lämmel
Inhaltsverzeichnis 1
Einführung
1
1.1
Auswertung von Massendaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Data Mining und Business Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3
Ablauf einer Datenanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.4
Interdisziplinarität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5
Erfolgreiche Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6 1.6.1 1.6.2 1.6.3
Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . KNIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WEKA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JavaNNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 18 27 32
2
Grundlagen des Data Mining
37
2.1
Grundbegriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2
Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.3
Abstands- und Ähnlichkeitsmaße . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.4
Grundlagen Künstlicher Neuronaler Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.5
Logik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6
Überwachtes und unüberwachtes Lernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3
Anwendungsklassen
3.1
Cluster-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2
Klassifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3
Numerische Vorhersage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4
Assoziationsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.5
Text Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.6
Web Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
57
X
Inhaltsverzeichnis
4
Wissensrepräsentation
69
4.1
Entscheidungstabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2
Entscheidungsbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3
Regeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4
Assoziationsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.5
Instanzenbasierte Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.6
Repräsentation von Clustern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.7
Neuronale Netze als Wissensspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5
Klassifikation
5.1 5.1.1 5.1.2
K-Nearest Neighbour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 K-Nearest-Neighbour-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Ein verfeinerter Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8
Entscheidungsbaumlernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erzeugen eines Entscheidungsbaums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Auswahl eines Attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Der ID3-Algorithmus zur Erzeugung eines Entscheidungsbaums . . . . . . . . Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Der Gini-Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Der C4.5-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Probleme beim Entscheidungsbaumlernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entscheidungsbaum und Regeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 5.3.1 5.3.2
Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Bayessche Formel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Der Naive-Bayes-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.4 5.4.1 5.4.2 5.4.3 5.4.4
Vorwärtsgerichtete Neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das Backpropagation-of-Error-Lernverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifikationen des Backpropagation-Algorithmus . . . . . . . . . . . . . . . . . . . . . . Ein Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
117 118 120 125 126
5.5 5.5.1 5.5.2 5.5.3
Support Vector Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grundprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formale Darstellung von Support Vector Machines . . . . . . . . . . . . . . . . . . . . . Ein Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
130 130 131 133
6
Cluster-Analyse
137
6.1
Arten der Cluster-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.2
Der k-Means-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.3
Der k-Medoid-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
83
92 92 94 96 104 106 107 108 109
Inhaltsverzeichnis
XI
6.4
Erwartungsmaximierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.5
Agglomeratives Clustern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6.6
Dichtebasiertes Clustern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
6.7 6.7.1 6.7.2 6.7.3 6.7.4
Clusterbildung mittels selbstorganisierender Karten . . . . . . . . . . . . . . . . . . . . Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Visualisierung einer SOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ein Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.8
Clusterbildung mittels neuronaler Gase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
6.9
Clusterbildung mittels ART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.10
Der Fuzzy-c-Means-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7
Assoziationsanalyse
7.1 7.1.1 7.1.2
Der A-Priori-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Generierung der Kandidaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Erzeugen der Regeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
7.2
Frequent Pattern Growth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
7.3 7.3.1 7.3.2 7.3.3
Assoziationsregeln für spezielle Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hierarchische Assoziationsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quantitative Assoziationsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erzeugung von temporalen Assoziationsregeln . . . . . . . . . . . . . . . . . . . . . . . . . .
195 195 196 198
8
Datenvorbereitung
201
8.1
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
8.2 8.2.1 8.2.2 8.2.3 8.2.4
Arten der Datenvorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenselektion und -integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datensäuberung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenreduktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datentransformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3
Ein Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9
Bewertung
9.1
Prinzip der minimalen Beschreibungslängen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5
Interessantheitsmaße für Assoziationsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Konfidenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gain-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p-s-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
166 166 167 170 170
181
205 205 207 212 216
229 230 231 231 233 234 235
XII
Inhaltsverzeichnis
9.3 9.3.1 9.3.2 9.3.3
Gütemaße und Fehlerkosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fehlerraten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Weitere Gütemaße für Klassifikatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fehlerkosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
235 235 236 239
9.4
Testmengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
9.5
Qualität von Clustern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
9.6
Visualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
10
Eine Data-Mining-Aufgabe
10.1
Die Aufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
10.2
Das Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
10.3
Die Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
10.4
Datenvorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.5 10.5.1 10.5.2 10.5.3 10.5.4
Experimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K-Nearest Neighbour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entscheidungsbaumverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.6
Auswertung der Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
A
Anhang
A.1
Iris-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
A.2
Sojabohnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
A.3
Wetter-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
A.4
Kontaktlinsen-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
255
266 268 270 272 275
285
Abbildungsverzeichnis
293
Tabellenverzeichnis
301
Verzeichnis der Symbole
303
Verzeichnis der Abkürzungen
305
Literaturverzeichnis
307
Index
313
1
Einführung Data you don’t need is never lost. Ander’s first negative Principle of Computers
1.1
Auswertung von Massendaten
Die Menge an verfügbaren Daten verdoppelt sich in immer kürzeren Abständen. Jedes Unternehmen, jede Institution sammelt freiwillig oder aufgrund rechtlicher Bestimmungen Unmengen an Daten. Banken speichern die Transaktionsdaten; Firmen speichern nicht nur Daten über ihre Kunden, beispielsweise über deren Kaufverhalten; Wetterinstitute sammeln Wetterdaten. Denken Sie einmal nach: Wissen Sie, wer welche Daten über Sie speichert? Wenn Sie berufstätig sind, wie viele Daten werden von Ihrem Unternehmen gesammelt? Durch leistungsfähige Computer sind wir nun nicht nur in der Lage, diese Daten zu speichern, sondern wir können diese Datenmengen auch analysieren und somit interessante Informationen generieren. Mit der Veröffentlichung von Datenmengen ist man in den letzten Jahren deutlich vorsichtiger geworden, daher zunächst einige Beispiele aus dem Jahr 2000 [Run00]. Die anfallenden Datenmengen sind seitdem sicher auf ein Vielfaches gestiegen. Industrielle Prozessdaten Zur Analyse der Altpapieraufbereitung in einer Papierfabrik stehen an jeder der 8 DeInking-Zellen jeweils 54 Sensoren zur Verfügung: 3.800.000 Messwerte pro Tag. Umsatzdaten WalMart führte eine Warenkorb-Analyse durch, 20 Millionen Transaktionen pro Tag erforderten eine Datenbank mit einer Kapazität von 24 Terabyte. Genom-Daten In vielen Genom-Projekten wird versucht, aus den Genomen Informationen zu extrahieren. Das menschliche Genom enthält 60.000–80.000 Gene, das sind etwa 3 Milliarden DNA-Basen. Bilder Die NASA nimmt mit ihrem Earth Observing System Oberflächenbilder der Erde auf: 50 GByte pro Sekunde.
2
1 Einführung
Textinformationen Das World Wide Web enthält eine rapide wachsende Anzahl von Seiten und damit verbunden Daten und Informationen. Die Frage, die sich natürlich sofort ergibt: Was machen wir mit den ganzen Daten, die wir täglich sammeln? Zur Auswertung von umfangreichen Daten reicht „Draufschauen“ nicht mehr aus. Auch die Statistik stößt häufig an ihre Grenzen. Vielmehr benötigt man weitere Datenanalyse-Techniken. Man sucht in den Daten nach Mustern, nach Zusammenhängen, um so beispielsweise Vorhersagen für ein bestimmtes Kundenverhalten treffen zu können. Diese Suche nach Mustern oder Zusammenhängen in den Daten ist Gegenstand des Data Minings. Während man im Bergbau, zum Beispiel beim Coal Mining, die Kohle sucht und abbaut, will man im Data Mining nicht die Daten „abbauen“, sondern man sucht nach den Schätzen, die in den Daten verborgen sind. Data Mining sucht nach unbekannten Mustern und Abhängigkeiten in den gegebenen Daten. Eines dieser Suchziele ist es, Objekte in Klassen einzuteilen, die vorher bekannt oder auch unbekannt sein können. Folgende Anwendungsbeispiele verdeutlichen die praktische Relevanz: • Kredit oder kein Kredit? Aus alten Kreditdaten werden Regeln als Entscheidungshilfe für die Bewertung der Kreditwürdigkeit eines Kunden abgeleitet. • Typen von Reisenden: Man generiert Muster von typischen Reisenden, um auf den jeweiligen Kundentypen zugeschnittene Angebote zusammenzustellen. • Windeln und Bier: Es wird das Kaufverhalten von Kunden analysiert, um logische Abhängigkeiten zwischen Produkten zu finden. Wer Windeln kauft, nimmt häufig auch Bier. • Gen-Analyse: Es werden die Gene von Diabetes-Kranken mit dem Ziel untersucht, die für die Krankheit vermutlich verantwortlichen oder mitverantwortlichen Gene zu identifizieren. Data Mining befasst sich mit der Analyse von Massendaten. Das Ziel des Data Minings ist es, aus Massendaten – wie beispielsweise Kunden- oder Unternehmensdaten, Unternehmenskennzahlen und Prozessdaten – nützliches Wissen zu extrahieren. Gelingt dies, so kann daraus ein entscheidender Wettbewerbsvorteil für das Unternehmen im Markt entstehen. Data Mining lässt sich somit in die Gebiete Wissensmanagement – es wird Wissen aus Daten extrahiert – und Business Intelligence – es werden die verschiedensten Daten aus unterschiedlichen Bereichen analysiert – einordnen.
1.2 Data Mining und Business Intelligence
3
Data Mining geht von einigen Annahmen aus: 1. Es sind genügend Daten vorhanden. Die Daten sind zum einen in ausreichend großer Zahl verfügbar. Zum anderen sind sie repräsentativ für den zu untersuchenden Weltausschnitt. 2. Die verfügbaren Daten sind nicht nur für die Vergangenheit gültig. Sie decken das zu untersuchende Gebiet also nicht nur gegenwärtig, sondern auch in Zukunft ab. 3. Die Daten enthalten die Information, die man extrahieren will. 4. Die Daten sind verwendbar und unterliegen keinen rechtlichen Restriktionen.
1.2
Data Mining und Business Intelligence
Schaut man sich das Lexikon der Wirtschaftsinformatik an [KBG+ 14] und hier den Beitrag zum Data Mining [Cha13], so stellt man fest, dass das Data Mining als eine Herangehensweise analytischer Informationssysteme, die wiederum dem Business Intelligence untergeordnet sind, eingeordnet ist. Die Begriffshierarchie aus dem Lexikon der Wirtschaftsinformatik: Informations-, Daten- und Wissensmanagement ⇓ Business Intelligence ⇓ Analytische Informationssysteme, Methoden der ⇓ Data Mining Wir schließen uns dieser Sichtweise an und sehen in Data Mining eine Sammlung von Techniken, Methoden und Algorithmen für die Analyse von Daten, die somit auch Grundtechniken für neuere und komplexere Ansätze, wie das Business Intelligence oder auch Big Data darstellen. Business Intelligence (BI) ist ein relativ neuer Begriff. Ausgangspunkt ist die Beobachtung, dass in Zeiten der Globalisierung und des Internets ein effektiver und effizienter Umgang mit dem in einem Unternehmen verfügbaren Wissen nicht nur ein Wettbewerbsvorteil, sondern für das Überleben wichtig ist. Unter Business Intelligence werden heute Techniken und Architekturen für eine effiziente Verwaltung des Unternehmenswissens zusammengefasst, natürlich einschließlich verschiedener Auswertungsmöglichkeiten. Die Aufgaben von Business Intelligence sind somit: • Wissensgewinnung,
• Wissensverwaltung und • Wissensverarbeitung.
4
1 Einführung
Business Intelligence hat – aus Informatik-Sicht – viele Querbezüge zum Informationsund Wissensmanagement, zu Datenbanken und Data Warehouses, zur Künstlichen Intelligenz, sowie natürlich auch zum Data Mining (einschließlich OLAP – Online Analytical Processing, Statistik). Eine allgemein akzeptierte Definition des Begriffs Business Intelligence gibt es bis heute nicht. Hinweise zur Entstehungsgeschichte des Begriffes kann man wieder dem Lexikon der Wirtschaftsinformatik entnehmen [KBG+ 14]. Man findet diese in [Hum14] unter dem entsprechenden Stichwort. Unter Business Intelligence im engeren Sinn versteht man die Kernapplikationen, die eine Entscheidungsfindung direkt unterstützen. Hierzu zählt man beispielsweise das Online Analytical Processing (OLAP), die Management Information Systems (MIS) sowie Executive Information Systems (EIS). Ein etwas weiterer BI-Begriff stellt die Analysen in den Vordergrund. Folglich gehören hierzu alle Anwendungen, bei denen der Nutzer Analysen durchführt oder vorbereitet. Neben den oben genannten Anwendungen zählt man nun auch beispielsweise das Data Mining, das Reporting sowie das analytische Customer Relationship Management dazu. Business Intelligence im weiten Verständnis umfasst schließlich alle Anwendungen, die im Entscheidungsprozess benutzt werden, also beispielsweise auch Präsentationssysteme sowie die Datenspeicherung und -verwaltung. In der Abbildung 1.1, die sich an [KBM13] anlehnt, sind die drei Sichtweisen dargestellt. Prozess− phase Daten− bereit− stellung
Extraktion Transformation Data Warehouse
Weites BI−Verständnis Standard− Reporting Ad−hoc− Reporting
Enges BI OLAP Daten− aus− wertung
Data / Text Mining
Kennzahlen / Balanced Scorecards
MIS/ EIS
Business Activity Monitoring
Planung / Konsolidierung Analytisches CRM
Analyseorientiertes BI Technik
Abb. 1.1: Business Intelligence (nach [Glu01])
Anwendung
1.3 Ablauf einer Datenanalyse
5
Schwerpunkt dieses Buchs sind die Techniken zur Wissensextraktion mittels Data Mining. Wir betrachten folglich nur einen kleinen Ausschnitt aus dem BI-Spektrum. Der Zusammenhang zwischen Data Mining und Data Warehouses ist offensichtlich. Data Warehouses haben den Anspruch, integrierte Daten für die Unterstützung von Managemententscheidungen bereitzuhalten, und sollten folgende Eigenschaften aufweisen (vgl. [Pet05, S. 40 ff.]): • Es sollte sich am Nutzer, dem Entscheidungsträger oder Manager orientieren und so insbesondere den Informationsbedarf des Managements bedienen. • Es umfasst alle entscheidungsrelevanten Daten in einer konsistenten Form.
• Ein Data Warehouse ist nur die „Sammelstelle“ für Daten aus externen Quellen. Eine Aktualisierung der Daten erfolgt normalerweise nur in fest definierten Abständen. Der Zugriff auf die Daten erfolgt dann im Data Warehouse nur noch lesend. • Die Daten müssen zeitabhängig verwaltet werden, so dass Trends erkannt werden können. • Die Daten werden nicht 1:1 aus den Quellen übernommen, sondern bereits kumuliert oder gefiltert. In einem Data Warehouse ist somit Redundanz möglich. Um diesen Anforderungen gerecht zu werden, sind – neben Komponenten zur effizienten und konsistenten Datenhaltung und für schnelle, flexible Zugriffe auf die Daten – natürlich auch Werkzeuge zur Datenanalyse nötig. Deshalb verfügen viele Data-WarehouseSysteme über Komponenten zur Datenanalyse oder zumindest über Schnittstellen zu externen Werkzeugen.
1.3
Ablauf einer Datenanalyse
Data Mining ist wie vorher beschrieben in die analytischen Informationssysteme eingebettet und kann allein oder integriert in Business Intelligence oder als Baustein eines Data Warehouses betrieben werden. Wie läuft nun ein Data-Mining-Prozess selbst ab? Folgende Phasen können unterschieden werden: Selektion – Auswahl der geeigneten Datenmengen: Zunächst werden die verfügbaren Daten gesichtet und in eine Datenbank, meist sogar in eine Datentabelle übertragen. Datenvorverarbeitung – Behandlung fehlender oder problembehafteter Daten: In dieser Phase werden die Daten bereinigt. Fehler müssen beseitigt, fehlende oder widersprüchliche Werte korrigiert werden. Transformation – Umwandlung in adäquate Datenformate: Häufig ist in Abhängigkeit vom jeweils verwendeten Verfahren eine Transformation der Daten erforderlich, beispielsweise die Gruppierung von metrischen Werten in Intervalle.
6
1 Einführung
Data Mining – Suche nach Mustern: Hier geschieht das eigentliche Data Mining, die Entwicklung eines Modells wie die Erstellung eines Entscheidungsbaums. Interpretation und Evaluation – Interpretation der Ergebnisse und Auswertung: In der abschließenden Phase müssen die gefundenen Resultate geprüft werden. Sind sie neu, sind sie hilfreich? In Abbildung 1.2 ist der Ablauf mit den hier vorgestellten Phasen des Data Minings dargestellt. Meistens wird sowohl der gesamte Prozess als auch der tatsächliche AnalyseSchritt als Data Mining bezeichnet.
Evaluation & Interpretation Data Mining Information Wissen
Datentransformation Datenvorverarbeitung Datenselektion
bereinigte Daten
bereinigte und transformierte Daten
Muster Regeln ......
Zieldaten Daten Abb. 1.2: Ablauf eines Data-Mining-Prozesses [FPSS96]
Unter Knowledge Discovery in Databases (KDD) wird häufig der Gesamtprozess verstanden. Ein Teilschritt ist das eigentliche Data Mining. Die Begriffe Data Mining und KDD werden dennoch meistens synonym benutzt.
Das CRISP-Data-Mining-Modell Ein zweites Modell für Data-Mining-Prozesse ist das CRISP-Modell. Das CRISP-Modell wurde durch ein Konsortium, bestehend aus folgenden Firmen, entwickelt: • NCR Corporation, • Daimler AG,
1.3 Ablauf einer Datenanalyse
7
• SPSS,
• Teradata und • OHRA.
CRISP-DM steht für Cross Industry Standard Process for Data Mining. Ziel ist, einen Data-Mining-Prozess zu definieren und das berechnete Modell zu validieren.
Data Understanding
Business Understanding
Data Preparation Deployment Data Modelling Evaluation
Abb. 1.3: CRISP-Modell
Das CRISP-Modell geht von einem Lebenszyklus in 6 Etappen aus (vgl. Abbildung 1.3): 1. Verstehen der Aufgabe Ohne ein grundsätzliches Verständnis des Fachgebiets, in dem eine Analyse stattfinden soll, ist ein gutes Resultat selten zu erzielen. In dieser Phase steht das allgemeine Verständnis der Aufgabe im Vordergrund. Es müssen die Ziele festgelegt werden: Ausgehend vom Ist-Zustand wird bestimmt, welche Ergebnisse im Rahmen des Data-Mining-Projekts erreicht werden sollen. Wie ist die Ausgangssituation? Welche Unternehmensziele sind zu beachten? Wie sieht die aktuelle Situation der Firma aus? Welche Ressourcen stehen zur Verfügung? Weiterhin sind Erfolgskriterien zu definieren. Es müssen ebenso die Risiken betrachtet und möglichst quantifiziert werden. Risiken können finanzieller Natur sein. Beispielsweise kann sich das Beschaffen geeigneter Daten als aufwändiger als geplant herausstellen. Ebenso kann es passieren,
8
1 Einführung dass bestimmte Daten aus rechtlichen oder firmenpolitischen Gründen nicht für das Projekt verfügbar sind. Natürlich müssen die Kosten geplant und der erwartete Nutzen abgeschätzt werden. Eine Datenanalyse, die noch nicht in die betrieblichen Prozesse integriert ist, besitzt immer Projektcharakter. Ein entsprechendes Projektmanagement ist erforderlich, insbesondere da hier Daten-Analysten, in der Regel Informatiker, mit den Anwendern aus anderen Fachgebieten zusammenarbeiten. Diese Phase schließt mit einem Projektplan ab. 2. Verständnis der Daten Die zweite Phase befasst sich mit den verfügbaren Daten. In Abhängigkeit vom jeweiligen Ziel der Analyse wird definiert, welche Daten benötigt werden. Parallel dazu wird untersucht, welche Daten verfügbar sind. Für ein erfolgreiches Projekt ist es erforderlich, die Daten und deren Bedeutung genau zu verstehen. Ein Data-Mining-Projekt, in dem man die verfügbaren Daten einfach nutzt, ohne ihre Semantik zu kennen, wird nicht erfolgreich sein. Die Daten sind also nicht nur zu sammeln, sondern sie sind auch zu beschreiben. Die Daten werden untersucht, nicht nur um sie zu verstehen, sondern auch um die Qualität der zur Verfügung stehenden Daten zu bestimmen. Erste statistische Untersuchungen, wie die Bestimmung statistischer Maßzahlen – beispielsweise Minima, Maxima, Mittelwerte sowie Korrelationskoeffizienten – geben Auskunft über die Daten. 3. Datenvorbereitung Nach dem Verstehen der Aufgabe, der betrieblichen Hintergründe und dem Verstehen der Daten gilt es nun, den eigentlichen Data-Mining-Schritt vorzubereiten. Zunächst werden die aus der Sicht der Aufgabe relevanten Daten selektiert und in eine konsistente Datentabelle überführt. Die Daten müssen gesäubert werden, fehlerhafte und inkonsistente Daten werden korrigiert. Es ist zu überlegen, wie man mit fehlenden Daten umgeht. Gegebenenfalls werden neue Attribute eingeführt oder auch Attribute zusammengeführt. Die Daten werden geeignet transformiert, damit sie durch die Data-Mining-Verfahren verarbeitet werden können. Die Datenvorverarbeitung kann über Erfolg oder Misserfolg einer Datenanalyse mitentscheiden. Deshalb gehen wir auf die Datenvorverarbeitung in einem separaten Kapitel (Kapitel 8) ein. 4. Data Mining (Modellbildung) In dieser Phase geschieht die eigentliche Datenanalyse: Es wird ein Modell erstellt, welches beschreibt, wie die Daten einzuordnen oder zu behandeln sind. Modelle können Entscheidungsbäume, verschiedene Formen von Regeln oder Beschreibungen von Clustern sein. In Abhängigkeit von der jeweiligen Aufgabe wird ein adäquates Verfahren ausgewählt. Die durchzuführenden Experimente werden konzipiert und konfiguriert, Parameter für das Verfahren werden gesetzt. Dann werden die Experimente durchgeführt und gegebenenfalls mit modifizierten Parametern wiederholt, um das Modell zu verfeinern und zu verbessern.
1.3 Ablauf einer Datenanalyse
9
5. Evaluation Die erzielten Modelle und Resultate müssen geprüft und bewertet werden. Die Ergebnisse werden an den in Phase 1 festgelegten Erfolgskriterien gemessen: Wird zum Beispiel der erwartete wirtschaftliche Nutzen durch die Ergebnisse erzielt? Eine Fehleranalyse kann Möglichkeiten für neue Experimente aufzeigen, und es wird zur Phase 3 – Datenvorbereitung – oder direkt zur Data-Mining-Phase zurückgekehrt. Auch der Projektplan wird gegebenenfalls verändert und angepasst. 6. Einsatz im und Konsequenzen für das Unternehmen In der letzten Phase gilt es, den Einsatz der erzielten Resultate vorzubereiten. Dies ist eine kritische Phase für viele Data-Mining-Projekte. Ohne ein gut geplantes Monitoring und eine ausreichende Motivation und Unterstützung kann die erfolgreiche Umsetzung scheitern. In der Regel ist ein Data-Mining-Projekt nur eine Phase eines Gesamtprozesses. Das Ergebnis ist dann in den Regelbetrieb zu übernehmen und in die laufenden Prozesse zu integrieren. Übliche Forderungen an einen Projektabschluss gelten natürlich auch für Data-Mining-Projekte. Das CRISP-Modell unterscheidet sich von dem in Abbildung 1.2 auf Seite 6 dargestellten Ablauf nach Fayyad. Die Punkte 1–2 und 6 des CRISP-Modells sind im FayyadModell nicht explizit aufgeführt. Der Schritt 3 des CRISP-Modells enthält die ersten drei Phasen des Fayyad-Modells. Das Fayyad-Modell konzentriert sich auf die eigentliche Datenbereitstellung und die Datenanalyse, während das CRISP-Modell die Sicht der Industrie auf Data-Mining-Projekte widerspiegelt. Wir werden uns am in Abbildung 1.2 dargestellten Fayyad-Modell orientieren, da die Phasen 1, 2 und 6 des CRISP-Modells sehr stark projektabhängig sind und folglich nicht Bestandteil einer Einführung in das Data Mining sein können. Wir werden zwischen den Begriffen Data Mining und Knowledge Discovery in Databases (KDD) nicht unterscheiden und diese synonym verwenden, bevorzugen jedoch den Begriff Data Mining. Es gibt weitere Modelle für den Ablauf eines Data-Mining-Projekts. Das SEMMAVorgehensmodell wird von der Firma SAS Institute Inc. in Zusammenhang mit ihrem Produkt Enterprise Miner verwendet. SEMMA steht für Sample, Explore, Modify, Model and Assess. Ein SEMMA-Prozess besteht aus den folgenden Schritten: 1. Die für die Analyse relevanten Daten werden gesammelt (Sample). 2. Die Daten werden – vor der eigentlichen Data-Mining-Modellbildung – untersucht. Das Ziel ist, die Datenqualität zu prüfen sowie ein Datenverständnis zu erreichen. Auch erste Visualisierungen werden vorgenommen (Explore). 3. Die Daten werden modifiziert, um die Datenqualität zu verbessern. Sie werden in ein für das gewählte Verfahren adäquate Form transformiert (Modify). 4. Nun erfolgt die eigentliche Analyse und Modellbildung (Model). 5. Die Resultate werden evaluiert (Assess).
10
1 Einführung
Im Folgenden wenden wir uns nun detaillierter den Teilphasen des Fayyad-Modells (Abbildung 1.2 auf Seite 6) zu, da wir uns an diesem Vorgehensmodell orientieren.
Datenselektion In der ersten Phase des KDD-Prozesses sind die Daten, die für die vom Anwender angeforderte Analyse benötigt werden oder für eine Analyse geeignet erscheinen, zu bestimmen und aus den gegebenen Datenquellen zu exportieren. Neben dem Basisdatenbestand können auch externe Daten für die Analyse herangezogen werden. So bieten beispielsweise Adressbroker Informationen an, mit denen potentielle Kunden oder Interessenten besser erkannt werden können. In der Phase der Datenselektion wird geprüft, welche Daten nötig und verfügbar sind, um das gesetzte Ziel zu erreichen. Können die selektierten Daten aufgrund technischer oder rechtlicher Restriktionen nicht in einen Zieldatenbestand überführt werden, ist die Datenselektion entsprechend zu überdenken und erneut durchzuführen. Technische Restriktionen, welche die Überführung in einen Zieldatenbestand verhindern, sind zum Beispiel Kapazitäts- und DatentypBeschränkungen des Zielsystems oder fehlende Zugriffsrechte des Anwenders. Eine Möglichkeit, diese Probleme – zumindest zum Teil – zu umgehen, ist die Beschränkung der Auswahl auf eine repräsentative Teildatenmenge des Gesamtdatenbestands.
Datenvorverarbeitung Da die Zieldaten aus den Datenquellen lediglich extrahiert werden, ist im Rahmen der Datenvorverarbeitung die Qualität des Zieldatenbestands zu untersuchen und – sofern nötig – durch den Einsatz geeigneter Verfahren zu verbessern. Aufgrund technischer oder menschlicher Fehler können die Daten operativer Systeme fehlerhafte Elemente enthalten. Man rechnet damit, dass bis zu 5% der Felder eines realen Datenbestands falsche Angaben aufweisen. Die Kenntnis der Schwächen der Analysedaten ist für die Qualität der Untersuchungsergebnisse wichtig. Die Anwender der Analysewerkzeuge müssen auf die Zuverlässigkeit und Korrektheit der Daten vertrauen können. Fehlerhafte Daten verfälschen möglicherweise die Resultate, ohne dass der Anwender von diesen Mängeln Kenntnis erlangt. Fehlende Daten verhindern eventuell die Berechnung von Kennzahlen wie den Umsatz einer Firma. Die zunehmende Durchführung (teil-)automatisierter Datenanalysen hat eine erhöhte Anfälligkeit gegenüber Datenmängeln zur Folge, der durch geeignete Mechanismen zur Erkennung und Beseitigung solcher Schwächen zu begegnen ist. Eine häufige, leicht zu identifizierende Fehlerart besteht in fehlenden Werten. Zur Behandlung von fehlenden Werten stehen unterschiedliche Techniken zur Verfügung, die im Abschnitt 8.2.2 diskutiert werden. Eine weitere potentielle Fehlerart wird durch Ausreißer hervorgerufen. Dabei handelt es sich um Wertausprägungen, die stark vom Niveau der übrigen Werte abweichen. Bei diesen Ausprägungen kann es sich um korrekt erfasste Daten handeln, die damit Eingang in die Analyse finden oder aber um falsche Angaben, die nicht berücksichtigt werden dürfen und daher aus dem Datenbestand zu löschen sind. Die Erkenntnisse, die der
1.3 Ablauf einer Datenanalyse
11
Benutzer eines Data-Mining-Systems in dieser Phase über den Datenbestand gewinnt, können Hinweise auf die Verbesserung der Datenqualität der operativen Systeme geben.
Datentransformation Die im Unternehmen verfügbaren Rohdatenbestände erweisen sich häufig in ihrer Ursprungsform als nicht für Data-Mining-Analysen geeignet. In der Phase der Datentransformation wird der analyserelevante Zieldatenbestand in ein Datenbankschema transformiert, das von dem verwendeten Data-Mining-System verarbeitet werden kann. Dabei können neue Attribute oder Datensätze generiert beziehungsweise vorhandene Attribute transformiert werden. Dieser Schritt ist nötig, da Analyseverfahren spezifische Anforderungen an die Datenstruktur der Eingangsdaten stellen. Ziel der Transformation ist insbesondere die Gewährleistung invarianter Datendarstellungsformen (beispielsweise durch Übersetzung textueller Informationen in eindeutige Schlüssel oder Codierungen) sowie die Einschränkung von Wertebereichen zur Verringerung der Anzahl zu betrachtender Ausprägungen (Dimensionsreduktion). Letzteres kann durch Verallgemeinerung von Attributwerten auf eine höhere Aggregationsstufe, zum Beispiel durch Nutzung von Taxonomien oder durch Bildung von Wertintervallen geschehen, wodurch sich die Granularität der Daten ändert.
Data Mining Liegen geeignete Datenbestände in akzeptabler Qualität vor, können die Analysen durchgeführt werden. In dieser Phase erfolgt die Verfahrensauswahl und deren Einsatz zur Identifikation von Mustern auf der Basis des vorbereiteten Datenbestandes. In einem ersten Schritt wird zunächst entschieden, welche grundlegende Data-Mining-Aufgabe (beispielsweise Klassifizierung oder Cluster-Bildung) vorliegt. Daran schließt sich die Auswahl eines geeigneten Data-Mining-Verfahrens an. Nach der Auswahl eines für die konkrete Problemstellung geeigneten Verfahrens wird dieses konfiguriert. Diese Parametrisierung bezieht sich auf die Vorgabe bestimmter methodenspezifischer Werte, wie zum Beispiel die Festlegung minimaler relativer Häufigkeiten für einen Interessantheitsfilter, die Auswahl der bei der Musterbildung oder -beschreibung zu berücksichtigenden Attribute oder die Einstellung von Gewichtungsfaktoren für einzelne Eingabevariablen. Wenn eine zufriedenstellende Konfiguration gefunden wurde, kann mit der Suche nach interessanten Mustern in den Daten begonnen werden. Die Analyse-Verfahren erzeugen ein Modell, welches dann als Grundlage für die Bewertung dieser oder anderer Daten dient.
Evaluation und Interpretation In dieser Phase des KDD-Prozesses werden die entdeckten Muster und Beziehungen bewertet und interpretiert. Diese Muster sollen den Anforderungen der Gültigkeit, Neuartigkeit, Nützlichkeit und Verständlichkeit genügen, um neues Wissen zu repräsentieren und einer Interpretation zugänglich zu sein. Letztere ist Voraussetzung für die Umsetzung der gewonnenen Erkenntnisse im Rahmen konkreter Handlungsmaßnahmen. Bei
12
1 Einführung
weitem nicht alle der aufgedeckten Muster erfüllen diese Kriterien. Die Analyseverfahren fördern häufig viele Regelmäßigkeiten zutage, die irrelevant, trivial, bedeutungslos oder bereits bekannt waren, aus denen dem Unternehmen folglich kein Nutzen erwachsen kann, oder die nicht nachvollziehbar sind. Die Bewertung von Mustern kann anhand des Kriteriums der Interessantheit vollzogen werden. Folgende Dimensionen der Interessantheit sind sinnvoll: • Die Validität (Gültigkeit) eines Musters ist ein objektives Maß dafür, mit welcher Sicherheit das gefundene Modell (beispielsweise ein Muster oder eine Assoziationsregel) auch in Bezug auf neue Daten gültig ist. • Das Kriterium der Neuartigkeit erfasst, inwieweit ein Muster das bisherige Wissen ergänzt oder im Widerspruch zu diesem steht. • Das Kriterium der Nützlichkeit eines Musters erfasst den praktischen Nutzen für den Anwender. • Die Verständlichkeit misst, wie gut eine Aussage von einem Anwender verstanden werden kann. Die korrekte Interpretation von Data-Mining-Ergebnissen erfordert ein hohes Maß an Domänenkenntnissen. Die Interpretation dient dazu, das Domänenwissen des Anwenders effektiv zu verändern. Im Idealfall wird ein Team von Experten aus unterschiedlichen Bereichen gebildet, um sicherzustellen, dass die Bewertung korrekt ist und die gewonnenen Informationen bestmöglich genutzt werden können. Die Interpretationsphase lässt sich durch geeignete Präsentationswerkzeuge sowie durch die Verfügbarkeit zusätzlicher Informationen über die Anwendungsdomäne unterstützen. Typischerweise erfolgt in dieser Phase ein Rücksprung in eine der vorherigen Phasen. So ist meist eine Anpassung der Parameter oder die Auswahl einer anderen Data-Mining-Technik nötig. Es kann auch erforderlich sein, zur Datenselektionsphase zurückzukehren, wenn festgestellt wird, dass sich die gewünschten Ergebnisse nicht mit der benutzten Datenbasis erreichen lassen.
1.4
Interdisziplinarität
Data Mining ist keine abgeschlossene Nischentechnik, die es erst seit einigen Jahren gibt. Im Gegenteil: Data Mining nutzt bewährte Techniken aus vielen Forschungsgebieten und fügt diesen neue Ansätze hinzu. Letztendlich basieren alle Analyse-Verfahren des Data Minings auf der Mathematik. Insbesondere die Statistik steuert eine Reihe eigener Ansätze für die Datenanalyse bei, wird aber auch für die Datenvorverarbeitung eingesetzt. Statistik ist zudem Grundlage einiger Verfahren, wie zum Beispiel Naive Bayes. Erst das Gebiet der Datenbanken ermöglicht die Verwaltung großer Datenmengen, und dies wird durch den synonymen Begriff für das Data Mining sogar explizit deutlich: KDD – Knowledge Discovery in Databases.
1.4 Interdisziplinarität
13
Die Künstliche Intelligenz als die Wissenschaft der Wissensverarbeitung stellt insbesondere Techniken für die Darstellung der Analyseergebnisse bereit: die Repräsentation von Wissen als logische Formeln und insbesondere als Regeln. Eine andere Form der Ergebnisdarstellung als Grundlage einer Nutzung oder Bewertung ist die graphische Darstellung, die Visualisierung. Computer-Graphik ist somit eine weitere Disziplin, die im engen Kontakt zum Data Mining steht. Abbildung 1.4 illustriert diese Interdisziplinarität des Data Minings.
Statistik
k
ati
em ath
M
Künstliche Intelligenz
Data
Datenbanken
Mining
Visualisierung Computergraphik
Abb. 1.4: Interdisziplinarität
Datenbanken und Data Warehouses Datenbanken bilden in vielen Fällen die Grundlage des Data Minings. Häufig wird in bereits existierenden Datenbeständen nach neu zu entdeckenden Zusammenhängen oder Auffälligkeiten gesucht. Ein Data Warehouse setzt sich in der Regel aus mehreren Datenbanken zusammen und enthält unter anderen auch die Daten, die zu analysieren sind. Nach Gluchowski [Glu12] sind die Merkmale eines Data Warehouse die Themenorientierung, die Vereinheitlichung, die Zeitorientierung sowie die Beständigkeit. Technisch ist die Vereinheitlichung hervorzuheben: Daten aus unterschiedlichen Quellen und mit möglicherweise verschiedenen Skalierungen oder Maßeinheiten werden korrekt zusammengeführt. Zudem werden alle Daten zeitbehaftet gespeichert, so dass Zeitreihen entstehen, die für die Auswertung genutzt werden können. Die sogenannte Beständigkeit besteht darin, dass ein Data Warehouse beständig wächst, die mit ihrem Zeitstempel versehenen Daten werden akkumuliert. Neben Datenbanken oder einem Data Warehouse können natürlich auch Textdateien oder WWW-Seiten Basis eines Data-Mining-Prozesses sein.
14
1 Einführung
Expertensysteme Expertensysteme – besser wissensbasierte Systeme – versuchen, einen oder mehrere qualifizierte menschliche Experten bei der Problemlösung in einem abgegrenzten Anwendungsbereich zu simulieren. Sie enthalten große Wissensmengen über ein eng begrenztes Spezialgebiet. Sie berücksichtigen auch Faustregeln, mit denen Erfahrungen aus den Teilgebieten für spezielle Probleme nutzbar gemacht werden sollen. Gelingt es, in einem Data-Mining-Prozess Wissen aus den Daten zu extrahieren, so kann dieses Wissen dann – zum Beispiel in Form von Regeln – in einem Expertensystem repräsentiert und angewendet werden.
Maschinelles Lernen Der Begriff Lernen umfasst viele komplexe Aspekte. Nicht jeder davon kann auf einem Rechner nachgebildet werden. Beim Maschinellen Lernen (engl. Machine Learning) versucht man, computerbasierte Lernverfahren verfügbar zu machen, so dass das Programm aus Eingabeinformationen Wissen generieren kann. Bei maschinellen Lernsystemen ist – wie auch in der menschlichen Psychologie – die einfachste Lernstrategie das Auswendiglernen. Dabei wird das präsentierte Wissen einfach in einer Liste oder Datenbank abgespeichert. Eine ebenso einfache Form des Maschinenlernens ist das unmittelbare Einprogrammieren des Wissens in den Sourcecode eines entsprechenden Programms. Dies ist jedoch nicht das, was in der Künstlichen Intelligenz mit Maschinellem Lernen gemeint ist. Hier wird mehr ein Verständnis von Zusammenhängen und Hintergründen (beispielsweise das Erkennen von Mustern oder Abhängigkeiten) angestrebt, um beispielsweise Muster oder Abhängigkeiten erkennen zu können. Beim Induktiven Lernen wird unter anderem versucht, aus Beispielen zu verallgemeinern und so neues Wissen zu erzeugen.
Statistik Ohne Statistik ist Data Mining nicht denkbar: Seien es die statistischen Maßzahlen, die helfen, die Daten zu verstehen, oder die statistischen Verfahren zum Aufdecken von Zusammenhängen. Nicht immer ist es möglich oder sinnvoll, ein maschinelles Data-Mining-Verfahren zu entwickeln und anzuwenden. Manchmal bringen auch schon statistische Lösungen einen ausreichenden Erfolg, falls beispielsweise ein Zusammenhang zwischen zwei Merkmalen durch eine Korrelationsanalyse gefunden wird. Des Weiteren können statistische Verfahren dabei helfen zu erkennen, ob Data Mining überhaupt zu einem gewünschten Ergebnis führen kann.
Visualisierung Eine gute Visualisierung ist für den Erfolg eines Data-Mining-Projekts unerlässlich. Da Data Mining meistens zur Entscheidungsfindung oder -unterstützung eingesetzt wird
1.5 Erfolgreiche Beispiele
15
und Entscheidungen nicht immer von den Personen getroffen werden, die direkt am Prozess des Data Minings beteiligt sind, müssen die Resultate des Data Minings veranschaulicht werden. Nur wenn es gelingt, gefundenes Wissen anschaulich und nachvollziehbar darzustellen, wird man Vertrauen in die Ergebnisse erzeugen und eine Akzeptanz der Resultate erreichen. Man kann Visualisierung aber nicht nur zur Darstellung der Resultate einsetzen, sondern auch beim eigentlichen Data Mining. Häufig erkennt man durch eine geschickte Darstellung der Daten erste Zusammenhänge zwischen den Attributen. Man denke hier an Cluster-Bildung oder an besonders einflussreiche Attribute bei einer Klassifizierung. Visualisierung stellt somit nicht nur die entwickelten Modelle graphisch dar, sondern kann auch als eigene Data-Mining-Technik in der Datenanalyse eingesetzt werden. Da die Ergebnisdarstellung maßgeblich über den Projekterfolg entscheidet, wird der Visualisierung ein eigener Abschnitt gewidmet, siehe Abschnitt 9.6.
1.5
Erfolgreiche Beispiele
Ähnlich wie die Verwandtschaftsbeziehungen in fast jeder Einführung in die logische Programmiersprache PROLOG zu finden sind, wird in Data-Mining-Lehrbüchern sehr oft das Wetter-Golf-Spiel-Ja-Nein-Beispiel (siehe Abschnitt A.3) eingesetzt. Auch hier in diesem Buch werden Sie immer wieder auf dieses Beispiel treffen, unter anderem in den Abschnitten 1.6.3 oder 5.2. Gibt es nun auch Beispiele aus der Realität, die zeigen, dass Data Mining erfolgreich ist? Aus den Anfangsjahren des Data Mining sind erfolgreiche Beispiele überliefert, die mittlerweile zu Klassikern wurden: • Die amerikanische Handelskette Wall Mart soll herausgefunden haben, dass an bestimmten Tagen Windeln besonders häufig zusammen mit Bier verkauft wurden. Obwohl dieses Beispiel von vielen zitiert wird, gibt es immer wieder Diskussionen, ob dies belegt ist oder in das Reich der Legenden gehört.1 • Die Bonitätsprüfung oder die Prüfung der Kreditwürdigkeit von Bankkunden ist eine schon „alte“ Anwendung und wird ebenso häufig angeführt [Han98]. • Die personalisierte Mailing-Aktion als Marketing-Strategie findet sich ebenso in vielen Data-Mining-Einführungen: Aufgrund vorhandener Daten wird ein Modell für die Klassifikation in die Klassen Anschreiben sowie Nichtanschreiben entwickelt und so die Werbe-Information nur an potenzielle Kunden gesendet. Jede Aufzählung von Beispielen aus der realen Welt ist zum Zeitpunkt des Aufschreibens bereits veraltet. Es ist wohl besser, sich der Frage zu stellen: Wie finde ich erfolgreiche, aktuelle Beispiele? In den Lehrbüchern finden sich in der Regel die Verweise auf die 1 Unter www.kdnuggets.com/news/2000/n13/23i.html wird berichtet, dass dieses Beispiel von Tom Blishok (einem Einzelhandelsberater) ca. 1992 erfunden wurde. Es soll wohl nie eine wirkliche Analyse gegeben haben.
16
1 Einführung
gerade erwähnten Anwendungsfälle. In der Zwischenzeit ist Data Mining den Kinderschuhen entwachsen und hat Eingang in viele Anwendungsfelder – vom Finanzbereich bis zur Medizin, von der Kundenanalyse bis zum E-Learning – gefunden. Es gibt eine Reihe von Büchern, die erfolgreiche Data-Mining-Anwendungen dokumentieren. Eine gute Auswahl an praktischen Anwendungen findet man in [Gab10] und [Chu14]. Diese gehen von räumlichen Analysen in geographischen Systemen, über Anwendungen in der Chemie und Bioinformatik bis zu erfolgreichen Analysen in der Astronomie. In [HKMW01] wird auf eine Vielzahl von erfolgreichen Anwendungen im Marketing eingegangen. Eine typische Anwendung, die Kundensegmentierung – das Finden von Gruppen von ähnlichen Kunden – wird in diesem Buch an mehreren Beispielen vorgestellt. Die dort vorgestellten Projekte stammen aus dem Automobilbereich und der Kunden-spezifischen Ansprache. Erfolgreiche Projekte aus der zweiten großen Anwendungsklasse – der Klassifikation – werden ebenso vorgestellt, beispielsweise die Bonitäts- und Kreditwürdigkeitsprüfung von Kunden. Auch Cross selling, wie es von vielen Online-Plattformen genutzt wird, ist dort mit einem erfolgreichen Projekt vertreten. Ähnliche Beispiele – aus dem Bereich E-Business und Finanzen – findet man in [SPM+ 08]. In [Chu14] werden ebenso nützliche Data-Mining-Anwendungen angesprochen, darunter insbesondere Datenanalysen in sozialen Netzwerken. Selbst im E-Learning werden Data-Mining-Techniken auf vielfältige Art eingesetzt. In [RV06], [RVPB11] und [PA14] wird eine Vielzahl von Möglichkeiten vorgestellt, wie Data Mining zur Verbesserung der Lehre eingesetzt wird. Dies geht vom Erkennen von typischen Lerner-Mustern, die eine Nutzer-angepasste Präsentation von Inhalten (sogenannte adaptive Story-Boards) ermöglicht, bis zur automatischen Erkennung von Problemen im Lernprozess. Dieses Gebiet hat sich unter dem Begriff Educational Data Mining (EDM) etabliert und in den letzten Jahren einen enormen Aufschwung erfahren. Es war in den letzten Jahren der Trend zu beobachten, dass über erfolgreiche DataMining-Anwendungen nur noch im akademischen Umfeld detailliert berichtet wurde. Berichte aus der Praxis wurden nur noch vereinzelt publiziert, da jede Data-MiningAnwendung auf Daten basiert, aus denen erfolgskritisches Wissen abgeleitet wurde. Dieses geben Firmen natürlich ungern preis. Gegenwärtig hat sich durch das Thema Big Data die Zurückhaltung bei der Veröffentlichung von erfolgreichen Projekten – natürlich ohne die Angabe von Details – etwas geändert. Erfolgreiche Data-Mining-Anwendungen sind für eine andere Gruppe wiederum ein gutes Marketing-Argument: Die Hersteller von Data-Mining-Software beziehungsweise die branchenübergreifenden IT-Service-Unternehmen auf dem Gebiet der Datenanalyse sind auf erfolgreiche Projekte angewiesen, um wieder neue Kunden gewinnen zu können. Auf den Seiten des von uns in diesem Buch eingesetzten, frei verfügbaren Werkzeugs Knime sind etliche Anregungen zu finden. Diese tragen überwiegend den Charakter von Einführungsbeispielen und geben einen guten Eindruck über die Vielfalt der Anwendungsmöglichkeiten von Data Mining. Andere Anbieter von kommerzieller Data-Mining-Software werben ebenso mit ihren Referenzen: Referenz-Kunden oder Referenz-Projekte. Die Firma Easy.Data.Mining aus München stellt unter der Überschrift „Data-Mining-Beispiele und Fallstudien aus der Praxis“ [Eas] ihre Projekte vor.
1.6 Werkzeuge
17
Die Liste der Referenzkunden, die den Rapid Miner – ein wie Knime viel genutztes Tool – einsetzen, ist lang und umfasst viele Bereiche von der Elektronik-, Luftund Automobilbranche über Handel und Marktforschungsunternehmen bis hin zu Banken und Versicherungen, der Pharma- und Biotechnologiebranche oder der IT-Branche selbst. Konkrete Anwendungsbeispiele werden zwar nicht aufgeführt, die aufgezählten Branchen und Unternehmen geben aber Hinweise auf den Einsatz von Data-MiningLösungen. Das System SPSS 2 wird von IBM eingesetzt, um Data-Mining-Lösungen im Bereich des sogenannten Predictive Analytics zu entwickeln. Einige spektakuläre Anwendungsfälle sind während der Entstehung dieses Buches als Video auf YouTube zu sehen (gewesen). • Die Datenanalyse durch die amerikanische Polizei führt dazu, dass man vorhersagen kann, wo und wann demnächst ein Verbrechen stattfinden wird. Diese Prognose erfolgt sicherlich nur mit einer gewissen Wahrscheinlichkeit3 . • Der Zusammenhang zwischen dem Wetter und dem Keks-Verkauf in deutschen Bäckereien ist nicht nur unterhaltsam, sondern betriebswirtschaftlich relevant. Nicht zuletzt können wir auch das Archiv des Data Mining Cups [DMC] durchsehen. Die Daten für die Aufgaben werden von Unternehmen bereitgestellt, die Aufgaben sind somit praxisrelevant. In den Jahren 2000 und 2001 ging es um die bereits erwähnten Mailingaktionen. Lohnt es sich, einen Kunden anzuschreiben oder nicht? Beide Wettbewerbe wurden – nach Aussagen der Veranstalter – zur großen Zufriedenheit der hinter der Aufgabe stehenden Firmen abgeschlossen. Im Kapitel 10 greifen wir das Thema aus dem Jahre 2002 auf, die Mailing-Aktion eines Energieversorgers. In mehreren Aufgaben des Data Mining Cups wird das Kundenverhalten analysiert, und es werden Vorhersagen getroffen, sei es für den Einsatz von Gutscheinen oder RabattCoupons, für die Verkaufszahlen von Büchern oder das Verhalten der Kunden in einer Lotterie. Erfolgreiche Data-Mining-Anwendungen sind in das operative Geschäft vieler Anwendungsgebiete eingebunden und werden tagtäglich genutzt. Suchen Sie selbst – beispielsweise im World Wide Web – und lassen Sie sich von interessanten Anwendungen des Data Minings überraschen.
1.6
Werkzeuge
Für die Lösung der in diesem Buch behandelten Aufgaben kann spezielle Data-MiningSoftware eingesetzt werden. Unabhängig davon sind Kenntnisse in der Tabellenkalkulation hilfreich. Mit einem Tabellenkalkulationsprogramm können Daten einer ersten Analyse unterzogen werden; es 2 www.ibm.com/de/de/ 3 Siehe
auch „Der Spiegel“ 2013/20.
18
1 Einführung
lassen sich Abhängigkeiten zwischen Attributen entdecken, oder die Ergebnisse eines Data-Mining-Modells können analysiert beziehungsweise nachgearbeitet werden. Ein Text-Editor, der zudem die Arbeit mit Makros ermöglicht, ist ein weiteres nützliches Werkzeug in der Vor- sowie Nachbereitung einer Datenanalyse. Nicht zuletzt sei darauf verwiesen, dass hin und wieder die eigene Entwicklung kleiner Programme für die Datenvorverarbeitung sowie die Analyseauswertung erforderlich sein kann. Dazu kann eine beliebige Programmiersprache herangezogen werden. Einige Systeme, wie beispielsweise Knime, ermöglichen den Einbau eigener kleiner JavaProgramme (Java Snippets) in den Analyseprozess. An dieser Stelle geben wir eine kurze Einführung in Data-Mining-Software, die für die Lösung der im Buch behandelten Aufgaben von uns eingesetzt werden: • Der Konstanz Information Miner (Knime) ist ein System zur Beschreibung ganzer Data-Mining-Prozesse, welcher eine Vielzahl Algorithmen für die verschiedenen Analyse- Phasen bereithält. Siehe http://www.knime.org/. • Das Waikato Environment for Knowledge Analysis (Weka) stellt eine Reihe von in Java implementierten Algorithmen bereit, die sowohl interaktiv als auch im Kommandozeilen-Modus ausgeführt werden können. Siehe http://www.cs.waikato.ac.nz/ml/weka/. Die Weka-Algorithmen können in Knime als Knime-Erweiterung integriert werden. • Speziell auf die Arbeit mit neuronalen Netzen ist der JavaNNS ausgerichtet. JavaNNS ist ein in Java implementiertes Nutzer-Interface für den Stuttgarter Neuronale Netze Simulator (SNNS). http://www.ra.cs.uni-tuebingen.de/software/JavaNNS/welcome_e.html. Es gibt viele weitere, leistungsfähige Data-Mining-Tools, beispielsweise den Rapid Miner (http://rapidminer.com/) und den IBM SPSS Modeler. Ebenso sind in vielen DataWarehouse- und Datenbank-Systemen Data-Mining-Komponenten integriert. In diesem Buch beschränken wir uns aber auf die drei genannten Systeme. Diese sind zum Erlernen und zum Experimentieren sehr gut geeignet.
1.6.1
KNIME
Knime ist ein Data-Mining-Tool, welches ursprünglich an der Universität Konstanz entwickelt wurde. Die Abkürzung Knime steht für Konstanz Information Miner. Knime läuft unter allen Betriebssystemen, erforderlich ist JAVA. Knime ist in verschiedenen Versionen verfügbar. Wir verwenden im Buch die KNIME Analytics Platform, die auf der Knime-Seite (www.knime.org) heruntergeladen werden kann. Knime zeichnet sich durch eine sehr einfache Drag&Drop-Bedienung sowie durch eine große Anzahl an verfügbaren Algorithmen und Methoden aus. Der Aufbau ist modular
1.6 Werkzeuge
19
und wird ständig um neue Komponenten erweitert, die leicht intern über das Programm geladen werden können. Neben eigenen Algorithmen lässt sich die Software so um eine Vielzahl weiterer Inhalte erweitern. So sind auch nahezu alle Weka-Verfahren für Knime umgesetzt worden. Knime (in der von uns genutzten, frei verfügbaren Variante Analytics Platform) ist in seiner Leistungsfähigkeit durchaus vergleichbar mit einer Vielzahl von kommerziellen Data-Mining-Programmen. Der komplette Mining-Prozess vom Datenimport über Datenvorverarbeitung und Datenanalyse bis hin zur Darstellung der Ergebnisse lässt sich mit den bereitgestellten Methoden bewerkstelligen. In Knime sind Beispiel-Workflows verfügbar. An diesen kann man sich orientieren. Für einige Beispiele ist die Integration der Weka-Verfahren in das Knime-System erforderlich. Weka-Verfahren können als Knime-Extension eingebunden werden. Nach dem Start von Knime öffnet sich das in Abbildung 1.5 dargestellte Fenster.
Abb. 1.5: Knime – Start-Fenster
Die Oberfläche enthält folgende Komponenten: 1. Workflow-Fenster Das mittlere Fenster ist das Hauptfenster, in dem der Data-Mining-Prozess abgebildet wird. 2. Projektfenster Das Projektfenster KNIME Explorer dient der Verwaltung von Projekten.
20
1 Einführung 3. Node Repository Fundament jeglicher Knime-Anwendung ist die Sammlung der implementierten Algorithmen, aus denen der Nutzer einen Workflow zusammensetzt. Der Fundus an Algorithmen umfasst Komponenten • für den Datenimport und -export aus Dateien oder Datenbanken, • zur Datenvorverarbeitung und Datenmanipulation, • für grundlegende statistische Analysen,
• für die eigentliche Datenanalyse (sowohl Knime als auch Weka)
und
• zur Visualisierung.
4. Node Description In diesem Fenster erhält man eine detaillierte Beschreibung der Knime-Knoten: • Beschreibung des Algorithmus
• Benötigte Inputformatierungen der Daten • Art des erzeugten Outputs
• Kurze Beschreibung der Konfigurationsmöglichkeiten Nun kann man sich die entsprechenden Werkzeuge als Nodes (Knoten) aus dem Repository in das Hauptfenster ziehen und dort durch Pfeile verbinden. In Abbildung 1.6 ist ein Workflow dargestellt, der aus folgenden Komponenten besteht. 1. File Reader: Hier werden die Daten eingelesen. 2. Partitioning: Die Daten werden in Trainings- und Testmenge aufgeteilt (siehe Abschnitt 9.4). 3. Decision Tree Learner: Aus den Trainingsdaten wird ein Entscheidungsbaum erzeugt. 4. Decision Tree Predictor: Der erlernte Entscheidungsbaum wird auf die Testmenge angewendet. Das Hauptfenster dient folgenden Aufgaben: • Es ist das primäre Modellierungsfenster des Miningprozesses.
• Die Knoten können verwaltet und konfiguriert werden (Rechtsklick auf den jeweiligen Knoten). • Die Knoten können miteinander verknüpft und so zu einem Workflow eines DataMining-Prozesses zusammengesetzt werden. Dabei signalisieren die Pfeile den Datenfluss.
1.6 Werkzeuge
21
Abb. 1.6: Knime – Workflow
Ist ein Workflow zusammengesetzt, muss man die Knoten konfigurieren. Dazu geht man auf den jeweiligen Knoten und aktiviert durch einen rechten Mausklick (oder durch einen Doppelklick mit der linken Maustaste) die entsprechende Auswahl. Beim File Reader kann man so das einzulesende File auswählen. Wenn ein Knoten korrekt konfiguriert ist, wechselt die Ampel unter dem Knoten von rot auf gelb. Nun führt man den Knoten aus, wieder über den rechten Mausklick. Ist alles korrekt verlaufen, wird die Ampel grün. Dies setzt man bei den Folgeknoten fort. Zeigt sich unter dem Knoten ein Warndreieck, sollte man die hinter diesem Symbol platzierte Fehler- oder Warnmeldung lesen und darauf reagieren. Abbildung 1.7 zeigt den fertigen Workflow für das Wetter-Beispiel (siehe Abschnitt A.3). Decision Tree Learner File Reader
Partitioning Baum generieren
Datei lesen
Menge teilen
Decision Tree Predictor
Statistics Baum auf Testdaten anwenden Statistische Werte
Abb. 1.7: Knime – Wetterbeispiel
22
1 Einführung
Der in den Workflow integrierte Statistik-Knoten liefert die bereits angesprochenen statistischen Maßzahlen und fördert das Verständnis für die zu analysierenden Daten. Betrachten wir nochmal die zentralen Schritte im Data-Mining-Workflow. Zunächst muss die Datei eingelesen werden. Um eine Datei einzulesen, muss in der Knotenauswahl unter IO im Abschnitt Read der File Reader ausgewählt und auf die Arbeitsfläche gezogen werden. Knime unterstützt verschiedene Formate, unter anderem csv, arff, xls. Das Arff-Format ist das Standard-Format des Weka-Systems. Knime enthält eine Vielzahl von Vorverarbeitungs-Techniken. Diese findet man unter Data Manipulation. Den Partitioner erreicht man beispielsweise unter Row > Transform. Die eigentlichen Analyseverfahren sind im Ordner Mining enthalten. Die im obigen Workflow verwendeten Knoten Decision-Tree-Learner und Decision-Tree-Predictor sind im Unterverzeichnis Decision Tree platziert. Im Decision Tree Learner wählt man aus, welches Attribut das für die Klassifizierung verwendete Zielattribut sein soll (Class Column). Die Konfiguration der Knoten erlaubt häufig viele weitere Einstellungen, auf die wir an dieser Stelle nicht eingehen. Um den Entscheidungsbaum nun auch bezüglich seiner Trefferrate bei der Klassifikation prüfen zu können, teilt man die gegebene Beispielmenge in Trainings- und Testmenge. Dies macht der Partitioning-Knoten. Mit der Trainingsmenge wird ein Modell, in diesem Fall ein Entscheidungsbaum, erstellt. Diesen Entscheidungsbaum wenden wir nun auf die Testmenge an und sehen, wie gut oder schlecht dieser die Klassifikation der ja bekannten Daten vornimmt. Dazu unternimmt man einen Rechtsklick auf den Decision Tree Predictor und wählt Classified Data. Der Predictor fügt eine zusätzliche Spalte Prediction (DecTree) mit der vorhergesagten Klassifikation für den jeweiligen Datensatz ein (Abbildung 1.8).
Abb. 1.8: Knime – Resultat
Alternativ kann man den in Knime implementierten Scorer verwenden (Abbildung 1.9 auf der nächsten Seite). Man erhält eine Reihe von Bewertungszahlen (Abbildung 1.10), auf die wir im Kapitel 9 eingehen. Auf zwei angenehme Möglichkeiten, die Knime neben dem großen Vorrat an vorgefertigten Knoten bietet, möchten wir hinweisen. Zum einen ist es möglich, eigene Knoten zu entwickeln. In Abbildung 1.11 ist ein sogenannter Java-Snippet-Knoten dargestellt.
1.6 Werkzeuge
23 Decision Tree Learner
File Reader
Partitioning Baum generieren
Datei lesen
Decision Tree Predictor
Scorer
Baum auf Testdaten anwenden
Vorhersagequalität
Menge teilen Statistics
Statistische Werte
Abb. 1.9: Knime – Scorer
Abb. 1.10: Knime – Resultat
Abb. 1.11: Knime – Java Snippet für Punktevergabe
24
1 Einführung
Der Java-Snippet-Knoten berechnet die Punkte für die Aufgabe des Data-Mining-Cups 2007 [DMC]. Es geht darum vorherzusagen, ob ein Kunde einen Coupon A beziehungsweise einen Coupon B oder keinen Coupon (N) einlösen wird. Für die korrekte Vorhersage von B gibt es 6 Punkte, für die korrekte Vorhersage von A 3 Punkte, für N keinen Punkt. Eine falsche Vorhersage von A beziehungsweise B wird mit −1 bestraft. Der Java-Snippet-Knoten berechnet für jeden Datensatz, wie viele Punkte es gibt. Dazu wird zunächst die Variable points deklariert und auf 0 gesetzt. Sind die Werte für die Attribute pred (die Vorhersagespalte Prediction (DecTree) wurde umbenannt) und COUPON (das tatsächliche Verhalten des Kunden) gleich, so werden 3 beziehungsweise 6 Punkte vergeben, falls die Vorhersage A beziehungsweise B ist. Analog werden falsche A/B-Vorhersagen mit −1 bestraft. Es wird eine neue Spalte Punkte angefügt. Zu jedem Datensatz gibt es also danach einen neuen Wert Punkte. Im nächsten Java Snippet (Abbildung 1.12) werden nun die Punkte aufsummiert. Es entsteht eine neue Spalte GSumme, die zu jedem Datensatz die Summe aller Punkte bis zu diesem Datensatz berechnet. Der Eintrag beim letzten Datensatz ist dann die insgesamt erreichte Punktezahl.
Abb. 1.12: Knime – Java Snippet zum Summieren
Die zweite, sehr nützliche Möglichkeit, die Knime bietet, sind sogenannte Schleifen, mit denen ein mehrfaches Durchlaufen eines Workflows definiert werden kann. Wir beginnen zunächst mit einem einfachen Workflow (Abbildung 1.13 auf der nächsten Seite) zur Klassifikation der Daten aus dem Iris-Beispiel (siehe Abschnitt A.1 und Beispiel 6.1 auf Seite 148) mittels des Verfahrens k-Nearest Neighbours (siehe Abschnitt 5.1). Ziel ist die korrekte Vorhersage des Iris-Typs anhand der gegebenen Maße der jeweiligen Pflanze. Die Daten werden im Verhältnis 80% zu 20% aufgeteilt, und zwar so, dass die Häufigkeitsverteilung der Klassenwerte in den Untermengen gleich der Verteilung in der Gesamtmenge ist (Stratified Sampling, vgl. Abschnitt 9.4).
1.6 Werkzeuge
25
ARFF Reader
Partitioning
K Nearest Neighbor
Scorer
Iris-Daten lesen
80/20 %
KlassiÞkation
Scorer anwenden
Abb. 1.13: Knime – Loops 1
Wir sagen dann die Klasse der Datensätze der 20%-Menge vorher, indem wir die k=3 ähnlichsten Datensätze aus der 80%-Menge wählen und dort die häufigste Klasse bestimmen. Nun ist die Wahl von k=3 für die nächsten Nachbarn, auf deren Basis wir die Klasse vorhersagen, recht willkürlich. Lieber wäre uns, wenn wir die Berechnungen mit unterschiedlichen k durchführen könnten. Genau dieses Probieren mehrerer Werte für k wird nun mittels der Schleifen-Knoten realisiert. Zunächst lassen wir uns die SchleifenKnoten im k-Nearest-Neighbour-Knoten anzeigen (rechte Maustaste, Show Flow Variable Ports). Dann ziehen wir den Table Creator und den TableRow To Variable Loop Start sowie den Schleifen-Ende-Knoten in unseren Workflow (Abbildung 1.14). Table Creator
TableRow To Variable Loop Start
Zahlen für k festlegen
Schleife initialisieren
ARFF Reader
Partitioning
K Nearest Neighbor
Scorer
Iris-Daten lesen
80/20 %
KlassiÞkation
Vorhersagequalität
Loop End
Schleifenende
Abb. 1.14: Knime – Loops 2
Im Table Creator definieren wir die Varianten für k (Abbildung 1.15 auf der nächsten Seite). Und im Knoten k-Nearest Neighbour wird nun festgelegt, dass die Zahlen aus dem Table Creator für k verwendet werden sollen (Abbildung 1.16). Das Protokoll, das wir uns am Schleifenende anzeigen lassen, ist in Tabelle 1.1 dargestellt. In der Spalte Iteration wird dabei nicht das gewählte k angezeigt, sondern die Varianten-Nummer, wobei das Zählen bei 0 beginnt. Es fällt auf, dass mit allen gewählten k das gleiche Resultat erzielt wird. Die Vorhersage ist immer bis auf einen Datensatz korrekt.
26
1 Einführung
Abb. 1.15: Knime – Loops 3
Abb. 1.16: Knime – Loops 4
row ID Iris-setosa#0 Iris-versicolor#0 Iris-virginica#0 Iris-setosa#1 Iris-versicolor#1 Iris-virginica#1 Iris-setosa#2 Iris-versicolor#2 Iris-virginica#2 Iris-setosa#3 Iris-versicolor#3 Iris-virginica#3 Iris-setosa#4 Iris-versicolor#4 Iris-virginica#4 Iris-setosa#5 Iris-versicolor#5 Iris-virginica#5
Iris-setosa 10 0 0 10 0 0 10 0 0 10 0 0 10 0 0 10 0 0
Iris-versicolor 0 10 1 0 10 1 0 10 1 0 10 1 0 10 1 0 10 1
Iris-virginica 0 0 9 0 0 9 0 0 9 0 0 9 0 0 9 0 0 9
Tabelle 1.1: Iris-Daten mit k-Nearest Neighbour (Schleife)
Iteration 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
1.6 Werkzeuge
1.6.2
27
WEKA
Weka ist ein für nicht kommerzielle Anwendungen frei verfügbares Data-Mining-Tool, entwickelt an der University of Waikato in Neuseeland. Weka ist eine Abkürzung für Waikato Environment for Knowledge Analysis. In Weka sind viele Algorithmen implementiert, siehe hierzu [WFH11]. Weka ist in Java implementiert und läuft somit unter allen Betriebssystemen. Man findet sowohl Weka als auch etliche Infos unter www.cs.waikato.ac.nz/~ml/weka/index.html. Im Folgenden wird nur ein kurzer Einstieg in den Umgang mit Weka gegeben. Man startet Weka mit java -jar weka.jar als Kommandozeile oder mit einem Doppelklick auf die jar-Datei. Es öffnet sich das in Abbildung 1.17 dargestellte Fenster.
Abb. 1.17: Weka – Start-Fenster
Wir werden mit dem Explorer arbeiten. Es kann im Weka-Startfenster aber auch die Experimentierumgebung (Experimenter) und ein Kommandozeilenfenster geöffnet werden. In einem neuen Fenster öffnet sich der Weka-Explorer (Abbildung 1.18 auf der nächsten Seite), welcher eine Art Registertabelle mit den Registern Preprocess, Classify, Cluster, Associate, Select attributes und Visualize enthält. Im Register Preprocess können Einstellungen zu den zu verwendenden Datensätzen vorgenommen werden. Datensätze können aus einer Datei (1), über eine URL (2) oder aus einer Datenbank (3) in das Weka-System geladen werden (Abbildung 1.18 auf der nächsten Seite). Dateien werden in Weka im ARFF-Format erwartet. ARFF-Dateien bestehen aus einem Kopf und einem Körper. Im Kopf stehen die Schlüsselworte, die mit @ beginnen, wie @relation, @attribute. Es werden nur nominale und numerische Daten erkannt. Bei nominalen Attributen folgt die Wertemenge in geschweiften Klammern {. . . }, bei numerischen Attributen folgt das Schlüsselwort numeric oder real. Zeilen, die mit % beginnen, sind Kommentare. Im Körper (ab @data) stehen die Daten. Ein Datensatz steht in einer Zeile, die einzelnen Attribute werden durch Kommata getrennt, fehlende Werte werden durch ? ersetzt.
28
1 Einführung
Abb. 1.18: Weka – Explorer
Beispiel 1.1:
Wetter-Beispiel in Weka
@relation weather.symbolic @attribute @attribute @attribute @attribute @attribute
outlook {sunny, overcast, rainy} temperature {hot, mild, cool} humidity {high, normal} windy {TRUE, FALSE} play {yes, no}
@data sunny, hot, high, FALSE, no sunny, hot, high, TRUE, no overcast, hot, high, FALSE, yes rainy, mild, high, FALSE, yes rainy, cool, normal, FALSE, yes rainy, cool, normal, TRUE, no overcast, cool, normal, TRUE, yes sunny, mild, high, FALSE, no
1.6 Werkzeuge
29
sunny, cool, normal, FALSE, yes rainy, mild, normal, FALSE, yes sunny, mild, normal, TRUE, yes overcast, mild, high, TRUE, yes overcast, hot, normal, FALSE, yes rainy, mild, high, TRUE, no Lädt man diese Datei in Weka (Abbildung 1.19), erscheinen die Attributnamen.
Abb. 1.19: Weka – Preprocessing
Jetzt kann ausgewählt werden, welche Attribute im weiteren Verlauf verwendet werden. Im rechten, unteren Teil ist die Verteilung des Zielattributs play bezüglich des im linken Fensterteil gewählten Attributs dargestellt. Weka bietet eine Reihe von Filtern an, mit denen die Daten vorverarbeitet werden können. Im Programmteil Classify sind etliche Klassifizierer implementiert. Wählt man jetzt beispielsweise den ID3-Algorithmus (unter Choose > Trees) und startet diesen, so bekommt man im rechten Teilfenster das Resultat der Berechnung (Abbildung 1.20 auf der nächsten Seite).
30
1 Einführung
Abb. 1.20: Weka – ID3
Man kann auswählen, auf welchen Daten gelernt werden soll: Use training set Supplied test set Cross validation Percentage split
Die gesamte Datenmenge wird zum Lernen benutzt. Eine separate Datei kann zum Lernen angegeben werden. Die gegebene Menge wird mittels Kreuzvalidierung gesplittet (vgl. Abschnitt 9.4). Die gegebene Menge wird prozentual in Trainingsund Testmenge aufgeteilt.
Für den J48-Algorithmus, eine Variante der Erweiterung des ID3-Algorithmus C4.5, ist eine Visualisierung des Entscheidungsbaums (Abbildung 1.21) verfügbar (rechter Mausklick auf das Resultat, Weka Node View). Analog sieht das Vorgehen bei den anderen Anwendungsklassen aus. Um Cluster zu berechnen, wählt man den Reiter Cluster aus. Dann selektiert man unter Choose beispielsweise den SimpleKMeans-Algorithmus (Abschnitt 6.2) aus. Wir clustern unsere gesamte Beispielmenge (Use training set). Das Resultat ist in Abbildung 1.22 auf der nächsten Seite dargestellt.
1.6 Werkzeuge
31
outlook = overcast = rainy yes (4.0)
= sunny
windy = FALSE yes (3.0)
humidity
= TRUE no (2.0)
Abb. 1.21: Weka – Entscheidungsbaum
Abb. 1.22: Weka – SimpleKMeans
= high no (3.0)
= normal yes (2.0)
32
1 Einführung
1.6.3
JavaNNS
In den 90er Jahren wurde an der Universität Stuttgart der Stuttgarter Neuronale Netze Simulator (SNNS) entwickelt. Dieser war lange Zeit nur unter Unix-Betriebssystemen einsetzbar. Die Benutzungsoberfläche weicht erheblich von dem allgemein üblichen Aufbau ab, so dass die Handhabung einige Einarbeitung erfordert. Mit der Entwicklung einer in Java implementierten Oberfläche für den SNNS ist die Handhabung erheblich erleichtert worden, und die Nutzung sowohl unter Linux- oder allgemein Unix-Systemen als auch unter Windows-Betriebssystemen ist möglich. Die Kombination aus SNNS und des in Java implementierten Nutzer-Interface ist nun unter dem Namen JavaNNS bekannt: http://www.ra.cs.uni-tuebingen.de/software/JavaNNS/ (Zugriff 2015-12-04) Mit dem JavaNNS können verschiedene künstliche neuronale Netze entwickelt werden. Anhand der Entwicklung eines vorwärtsgerichteten künstlichen neuronalen Netzes für eine Klassifikationsaufgabe wird die Arbeit mit dem JavaNNS erläutert. Als Beispiel dient das Wetter-Problem, siehe Anhang A.3: Wird gespielt? Die Daten sind der Tabelle 1.2 zu entnehmen. Tag 1 2 3 4 5 6 7 8 9 10 11 12 13 14
outlook sunny sunny overcast rainy rainy rainy overcast sunny sunny rainy sunny overcast overcast rainy
temperature hot hot hot mild cool cool cool mild cool mild mild mild hot mild
humidity high high high high normal normal normal high normal normal normal high normal high
windy false true false false false true true false false false true true false true
play no no yes yes yes no yes no yes yes yes yes yes no
Tabelle 1.2: Wetter-Daten
Für die Arbeit mit einem neuronalen Netz sind die ordinalen Daten in eine binäre Darstellung zu transformieren. Der neuronale Netze-Baustein in Knime wandelt derartige Daten automatisch um, behandelt dabei ordinale Attribute genauso wie nominale. Die Werte werden in 0-1-Folgen codiert, die so viele Binärwerte aufweisen, wie das Attribut unterschiedliche Werte aufweist. So werden zum Beispiel die Werte des Attributs outlook wie folgt codiert: rainy = (1 0 0), overcast = (0 1 0), sunny = (0 0 1).
1.6 Werkzeuge
33
Da dabei aber die Ordnung verloren geht – sunny > overcast > rainy – setzen wir für die Arbeit mit dem JavaNNS die folgende Codierung ein, die die Ordnung berücksichtigt. outlook: temperature: humidity: windy: play:
rainy cold normal false no
= = = = =
(0,0); (0,0); 0; 0; 0;
overcast mild high true yes
= = = = =
(0,1); sunny = (1,1); (0,1); hot = (1,1); 1; 1; 1;
Für das Trainieren des Netzes ist eine Muster-Datei .pat zu erstellen, die alle Muster in der codierten Form enthält und folgenden Aufbau besitzt: SNNS pattern definition file V3.2 generated at Mon Apr 28 18:08:50 2013 No. of patterns : 14 No. of input units : 6 No. of output units : 1 # Input pattern 1: 1 1 1 1 1 0 # Output pattern 1: 0 # Input pattern 2: 1 1 1 1 1 1 # Output pattern 2: 0 # Input pattern 3: 1 1 0 1 1 0 # Output pattern 3: 0 ... Mit der Codierung zu beginnen hat somit den Vorteil, dass sich hieraus sowohl die Größe der Eingabe-Schicht als auch die der Ausgabe-Schicht ergibt: Für das Beispiel wird ein Netz mit sechs Eingabe-Neuronen und einem Ausgabe-Neuron benötigt. Wir werden eine kleine Zwischenschicht aus zwei Neuronen hinzufügen. Dazu sind nach dem Starten von JavaNNS die folgenden Schritte durchzuführen: • Anlegen der drei Neuronen-Schichten mittels Tools > Create > Layers . . .
– Die erste Schicht von 6 Neuronen kann als 2×3- oder 1×6-Schicht, erzeugt im Create-Layer-Fenster, angelegt werden. Der Typ der Neuronen (Unit Type) muss auf Input gesetzt werden. – Die Zwischenschicht wird als 1×2-Schicht ausgelegt und der Typ mit Hidden festgelegt. Verändern Sie die Top-Left-Position der Schicht, in dem Sie den empfohlenen Wert um 1 erhöhen, damit in der Darstellung ein sichtbarer Abstand zwischen den erzeugten Neuronen-Schichten entsteht.
34
1 Einführung – Die Ausgabe-Schicht besteht nur aus einem Neuron (1×1-Schicht). Verändern Sie wieder die Top-Left-Position wie vorher angegeben, und setzen Sie den Typ des Neurons auf Output. • Stellen Sie die vorwärtsgerichtete Vernetzung zwischen den Schichten her: Tools > Create > Connection Wählen Sie Connect feed-forward und vergessen Sie nicht, mittels Connect die Verbindungen zu erzeugen. • Speichern Sie dieses Netz.
• Laden Sie die Muster-Datei. Die Datei ist vom Typ .pat und muss den oben dargestellten Inhalt aufweisen.
Abb. 1.23: JavaNNS: Erzeugen einer Neuronen-Schicht
Das Netz kann nun noch „verschönert“ werden, indem die Ein- sowie Ausgabe-Neuronen angemessene Bezeichnungen erhalten: Dazu markiere man ein Neuron und editiere es entsprechend. Nun kann das künstliche neuronale Netz trainiert und so ein Klassifikator erzeugt werden. Hierzu wird das control-Fenster geöffnet (Tools > Control), mit dem der Trainingsprozess gesteuert werden kann. Für die Kontrolle des Lernerfolgs ist die Anzeige des Netzfehlers sinnvoll: View > Error graph. Die Trainingsumgebung ist in Abbildung 1.24 zu sehen. Nachdem das Netz initialisiert wurde, kann es unter Nutzung der Standardwerte (Backpropagation-Lernverfahren, Lernparameter 0,2 ) trainiert werden. Dazu wird die Zyklenzahl festgelegt und das Training mittels Learn All angestoßen. Die Fehlerkurve vermittelt einen Eindruck vom Lernerfolg. Das Ergebnis kann dann mittels Save Data > Auswahl Result files .res gespeichert werden (Abbildung 1.25 auf der nächsten Seite).
1.6 Werkzeuge
Abb. 1.24: JavaNNS: Trainieren eines Netzes
Abb. 1.25: JavaNNS: Speichern des Ergebnisses
35
36
1 Einführung
Üblicherweise werden die Trainingsausgaben (siehe Abbildung 1.25) mit in die Ergebnisdatei aufgenommen. Diese ist eine Text-Datei, die für jedes Muster sowohl den Trainingswert als auch den vom Netz berechneten Wert enthält, so dass eine weitere Auswertung, zum Beispiel mittels Tabellenkalkulation vorgenommen werden kann. Das folgende Listing zeigt den Inhalt einer .res-Datei. SNNS result file V1.4-3D generated at Sun May 05 16:43:13 2013 No. of patterns : 14 No. of input units : 6 No. of output units : 1 startpattern : 1 endpattern : 14 teaching output included #1.1 0 0.20123 #2.1 0 0.01936 #3.1 0 0.9002 #4.1 1 0.78917 #5.1 1 0.94537 Der JavaNNS kann für viele Typen künstlicher neuronaler Netze eingesetzt werden, vorzugsweise jedoch für Klassifikationsaufgaben mittels vorwärtsgerichteter neuronaler Netze. Da der JavaNNS den Stuttgarter Neuronale Netze Simulator (SNNS) benutzt, kann ein entwickeltes Netz auch mittels Kommandozeilen-Steuerung in andere Anwendungen eingebettet werden. Aufgabe 1.1:
Data-Mining-Werkzeuge
Machen Sie sich mit den vorgestellten Systemen vertraut, indem Sie die vorgestellten Beispiele nachvollziehen.
2
Grundlagen des Data Mining If you file it, you’ll know where it is but you’ll never need it. If you don’t file it, you’ll need it but never know where it is. Tillis’s Organizational Principle
2.1
Grundbegriffe
Zunächst definieren wir einige Grundbegriffe, die für ein Verständnis des Gebiets Data Mining unerlässlich sind. Zentral ist ein Verständnis der Begriffe Daten, Information und Wissen. In unserem Buch werden wir von einer Begriffshierarchie ausgehen, wie sie sich in der Fachliteratur durchgesetzt hat. Die Grundlage der IT-basierten Verarbeitung sind Daten. Hat ein Datum, beispielsweise die Zahl −4, eine Bedeutung, dann wird sie zu einer Information. Handelt es sich beispielsweise um die Veränderung eines Aktienkurses (in Prozent), so wird die −4 zu einer Information. Haben wir nun zum Beispiel eine Regel, die einen Verkauf dieser Aktie auslöst, so handelt es sich um Wissen. In anderen Quellen wird der Begriff Information an die Spitze dieser Hierarchie gesetzt. Die Begriffshierarchie kann auch um die Begriffe Signal oder Zeichen erweitert werden, die dann unterhalb des Begriffs Daten einzuordnen sind. Definition 2.1:
Daten
Mit Daten bezeichnet man eine Ansammlung von Zeichen mit der dazugehörigen Syntax. Daten ist der Plural des Wortes Datum, welches im deutschen Sprachgebrauch eine Kalender- oder Zeitangabe ist. Wir werden hier die weniger gebräuchliche, nichtsdestoweniger aber gültige Interpretation eines Datums als eine Informationseinheit verwenden. Man unterscheidet • Unstrukturierte Daten
• Semistrukturierte Daten • Strukturierte Daten
38
2 Grundlagen des Data Mining
Typische Beispiele für unstrukturierte Daten sind Bilder oder Texte. Data Mining auf diesen Daten erweist sich als schwierig, da man im Allgemeinen zunächst aus den unstrukturierten Daten strukturierte herstellen muss. Web-Seiten bestehen zwar überwiegend aus Text, was sie in die Kategorie der unstrukturierten Daten platzieren würde. Allerdings weisen Web-Seiten eine Struktur auf, so dass man sie als semistrukturierte Daten bezeichnet. Schwerpunkt dieses Buchs sind strukturierte Daten. Unter strukturierten Daten versteht man meistens relationale Datenbank-Tabellen oder Daten in ähnlich strukturierten Datei-Formaten. Dazu zählen auch Datei-Formate einer Tabellenkalkulation oder insbesondere auch das Austauschformat CSV (comma-separated values), welches als ASCII-Text direkt mit einem Editor bearbeitet werden kann. Diese Formate weisen eine feste Struktur auf: Die in jedem Datensatz enthaltenen Daten haben eine feste Reihenfolge, die Attribute sind definiert, die Datentypen sind festgelegt. Aus Daten entstehen Informationen, indem den Daten eine Bedeutung zugeordnet wird. Definition 2.2:
Information
Eine Information ist ein Datum, welches mit einer Bedeutung gekoppelt ist. Eine Information ist somit die zweckbestimmte Interpretation von Daten. Daten bestehen zunächst nur aus Fakten und werden erst dann zur Information, wenn sie im Kontext betrachtet werden und eine Bedeutung erhalten. Definition 2.3:
Wissen
Eine Information in Verbindung mit der Fähigkeit, diese zu benutzen, wird als Wissen bezeichnet. Eine Information wird folglich erst dann zu Wissen, wenn man mit ihr etwas anzufangen weiß. „Ein System S hat Wissen W, wenn S immer dann – wenn erforderlich – W anwendet.“ ([MN73], zitiert nach [Lau85]). Nun können wir definieren, was wir unter Data Mining verstehen. Definition 2.4:
Data Mining
Data Mining (Datenschürfen) ist die Extraktion von Wissen aus Daten. Wir sollten diese Definition um einige Forderungen erweitern. Wir möchten Wissen erhalten, welches bisher unbekannt war. Es geht also um die Extraktion von verborgenem Wissen. Dieses Wissen sollte nicht trivial, sondern nützlich sein, wir müssen es also sinnvoll anwenden können. Data Mining sollte auch weitgehend automatisch ablaufen. Wer einige Erfahrung im Data-Mining-Bereich hat, weiß, dass die letzte Forderung
2.2 Datentypen
39
bewusst durch das Wort weitgehend abgeschwächt wurde. Die eigentliche Datenanalyse wird meistens automatisch ablaufen, aber die Vorbereitung bedarf einer intensiven Unterstützung durch den Analysten. Nach der Definition des Begriffs Data Mining betrachten wir die Teilgebiete des Data Minings. Gemäß der Unterteilung in unstrukturierte, semistrukturierte und strukturierte Daten kategorisiert man Teilgebiete des Data Minings wie folgt: • Text Mining (unstrukturierte Daten)
• Web Mining (semistrukturierte Daten)
• Data Mining im engeren Sinn (strukturierte Daten) Text Mining befasst sich mit der Analyse von Texten, also von unstrukturierten Daten. Web Mining arbeitet im Allgemeinen auf den bereits diskutierten semistrukturierten Daten. Data Mining im engeren Sinn befasst sich dagegen mit strukturierten Daten. Häufig wird der Begriff Data Mining als Synonym für das Data Mining im engeren Sinn verwendet. Wir werden uns auf das Data Mining im engeren Sinne beschränken und nur vereinzelt auf die anderen beiden Teilgebiete eingehen. Wir werden die Begriffe Datensatz, Instanz, Objekt oder Muster weitgehend synonym verwenden. Damit ist stets ein Datensatz in einer Datenbanktabelle gemeint, der ein Objekt oder eine Instanz anhand einer Menge von Merkmalswerten charakterisiert: Den Datensatz sunny, hot, high, false, no kann man mathematisch als Quintupel (sunny, hot, high, false, no) und damit auch als ein Objekt auffassen. Dieses Objekt ist zudem eine Instanz der Klasse aller Wetter-Situationen.
2.2
Datentypen
Nach der Diskussion, welche Daten vorliegen können (strukturiert, semistrukturiert oder unstrukturiert), betrachten wir die unterschiedlichen Datentypen, mit denen Data Mining konfrontiert sein kann. Daten können sehr unterschiedlich sein. Wir haben täglich mit Zahlen zu tun. Mit Zahlen kann man rechnen. Wir können Mittelwerte berechnen, Zahlen miteinander vergleichen und sie bezüglich ihrer Größe ordnen. Ebenso sind Daten der Form klein, mittelgroß, groß, sehr groß möglich. Diese haben – wie die Zahlen – eine Ordnung, man kann sie bezüglich ihrer Größe vergleichen und folglich sortieren. Rechnen können wir mit Daten von diesem Typ nicht. Und dann gibt es Datentypen wie den Datentyp
40
2 Grundlagen des Data Mining
Farbe. Hier haben wir leider keine Ordnung. Wir können bei den Farben braun und schwarz nicht sagen, welche besser, größer oder bunter ist. Und ein Rechnen ist hier nicht möglich. Mit diesen zwei Kriterien – Ordnung und Rechnen – können wir nun eine erste Kategorisierung von Datentypen vornehmen: Nominale Daten unterliegen keinerlei Rangfolge. Rechnen ist mit diesen Daten nicht möglich. Ein Vergleich zwischen den Daten ist nur insofern möglich, indem man prüfen kann, ob sie gleich beziehungsweise nicht gleich sind. Ordinale Daten haben zumindest eine Ordnungsrelation (wie θ wird das Neuron mit dem Wert 1 aktiviert (Abbildung 2.5). Die Schwellwertfunktion lässt sich für das Delta-Lernverfahren für vorwärtsgerichtete neuronale Netze ohne eine innere Schicht einsetzen. Vorwärtsgerichtete neuronale Netze ohne Zwischenschicht werden als Perzeptron bezeichnet. Eine Schwellwertfunktion ist nicht stetig differenzierbar und kann deshalb nicht für Lernverfahren eingesetzt werden, die auf einem Gradientenabstiegsverfahren basieren. Die Logistische Funktion (Abbildung 2.6) ist stetig differenzierbar und die am häufigsten eingesetzte Aktivierungsfunktion in vorwärtsgerichteten neuronalen Netzen. Die logistische Funktion ist einfach differenzierbar und kann in Lernverfahren verwendet werden, die auf einem Gradientenabstiegsverfahren basieren. Mit dem Parameter p kann die Stärke des Anstiegs der Kurve im Bereich des Schaltpunktes, in einem Neuron ist dies der Schwellwert, gesteuert werden. Die bei der Berechnung der Gewichtsänderung benutzte 1. Ableitung der logistischen Funktion lautet: (x) = flog (x) · (1 − flog (x)) flog
50
2 Grundlagen des Data Mining
f (x) =
1, x > θ 0, x ≤ θ
Abb. 2.5: Schwellwertfunktion
f (x) =
1 1 + e−px
Abb. 2.6: Logistische Funktion
Der Tangens Hyperbolicus wird verwendet, wenn für die Aktivierung des Neurons der Bereich [−1, +1] in Frage kommt. Der Tangens Hyperbolicus (siehe Abbildung 2.7) ist ebenso wie die logistische Funktion einfach zu differenzieren und wird insbesondere in den Lernverfahren mehrschichtiger vorwärtsgerichteter neuronaler Netze eingesetzt. Die bei der Berechnung der Gewichtsänderung benutzte 1. Ableitung lautet hier: tanh (x) = 1 − tanh2 (x)
Ausgabefunktion Als Ausgabefunktion wird in vielen Fällen die Identität f (x) = x eingesetzt. Damit ist die Aktivität eines Neurons gleichzeitig sein Ausgabewert on = actn . In Data-MiningAnwendungen kann eine Schwellwertfunktion in der Ausgabeschicht zur Anwendung kommen, die dann eine binäre Ausgabe erzeugt, 0 oder 1. Anstatt die übliche Rundungsfunktion hierfür einzusetzen, kann ein selbst festgelegter Schwellwert (oft deutlich
2.4 Grundlagen Künstlicher Neuronaler Netze
51
f (x) = tanh(x)
Abb. 2.7: Die Funktion Tangens Hyperbolicus
kleiner als 0,5) das Ergebnis entscheidend verbessern.
Beispiel-Neuron Betrachten wir ein simples „Netz“, bestehend aus nur einem arbeitenden Neuron, welches die logische UND-Funktion simulieren kann (siehe Abbildung 2.8): Die EingabeSchicht besteht aus zwei Neuronen, die die Netz-Eingabe darstellen. Dabei werden die Aktivierungen von außen gesetzt. Diese Aktivierungen entsprechen den Werten der Eingabe-Muster oder Eingabe-Daten. Sind beide Eingaben 1 (also wahr), so soll die Netzausgabe ebenfalls 1 sein, sonst 0. Dieses Verhalten muss durch das einzelne Neuron der zweiten Schicht erreicht werden. Das Neuron ist somit ein Ausgabe-Neuron.
Abb. 2.8: Beispiel: Ein Neuron fungiert als UND-Schalter
Im üblichen Einsatzfall neuronaler Netze werden die Gewichte an den Verbindungen sowie die zugehörigen Gewichte durch ein Training gelernt. In diesem Beispiel werden wir diese manuell bestimmen. Die Frage lautet somit:
52
2 Grundlagen des Data Mining
Welche Werte können wir für w1 , w2 sowie θ einsetzen, damit das Neuron das gewünschte Verhalten zeigt? Wir gehen davon aus, dass die Ausgabefunktion die identische Funktion, somit o = act, ist. Richtig, es gibt unendlich viele Möglichkeiten. Eine ist: w1 = w2 = 1 und θ = 1,2. Die in diesem Abschnitt vorgestellten Abläufe und Berechnungen in einem Neuron werden in allen künstlichen neuronalen Netzen zumindest in ähnlicher Form eingesetzt.
2.5
Logik
Wir können an dieser Stelle keine Einführung in die Logik geben. Da aber sehr viele formale Formen der Wissensdarstellung auf Logik aufbauen und Data Mining den Anspruch erhebt, Wissen aus Massendaten zu extrahieren, muss ein Grundverständnis der Logik vorhanden sein. Dazu definieren wir hier einige Grundbegriffe der mathematischen Logik. Die Logik – oder konkreter logische Formeln – werden für die Darstellung von Wissen eingesetzt. Was aber ist eine logische Formel? Wir beantworten diese Frage im Rahmen des sogenannten Prädikatenkalküls 1. Stufe (PK1), welcher ausgangs des 19. Jahrhunderts vom deutschen Mathematiker und Philosophen Gottlob Frege in seiner Begriffsschrift vorgestellt wurde [Fre79]. Eine ausführliche Einführung in diese formale Logik findet man unter anderem in [LC12]. Formal ist eine logische Formel nach diesen Regeln aufgebaut: Definition 2.7:
Logische Formel
1. Ist p ein n-stelliges Prädikatensymbol und sind t1 , . . . , tn Terme, dann ist auch p(t1 , . . . , tn ) eine (atomare) logische Formel. 2. Sind A und B logische Formeln, dann sind auch folgende Verknüpfungen logische Formeln: • Konjunktion: A und B (A ∧ B),
• Disjunktion: A oder B (A ∨ B), • Negation: nicht A (¬A),
• Implikation: Wenn A Dann B (A → B)
sowie
• Äquivalenz: A genau dann, wenn B (A ↔ B).
3. Ist x eine Variable und F eine logische Formel, so sind auch folgende sogenannte Quantifizierungen logische Formeln: • Allquantifizierung: Für alle x gilt F ( ∀x F ),
• Existenzquantifizierung: Es existiert ein x, für das F gilt (∃x F ).
4. Es gibt keine anderen logischen Formeln.
2.5 Logik
53
In der Bildungsvorschrift für logische Formeln wird der Begriff eines Terms verwendet, der nun definiert wird: Definition 2.8:
Term
1. Jede Konstante ist ein Term. 2. Jede Variable ist ein Term. 3. Ist f ein n-stelliges Funktionssymbol und sind t1 , . . . , tn Terme, dann ist auch f (t1 , . . . , tn ) ein Term. 4. Es gibt keine anderen Terme. Die Wirkung der logischen Verknüpfungen wird in Form einer Wahrheitswerte-Tabelle gezeigt: A W W F F
B W F W F
A∨B W W W F
A∧B W F F F
¬A F F W W
A→B W F W W
A↔B W F F W
Tabelle 2.1: Tabelle der Wahrheitswerte der logischen Verknüpfungen
Überlegen Sie sich anhand der Wahrheitswerte, dass die Implikation A folgender Disjunktion äquivalent ist: ¬A ∨ B.
→
B zu
Wenn A falsch ist, ist die Implikation A → B (WENN A DANN B) stets richtig. Oder es gilt B, das heißt, wenn A nicht falsch ist, also gilt, dann muss auch B gelten.
Mittels der Prädikatensymbole können Eigenschaften von Objekten oder auch Beziehungen zwischen Objekten formal durch logische Formeln ausgedrückt werden. Hierzu ein paar Beispiele: weiblich(anna). sterblich(sokrates). gruen(haus1). guterKunde(meier). kind(anna,paul,beate). klasse(meier,guterKunde). entfernung(a,b,100). Nicht alle logischen Formeln können wir wirklich als Wissen betrachten. Eine logische Formel wie guterKunde(x) sagt wenig aus: Gibt es ein x, welches ein guter Kunde ist? Gibt es kein x? Sind alle x gute Kunden?
54
2 Grundlagen des Data Mining
Wird nun das x quantifiziert und sind generell alle Variablen in einer logischen Formel quantifiziert, so können wir dieser Formel einen Wahrheitswert zuordnen: ∀x guterKunde(x) → rabatt(x) Für die Darstellung von Wissen sind diese speziellen logischen Formeln von Interesse: die Aussagen. Aussagen sind logische Formeln, denen ein Wahrheitswert, wahr oder falsch, zugeordnet werden kann. Gemäß unserer Definition von Wissen als Information verbunden mit der Fähigkeit diese anzuwenden, ist Wissen immer richtig. Wird Wissen mittels logischer Formeln dargestellt, so sind dies damit offensichtlich nur solche Formeln, denen wir den Wahrheitswert wahr zuordnen. Die Aussage „Wenn x ein guter Kunde ist, dann wird dem Kunden x Rabatt gewährt.“ ist eine solche logische Formel, die als Handlungsanleitung zu verstehen und somit als wahr anzusehen ist. Sehr häufig werden in diesem Buch Wenn-Dann-Sätze verwendet, siehe Abschnitt 3.2 oder Abschnitt 4. Der folgende Satz entstammt Abbildung 3.2 auf Seite 60: WENN Alter = 31 . . . 40 UND Einkommen = hoch DANN Kreditwürdigkeit = sehr gut Diese Sätze werden als Regeln bezeichnet und sind im Sinne der Prädikatenlogik spezielle logische Formeln: Definition 2.9:
Regel
Eine Regel ist eine logische Formel mit folgenden Eigenschaften: 1. Die Struktur ist: ∀x1 , x2 . . . xn (A1 ∧ A2 ∧ . . . ∧ Ak ) → (B1 ∧ B2 ∧ . . . ∧ Bl )
2. Es treten keine weiteren Variablen als x1 , x2 . . . xn in den Ai oder Bj auf. Somit sind alle Variablen in der Formel allquantifiziert. 3. Die Ai und Bj sind atomare Formeln oder negierte atomare Formeln. Die oben angeführte Wenn-Dann-Aussage entspricht den Forderungen an eine Regel und kann wie folgt als logische Formel notiert werden: ∀x (alter(x) ≥ 31 ∧ alter(x) ≤ 40 ∧ einkommen(x, hoch)) → kreditwürdigkeit(x, sehrGut)
Da eine Regel eine logische Formel ist, in der alle Variablen allquantifiziert sind, wird in der Praxis auf die Darstellung der Quantifizierung verzichtet. Zudem wird aus Gründen der Lesbarkeit statt des Implikationszeichens (→) die WENN-DANN-Schreibweise verwendet: WENN alter(x) ≥ 31 UND alter(x) ≤ 40 UND einkommen(x, hoch) DANN kreditwürdigkeit(x, sehrGut) Eine Menge von Regeln, die eine Klassifikation oder eine Prognose beschreiben, ist ein Ziel des Data Mining. Gelingt die Erarbeitung einer solchen Regelmenge, dann ist das Ziel der Wissensextraktion aus Massendaten erreicht: Das Wissen liegt nun in Regelform
2.6 Überwachtes und unüberwachtes Lernen
55
vor. Man kann sagen, das Wissen ist als eine Menge logischer Formeln dargestellt. Die Logik ist somit die Grundlage dieser Wissensdarstellung. Regeln können – wie hier beschrieben – als logische Formeln dargestellt werden, Regeln können aber auch in Form einer Tabelle angegeben werden (Abschnitt 4.1) oder sind in einem Entscheidungsbaum enthalten. In einer Entscheidungstabelle entspricht eine Spalte einer Regel; in einem Entscheidungsbaum stellt jeder Pfad vom Wurzelknoten zu einem Blatt eine Regel dar.
2.6
Überwachtes und unüberwachtes Lernen
Data Mining beginnt mit einer gegebenen Menge von Beispielen. Diese nennt man Instanzenmenge oder Beispielmenge E. Diese Menge E wird benutzt, um beispielsweise Klassen zu bilden oder Assoziationen herzustellen. Auf einer Teilmenge von E wird „gelernt“. Dies ist die sogenannte Trainingsmenge T ⊂ E. Eine weitere Teilmenge von E (meist E \ T ) wird eingesetzt, um das Gelernte zu prüfen, zu validieren. Diese Menge heißt folglich Testmenge (oder Validierungsmenge) V ⊂ E. Dieses Vorgehen ist ausführlich im Abschnitt 9.4 erläutert. Für das Training können die zwei folgenden Lernstrategien unterschieden werden: Unüberwachtes Lernen Die zu entdeckenden Muster sind gänzlich unbekannt. Auch Beispiele, die eine Gruppierung oder Klassifikation vorgeben, sind nicht gegeben. Ein Beispiel für nicht-überwachtes Lernen ist die Cluster-Analyse (Abschnitte 3.1 und 6). Die Aufgabe ist, Gruppen von ähnlichen Objekten zu finden und diese zu Untermengen, also Clustern zusammenzufassen. Hier ist keine Lösung vorgegeben, wir können also die durch einen Algorithmus entwickelte Lösung nicht mit einer gewünschten Clustermenge vergleichen. Überwachtes Lernen Es werden Beispiele vorgegeben, in denen das Resultat gegeben ist. Haben wir zum Beispiel Datensätze für Nadel- oder Laubbäume gegeben, die zum einen Merkmale der Bäume enthalten, zum anderen aber auch die Klassifizierung in Nadel- oder Laubbaum, dann wissen wir also, welcher Baum in welche Kategorie gehört. Nun können wir prüfen, ob unsere Verfahren wirklich eine korrekte Klassenzuordnung liefern (vgl. Klassifikation, Abschnitte 3.2 und 5). Gerade beim überwachten Lernen fällt auf, dass wir eine Grundannahme stillschweigend voraussetzen: Die gegebenen Beispieldaten sind repräsentativ, das bedeutet: Zukünftige Daten verhalten sich ähnlich wie die gegebenen Beispiele. Auf dieser Annahme basiert jedes Verfahren, welches aus der Vergangenheit auf zukünftige Ereignisse schließen möchte. Diese Annahme muss nicht immer gerechtfertigt sein, aber wenn wir diese Annahme nicht als gültig annehmen, sollten wir mit Data Mining erst gar nicht beginnen (vgl. Seite 202).
3
Anwendungsklassen All great discoveries are made by mistake. Young’s Law
Data Mining wird mit unterschiedlichen Zielen betrieben. Eine typische Situation ist, dass man eine große Datenmenge gegeben hat und zunächst gar nicht weiß, wonach man sucht. Ein erster Schritt ist dann, Gruppen von ähnlichen Objekten zu bilden. Dies ist Clustering (Abschnitt 3.1). Hat man solche Cluster gefunden, so werden diese mit Namen versehen: man bildet Klassen. Liegen die Daten bereits klassifiziert vor – beispielsweise Kundendaten mit einer Einordnung in schlechte, gute oder sehr gute Kunden – so sucht man nach Techniken, die für neue Kunden eine Vorhersage liefern, ob es sich um schlechte, gute oder sehr gute Kunden handeln wird. Mit diesem Problem befassen sich Klassifikationsverfahren (Abschnitt 3.2). Ähnlich zur Klassifikation ist die Vorhersage numerischer Werte (Abschnitt 3.3). Man kann auch die Frage stellen, ob es Beziehungen zwischen den Attributen in unserem Datenbestand gibt. Wer Zigaretten kauft, kauft auch Streichhölzer. Hier steht nicht im Vordergrund, ein bestimmtes Zielattribut – auf Basis der Werte anderer Attribute – vorherzusagen, sondern Zusammenhänge zwischen beliebigen Attributen herzustellen. Dies bezeichnet man als Assoziationsanalyse (Abschnitt 3.4). Auch Texte oder Web-Seiten können mit Data-Mining-Verfahren analysiert werden. Darauf gehen wir kurz in den Abschnitten 3.5 und 3.6 ein. Auf weitere Anwendungsklassen, wie zum Beispiel Zeitreihenanalyse, gehen wir in diesem Buch nicht ein.
3.1
Cluster-Analyse
Ziel der Clusteranalyse (kurz: Clustering oder Clusterbildung) ist es, eine gegebene Menge E (E ⊆ X) in Teilmengen (Cluster) zu zerlegen. Die Objekte innerhalb eines Clusters sollen dabei einander möglichst ähnlich sein, wohingegen Objekte verschiedener Cluster einander möglichst unähnlich sein sollen. Neben der Instanzenmenge selbst ist für eine Cluster-Analyse folglich eine Distanz- oder Abstandsfunktion (siehe Abschnitt 2.3) erforderlich, um die Ähnlichkeit der Objekte quantifizieren zu können. Da natürlich verschiedene Clusterbildungen möglich sind, benötigt man zusätzlich eine Qualitätsfunktion (siehe Abschnitt 9), die einen Vergleich von Clusterbildungen erlaubt. Gegeben sind demnach: • X Instanzenraum
• E ⊆ X Instanzenmenge
58
3 Anwendungsklassen • dist : X × X → + Abstandsfunktion
• quality : 22 → Qualitätsfunktion X
Wir suchen eine Clustermenge C = {C1 , . . . , Ck } mit folgenden Eigenschaften: • Ci ⊆ E
• quality(C) → max • Ci ∩ Cj =
• C1 ∪ . . . ∪ Ck = E Die beiden letzten Restriktionen bedeuten, dass kein Objekt zu mehreren Clustern zugeordnet wird und dass jedes Objekt zu einem Cluster gehört. Beide Forderungen kann man aufgeben. Beispielsweise ist es bei Ausreißern durchaus sinnvoll, sie isoliert, also außerhalb aller Cluster, zu belassen. Das Ziel einer Cluster-Analyse lässt sich mit Hilfe einer Abstandsfunktion dist so formulieren, dass die gegebenen Objekte derart in Teilmengen zerlegt werden, dass der Abstand der Objekte innerhalb eines Clusters kleiner als der Abstand zu den Objekte anderer Cluster ist. ∀ Ci , Cj ∈ C(i = j) : ∀ xk , xl ∈ Ci , xm ∈ Cj : dist(xk , xl ) < dist(xk , xm ) Diese Forderung ist meistens zu hart, denn bereits aus Abbildung 3.1 auf der nächsten Seite ist ersichtlich, dass ein Objekt am Rande eines Clusters durchaus einen geringeren Abstand zu einem Objekt eines anderen Clusters als zu einigen Objekten desselben Clusters aufweisen kann. Wir werden deshalb fordern, dass die Objekte dem Cluster zugeordnet werden, zu dessen Repräsentant sie am nächsten liegen. Die Qualitätsfunktion beschreibt die Güte des Clusterings. quality(C = {C1 ⊆ E, . . . , Ck ⊆ E}) → Meistens basiert die Qualitätsfunktion auf der Abstandsfunktion dist beziehungsweise auf einem Ähnlichkeitsmaß simil (vergleiche Abschnitt 2.3 sowie Kapitel 9). In Abbildung 3.1 sind zwei unterschiedliche Cluster-Bildungen dargestellt. Offensichtlich ist die Cluster-Bildung im rechten Teilbild besser als die im linken. Wie kann eine Qualitätsfunktion das, was wir Menschen auf einen Blick sehen, auch erkennen? Wozu benötigt man Cluster? Wie sehen erfolgreiche Anwendungen einer Cluster-Analyse aus? Beispielsweise können wir mittels Cluster-Analyse homogene Kundengruppen suchen, um auf den jeweiligen Kundentyp angepasste Angebote zu erstellen. Man bezeichnet deshalb die Cluster-Analyse häufig auch als Klassenbildung, da nach bisher unbekannten Klassen von ähnlichen Objekten gesucht wird. Cluster-Bildung gehört zum unüberwachten Lernen. Auch im Bereich der Zeichenerkennung, des Optical Character Recognition (OCR), findet Clustering Anwendung. Mittels Cluster-Techniken sucht man ähnliche Buchstaben
3.2 Klassifikation
59
Abb. 3.1: Schlechtes und gutes Clustering
und fasst diese zu Buchstabengruppen zusammen, um im nächsten Schritt spezialisierte Klassifikatoren für die Zeichenerkennung zu entwickeln. Welche Cluster-Verfahren behandeln wir? • Der klassische k-Means-Algorithmus wird in Abschnitt 6.2 behandelt.
• Eine Fuzzy-Variante (Fuzzy c-Means) betrachten wir in Abschnitt 6.10.
• Sowohl das k-Medoid-Verfahren und zwei spezielle Varianten dieser Verfahrensklasse – PAM und CLARANS – diskutieren wir in Abschnitt 6.3. • Der Ansatz der Erwartungsmaximierung wird in Abschnitt 6.4 dargestellt.
• Einige Varianten der agglomerativen Cluster-Bildung – als Variante der hierarchischen Cluster-Bildung – werden im Abschnitt 6.5 vorgestellt. • Auf dichtebasierte Cluster-Bildung, insbesondere den DBSCAN-Algorithmus gehen wir im Abschnitt 6.6 ein. • Einige Architekturen künstlicher neuronaler Netze können für die ClusterBildung eingesetzt werden: – Selbstorganisierende Karten im Abschnitt 6.7, – Neuronale Gase im Abschnitt 6.8 sowie – Adaptive Resonanz Theorie (ART-Netze) im Abschnitt 6.9.
3.2
Klassifikation
Ziel der Klassifikation ist die Einteilung der Daten in Klassen. So können Kunden anhand ihrer Daten in die Klasse der Kunden mit normaler Kreditwürdigkeit oder in die Klasse derer mit sehr guter Kreditwürdigkeit eingeteilt werden. Anhand einer vorgegebenen Trainingsmenge von Kundendaten – Datensätze, bei denen das Klassifikationsmerkmal Kreditwürdigkeit bekannt ist – wird ein Modell (siehe Abbildung 3.2 auf der nächsten Seite) entwickelt.
60
3 Anwendungsklassen
=⇒
Trainingsproben Name
Alter
Einkommen
Kreditwürdigkeit
Adam Beate Clemens Diana Egon Frank ...
≤ 30 ≤ 30 31. . . 40 > 40 > 40 31. . . 40 ...
niedrig niedrig hoch mittel mittel hoch ...
normal sehr gut sehr gut normal normal sehr gut ...
Klassifikationsalgorithmus
⇓
Klassifikationsregeln (z.B.) WENN Alter = 31. . . 40 UND Einkommen = hoch DANN Kreditwürdigkeit = sehr gut
Abb. 3.2: Klassifikation – Lernphase
Dieses Modell wird dann an Testdaten geprüft (Tabelle 3.1) und gegebenenfalls korrigiert, bis es für die Testdaten nur noch eine geringe, akzeptable Fehlerrate aufweist. Um diesen Fehler bestimmen zu können, muss natürlich auch für die Testmenge die Klassifikation für die Testdaten bekannt sein. Für diesen Lernprozess sind somit sowohl die Klassen als auch die Zugehörigkeit der Trainings- sowie Test-Objekte zu einer dieser Klassen vorher bekannt. Man spricht daher von überwachtem Lernen. Name
Alter
Gerda Hanno Inge ...
31. . . 40 31. . . 40 > 40 ...
Testproben EinKreditkommen würdigkeit hoch sehr gut hoch normal hoch sehr gut ... ...
Bewertung durch Regeln sehr gut sehr gut ... ...
Tabelle 3.1: Klassifikation – Testphase
Ist das erlernte Klassifikationsmodell gut genug, kann dieses dann auch neue Datensätze, für die noch keine Klassenzugehörigkeit bekannt ist, in die Klassen einordnen, siehe Abbildung 3.2. Dies ist dann die Anwendungsphase. Name
Alter
Jochen Karl ...
31. . . 40 ... ...
Neue Daten EinKreditkommen würdigkeit hoch ? ... ... ... ...
Tabelle 3.2: Klassifikation – Anwendungsphase
Bewertung durch Regeln sehr gut ... ...
3.3 Numerische Vorhersage
61
Die Rolle des Lernverfahrens besteht darin zu erkennen, wie die gegebenen Eigenschaften (Alter, Einkommen) die Klasseneinordnung (Kreditwürdigkeit) beeinflussen. Ein eindeutiges Ergebnis der Klassifikation, eine eindeutige Klassenzuordnung, muss nicht in jedem Fall gegeben oder gewünscht sein. Oftmals ist auch die Wahrscheinlichkeit für die Zugehörigkeit zu einer Klasse von Interesse. Ein Objekt gehört dann durchaus – mit unterschiedlichen Wahrscheinlichkeiten – zu mehreren Klassen. Klassifikation ist wohl die am meisten genutzte Anwendung. Es gibt eine Vielzahl von Anwendungen, in denen man das zukünftige Verhalten eines Kunden auf der Basis von alten Daten vorhersagt. Wird der Kunde auf eine Werbeaktion reagieren, oder kann man die Versandkosten sparen? Kann man die Kreditwürdigkeit vorhersagen? Auch bei der bereits angesprochenen Zeichenerkennung handelt es sich um Klassifikation. Ist das vorliegende Zeichen ein A? Welche Klassifikationsverfahren werden in diesem Buch behandelt? • Das k-Nearest-Neighbour-Verfahren, ein instanzenbasiertes Verfahren, wird in Abschnitt 5.1 behandelt. • Die Generierung von Entscheidungsbäumen, insbesondere der ID3- und C4.5Algorithmus, wird in Abschnitt 5.2 vorgestellt. • Auf ein wahrscheinlichkeitsbasiertes Verfahren, den Naive-Bayes-Algorithmus, gehen wir in Abschnitt 5.3 ein. • Auch künstliche neuronale Netze, die vorwärtsgerichteten neuronalen Netze eignen sich zur Klassifikation (Abschnitt 5.4). • Das Grundprinzip der Support Vector Machines wird in Abschnitt 5.5 vorgestellt. Verfahren der Assoziationsanalyse (Abschnitt 3.4) können durchaus auch zur Klassifikation verwendet werden. Man schränkt die Assoziationsregeln dann derart ein, dass auf der rechten Seite der Wenn-Dann-Regeln immer das Ziel-, also das Klassifikationsmerkmal steht. Man spricht dann von Klassifikationsregeln (siehe Abschnitt 7, Abschnitt 4.3 und Seite 189).
3.3
Numerische Vorhersage
Während bei einer Klassifikation für ein Objekt oder einen Datensatz die zutreffende Klasse „vorhergesagt“ wird, zielt die numerische Vorhersage darauf ab, einen beliebigen numerischen Wert zu prognostizieren. Numerische Vorhersage geschieht normalerweise durch die Approximation einer Funktion mittels Beispielen. Dabei werden auf der Basis von Trainingsdaten – bestehend aus Datensätzen und den zugehörigen Funktionswerten – die Werte zukünftiger Datensätze berechnet. Die vorliegenden Daten werden genutzt, um eine Funktion zu berechnen, die
62
3 Anwendungsklassen
den tatsächlichen Verlauf der Daten approximiert. Mit dieser Funktion kann man dann für neue Datensätze einen entsprechenden Vorhersagewert berechnen. Von einer Funktion y = f (x) ist lediglich eine Instanzenmenge E bekannt, die aus gegebenen Datensätzen X = {x1 , . . . , xn } sowie zugehörigen Zielwerten Y = {y1 , . . . , yn } besteht. Gesucht ist nun eine Funktion y = h(x), welche die Zusammenhänge zwischen den Instanzen und Zielwerten – also die unbekannte Funktion f – möglichst genau widerspiegelt. Der Fehler error(f (x), h(x)) zwischen berechnetem und tatsächlichem Wert soll minimiert werden. Genau genommen, fallen Klassifikation und numerische Vorhersage in eine Kategorie; beide wollen etwas vorhersagen. Der Unterschied zwischen beiden besteht darin, dass eine Klassifikation diskrete Werte vorhersagt, beispielsweise guter oder schlechter Kunde. Es gibt somit nur endlich viele Werte, in der Praxis eher wenige Werte, die das Zielattribut annehmen kann. Bei der numerischen Vorhersage werden dagegen Zahlen vorhergesagt, die aus einem großen (unendlichen) numerischen Wertebereich stammen. In der Praxis begegnet uns eine numerische Vorhersage häufig. Beispiele sind die Vorhersage von Verkaufszahlen zur Lageroptimierung, die Temperatur-Prognose oder die Vorhersage von Aktienkursen. Verfahren zur numerischen Vorhersage sind beispielsweise: Lineare Regression Regressionsbäume Vorwärtsgerichtetes Neuronales Netz (Abschnitt 5.4) k-Nearest Neighbour (Abschnitt 5.1, reellwertige Funktionen) Die numerische Vorhersage behandeln wir in diesem Buch nicht in einem eigenen Kapitel. Im Zusammenhang mit neuronalen Netzen oder auch bei der Klassifikation gehen wir auf die numerische Vorhersage ein. Klassifikationsverfahren können durchaus auch für die numerische Vorhersage eingesetzt werden, falls die Zahl der Ausprägungen des numerischen Zielattributs nicht zu groß ist. Einzig der linearen Regression ist ein eigener Abschnitt gewidmet, da diese nicht nur als Data-Mining-Verfahren, sondern auch in der Datenvorverarbeitung zum Erkennen von Zusammenhängen eingesetzt werden kann.
Lineare Regression Eine Regressionsfunktion beschreibt den Trend beziehungsweise den durchschnittlichen Zusammenhang zwischen numerischen Attributen. Die lineare Regression geht davon aus, dass zwischen den Daten und den zugehörigen Funktionswerten ein linearer Zusammenhang besteht, dass der Zusammenhang zwischen den x- und y-Werten linear ist, dass er sich also durch eine Gerade beschreiben lässt. Gegeben sind Beispieldatensätze, die aus den Datensätzen X und den davon abhängigen Zielwerten Y bestehen: E ⊂ X × Y . Der Zusammenhang zwischen diesen lässt sich
3.4 Assoziationsanalyse
63
nun mit Hilfe der Regressionsfunktion yˆ = f (x) beschreiben. Ziel ist es, den Fehler zwischen dem tatsächlichen Zielwert und dem berechneten Wert zu minimieren. Damit sich positive und negative Abweichungen nicht kompensieren, wird der quadratische Fehler untersucht: error = (yi − yˆi )2 → min
Betrachten wir ein einfaches Beispiel. Seien diese (x,y)-Werte gegeben: (0,3), (1,7), (2,6), (3,10). Mittels linearer Regression wird eine lineare Funktion berechnet, deren Gerade in Abbildung 3.3 zu sehen ist. Für die x-Werte 4, 5 . . . kann nun ein Wert – der Wert, der sich aus der Geradengleichung ergibt – vorhergesagt werden. Die Verfahren für die Berechnung der Regressionsgeraden sind in den Data-MiningWerkzeugen und auch in Tabellenkalkulationsprogrammen enthalten. 12 10 8 Daten Regression
6 4 2 0
0
1
2
3
Abb. 3.3: Beispiel Regression
3.4
Assoziationsanalyse
Bei einer Assoziationsanalyse werden Beziehungen herausgearbeitet: Beziehungen zwischen den gegebenen Attributen. Ein klassischer Anwendungsfall ist eine Warenkorbanalyse: Was wird zusammen gekauft? Oder genauer: Welches Produkt wird häufig gemeinsam mit einem anderen Produkt gekauft? Man protokolliert somit die Verkaufsdaten und sucht dann nach Aussagen der Form: Wer Produkt A kauft, kauft häufig auch Produkt B. Das Unternehmen bietet dann in Zukunft automatisch beim Kauf von A auch das Produkt B an. Viele Anbieter im Internet praktizieren dies. Aber auch in einem Supermarkt ist eine solche Analyse interessant, kann man doch die Waren entsprechend umordnen.
64
3 Anwendungsklassen
Beispiel 3.1:
Warenkorbanalyse
Wir betrachten einen Ausschnitt einer fiktiven Warenkorbdatei. Kauf Milch Brot Wasser Butter 1 x x x x x x 2 x x x 3 x x 4 Bei diesen 4 Einkäufen sieht man, dass gemeinsam mit Brot meistens auch Butter gekauft wurde, und zwar in 75% der Fälle. Umgekehrt wird gemeinsam mit Butter immer Brot gekauft. Wir sehen, dass Assoziationsregeln nicht zwingend immer zu 100% korrekt sein müssen, wir werden Ausnahmen zulassen. Falls Artikel A gekauft wird, besteht eine Wahrscheinlichkeit von X%, dass auch Artikel B gekauft wird. Diese Regel trifft auf Y % der Kunden zu. Formal notiert: A→B
[supp : Y %] [conf : X%]
Mit Hilfe der Assoziationsanalyse können Zusammenhänge zwischen verschiedenen Waren erkannt und das Kundenverhalten analysiert werden. Die Assoziationsanalyse ist ein vorhersagendes Data-Mining-Verfahren. Es analysiert die Daten, um Regelmäßigkeiten zu identifizieren und das Verhalten neuer Datensätze vorherzusagen. Die relative Häufigkeit einer Assoziationsregel wird als Support supp bezeichnet, die sogenannte Konfidenz conf wird als ein Maß für das Vertrauen in eine Regel eingeführt (Abschnitt 9.2.1). Seit dem Aufkommen der Barcodetechnik ist es möglich geworden, das Kaufverhalten von Kunden ohne eine unangemessene Steigerung des Arbeitsaufwands zu dokumentieren. Die RFID-Technik wird hier zudem weitere Möglichkeiten eröffnen. Große Datenmengen fallen an. Diese Daten gilt es zu analysieren, um Antworten auf Fragen wie: „Wie ordne ich meine Waren optimal an?“, „In welche Kategorien lässt sich die Kundschaft einordnen?“ oder „Welche Artikel sollten aus dem Sortiment genommen werden?“ zu finden. Ziel einer Warenkorbanalyse ist natürlich die Gewinnsteigerung, der Weg dahin kann auch über eine Erhöhung der Kundenzufriedenheit führen. Mit der Anwendung in anderen Bereichen entwickelte sich die Warenkorbanalyse schließlich zur Assoziationsanalyse. Diese ist der Versuch, Regionen beziehungsweise Datenbereiche in einer Datenbank zu identifizieren und zu beschreiben, in denen mit hoher Wahrscheinlichkeit mehrere Werte gemeinsam auftreten. Die Assoziationsanalyse ist somit als Verallgemeinerung der Warenkorbanalyse zu sehen. Denkbare Anwendungsmöglichkeiten sind beispielsweise die Risikoabschätzung in der Versicherungsbranche oder die Analyse der Spielweise einer gegnerischen Fußballmannschaft.
3.5 Text Mining
65
Die Assoziationsanalyse kann auch zur Klassifikation (Abschnitt 3.2) eingesetzt werden, wobei dann nur Abhängigkeiten berücksichtigt werden, die eine Aussage über das Klassifikationsattribut enthalten. Welche Verfahren zur Assoziationsanalyse werden in diesem Buch behandelt? A-Priori-Verfahren (Abschnitt 7.1) Frequent Pattern Growth (Abschnitt 7.2)
3.5
Text Mining
Text Mining befasst sich mit der Analyse von Textdokumenten. Texte sind im Gegensatz zu Datenbanken und Web-Seiten unstrukturiert. Texte genügen natürlich auch Strukturvorgaben wie einer Grammatik, aber im Sinne unserer Begriffsdefinition im Abschnitt 2.1 sind sie unstrukturiert. Häufig ist man an einer Klassifizierung eines Dokuments, beispielsweise nach Themengebiet oder fachlichem Niveau, interessiert. Ein Ansatz ist, zunächst relevante Begriffe aus dem Dokument zu extrahieren, um anhand dieser das Dokument einzuordnen. Eine zweite mögliche Anwendung ist die Quantifizierung der Ähnlichkeit von Dokumenten. Text Mining läuft analog den Data-Mining-Vorgehensmodellen in Abschnitt 1.3 ab. Eine Besonderheit beim Text Mining ist, dass man die Daten leider nicht in einer strukturierten Form vorliegen hat, sondern eben nur als Text. Folglich ist der erste, vielleicht sogar entscheidende Schritt, das Extrahieren der interessanten Informationen aus den Textdokumenten. Dies können beispielsweise Schlüsselwörter, die Häufigkeitsverteilung von Begriffen oder eine erste Kategorisierung oder hierarchische Gruppierung sein. Irrelevante Wörter (stop words) müssen herausgefiltert werden und Abkürzungen erkannt werden. Auch eine Vorstrukturierung durch die Teilung eines Dokuments in seine Bestandteile (Titel, Kapitel, Abschnitt, Satz) kann sinnvoll sein. Meistens wird die Groß- und Kleinschreibung sofort ignoriert. Ein weiteres Problem stellt die Vielfalt von Wortvarianten dar, die gemäß der deutschen Grammatik gebildet werden können. Das sogenannte Stemming reduziert die Wörter auf ihren Wortstamm und ermöglicht somit eine zusammenfassende Betrachtung von Wortvarianten. Auch eine semantische Gleichheit unterschiedlicher Begriffe (Synonyme) kann und muss erkannt werden. Sonnabend hat dieselbe Bedeutung wie Samstag. Das Resultat dieser Vorverarbeitung ist eine reduzierte Menge von Wörtern (bag of words), die man zusätzlich noch gewichten kann. Auf der Basis dieser Wortmengen findet dann die eigentliche Datenanalyse statt. Häufig gibt man sich eine feste Menge von Schlüsselwörtern vor und zählt dann, wie oft diese Schlüsselwörter (natürlich nach dem Stemming) im Dokument vorkommen. Ein Dokument kann dann durch einen Vektor repräsentiert werden: (n1 , n2 , . . . nk ). ni ist die Anzahl der Vorkommen des Schlüsselworts i im Dokument.
66
3 Anwendungsklassen
Jetzt hat man eine gut strukturierte Repräsentation, die sofort Abstandsmaße ermöglicht und damit das Anwenden unserer Verfahren erlaubt. Text Mining ist ein eigenständiges Gebiet, welches viele spezifische Vorgehensweisen und Verfahren herausgebracht hat. Für eine vertiefende Auseinandersetzung mit dem Thema Text Mining verweisen wir auf die Literatur wie beispielsweise [FS07].
3.6
Web Mining
Anwendungen des Data Minings, die das Internet als Datenquelle für die Mustererkennung heranziehen, werden unter dem Themengebiet des Web Minings zusammengefasst. In Abhängigkeit von der inhalts- oder nutzungsorientierten Analyse des World Wide Web lassen sich die Teilgebiete Web Content Mining und Web Usage Mining voneinander abgrenzen. Web Content Mining befasst sich mit der Analyse von den im WWW befindlichen Daten. Dazu gehören textuelle und multimediale Informationen jeglichen Formats sowie auch die Verbindungen (Links) zu anderen Web-Seiten. Web Usage Mining dagegen untersucht das Verhalten von Internet-Nutzern. Bei dieser Ausprägungsform des Web Mining werden Data-Mining-Methoden auf die Protokolldateien des Web-Servers angewandt, um Aufschlüsse über Verhaltensmuster und Interessen der Online-Kunden zu erhalten. Eine Ausprägungsform des Web Usage Mining, bei der sich die Analyse ausschließlich auf die Protokolldateien des Web-Servers beschränkt, wird als Web Log Mining bezeichnet. Sofern neben den Protokolldateien noch weitere Datenbestände in den Mustererkennungsprozess einfließen, wird diese Ausprägung als Integrated Web Usage Mining bezeichnet. Die Taxonomie des Web Minings ist in Abbildung 3.4 auf der nächsten Seite dargestellt. Insbesondere das Web Log Mining hat aufgrund des hohen Stellenwerts des Internets für Unternehmen an Bedeutung gewonnen. Das Internet hat sich zu einem bedeutenden Medium für die Abwicklung geschäftlicher Prozesse entwickelt, viele Unternehmen handeln nur im Internet. Mit einem ansprechenden Web-Auftritt kann sich ein Unternehmen die entscheidenden Wettbewerbsvorteile gegenüber den Mitbewerbern am Markt verschaffen. Unternehmen, die über einen eigenen Web-Auftritt verfügen, sammeln damit automatisch Nutzungsdaten in Logdateien über die Besuche ihrer (potentiellen) Kunden. Die hierbei anfallenden Daten werden aber häufig nur unzureichend verwertet. Da sich die Nutzungsdaten aus betriebswirtschaftlicher Sicht auf das Verhalten von Marktpartnern beziehen, sind sie zur Unterstützung wirtschaftlicher Entscheidungen von großer Bedeutung. Das Management muss wissen, wer die WWW-Seite besucht und – was noch wichtiger ist – wer die Seite besucht und etwas kauft beziehungsweise wo potenzielle Kunden die Web-Seiten verlassen. Web-Auftritte werden heute aber auch als Investition gesehen und müssen ihre Notwendigkeit, wie jede andere Marketinginvestition, begründen. Je mehr man darüber weiß,
3.6 Web Mining
67
Web Mining
Web Content Mining
Web Usage Mining
Web Log Mining
Integrated Web Usage Mining
Abb. 3.4: Web Mining
wie viele Kunden die Web-Seiten besuchen, wer sie sind und für welche Bereiche sie sich interessieren, desto mehr wird der Web-Auftritt davon profitieren. Die Ergebnisse des Web Minings, insbesondere des Web Usage Minings, können dazu beitragen, den Web-Auftritt zu verbessern und so – verbunden mit anderen Marketingaktionen – den Umsatz zu steigern. Web Log Mining umfasst Data-Mining-Verfahren zur Auswertung von internetbasierten Nutzungsdaten (Logdateien) und deren Nutzen zur Unterstützung unternehmerischer Entscheidungen für die kontinuierliche Verbesserung von Web-Auftritten und InternetAngeboten. Für eine eingehende Betrachtung des Web Minings verweisen wir auf die Literatur, zum Beispiel [LB01].
4
Wissensrepräsentation Quality is inversely proportional to the time left for completion of the project. Wright’s first law of quality.
Nachdem wir im vorherigen Kapitel die Aufgabenbereiche des Data Minings vorgestellt haben, werden wir nun diskutieren, in welcher Form das extrahierte Wissen dargestellt werden kann. Erst danach werden wir die Verfahren des Data Mining behandeln. Wissen kann unterschiedlich dargestellt werden, zum Beispiel explizit als Regel oder implizit als neuronales Netz. Regeln können uns in unterschiedlichen Formen entgegentreten, beispielsweise als Entscheidungsbaum, als Tabelle oder als logische Formel. Im Abschnitt 3.3 über die numerische Vorhersage haben wir eine weitere Variante der Wissensrepräsentation kennengelernt. Das Resultat einer linearen Regression ist eine Geradengleichung. Diese repräsentiert den funktionalen Zusammenhang zwischen den Daten. Im Folgenden betrachten wir verschiedene Formen der Wissensdarstellung im Kontext des Data Minings.
4.1
Entscheidungstabelle
Entscheidungstabellen sind eine Repräsentationsform für Regeln, die in unterschiedlichen Situationen, die eine Entscheidung erfordern, eingesetzt werden kann: Ein Programmierer kann mittels einer Entscheidungstabelle sein Vorgehen spezifizieren, ein Mitarbeiter kann so die Behandlung einer Beschwerde oder einer Bestellung festlegen. Eine Entscheidungstabelle besitzt vier Bereiche, siehe Abbildung 4.1. Im linken oberen
Abb. 4.1: Die Quadranten einer Entscheidungstabelle
70
4 Wissensrepräsentation
Bereich werden die Bedingungen aufgezählt. Im oberen rechten Bereich werden dann die Werte beziehungsweise die Kombinationen von Werten der Bedingungen angegeben, für die dann Aktionen definiert werden. Mögliche Aktionen werden im linken unteren Bereich aufgeführt. Im Bereich rechts unten werden die Aktionen markiert, die bei einer bestimmten Kombination von Bedingungen ausgeführt werden. Eine Spalte in einer Entscheidungstabelle kann als eine Regel betrachtet werden. Interpretiert man die Spalte R6 in der Tabelle 4.1 (siehe Wetter-Beispiel Abschnitt A.3), so erhält man die Regel: WENN overcast UND hot UND humid DANN wird gespielt. Weather R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 sunny Y Y Y Y Y N N N N N N N N N N N N N N overcast N N N N N Y Y Y Y N N N N N N N N N Y Y Y Y Y rainy Y Y N N N Y Y N N N N N N N hot N N Y Y N N N Y N Y Y Y N N mild N N N N Y N N N Y N N N Y Y cool Y Y Y N N Y N Y N Y N Y N N humid N Y N Y N N N Y Y N N Y N Y windy Play X X X X X X X X X X X No play X X X Tabelle 4.1: Entscheidungstabelle für das Wetter-Beispiel
In der Ursprungsform werden Bedingungen aufgezählt, die nur erfüllt oder nicht erfüllt sein können. Der obere rechte Teil besteht somit nur aus den Werten Ja, Nein beziehungsweise Yes, No. In der erweiterten Form werden die Attribute angegeben und im oberen rechten Bereich die Werte dieser Attribute. Entscheidungstabellen decken in der Regel nicht alle möglichen Fälle ab. Es werden die Fälle abgebildet, denen Aktionen zugeordnet werden können. Entscheidungstabellen sind ein Mittel, um komplexe Sachverhalte durch mehrere, einfacher zu behandelnde Situationen (Spalten) beschreiben zu können. R1 R2 R3 R4 R5 R6 Weather outlook sunny sunny sunny sunny overcast rainy mild mild cool – mild temperature hot high high normal normal – – humidity – false true false – false windy play no no yes yes yes yes
R7 R8 R9 rainy rainy rainy mild cool cool high normal normal true false true no yes no
Tabelle 4.2: Erweiterte Entscheidungstabelle für das Wetter-Beispiel
Eine Entscheidungstabelle im Data Mining ist die tabellarische Darstellung der gegebenen Datensätze, deren Bedingungen (Eingaben) sowie des zugehörigen Ergebnisses (Ausgabe). Diese Entscheidungstabelle kann dann für eine Klassifikation eingesetzt werden, zumindest für die Fälle, die in der Entscheidungstabelle erfasst wurden.
4.2 Entscheidungsbäume Beispiel 4.1:
71
Wetter-Beispiel
Die Entscheidungstabelle 4.3 für das Wetter-Beispiel ist eine alternative Darstellung für die Entscheidungstabellen 4.1 und 4.2. Wann wird gespielt? Wie im Wetter-Beispiel bereits dargestellt, deckt eine Entscheidungstabelle nicht zwingend jeden Fall ab. Beispielsweise kann man auf der Basis der gegebenen Entscheidungstabelle keine Vorhersage für den Fall (sunny, cool, high, false) geben. outlook sunny sunny sunny sunny sunny overcast overcast overcast overcast rainy rainy rainy rainy rainy
temperature hot hot mild mild cool hot hot mild cool mild mild mild cool cool
humidity high high high normal normal high normal high normal high normal high normal normal
windy false true false true false false false true true false false true false true
play no no no yes yes yes yes yes yes yes yes no yes no
Tabelle 4.3: Data-Mining-Entscheidungstabelle für das Wetter-Beispiel
4.2
Entscheidungsbäume
Ein Entscheidungsbaum ist eine Repräsentationsform, bei der die Ergebnisse einer Bedingung verzweigt dargestellt werden. Diese Verzweigungen können wiederum andere Verzweigungen generieren. Entscheidungsbäume sind sehr gut zum Visualisieren geeignet, da sie den Weg zur Entscheidung in graphisch aufbereiteter Form repräsentieren. Diese visuelle Darstellung erleichtert das Verstehen von Entscheidungen und liefert ebenso die Begründung für eine Entscheidung. Entscheidungsbäume können leicht in Regeln (Abschnitt 4.3) umgewandelt werden. Wird der Weg vom obersten Knoten, der Wurzel oder dem Wurzel-Knoten, bis zu einem Ergebnis, einem Blatt-Knoten, gegangen, so erhält man ähnlich wie in einer Entscheidungstabelle eine Regel. Aus Abbildung 4.2 auf der nächsten Seite, in der ein Entscheidungsbaum für das Wetter-Beispiel (siehe Abschnitt A.3) dargestellt ist, kann so zum Beispiel diese Regel abgelesen werden: WENN outlook=sunny UND humidity=high DANN play=no Weka verwendet diese Repräsentationsform für die Darstellung des Ergebnisses des J48-Algorithmus. Mit diesem Algorithmus generiert Weka den in Abbildung 4.3 auf der nächsten Seite dargestellten Entscheidungsbaum für das Wetter-Beispiel.
72
4 Wissensrepräsentation
outlook sunny
yes
humidity high no
rainy
overcast
normal
windy false
yes
yes
true no
Abb. 4.2: Entscheidungsbaum Wetter-Beispiel outlook = overcast = rainy yes (4.0)
= sunny
windy = FALSE yes (3.0)
humidity
= TRUE no (2.0)
= high no (3.0)
= normal yes (2.0)
Abb. 4.3: Weka-Entscheidungsbaum Wetter-Beispiel
4.3
Regeln
Die Wissensdarstellung mittels Logik und insbesondere mittels Regeln ist eine explizite Wissensdarstellung, die einfach zu verstehen ist und gleichzeitig auch zu Dokumentations- und Visualisierungszwecken verwendet werden kann. Regeln, wie im Abschnitt 2.5 erläutert, sind logische Formeln der Art: WENN Bedingung DANN Folgerung Regeln können als ein Wunschergebnis eines Data-Mining-Prozesses angesehen werden. Wir können dabei Klassifikationsregeln und Assoziationsregeln unterscheiden. Eine Klassifikationsregel beschreibt, unter welchen Bedingungen eine bestimmte Klasse zugeordnet wird: WENN outlook=rainy UND windy DANN play=no Eine Klassifikationsregel definiert, in welche Klasse ein Datensatz eingeordnet wird. Der in der Definition von Wissen geforderte Anwendungsbezug wird in einer Regel besonders deutlich: Wenn die Bedingungen zutreffen, dann wird eine Handlung – hier eine Zuordnung in eine bestimmte Klasse – vorgenommen.
4.4 Assoziationsregeln Beispiel 4.2:
73
Wetter-Beispiel
Aus den Daten des Wetter-Beispiels können folgende Regeln herausgearbeitet werden, die dann das extrahierte Wissen repräsentieren: WENN outlook = sunny UND humidity = high WENN outlook = rainy UND windy = true WENN outlook = overcast WENN humidity = normal WENN none of the above
DANN DANN DANN DANN DANN
play play play play play
= = = = =
no no yes yes yes
Klassifikationsregeln enthalten im Schlussfolgerungsteil einer Regel stets das Zielattribut. Im Unterschied dazu beschreiben Assoziationsregeln Zusammenhänge zwischen beliebigen Attributen. Zudem werden diese Regeln oft mit Zusatzangaben ausgestattet, die angeben, in welchem Maße dieser Assoziationsregel vertraut werden kann. Aufgrund dieser zum Teil auch unterschiedlichen Arten der Wissensdarstellung mittels Assoziationsregeln widmen wir den Assoziationsregeln einen eigenen Abschnitt.
4.4
Assoziationsregeln
Eine Assoziationsregel ist eine Regel, die – wie bereits dargestellt – Beziehungen zwischen beliebigen Attributen herstellt. Ein typisches Beispiel ist die Analyse des Kaufverhaltens von Kunden. Beispiel 4.3:
Warenkorbanalyse
In einem Supermarkt (vergleiche Beispiel 3.1 auf Seite 64) werden an der Kasse die Warenkörbe aller Kunden erfasst. Mit Hilfe von Assoziationsregeln lassen sich nun Zusammenhänge zwischen den einzelnen Artikeln darstellen. Ein Ergebnis könnten folgende Erkenntnisse sein: • Wenn Waschpulver gekauft wird, wird auch Weichspüler gekauft: WENN waschpulver DANN weichspüler • Wenn Fisch gekauft wird, wird kein Fleisch gekauft: WENN fisch DANN NICHT fleisch • Wenn Sekt gekauft wird, werden auch Pralinen gekauft: WENN sekt DANN pralinen Gegeben ist also eine Menge von Transaktionen T und eine Menge von sogenannten Items I. Die Items können als die Artikel verstanden werden, die in einem Supermarkt verkauft werden. Eine Transaktion ist in diesem Fall ein Einkauf oder ein Warenkorb. Meistens versieht man diese Implikationen mit Angaben über die Häufigkeit ihres Auftretens.
74
4 Wissensrepräsentation
Die Struktur von Assoziationsregeln lässt sich folgendermaßen beschreiben: Eine Assoziationsregel besteht aus einer Prämisse M und einer Konsequenz N . M und N sind jeweils Konjunktionen (durch UND verknüpft) von Items, die ihrerseits die Waren des Supermarkts darstellen. Die Regel hat dann die Form M →N
mit beispielsweise M = {I1 , I2 , I3 } und N = {I7 }. Die Schnittmenge von M und N muss leer sein. Die Darstellung {bier, chips} → {tvzeitung} ist somit als eine abkürzende Schreibweise für die Regel WENN bier=yes UND chips=yes DANN tvzeitung=yes zu verstehen. Beispiel 4.4:
Wetter-Beispiel
Assoziationsregeln für das Wetter-Beispiel enthalten nicht immer das Zielattribut play. Man kann aber Klassifikationsregeln als Assoziationsregeln auffassen, die im Schlussfolgerungsteil das Zielattribut enthalten. WENN temperature = cool DANN humidity = normal WENN humidity = normal UND windy = false DANN play = yes WENN outlook = sunny UND play = no DANN humidity = high WENN windy = false UND play = no DANN outlook = sunny UND humidity = high Assoziationsregeln sind meistens nicht zu 100% korrekt. Das heißt, dass eben nicht alle Kunden entsprechend der Regel {bier, chips} → {tvzeitung}
einkaufen, sondern nur eine bestimmter Prozentsatz. Beispielsweise kaufen im Beispiel 3.1 auf Seite 64 nur 75% der Kunden, die Brot kaufen, auch Butter. Folglich benötigen wir Interessantheitsmaße, welche die Qualität einer Assoziationsregel bestimmen. Auf Interessantheitsmaße für Assoziationsregeln gehen wir im Abschnitt 9.2 ausführlich ein. Da diese für das Verständnis der Assoziationsregeln notwendig sind, greifen wir diesem Abschnitt vor und stellen hier zwei Interessantheitsmaße vor. Der Support eines Items oder einer Menge von Items (Itemset) ist die Anzahl der Transaktionen, die das Item beziehungsweise das Itemset als Teilmenge enthalten, im Verhältnis zur Gesamtzahl der Transaktionen der Menge T . Der Support einer Assoziationsregel ist gleich dem Support der Vereinigung von Prämisse und Konsequenz der Regel (M ∪ N ). supp(M → N ) = P (M ∪ N )
4.4 Assoziationsregeln
75
Man zählt, wie viele Datensätze alle Attribute aus M ∪ N enthalten, und teilt dies durch die Gesamtanzahl aller Datensätze. Eine wichtige Beobachtung ist, dass P (M ∪ N ) nicht größer als P (M ) und P (N ) sein kann. Die Mengenvereinigung ∪ sorgt nicht für eine Vereinigung der Menge, die M erfüllt, mit der Menge, die N erfüllt. Vielmehr werden die Restriktionen, die die Menge erfüllen muss, vereint. P ({bier}) ist die relative Häufigkeit des Einkaufs von bier. P ({bier} ∪ {chips}) dagegen ist die relative Häufigkeit, wie oft bier und chips gemeinsam gekauft wurden. M ∪ N enthält offensichtlich mindestens so viele Restriktionen wie M beziehungsweise N . Folglich kann P (M ∪ N ) maximal so hoch wie P (M ) und P (N ) sein. Das zweite Interessantheitsmaß ist die Konfidenz. Die Konfidenz einer Assoziationsregel berechnet sich aus dem Verhältnis zwischen den Transaktionen, die sowohl Prämisse als auch Konsequenz enthalten, und den Transaktionen, die nur die Prämisse enthalten. Die Konfidenz misst, wie oft die Regel wirklich zutrifft, in Relation zur Anzahl, wie oft sie hätte zutreffen müssen. conf(M → N ) = Beispiel 4.5:
supp(M → N ) supp(M )
Konfidenz und Support
Wie hoch ist der Support und die Konfidenz der Regel WENN temperature=cool DANN humidity=normal in Beispiel 4.1, Seite 71? 4 14 4 supp(temperature=cool) = P (M ) = 14 4 supp(M → N ) = 14 conf(M → N ) = 4 =1 supp(M ) 14
supp(temperature=cool → humidity=normal) = P (M ∪ N ) =
Die Konfidenz der Regel ist 1, die Regel ist also absolut sicher. Der Support der Regel ist 27 , sie tritt nicht sehr häufig auf.
Schwellwerte Um die wertvollen von den weniger wertvollen Assoziationsregeln zu trennen, werden Schwellwerte für Konfidenz und Support eingeführt, die bei einer Assoziationsregel nicht unterschritten werden dürfen. Diese seien als confmin und suppmin bezeichnet. Die Festlegung dieser Werte erfolgt in der Regel durch den Nutzer.
76
4 Wissensrepräsentation
Meistens gilt: Je größer Support und Konfidenz, umso wertvoller ist die Assoziationsregel. Hier kann es zu Ausnahmen kommen, so haben beispielsweise Regeln wie {Person lebt} → {Person atmet}
trivialerweise eine hohe Konfidenz und sind trotzdem uninteressant.
Arten von Assoziationsregeln Neben den ursprünglichen Assoziationsregeln – auch boolesche Assoziationsregeln genannt – wurden eine Reihe von Variationen entwickelt, um bestimmte Nachteile zu beseitigen. Folgende Formen werden wir hier vorstellen: • hierarchische Assoziationsregeln (Taxonomien) • temporale Assoziationsregeln (Sequenzanalyse) • quantitative Assoziationsregeln • unscharfe Assoziationsregeln
Wieso betrachtet man weitere Formen von Assoziationsregeln? Zum einen möchte man die Aussagekraft von Regeln erhöhen. Zum anderen hat man bei numerischen Attributen häufig das Problem, dass ein Wert knapp außerhalb eines Intervalls liegt und damit nicht als zu diesem Intervall zugehörig betrachtet wird, was mathematisch zwar korrekt, praktisch aber häufig unsinnig ist. Hierarchische Assoziationsregeln Bei den hierarchischen Assoziationsregeln werden mehrere Begriffe (Items) zu einem Oberbegriff zusammengefasst (beispielsweise einzelne Produkte zu Warengruppen oder Kategorien). Es ist dabei möglich, dass ein Begriff mehrere Oberbegriffe hat. Zum Beispiel kann ein Begriff zusätzlich zum Oberbegriff Sonderangebot gehören. Der Vorteil der hierarchischen Assoziationsregeln ist, dass sich durch das Zusammenfassen von Begriffen der Support der Regel erhöht und dadurch mehr interessante Regeln gefunden werden können. Außerdem ist es nun möglich, Regeln auf einer abstrakteren Stufe zu finden. Beispiel 4.6:
Zusammenfassung von Items
Um hierarchische Assoziationsregeln aufzustellen, werden einzelne Items zu einer Gruppe zusammengefasst: Items {Messer, Gabel, Löffel} {Brot, Milch, Käse} {Doppelpass, Flanke} ...
Oberbegriff Besteck Lebensmittel Angriff ...
Statt viele Regeln mit den Items der linken Tabellenseite zu erzeugen, genügen nun einige wenige.
4.4 Assoziationsregeln
77
Quantitative Assoziationsregeln Einfache und hierarchische Assoziationsregeln geben keine Auskunft über die Quantität eines Begriffs. Es wird nur angegeben, ob der Begriff in der Transaktion auftritt oder nicht. Quantitative Assoziationsregeln berücksichtigen auch die Quantität des Begriffs und ermöglichen dadurch eine genauere Unterscheidung. Sinnvoll ist dies bei numerischen Begriffen wie zum Beispiel Anzahl, Alter oder Preis. Man geht dabei folgendermaßen vor: 1. Einteilung des Wertebereichs in Intervalle. 2. Für jedes Intervall wird ein neuer Begriff geschaffen. 3. Die originalen Begriffe werden durch die neuen ersetzt. Beispiel 4.7:
Intervallbildung
Gegeben sei folgende Datenbasis: Alter 23 28 34 45 65
Anzahl Kinder 0 1 0 2 5
Einkommen 2000 2500 4500 3500 4000
Der Begriff Alter wird in 3 Intervalle unterteilt: unter 30, 30 bis 50, über 50. Der Begriff Anzahl Kinder wird in 2 Intervalle eingeteilt: kein oder 1 Kind, mehr als 1 Kind. Das Einkommen wird ebenfalls in 2 Intervalle eingeteilt: bis 3000, mehr als 3000 (siehe Binärcodierung in Abschnitt 8.2.4). Anhand dieser Daten wird eine neue Datenbasis erstellt. Alter1 Alter2 Alter3 Kinder1 Kinder2 Einkommen1 Einkommen2 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 Eine mögliche quantitative Regel sieht dann wie folgt aus: WENN Alter ∈ [0, 29] UND Einkommen ∈ [0, 2999] DANN Kinder = 0/1 Unscharfe Assoziationsregeln Die unscharfen Assoziationsregeln – auch fuzzy association rules genannt – sind eine Weiterentwicklung der quantitativen Assoziationsregeln. Die Intervallgrenzen sind nun nicht starr, sondern fließend. Zum Beispiel wird der Begriff Alter in jung, mittel und alt eingeteilt. Bis 25 gehört man zu jung, ab 35 zu mittel und dazwischen gehört man zu beiden Gruppen.
78
4 Wissensrepräsentation
Durch die fließenden Intervallgrenzen ist der Support einer Regel größer als bei quantitativen Assoziationsregeln, da nun auch Begriffe, die bei den quantitativen Assoziationsregeln knapp außerhalb der Intervallgrenzen lagen, berücksichtigt werden. Unscharfe Regeln eignen sich besonders für Datenanalysen, bei denen mit Ausreißern oder Messfehlern gearbeitet wird, wie zum Beispiel in der Physik. Beispiel 4.8:
Quantitative Assoziationsregeln
Ein Call-Center plant, Daten der eingehenden Anrufe zu speichern. Zu diesen Daten zählt unter anderem auch der Zeitpunkt, an dem der Anruf angenommen wurde. Angenommen, die Leitung des Centers möchte die Anrufe nach Tageszeiten sortieren. Das Vorgehen nach dem quantitativen Schema teilt die 24 Stunden des Tages in Intervalle auf, beispielsweise in Nacht, Morgen, Nachmittag und Abend. Das Intervall Nacht endet um 6 Uhr, ihm folgt das Intervall Morgen. Der Morgen endet um 12 Uhr und geht in den Nachmittag über usw. Das Charakteristische dieser Vorgehensweise ist, dass es zu Überschneidungen kommen kann. So kann es eine Gruppe von Anrufern geben, die morgens zwischen 6 und 12 anrufen, um beispielsweise Brötchen zu bestellen. Eine Regel der Form WENN Zeit=Morgen DANN Bestellung=Brötchen ist die Folge. Der Nachteil dieser Vorgehensweise liegt darin, dass es Kunden geben kann, die kurz vor 6 Uhr oder kurz nach 12 Uhr anrufen, um Brötchen zu bestellen. Da der Zeitpunkt dieser Anrufe nicht mehr in dem vorgegebenen Intervall liegt, gehören diese Anrufe auch nicht mehr zur Kundengruppe Morgen, auch wenn sie sonst alle Eigenschaften dieser Gruppe erfüllen. Der Support der obigen Regel sinkt. Unscharfe Regeln wirken diesem Verhalten entgegen. Anstelle von festen Intervallen wird mit Zugehörigkeitsgraden gearbeitet. Ein Anruf um 11 Uhr kann sowohl der Gruppe Morgen als auch der Gruppe Nachmittag zugeordnet werden. Die Zuordnung geschieht mit Methoden aus der Fuzzy-Logik. Der wesentliche Unterschied zwischen Fuzzy und quantitativen Assoziationsregeln liegt in der Art der Erzeugung von Regeln, im weiteren Verhalten sind sich beide Formen ähnlich. Temporale Assoziationsregeln Bei den temporalen Assoziationsregeln beziehungsweise bei der Sequenzanalyse wird neben der Information, dass ein Begriff in einer Transaktion auftrat, auch der Zeitpunkt beziehungsweise die Reihenfolge erfasst. Damit ist die Sequenzanalyse im Gegensatz zur normalen Assoziationsanalyse eine Zeitraumanalyse. Ziel der Sequenzanalyse ist es, Sequenzen zu finden, die einen Mindestsupport aufweisen. Werden beispielsweise jeden Freitag 6 Kästen Bier gekauft, und am nächsten Tag schnellen die Verkaufszahlen für Kopfschmerztabletten in die Höhe, so besteht ein temporaler Zusammenhang, der berücksichtigt werden sollte. In temporalen Datenbanken
4.5 Instanzenbasierte Darstellung
79
sind Daten in einem zeitlichen Kontext gespeichert. Die Assoziationsregeln können als Schnappschüsse der sich verändernden Zusammenhänge zwischen den Daten aufgefasst werden. Dadurch ist es möglich, Veränderungen und Fluktuationen dieser Zusammenhänge zu betrachten und zu erforschen. Ein typisches Einsatzgebiet für die Sequenzanalysen sind die Logfile-Analysen, bei denen das Verhalten von Besuchern einer Webseite untersucht wird.
4.5
Instanzenbasierte Darstellung
Bei der instanzenbasierten Darstellung werden einfach alle Datensätze der Trainingsmenge gespeichert und als Darstellung des Wissens angesehen. Wir können diese Trainingsmenge deshalb als Wissen ansehen, weil sie als eine Entscheidungstabelle (siehe 4.1 auf Seite 69) interpretiert werden kann: Jeder Datensatz verkörpert eine Regel: Wenn die Attributwerte den Werten eines vorhandenen Beispiels entsprechen, dann entspricht die zuzuordnende Klasse der Klasse dieses Datensatzes. Alle gegebenen Datensätze als Wissensdarstellung zu verwenden, entspricht in gewisser Weise dem Auswendiglernen: Es werden keine Regeln abgeleitet, die allgemein gelten, sondern alle Objekte einzeln gemerkt, das heißt gespeichert.
4.6
Repräsentation von Clustern
Wird eine Grundgesamtheit in Teilmengen zerlegt, deren Objekte zueinander ähnlicher als zu den Objekten der anderen Teilmengen sind, bezeichnet man diese Teilmengen als Cluster. Darstellen lässt sich ein Cluster • als Menge der ihm zugeordneten Objekte,
• als Vektor der Mittelwerte der Attributwerte seiner Objekte (Centroid),
• durch einen typischen Vertreter der Cluster-Elemente (Medoid)
oder
• über Wahrscheinlichkeiten.
Bei Verwendung von Wahrscheinlichkeiten geben diese an, welcher Klasse ein Individuum mit welcher Wahrscheinlichkeit zuzuordnen ist. In Abbildung 4.4 auf der nächsten Seite sind für einen Beispiel-Cluster sowohl der Centroid – der Mittelwert oder Schwerpunkt – als auch der Medoid dargestellt. Der Centroid kann eine künstlich geschaffene Instanz sein, sie muss nicht in der Datenmenge vorkommen. Hingegen ist ein Medoid stets ein Element aus der Datenmenge. Als Medoid kann man beispielsweise den Datensatz, der am nächsten zum Centroid liegt, wählen.
80
4 Wissensrepräsentation
Medoid x Centroid
Abb. 4.4: Centroid und Medoid
kMeans ====== Number of iterations: 4 Within cluster sum of squared errors: 26.0 Cluster centroids: Cluster 0 Mean/Mode: Std Devs: Cluster 1 Mean/Mode: Std Devs: Clustered Instances 0 10 ( 71%)
sunny mild high FALSE yes N/A N/A N/A N/A N/A overcast cool normal TRUE yes N/A N/A N/A N/A N/A 1
4 ( 29%)
Abb. 4.5: Cluster für das Wetter-Beispiel
Mit dem k-Means-Algorithmus (Abschnitt 6.2) erreicht Weka für das Wetter-Beispiel die in Abbildung 4.5 dargestellten Cluster. Anstelle des Centroids oder Medoids kann man auch den Median als Repräsentanten (siehe Abschnitt 6.3, Seite 156) verwenden.
4.7
Neuronale Netze als Wissensspeicher
Betrachtet man den Aufbau eines Neurons sowie eines neuronalen Netzes (siehe Abschnitt 2.4 auf Seite 47), so ergibt sich die Frage: Wo wird das Wissen in einem künstlichen neuronalen Netz gespeichert? Als Antwort darauf schaut man sich an (zum Beispiel in Abbildung 4.6 auf der nächsten Seite), welche Größen in einem künstlichen neuronalen Netz variabel sind. Im Zuge des Trainingsprozesses werden Verbindungsgewichte und Schwellwerte verändert. Die Menge der Verbindungsgewichte und Schwellwerte bestimmt das Verhalten des Netzes. Das Verhalten des Netzes wird durch sein „Wissen“ bestimmt. Diese Menge von reellen Zah-
4.7 Neuronale Netze als Wissensspeicher forecast
forecast
0
1
0.39 temp temp 0
0.645 0.791
-0.81 0 humidity 0
81
hidden -0.97
-0.271 -0.705
0.682 hidden
play 0.203
0.484
0.214
0.166
-0.668
windy 1
Abb. 4.6: Wissensspeicher künstliches neuronales Netz
len (Verbindungsgewichte sowie Schwellwerte) verkörpert somit das Wissen. Dies ist das Wissen, welches im Trainingsprozess, somit durch das Verarbeiten der Trainingsdaten, erworben wird. Ein künstliches neuronales Netz repräsentiert daneben auch Wissen des Entwicklers, der die Netzarchitektur festgelegt hat: • Anzahl der Neuronen in der Eingabe-Schicht,
• Anzahl der Neuronen in der Ausgabe-Schicht,
• Anzahl und Größe der verdeckten Schichten sowie
• die Anzahl und Art der Verbindungen zwischen den Neuronen. Ein neuronales Netz repräsentiert das Wissen implizit, analog zur Wissensspeicherung im natürlichen neuronalen Netz: Wir können nicht darlegen, somit explizit beschreiben, wie wir Objekte erkennen, wie wir unser Gleichgewicht halten, wie wir gehen, schwimmen oder Fahrrad fahren. All dies sind Beispiele für menschliche Fähigkeiten, die wir im Laufe unseres Lebens erworben und verinnerlicht haben. Wir tun dies „automatisch“, ohne zu überlegen, und vertrauen tagtäglich auf unsere einmal erworbenen Fähigkeiten. Ebenso müssen wir beim Einsatz eines künstlichen neuronalen Netzes darauf vertrauen, dass das erworbene Verhalten die gewünschten Ergebnisse liefert. Eine Begründung für Entscheidungen eines künstlichen neuronalen Netzes können wir nicht erwarten. Abbildung 4.6 stellt das trainierte Netz für das Wetter-Beispiel dar. Nachdem wir uns die Anwendungsklassen und die Möglichkeiten der Repräsentation auf einem Computer angeschaut haben, kommen wir nun zum eigentlichen Kern, den Data-Mining-Verfahren.
5
Klassifikation A carelessly planned project takes three times longer to complete than expected; a carefully planned project takes only twice as long. Golub’s Second Law of Computerdom
Klassifikation ist wohl die Anwendung im Data Mining. Die Klassifikation gehört zum überwachten Lernen (Abschnitt 2.6). Anhand von gegebenen Beispielen, deren Klassenzugehörigkeit gegeben ist, wird eine Klassifikation neuer Datensätze, deren Klassenzugehörigkeit unbekannt ist, vorgenommen (siehe Abschnitt 3.2). Es gibt zwei grundsätzliche Vorgehensweisen. Der erste Ansatz sind die instanzenbasierten Verfahren. Bei diesen Verfahren werden neue Datensätze direkt unter Verwendung der gegebenen Beispieldatensätze klassifiziert. Ein zweiter Ansatz berechnet auf der Basis der Beispieldatensätze ein Modell. Die Klassifizierung neuer Datensätze erfolgt nur mit Hilfe des Modells; die gegebenen Beispieldatensätze werden nicht mehr benötigt. Die instanzenbasierten Verfahren sind meistens recht simpel. Alle Objekte der Trainingsmenge werden gespeichert. Zur Klassifikation eines unbekannten Objekts wird dann beispielsweise das ähnlichste Objekt der bekannten Menge gesucht und dessen Klasse vorhergesagt.
5.1
K-Nearest Neighbour
Das k-Nearest-Neighbour-Verfahren ist ein instanzenbasiertes Verfahren. Es setzt voraus, dass für die zu klassifizierenden Daten ein Abstandsmaß existiert. Die meisten Implementierungen setzen reellwertige Attribute voraus. Dies ist nicht zwingend erforderlich. Auch mit nominalen und ordinalen Attributen kann gearbeitet werden. Der Lernschritt des Verfahrens ist recht einfach. Es werden lediglich alle Beispielobjekte gespeichert. Unbekannte Objekte werden klassifiziert, indem die Ähnlichkeit (siehe Abschnitt 2.3) ihrer beschreibenden Attributwerte zu denen der bereits gespeicherten Objekte berechnet wird. Die k Objekte, die zu dem neuen Objekt am ähnlichsten sind, werden zur Vorhersage der Klasse des neuen Objekts herangezogen. Man zählt, welche Klasse bei den k nächsten Nachbarn am häufigsten vorkommt. In Abbildung 5.1 auf der nächsten Seite ist das Vorgehen veranschaulicht. Seien zweidimensionale Datensätze gegeben. Die Punkte gehören zu zwei unterschiedlichen Klassen. Die Objekte, die mit ⊕ gekennzeichnet sind, gehören zu einer Klasse, die mit einem
84
5 Klassifikation
• gekennzeichneten Objekte zur anderen Klasse. Für das Objekt ◦ ist keine Klassenzugehörigkeit bekannt. Anhand der Klassenzugehörigkeit der anderen Objekte soll das neue Objekt einer dieser beiden Klassen zugeordnet werden. Nimmt man die 5 nächsten Nachbarn und wählt als Abstandsmaß die euklidische Distanz, so ergibt sich die Klasse ⊕, da ⊕ gegen • mit 4:1 gewinnt. y
x
Abb. 5.1: k-Nearest Neighbour 1
Allerdings können hierbei Probleme auftreten. Zur Illustration ändern wir die Anordnung der Punkte (Abbildung 5.2).
y
x Abb. 5.2: k-Nearest Neighbour 2
Bei k = 1 – veranschaulicht mittels der durchgezogenen Kreisbahn – gilt klasse(◦) = •, bei k = 5 – gestrichelter Kreis – hingegen ergibt sich klasse(◦) = ⊕.
Entscheidend für das Resultat kann also die (un)geschickte Wahl von k sein. In der Praxis rechnet man deshalb meistens mehrere Varianten mit unterschiedlichen k und vergleicht die vorhergesagten Klassen.
5.1 K-Nearest Neighbour
85
Die Komplexität des Verfahrens wird weniger durch den Lernschritt, als vielmehr durch den Klassifikationsschritt bestimmt. Sie wird durch die Berechnung der Abstände zwischen den Beispieldatensätzen und dem zu klassifizierenden Objekt bestimmt. Das k-Nearest-Neighbour-Verfahren ist ein enger Verwandter des fallbasierten Schließens sowie der lokal gewichteten Regression. Die Annahme, dass ein geringer Abstand zweier Punkte im Raum eine gleichartige Klassifikation rechtfertigt, kann durchaus problematisch sein. Im Folgenden werden wir aber genau dies voraussetzen: Die Ähnlichkeit zweier Objekte lässt sich durch den Abstand messen.
5.1.1
K-Nearest-Neighbour-Algorithmus
Der Lernschritt beim k-Nearest-Neighbour-Lernen ist einfach: Listing 5.1:
k-Nearest Neighbour – Lernschritt
Sei f (x) die zu erlernende Funktion. Für jedes Trainingsbeispiel (x, f (x)) speichere das Beispiel in einer Liste Trainingsbeispiele. Für verschiedene Arten von Funktionen gibt es nun unterschiedliche Klassifikationsschritte. Diskrete Funktionen Sei V = {v1 , v2 , ..., vm } die endliche Menge der Werte, die das Zielattribut annehmen kann, und f : n → V die zu erlernende Funktion. Sei y das zu klassifizierende Beispiel. Dann hat der k-Nearest-Neighbour-Algorithmus die folgende Form: Listing 5.2:
k-Nearest Neighbour – Klassifikationsschritt (diskret)
1. Für alle xi in der Menge der Trainingsbeispiele berechne die Ähnlichkeit zu y. 2. Wähle diejenigen k Beispiele x1 , x2 , . . . , xk aus, die zu y am ähnlichsten sind. 3. Die Klasse für y ergibt sich aus: klasse(y) = max vV
k p=1
δ(v, f (xp ))
mit δ(a, b) =
1, falls a=b 0, sonst
Die Funktion klasse berechnet die Klasse, die unter den k Trainingsbeispielen am häufigsten vorkommt. Das heißt y wird der Klasse zugeordnet, die unter den k ähnlichsten Beispielen am häufigsten vertreten ist. Wir dürfen in der Definition der Funktion „klasse“ f (xp ) verwenden, obwohl wir die Funktion f natürlich nicht kennen. Wir kennen jedoch sehr wohl den Wert f (xp ), denn dieser ist ja durch die Beispielmenge {(xi , f (xi )) | i = 1, . . . , k} gegeben.
86
5 Klassifikation
Beispiel 5.1:
k-Nearest Neighbour – Einkommen (reelle Werte)
Folgende Datensätze über die Lebensumstände von 8 Personen sind gegeben. Nr neu 1 2 3 4 5 6 7 8
Alter 26 59 55 40 37 26 24 22 53
verheiratet 1 1 1 0 1 0 1 1 0
Eigenheim 0 1 0 0 1 0 0 1 1
Akademiker 1 1 0 0 1 0 0 1 0
Einkommen ? hoch gering gering hoch gering mittel mittel hoch
Sei das vorherzusagende Attribut die Gehaltsgruppe: hoch, mittel gering. Vorhergesagt werden soll das Einkommen für einen • 26-Jährigen,
• verheirateten (1) • Akademiker (1)
• ohne Eigenheim (0). Zunächst werden die zum gegebenen Datensatz k ähnlichsten Datensätze bestimmt. Wir wählen k=2. Es werden also die 2 ähnlichsten Datensätze – ohne das Attribut Einkommen – bestimmt. Als Distanzmaß nehmen wir den euklidischen Abstand. Das k-Nearest-Neighbour-Verfahren sollten wir hier nicht ohne eine Datenvorverarbeitung anwenden, da sonst der euklidische Abstand der Altersangaben alle anderen Attribute dominiert. Wir normalisieren daher zuerst die Werte des Attributs Alter (vgl. Normalisierung auf Seite 220). Dann werden die Abstände der Datensätze 1–8 vom Datensatz neu berechnet. Nr Alter verheiratet Eigenheim Akademiker Einkommen Distanz zu neu neu 0,11 1 0 1 ? – 1 1,0 1 1 1 hoch 1,34 gering 1,27 2 0,89 1 0 0 gering 1,464 3 0,49 0 0 0 hoch 1,043 4 0,41 1 1 1 gering 1,414 5 0,11 0 0 0 mittel 1,001 6 0,05 1 0 0 mittel 1,006 7 0,0 1 1 1 hoch 1,879 8 0,84 0 1 0 Die Datensätze 6 und 7 sind die nächsten Nachbarn. Also sagen wir ein mittleres Einkommen voraus. Knime berechnet korrekt die Klasse mittel (siehe Abbildungen 5.3 und 5.4).
5.1 K-Nearest Neighbour CSV Reader
Daten einlesen
Normalizer
87 Partitioning
K Nearest Neighbor
Trainingsdaten und neuen Datensatz trennen
2-Nearest-Neighbour
Abb. 5.3: Beispiel Einkommen – k-Nearest Neighbour Workflow
Abb. 5.4: Beispiel Einkommen – k-Nearest Neighbour Resultat
Eine Normalisierung auf ein anderes Intervall, zum Beispiel [0, 2], ist ebenso möglich. Dann ändert sich der Einfluss des Attributs Alter. Je größer das Intervall, desto größer werden die Abstände und desto größer wird der Einfluss des Attributs (vgl. Seite 220). Dass das k-Nearest-Neighbour-Verfahren auch mit nominalen Daten umgehen kann, zeigen wir im nächsten Beispiel. Beispiel 5.2:
k-Nearest Neighbour – Einkommen (nominale Werte)
Wir betrachten wieder Datensätze über aber mit nominalen Attributen. Nr Alter verheiratet Eigenheim 1 alt ja ja 2 alt ja nein 3 mittel nein nein 4 mittel ja ja 5 jung nein nein 6 jung ja nein 7 jung ja ja 8 alt nein ja
die Lebensumstände der 8 Personen, nun Akademiker ja nein nein ja nein nein ja nein
Einkommen hoch gering gering hoch gering mittel mittel hoch
Sei das vorherzusagende Attribut die Gehaltsgruppe: hoch, mittel gering. Wir möchten das Einkommen für einen jungen, verheirateten Akademiker ohne Eigenheim vorhersagen. Zunächst müssen wir die zum gegebenen Datensatz k ähnlichsten Datensätze bestimmen. Sei k=2. Es sind also die 2 ähnlichsten Datensätze – ohne das Attribut Einkommen – zu bestimmen. Für das k-Nearest-Neighbour-Verfahren hatten wir gefordert, dass nur metrische Attribute vorliegen. Das Zielattribut ist hiervon natürlich nicht betroffen; dies sollte nominal oder ordinal sein. Hier liegen nun aber nominale Daten vor. Mit diesen können wir aber sehr wohl umgehen; als Abstandsmaß benutzen wir einfach die Hamming-Distanz, die die Zahl der unterschiedlichen Attributwerte zählt (siehe Abschnitt 2.3).
88
5 Klassifikation Nr neu 1 2 3 4 5 6 7 8
Alter jung alt alt mittel mittel jung jung jung alt
verheiratet ja ja ja nein ja nein ja ja nein
Eigenheim nein ja nein nein ja nein nein ja ja
Akademiker ja ja nein nein ja nein nein ja nein
Abstand 2 2 3 2 2 1 1 4
In diesen 2 Datensätzen (6 und 7) zählt man nun, welche Gehaltsgruppe am häufigsten vertreten ist. Dies ist wiederum die Gehaltsgruppe mittel. Reellwertige Funktionen Was ändert sich, wenn wir es nicht mit diskreten Klassen zu tun haben, sondern mit einem reellwertigen Zielattribut? Für reellwertige Funktionen f : n → unterscheidet sich der k-Nearest-Neighbour-Algorithmus vom diskreten Fall nur darin, dass nun der Mittelwert der Zielattributwerte der ausgewählten k Beispiele zurückgegeben wird. Listing 5.3:
k-Nearest Neighbour – Klassifikationsschritt (reellwertig)
1. Für alle xi in der Menge der Trainingsbeispiele berechne die Ähnlichkeit zu y. 2. Wähle diejenigen k Beispiele x1 , x2 , . . . , xk aus, die zu y am ähnlichsten sind. 3. Der Zielattributwert für y ergibt sich aus:
f (y) =
k
f (xp )
p=1
k
Genau genommen verlassen wir mit dieser Variante des k-Nearest-Neighbour das Gebiet der Klassifikation und betreiben numerische Vorhersage (Abschnitt 3.3). Beispiel 5.3:
k-Nearest Neighbour – Einkommen (numerische Werte)
Wir ändern in Beispiel 5.2 die Einkommen-Spalte und tragen dort Zahlen ein. Nr 1 2 3 4 5 6 7 8
Alter alt alt mittel mittel jung jung jung alt
verheiratet ja ja nein ja nein ja ja nein
Eigenheim ja nein nein ja nein nein ja ja
Akademiker ja nein nein ja nein nein ja nein
Einkommen 4050 950 1005 3890 800 2300 2700 3780
5.1 K-Nearest Neighbour
89
Sei k=2. Wir möchten wieder das Einkommen für einen jungen, verheirateten Akademiker ohne Eigenheim vorhersagen. Was ändert sich bei der Bestimmung der 2 ähnlichsten Datensätze? Nichts, denn der Abstand hat nichts mit dem Zielattribut zu tun. Die zwei ähnlichsten Datensätze bleiben folglich die Datensätze 6 und 7. Deren Einkommen werden gemittelt, und wir erhalten 2500. Den in Abbildung 5.2 auf Seite 84 dargestellten Unwägbarkeiten – den möglichen Schwankungen bei unterschiedlichen k – kann man entgegenwirken, indem man den k-Nearest-Neighbour-Algorithmus verfeinert.
5.1.2
Ein verfeinerter Algorithmus
Eine Schwäche des bisher diskutierten k-Nearest-Neighbour-Algorithmus besteht darin, dass alle k nächsten Nachbarn zu gleichen Teilen zum Ergebnis der Klassifikation beitragen. Sollte jedoch die grundsätzliche Annahme, dass ein geringer Abstand eine hohe Ähnlichkeit impliziert, ihre Berechtigung haben, dann erscheint es sinnvoll, jedem einzelnen Datensatz gemäß seinem Abstand zum neuen Datensatz ein Gewicht zuzuordnen. Eine derartige Vorgehensweise ermöglicht auch, alle Trainingsbeispiele zur Ermittlung des Ergebnisses heranzuziehen, weil solche mit hohem Abstand kaum noch zum Resultat beitragen. Dieses Vorgehen bezeichnet man als Shepard’s method. Allerdings impliziert diese Methode einen höheren Rechenaufwand im Klassifikationsschritt. Diskrete Funktionen Sei wieder V = {v1 , v2 , ..., vm } die endliche Menge der Werte, die das Zielattribut annehmen kann, und f : n → V die zu erlernende Funktion.
Als Gewicht wird das Inverse des Quadrats der Distanz zwischen Trainings- und neuem Datensatz gewählt. Dann lautet der durch Distanzgewichtung verfeinerte Klassifikationsschritt wie folgt: Listing 5.4:
Shepard’s Method – Klassifikationsschritt (diskret)
1. Für alle xi in der Menge der Trainingsbeispiele berechne die Ähnlichkeit zu y. 2. Wähle diejenigen k Beispiele x1 , x2 , . . . , xk aus, die zu y am ähnlichsten sind. 3. Die Klasse für y ergibt sich aus: f (xi ) k klasse(y) = wp · δ(v, f (xp )) max vV
falls y = xi für ein i sonst
p=1
mit δ(a, b) =
1, 0,
falls a=b sonst
und
wp =
1 dist(y,xp )2 .
90
5 Klassifikation
In diesem Algorithmus haben wir schon den Sonderfall berücksichtigt, dass unser neuer Datensatz y bereits in der gegebenen Beispielmenge als xi enthalten ist. Ist y = xi , so ist die Distanz zwischen y und xi natürlich Null und das Gewicht wi dann undefiniert. In diesem Fall sagen wir für den Datensatz y die Klasse von xi vorher. Reellwertige Funktionen Was ändert sich, wenn wir es nicht mit diskreten Klassen zu tun haben, sondern mit einem reellwertigen Zielattribut? In diesem Fall können wir wieder die numerischen Werte mitteln, nun natürlich gewichtet. Listing 5.5:
Shepard’s Method – Klassifikationsschritt (reellwertig)
1. Für alle xi in der Menge der Trainingsbeispiele berechne die Ähnlichkeit zu y. 2. Wähle diejenigen k Beispiele x1 , x2 , . . . , xk aus, die zu y am ähnlichsten sind. 3. Der Zielattributwert für y ergibt sich aus: f (xi ) k wp ·f (xp ) f (y) = p=1 k wp
falls y = xi für ein i sonst
p=1
mit wp =
1 dist(y,xp )2 .
Anmerkungen Der kNN-Algorithmus hat den Vorteil, dass er sehr einfach ist. Falls die Menge der Daten jedoch sehr groß ist, können Laufzeitprobleme auftreten, da der Abstand des zu klassifizierenden Datensatzes zu allen Daten berechnet werden muss. Bei großen k (k 1) arbeitet der k-Nearest-Neighbour-Algorithmus auch bei verrauschten Trainingsdaten – also reellwertigen Daten mit einer gewissen Streuung – sehr gut. Im Gegensatz beispielsweise zum Entscheidungsbaum werden alle Attribute in die Berechnung einbezogen. Dies bedeutet, dass der Algorithmus stark an Zuverlässigkeit verliert, wenn einige der Attribute für die Bestimmung der Ähnlichkeit irrelevant sind. Dieses Problem lässt sich dadurch abmildern, dass man den Attributen Gewichte zuweist. Dies kann man durch ein Abstandsmaß erreichen, in welches die Attribute gewichtet eingehen. Das Problem lässt sich auch dadurch umgehen, dass wahrscheinlich irrelevante Attribute von vornherein ausgeschlossen werden. Die Auswahl der Trainingsdaten verdient einige Beachtung. Diese sollten den Lösungsraum möglichst gleichmäßig aufspannen.
5.1 K-Nearest Neighbour Aufgabe 5.1:
91
K-Nearest Neighbour – Restaurantbeispiel
Betrachten Sie die in Tabelle 5.1 (vgl. Aufgabe 5.5) gegebenen Datensätze. Klassifizieren Sie die letzten 3 Datensätze – auf Basis der gegebenen 12 Datensätze – mittels k-Nearest Neighbour. Testen Sie das Verfahren mit unterschiedlichen k. Welche Distanzfunktion schlagen Sie vor? Die Tabelle enthält Datensätze mit diesen Attributen: • Alternative: Gibt es in der Nähe ein geeignetes anderes Restaurant? {ja, nein} • Fr/Sa: Ist Freitag oder Samstag? {ja, nein} • Hungrig: Bin ich hungrig? {ja, nein}
• Gäste: Wie viele Leute sind im Restaurant? {keine, einige, voll} • Reservierung: Habe ich reserviert? {ja, nein}
• Typ: Um welchem Restauranttyp handelt es sich? {Franzose, Chinese, Italiener, Burger} • Wartezeit: Welche Wartezeit wird vom Restaurant geschätzt? {0–10, 10–30, 30–60, >60} • Warten (Zielattribut): Warte ich, wenn alle Tische besetzt sind? {ja, nein} Alternative ja ja nein ja ja nein nein nein nein ja nein ja ja ja nein
Fr/Sa
Hungrig
Gäste
nein nein nein ja ja nein nein nein ja ja nein ja nein ja nein
ja ja nein ja nein ja nein ja nein ja nein ja ja ja nein
einige voll einige voll voll einige keine einige voll voll keine voll einige voll keine
Tabelle 5.1: Restaurant-Beispiel
Reservierung ja nein nein nein ja ja nein ja nein ja nein nein nein ja nein
Typ
Zeit
Warten
Franz. Chin. Burger Chin. Franz. Ital. Burger Chin. Burger Ital. Chin. Burger Franz. Chin. Burger
0–10 30–60 0–10 10–30 >60 0–10 0–10 0–10 >60 10–30 0–10 30–60 30–60 10–30 0–10
ja nein ja ja nein ja nein ja nein nein nein ja
92
5 Klassifikation
Aufgabe 5.2:
K-Nearest Neighbour – Wetter-Beispiel 1
Wenden Sie das k-Nearest-Neighbour-Verfahren auf das Wetter-Beispiel (Abschnitt A.3, nominale Variante) an und sagen Sie vorher, ob in folgenden Situationen gespielt wird oder nicht. outlook = sunny, temperature = mild, humidity = normal, windy = false outlook = sunny, temperature = mild, humidity = normal, windy = true outlook = rainy, temperature = hot, humidity = normal, windy = false Welches Abstandsmaß wählen Sie? Wenden Sie das Verfahren mit unterschiedlichen k an.
Aufgabe 5.3:
K-Nearest Neighbour – Wetter-Beispiel 2
Wenden Sie das k-Nearest-Neighbour-Verfahren auf das Wetter-Beispiel (Abschnitt A.3, numerische Variante) an und sagen Sie vorher, ob in folgenden Situationen gespielt wird oder nicht. outlook = sunny, temperature = 78, humidity = 83, windy = false outlook = rainy, temperature = 69, humidity = 94, windy = true Welches Abstandsmaß wählen Sie? Können Sie die Daten im Originalformat verwenden oder müssen Sie die Daten anders codieren? Wenden Sie das Verfahren mit unterschiedlichen k an.
5.2
Entscheidungsbaumlernen
5.2.1
Erzeugen eines Entscheidungsbaums
In Abbildung 4.2 (Seite 72) haben wir bereits einen Entscheidungsbaum gesehen. In einem Entscheidungsbaum wird zu Beginn nach der Ausprägung eines Attributs gefragt. In Abbildung 4.2 ist das die Frage nach outlook. Je nach Ausprägung des Attributs wird dann entweder direkt die Klasse vorhergesagt, wie dies für outlook=overcast geschieht, oder nach weiteren Attributen gefragt. Um einen Entscheidungsbaum zu generieren, muss man daher – ausgehend von der Attributmenge A und der Beispielmenge E – zunächst ein Attribut a ∈ A als Wurzel auswählen. Sei ωa die Menge aller Werte, die das Attribut a annehmen kann. Für jede Ausprägung ω ∈ ωa dieses Attributs wird die Menge E ω ⊆ E gebildet, für die gilt ∀e ∈ E ω : ωa (e) = ω. Des Weiteren wird eine mit dieser Ausprägung markierte Kante an die Wurzel gelegt. Ist E ω = ∅, beendet man die Kante mit NIL. Sind alle Beispiele aus E ω in der derselben Klasse, wird die Kante mit einem Blatt abgeschlossen, welches mit der entsprechenden Klasse markiert ist.
5.2 Entscheidungsbaumlernen
93
In jedem anderen Fall wird ein weiterer Entscheidungsbaum generiert, dessen Wurzel als Knoten an das Ende der Kante gehängt wird. Dieser neue Teilbaum wird nun analog erzeugt. Es werden aber die reduzierte Attributmenge A = A \ {a} sowie die reduzierte Beispielmenge E ω zur Bildung des Teilbaums herangezogen. Wir betrachten zur Erläuterung erneut die Daten des Wetter-Beispiels (Tabelle 5.2). Tag 1 2 3 4 5 6 7 8 9 10 11 12 13 14
outlook sunny sunny overcast rainy rainy rainy overcast sunny sunny rainy sunny overcast overcast rainy
temperature hot hot hot mild cool cool cool mild cool mild mild mild hot mild
humidity high high high high normal normal normal high normal normal normal high normal high
windy false true false false false true true false false false true true false true
play no no yes yes yes no yes no yes yes yes yes yes no
Tabelle 5.2: Daten Wetter-Beispiel
Am bereits vorgestellten Entscheidungsbaum (Abbildung 5.5 auf der nächsten Seite) wird das Vorgehen deutlich. Als oberster Knoten wurde outlook gewählt. Dieses Attribut besitzt 3 Ausprägungen. Folglich werden 3 Kanten erzeugt: sunny, overcast, rainy. Nun werden für jede Ausprägung diejenigen Datensätze aus der ursprünglichen Trainingsmenge selektiert, die als Attributwert für outlook genau diesen Wert aufweisen: sunny, overcast oder rainy. Für overcast können wir sofort yes eintragen, da in allen Datensätzen, in denen der Attributwert overcast ist, gespielt wird: play = yes. Für die beiden anderen Fälle muss das Verfahren mit den jeweiligen Teilmengen der Trainingsmenge fortgesetzt werden. Dieses Vorgehen bezeichnet man als Top down induction of decision trees (TDIDT-Verfahren). Die in diesem Abschnitt behandelten Verfahren erzeugen einen univariaten Baum: An jedem Knoten wird genau ein Attribut abgefragt. Es gibt Verfahren, die multivariate Entscheidungsbäume generieren. In diesen Bäumen können in einem Knoten mehrere Attribute benutzt werden, beispielsweise als Linearkombination von Attributen: Gewicht + 2 · Größe < 70
Univariate Bäume zerlegen den mehrdimensionalen Merkmalsraum mit achsenparallelen Schnitten, während multivariate Bäume mit einer Linearkombination von Attributen immer noch lineare, aber keine achsenparallele Schnitte generieren. Man kann auch nichtlineare Ausdrücke abfragen: Gewicht < 25 Größe · Größe
94
5 Klassifikation Wurzelattribut (a)
E
sunny
E = alle Daten
outlook
Ausprägungen von outlook sunny
overcast
rainy
= Datensätze
1,2,8,9,11
E yes
humidity high no
= Datensätze 4,5,6,10,14
windy
3,7,12,13 normal false yes
rainy
yes
true no
Abb. 5.5: Entscheidungsbaum Wetter-Beispiel
Nun sind die Schnitte im Merkmalsraum nicht mehr linear. Multivariate Bäume haben den Vorteil, dass sie meist genauer und kleiner sind. Schwerer wiegt allerdings der Nachteil, dass sie komplizierter aufzubauen sind. Zudem sind multivariate Bäume schwieriger zu interpretieren. Man könnte als Abfragen an den Knoten auch logische Kombinationen von Attributwerten zulassen, beispielsweise outlook = sunny UND Windy = false. Das ist aber unnötig, da man dies auch durch hintereinander angeordnete Knoten realisieren kann.
5.2.2
Auswahl eines Attributs
Ein Entscheidungsbaum ist durch seine Knoten, somit durch die Anordnung der Attribute im Baum gekennzeichnet. Die Attributknoten können aber weitgehend beliebig angeordnet sein. Es gibt demzufolge nicht den einen, einzig richtigen Entscheidungsbaum für die Lösung eines Klassifikationsproblems, sondern eine Menge möglicher Entscheidungsbäume. Welchen Baum sollten wir anstreben? Natürlich möchten wir einen solchen Baum generieren, der möglichst kompakt ist, der uns nach wenigen Fragen ein Ergebnis, eine Klassenzuordnung liefert. Unter Beachtung des Aufwands ist es jedoch unmöglich, bei einer großen Anzahl von Attributen alle diese Bäume zu generieren und zu vergleichen. Wie findet man nun geeignete Attribute, die schnell zu einer Vorhersage führen? Es gibt drei prinzipielle Möglichkeiten, ein geeignetes (nächstes) Attribut für den Entscheidungsbaum auszuwählen. manuell Das auszuwählende Attribut wird vom Benutzer manuell vorgegeben. Dies kann nur bei kleinen Attributmengen eine sinnvolle Lösung sein. zufällig Eine einfache Alternative zur manuellen Attributwahl ist der Zufallsgenerator.
5.2 Entscheidungsbaumlernen
95
Dabei können aber auch Bäume mit sehr langen Pfaden entstehen, die unübersichtlich und somit schlecht interpretierbar sind. berechnet Bei dieser Form der Attributauswahl wird automatisch nach einem Attribut gesucht, welches einen Baum mit geringem Umfang erzeugt. Ein Algorithmus wählt ein Attribut aus und garantiert idealerweise, dass ein Baum mit geringem Umfang entsteht. Variante 3 ist unsere Wunschvariante. Dazu benötigen wir ein Kriterium, nach dem die Attribute miteinander verglichen werden können, und ein Verfahren, welches das optimale Attribut auswählt. Beispiel 5.4: Attributauswahl Man kann ein geeignetes Attribut beispielsweise unter der Maßgabe suchen, dass dieses lokal die Klassifikationsleistung am meisten verbessert. Dazu wird probeweise jedes Attribut a als Wurzel angenommen. Anhand der Ausprägungen ωa des Attributs a teilt man die Beispielmenge. Für jede dieser Teilmengen wird nun die in der Teilmenge häufigste Klasse vorhergesagt. Dann ermittelt man für jede Ausprägung x ∈ ωa die Fehlerrate error(x). error(x) =
falsch klassifizierte Beispiele alle Beispiele
„Alle Beispiele“ umfasst alle Daten, bei denen das Attribut a die Ausprägung x hat. Diese Zahl wird mit |Ax | bezeichnet, |A| ist die Anzahl aller Datensätze.
Die Fehlerrate errora des Attributs wird als Summe der mit der relativen Häufigkeit gewichteten Fehlerraten seiner Ausprägungen berechnet. errora =
|Ax | · error(x)) → min ( |A| x∈ω a
Für die Wurzel des Entscheidungsbaums wählt man nun das Attribut mit der geringsten Fehlerrate. Für das Wetter-Beispiel (Abbildung 5.2 auf Seite 93) ergeben sich für die Attribute outlook, temperature, humidity, windy die folgenden lokalen Klassifikationsleistungen. Für outlook=sunny wird zweimal gespielt, dreimal nicht. Wäre der Entscheidungsbaum hier zu Ende, würde man folglich no vorhersagen. Hier ergeben sich daher 2 Fehlerfälle. Analog erhält man für outlook=overcast 0 Fehler, für outlook=rainy 2 Fehlerfälle. Es ergibt sich folglich für outlook eine Fehlerrate von: error(outlook) =
4 14
Analog ergeben sich für die anderen 3 Attribute folgende Fehlerraten: error(temperature) =
5 14
96
5 Klassifikation Für temperature=hot entsteht eine Pattsituation, da je zweimal gespielt und nicht gespielt wird. Aber egal, was wir nun vorhersagen, wir bekommen 2 Fehlerfälle. error(humidity) =
4 14
Für windy ergibt sich diese Fehlerrate: error(windy) =
5 14
Wir können gemäß der lokalen Fehlerraten zwischen outlook und humidity wählen.
Metrische Attribute Das Konzept des Entscheidungsbaums kann leider nicht ohne weiteres auf metrische Werte angewendet werden. Bei metrischen Attributen, insbesondere bei großen Wertebereichen, ist es häufig nicht nur unangebracht, sondern sogar unmöglich, für jede Ausprägung eine einzelne Kante anzulegen, beispielsweise bei reellwertigen Attributen wie dem Jahresgehalt oder der Körpergröße. Zur Lösung dieses Problems gibt es zwei Möglichkeiten, die beide die metrischen Attribute diskretisieren: Gruppierung Es werden die Ausprägungen in Intervallen zusammengefasst (vgl. Abschnitte 8 (Datenvorbereitung) und 4.4 (Quantitative Assoziationsregeln)). Für jedes der Intervalle wird nun eine eigene Kante angelegt. Schwellwerte Es werden genau zwei Kanten erzeugt, die sich dadurch unterscheiden, dass die Attribute einen bestimmten Zahlenwert unter- oder überschreiten. Es ist bei diesem Vorgehen möglich, innerhalb eines Pfads des Baums ein Attribut mehrfach mit verschiedenen Schwellwerten zu untersuchen.
5.2.3
Der ID3-Algorithmus zur Erzeugung eines Entscheidungsbaums
Doch nun kommen wir auf unsere Wunschvariante für das Finden eines geeigneten Attributs, die automatische Generierung, zurück. Seien die in Tabelle 5.3 auf der nächsten Seite dargestellten Daten zur Bewertung des Kreditrisikos gegeben. Das Zielattribut ist hier Risiko. Es soll eine Vorhersage des Risikos auf der Basis der anderen gegebenen Attribute erfolgen. Wie generiert man aus diesen Daten einen Entscheidungsbaum, der uns bei der Entscheidung hilft, ob aus der Sicht der Bank das Risiko einer Kreditvergabe hoch, mittel oder niedrig ist? Dieser Entscheidungsbaum soll uns insbesondere auch bei Fällen, die in der obigen Tabelle nicht vorkommen, helfen. In Abbildung 5.6 ist ein Entscheidungsbaum dargestellt, der alle Beispiele der Tabelle 5.3 erfasst.
5.2 Entscheidungsbaumlernen
Nr. 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Zielattribut Risiko hoch hoch mittel hoch niedrig niedrig hoch mittel niedrig niedrig hoch mittel niedrig hoch
97
frühere Kreditwürdigkeit schlecht unbekannt unbekannt unbekannt unbekannt unbekannt schlecht schlecht gut gut gut gut gut schlecht
Verschuldung hoch hoch niedrig niedrig niedrig niedrig niedrig niedrig niedrig hoch hoch hoch hoch hoch
Sicherheiten keine keine keine keine keine angemessen keine angemessen keine angemessen keine keine keine keine
Einkommen 0 bis 15 15 bis 35 15 bis 35 0 bis 15 über 35 über 35 0 bis 15 über 35 über 35 über 35 0 bis 15 15 bis 35 über 35 15 bis 35
Tabelle 5.3: Kreditrisiko
Kreditwürdigkeit ? unbekannt Verschuldung ? niedrig
schlecht
gut
Sicherheit ? Verschuldung ? angemessen hoch niedrig keine
hoch
niedriges hohes Risiko Sicherheit ? Risiko mittleres Risiko hohes Risiko angemessen keine keine angemessen Einkommen ? niedriges Risiko Einkommen ? niedriges Risiko 0−15 über 35 0−15 15−35 über 35 15−35 niedriges Risiko hohes Risiko mittleres Risiko mittleres Risiko hohes Risiko niedriges Risiko Sicherheit ?
Abb. 5.6: Entscheidungsbaum 1 für das Kredit-Beispiel
98
5 Klassifikation
Fast immer hängt die Größe des Entscheidungsbaums davon ab, in welcher Reihenfolge die Eigenschaften (Attribute) für die Fallunterscheidung benutzt werden. In Abbildung 5.7 ist ein kleinerer Entscheidungsbaum dargestellt. Einkommen ? 0−15 hohes Risiko unbekannt
15−35 Kreditwürdigkeit ? schlecht
gut
über 35 Kreditwürdigkeit ? unbekannt
gut
niedriges Risiko niedriges Risiko hohes Risiko schlecht mittleres Risiko Verschuldung ? mittleres Risiko hoch niedrig hohes Risiko
mittleres Risiko
Abb. 5.7: Entscheidungsbaum 2 für das Kredit-Beispiel
Welcher Baum ist für die Klassifikation der unbekannten Datensätze optimal? Der ID3Algorithmus unterstellt, dass dies der einfachste Baum ist (siehe Abschnitt 9.1). Das Ziel ist also ein möglichst kompakter, kleiner Baum. Der Algorithmus zur Generierung eines Entscheidungsbaums ist in Listing 5.6 dargestellt. Listing 5.6:
Entscheidungsbaumlernen ID3
FUNCTION induce_tree(Beispielmenge Ex, Attribute Attr) IF alle Einträge aus Ex gehoeren zur gleichen Klasse THEN RETURN Blattknoten mit Beschriftung dieser Klasse ELSE Wähle ein Attribut A aus Attr Setze A als Wurzel für den aktuellen Baum Lösche A aus Attr FOREACH Wert AV von A Erstelle Kante im Baum mit Kantenbeschriftung AV Seien Ex_AV alle Elemente von Beispielmenge Ex, die als Wert für A gerade AV haben Ergebnis der Kante AV := induce_tree(Ex_AV,Attr) END FOREACH END IF END.
5.2 Entscheidungsbaumlernen
99
Dieser Algorithmus lässt noch die Auswahl eines Attributs offen. Wie wählt der ID3Algorithmus ein geeignetes Attribut aus? Das hier vorgestellte Verfahren wurde 1979 von Quinlan [Qui86] entwickelt und benutzt den Begriff der Entropie von Shannon. Grundlage ist die Informationstheorie. Gewählt wird das Attribut, welches den größten Informationsgewinn liefert. Wir definieren zuerst den Begriff des Informationsgehalts eines Attributs, auf dem der Informationsgewinn aufbaut. Definition 5.7:
Informationsgehalt
Der Informationsgehalt eines Attributs B wird gemessen als: I(B) =
k i=1
Dabei sind:
−p(bi ) · log2 (p(bi ))
• die bi die möglichen Werte des Attributs B,
• k die Anzahl der Ausprägungen des Attributs B,
• p die Wahrscheinlichkeit (besser: relative Häufigkeit) für das Eintreffen von bi in der Trainingsmenge. Ist p(bi ) = 0, so setzen wir den gesamten Summanden −p(bi ) · log2 (p(bi )) auf 0.
Der Informationsgehalt bezieht sich immer auf ein Attribut und eine Menge von gegebenen Datensätzen. In der obigen Definition wird auf die relative Häufigkeit einer Ausprägung bi des Attributs B Bezug genommen. Dazu muss natürlich die Bezugsmenge definiert sein. Da der Informationsgehalt sich immer auf das Zielattribut bezieht, lassen wir das Zielattribut weg und schreiben statt IZielattribut (Tabelle) vereinfacht I(Tabelle). Man kann sich den Informationsgehalt besser veranschaulichen, wenn man ihn als Unreinheit, als Unordnung einer Menge interpretiert. Der Informationsgehalt (Entropie) misst die Unordnung in einer Menge. Je größer der Informationsgehalt, desto größer ist die Unordnung und umgekehrt. Betrachten wir eine Beispielmenge mit 2 Klassen. Kommt in einer Teilmenge nur noch eine Klasse vor, dann ergibt sich gemäß der Definition des Informationsgehalts für diese Teilmenge der Wert 0. Dies entspricht unserer Vorstellung, denn diese Teilmenge enthält – bezüglich des Zielattributs – keinerlei Unordnung, da alle Daten dieser Teilmenge zur selben Klasse gehören. Wie groß ist der Informationsgehalt – die Unreinheit – der Tabelle in Tabelle 5.3 auf Seite 97? Dazu benötigen wir zunächst die relativen Häufigkeiten der Ausprägungen des Zielattributs. • p(Risiko hoch) =
6 14
• p(Risiko mittel) =
• p(Risiko niedrig) =
3 14 5 14
100
5 Klassifikation
Folglich ist I(Tabelle) = IRisiko (Tabelle) = 6 3 5 6 3 5 = − · log2 ( ) − · log2 ( ) − · log2 ( ) = 1,531 14 14 14 14 14 14 Nun wählt man das Attribut aus, das den maximalen Informationsgewinn erzielt, beziehungsweise für die größte Reduzierung der Unreinheit sorgt. Dazu berechnet man die Differenz aus I(Tabelle) und der Unreinheit, die sich für die nächste Ebene ergibt (Abbildung 5.8). I(Tabelle)
Alle Datensätze Kreditwürdigkeit ?
unbekannt
schlecht
Teiltabelle 1
Teiltabelle 2
gut
Teiltabelle 3
Kreditwürdigkeit = gut Kreditwürdigkeit = unbekannt Kreditwürdigkeit = schlecht G(Kreditwürdigkeit) Abb. 5.8: Informationsgewinn
Sei eine Beispielmenge E – die komplette Trainingsmenge – gegeben. Wählt man nun beispielsweise das Attribut B mit n Werten aus, so wird E in n Teilmengen (Teiltabellen) zerlegt: {E1 , . . . , En }. Nachdem B als Wurzel des Baums festgesetzt wurde, ergibt sich die verbleibende Unreinheit des Entscheidungsbaums aus der gewichteten Summe der Unreinheiten (Informationsgehalte) I(Ej ): G(B) =
n |Ej | j=1
|E|
· I(Ej )
G (gain) ist die entsprechend der relativen Häufigkeit gewichtete Summe der Informationsgehalte (Unreinheiten) der sich durch B ergebenden Teil- oder Unterbäume. Der Gewinn an Information wird dann berechnet als: gewinn(B) = I(E) − G(B)
Es gilt, gewinn zu maximieren. Dazu führt man die obige Berechnung für alle Attribute durch und wählt jenes Attribut aus, das den maximalen Gewinn gewinn(B) liefert. Für das Beispiel wählen wir zunächst Kreditwürdigkeit als Attribut. Das Attribut Kreditwürdigkeit besitzt 3 Ausprägungen: unbekannt, schlecht, gut. Für jeden dieser Werte zählen wir, wie oft diese in den Datensätzen mit welchem Risiko verknüpft sind:
5.2 Entscheidungsbaumlernen Wert unbekannt schlecht gut
hohes Risiko 2 3 1
101
mittleres Risiko 1 1 1
niedriges Risiko 2 0 3
Es ergibt sich: I(Kreditwürdigkeit_unbekannt) = 1 2 2 1 2 2 − · log2 ( ) − · log2 ( ) − · log2 ( ) = 1,52 5 5 5 5 5 5 I(Kreditwürdigkeit_schlecht) = −
1 3 1 3 · log2 ( ) − · log2 ( ) = 0,81 4 4 4 4
I(Kreditwürdigkeit_gut) = 1 3 1 1 1 3 − · log2 ( ) − · log2 ( ) − · log2 ( ) = 1,37 5 5 5 5 5 5 Somit ergibt sich bei Nutzung des Attributs Kreditwürdigkeit: G(Kreditwürdigkeit) =
n |Ej | j=1
|E|
I(Ej ) =
4 5 5 · 1,52 + · 0,8113 + · 1,37095 = 1,265 14 14 14
In Abbildung 5.9 ist das Vorgehen dargestellt. I(Tabelle) = 1,531
unbekannt 5x Teiltabelle 1 Kreditwürdigkeit = unbekannt hoch = 2x I= mittel = 1x 1,52 niedrig = 2x
Gesamte Tabelle Kreditwürdigkeit ? schlecht 4x Teiltabelle 2 ... = schlecht hoch = 3x I= mittel = 1x 0,81 niedrig = 0x
(14)
hoch = 6x mittel = 3x niedrig = 5x
gut 5x
Teiltabelle 3 ... = gut hoch = 1x I = mittel = 1x niedrig = 3x 1,37
G(Kreditwürdigkeit) = 5/14 * 1,52 + 4/14 * 0,81 + 5/14 * 1,37 Abb. 5.9: Gain-Berechnung
102
5 Klassifikation
Diese Berechnung führen wir für alle vier Attribute durch und erhalten: gewinn(Kreditwürdigkeit) gewinn(Einkommen) gewinn(Verschuldung) gewinn(Sicherheiten)
= = = =
1,531 − 1,265 1,531 − 0,564 1,531 − 1,468 1,531 − 1,325
= = = =
0,266 0,967 0,063 0,206
Man erkennt, dass der Gewinn für das Attribut Einkommen am größten ist und wählt dieses Attribut für den Wurzelknoten aus. Danach wird das Verfahren rekursiv fortgesetzt: Für jede Teilmenge, die einem Knoten zugeordnet ist, wird wieder ein Baum erzeugt. Wir erzeugen den Teilbaum exemplarisch für den Zweig: Einkommen=15 bis 35. Wichtig ist, dass wir jetzt nicht mehr über die gesamte Tabelle nachdenken müssen, sondern nur noch über die Datensätze, in denen Einkommen=15 bis 35 gilt. Wir können folglich in der Tabelle 5.3 auf Seite 97 etliche Datensätze löschen (Tabelle 5.4). Man könnte auch die komplette Einkommen-Spalte für herausstreichen. Nr. 2 3 12 14
Zielattribut Risiko hoch mittel mittel hoch
frühere Kreditwürdigkeit unbekannt unbekannt gut schlecht
Verschuldung hoch niedrig hoch hoch
Sicherheiten keine keine keine keine
Einkommen 15 bis 35 15 bis 35 15 bis 35 15 bis 35
Tabelle 5.4: Kreditrisiko
Welches Attribut wählen wir als nächstes für den Zweig Einkommen=15 bis 35? Dazu berechnen wir zunächst wieder den Informationsgehalt der Tabelle 5.4. • p(Risiko hoch) =
2 4
• p(Risiko mittel) =
• p(Risiko niedrig) =
2 4 0 4
Folglich ist 2 2 0 2 2 0 I(Tabelle2) = I(Risiko) = − · log2 ( ) − · log2 ( ) − · log2 ( ) = 1 4 4 4 4 4 4 Nun wählt man wieder das Attribut aus, welches den maximalen Informationsgewinn erzielt. Man berechnet erneut die Differenz aus I(Tabelle2) und der Unreinheit, die sich für die nächste Ebene ergibt. Wählen wir zunächst Kreditwürdigkeit als Attribut. Kreditwürdigkeit hat 3 Ausprägungen: unbekannt, schlecht, gut. Für jeden dieser Werte zählen wir, wie oft welches Risiko vorkommt:
5.2 Entscheidungsbaumlernen Wert unbekannt schlecht gut
hohes Risiko 1 1 0
103
mittleres Risiko 1 0 1
niedriges Risiko 0 0 0
Es ergibt sich: I(Kreditwürdigkeit_unbekannt) = 1 0 1 1 0 1 = − · log2 ( ) − · log2 ( ) − · log2 ( ) = 1 2 2 2 2 2 2 I(Kreditwürdigkeit_schlecht) = 0 0 1 0 0 1 = − · log2 ( ) − · log2 ( ) − · log2 ( ) = 0 1 1 1 1 1 1 I(Kreditwürdigkeit_gut) =
1 0 0 1 0 0 = − · log2 ( ) − · log2 ( ) − · log2 ( ) = 0 1 1 1 1 1 1
Also ist G(Kreditwürdigkeit) =
n |Ej | j=1
|E|
I(Ej ) =
1 1 2 · 1 + · 0 + · 0 = 0,5 4 4 4
Diese Berechnung führen wir auch für die anderen beiden Attribute durch und erhalten: • gewinn(Kreditwürdigkeit) = 1 − 0,5 = 0,5
• gewinn(Verschuldung) = 1 − 0,6887 = 0,3113 • gewinn(Sicherheiten) = 1 − 1 = 0
Man wählt Kreditwürdigkeit als nächsten Knoten, da der Gewinn dort am größten ist. In den Abbildungen 5.10 und 5.11 sind der Knime-Workflow und der Entscheidungsbaum dargestellt, der von Weka (in Knime) generiert wird. Wir haben anstelle des ID3-Algorithmus den J48-Algorithmus – eine Variante des C4.5-Algorithmus (Abschnitt 5.2.6) – ausgewählt, da für diesen Algorithmus der Entscheidungsbaum graphisch dargestellt werden kann. CSV Reader
J48
Daten einlesen
Entscheidungsbaum generieren
Abb. 5.10: Workflow Kreditwürdigkeit
104
5 Klassifikation Einkommen = 0-15
hoch (4.0)
= 15-35
= ueber35
Kreditwuerdigkeit = gut
niedrig (1.0)
Kreditwuerdigkeit
= schlecht = unbekannt hoch (1.0)
= gut niedrig (3.0)
Verschuldung = hoch hoch (1.0)
= schlecht = unbekannt mittel (1.0)
niedrig (2.0)
= niedrig mittel (1.0)
Abb. 5.11: Entscheidungsbaum Kreditwürdigkeit
5.2.4
Entropie
Wir kommen nochmal zurück zum Begriff des Informationsgehalts. Wir haben die Formel für den Informationsgehalt in Definition 5.7 auf Seite 99 bisher einfach benutzt. Für ein besseres Verständnis ist es hilfreich, sich den Hintergrund dieser Formel anzuschauen. Variante 1 Die erste Variante lehnt sich an [Blu07] an. Sei E ein Ereignis, das mit der Wahrscheinlichkeit p(E) > 0 eintritt. Man sagt, dass die Mitteilung, dass das Ereignis E eingetreten ist, I(E) = log2
1 p(E)
Informationseinheiten enthält. Ist p(E) = 1 – wir haben es mit dem sicheren Ereignis zu tun – dann steckt im Eintreten des Ereignisses keinerlei Information, da es ja sicher ist. Es gilt I(E) = 0, was dies korrekt widerspiegelt. Wann erreichen wir I(E) = 1? Wenn p(E) = 12 ist, das heißt wenn wir zwei gleichwahrscheinliche Ereignisse haben. Je unwahrscheinlicher das Ereignis wird, desto größer wird I(E). Auch dies entspricht unserer Intuition: Je unwahrscheinlicher ein Ereignis, desto größer der Informationsgehalt, falls es eintritt. Nun betrachten wir ein Zufallsexperiment: k Ereignisse a1 , a2 , a3 , . . . , ak sind möglich, und zwar mit den Wahrscheinlichkeiten p1 , p2 , p3 , . . . , pk . Dabei setzen wir voraus: k
pi = 1
i=1
pi ≥ 0
5.2 Entscheidungsbaumlernen
105
Falls das Ereignis ai eintritt, dann erhalten wir I(ai ) = log2 p1i Bits an Informationen. Das Ereignis tritt mit einer Wahrscheinlichkeit von pi ein. Folglich ist die mittlere Informationsgröße, die man erhält: k i=1
pi · I(ai ) =
k i=1
pi · log2
1 pi
Auf dieser Basis können wir nun die Entropie definieren: Definition 5.8:
Entropie
Die Entropie ist definiert als: Hk := Hk (p1 , p2 , . . . , pk ) = −
k i=1
pi · log2 (pi )
Im Fall pi = 0 setzen wir den Summanden auf 0. Wir können I(ai ) als diejenige Information interpretieren, die wir benötigen, um zu spezifizieren, dass ai eintritt. Hk kann man als mittlere Informationsgröße pro Ausgang des Zufallsexperiments auffassen. Man kann H aber auch als mittlere Unsicherheit interpretieren, die ein Zuschauer vor dem Experiment hat. Variante 2 Die 2. Variante der Veranschaulichung des Entropiebegriffs stammt aus der Kryptografie und entwickelt den Entropiebegriff auf der Basis von Codierungen [PM10, S. 233 ff.]. Ein Bit ist eine binäre Zahl. Man kann mit ihr 2 Informationen darstellen, also 2 Dinge voneinander unterscheiden. Mit 2 Bits kann man 4 Dinge codieren (00, 01, 10, 11), mit 3 analog 8. Allgemein kann man mit k Bits 2k Fälle unterscheiden. Umgekehrt können wir daher k unterschiedliche Dinge mit log2 (k) Bits darstellen. Wenn wir aber die Wahrscheinlichkeiten für das Auftreten eines Ereignisses in Betracht ziehen, dann können wir dies sogar verbessern. Wir möchten die Elemente der Menge {a, b, c, d, e} unterscheiden und betrachten dafür folgende Binärcodierung: a d
0 1110
b e
10 1111
c
110
Die Wahrscheinlichkeiten für das Auftreten der Elemente seien: p(a) = 1 1 , p(e) = 16 . p(c) = 18 , p(d) = 16
1 2,
p(b) =
1 4,
Diese Codierung nutzt also manchmal 1 Bit (a), manchmal 2, 3 oder 4 (d und e). Im Mittel nutzt diese Codierung – jetzt müssen wir die Wahrscheinlichkeiten für das Auftreten des jeweiligen Elements berücksichtigen – diese Bit-Anzahl:
106
5 Klassifikation p(a) · 1 + p(b) · 2 + p(c) · 3 + p(d) · 4 + p(e) · 4 = 1 1 = 12 · 1 + 14 · 2 + 18 · 3 + 16 · 4 + 16 ·4 =
1 2
+
2 4
+
3 8
+
4 16
+
4 16
=
15 8
= 1,875
Und dies ist natürlich besser als eine Codierung mittels 3 Bit, die man gemäß aufgerundetem Logarithmus log2 (5) benötigt. Mit dieser Codierung benötigen wir daher 1 Bit, um a von den anderen zu unterscheiden. Das ist − log2 (p(a)) = 1. Wir benötigen 4 Bits, um d und e von den anderen Elementen zu unterscheiden. Das ist − log2 (p(d)) = 4.
Wir bauen nun eine Codierung, die für die Codierung von x genau − log2 (p(x)) Bits (beziehungsweise die nächstgrößere natürliche Zahl) benutzt. Und nun ist klar, dass man für eine Informationsübertragung im Durchschnitt k i=1
−pi · log2 (pi )
Bits benötigt. Und dies ist genau die Entropie. Auf diesem Ansatz basiert im Übrigen die Huffman-Codierung, die in der Kryptografie benutzt wird.
5.2.5
Der Gini-Index
Alternativ kann anstelle des Informationsgehalts und des Gains auch der sogenannte Gini-Index verwendet werden. Der Gini-Index geht auf den italienischen Statistiker Corrado Gini (1884-1965) zurück. Der Gini-Index ist das Äquivalent zum Informationsgehalt einer Tabelle bezüglich eines Zielattributs B; er wird gemessen als: giniB (E) = 1 −
k
p(bi )2
i=1
Dabei stellen die bi die möglichen Werte des Attributs B dar. p ist die Wahrscheinlichkeit (die relative Häufigkeit) für das Eintreffen von bi . Analog zum Gain definiert man dann GINI(B) =
n |Ej | j=1
|E|
· gini(Ej )
Anstelle des Gains (Seite 100) wird der GINI für die Auswahl des besten Attributs gewählt. Der Gewinn berechnet sich nun wie folgt: gewinn(B) = gini(E) − GINI(B)
Man wählt wieder das Attribut B, welches die maximale Verbesserung, also den maximalen Gewinn liefert.
5.2 Entscheidungsbaumlernen
5.2.6
107
Der C4.5-Algorithmus
Ein Nachteil des ID3-Algorithmus ist, dass er numerische Attribute nicht behandeln kann. Dies kann der Nachfolger des ID3, der C4.5-Algorithmus [Qui93]. Der C4.5Algorithmus unterteilt numerische Attribute in Intervalle und wandelt diese somit in ordinale Attribute um. Hat ein Attribut A n Ausprägungen A1 , . . . , An , so werden für jedes i = 1 . . . n − 1 die Intervalle [a|a ≤ Ai ] und [a|a > Ai ] gebildet. Diese 2 Intervalle werden als neue Ausprägungen des Attributs A betrachtet. Es wird diejenige Intervallbildung gewählt, die den größten Gewinn liefert. Der ID3-Algorithmus hat einen weiteren Nachteil: Die Sortierung der Attribute (wie oben dargestellt) favorisiert Attribute mit vielen verschiedenen Ausprägungen (Attribute mit vielen unterschiedlichen Werten). Deshalb normalisiert C4.5 den Informationsgewinn. Sei: ISplit(B) = −
n |Ej | j=1
|E|
· log2 (
|Ej | ) |E|
Der Gewinn an Information wird dann normalisiert: gewinn’(B) =
Beispiel 5.5:
gewinn(B) ISplit(B)
ISplit
Betrachten wir einen kleinen Ausschnitt aus einer Kino-Besuch-Datentabelle. Wir konzentrieren uns dabei auf nur zwei Attribute, den Kartenpreis und das Zielattribut Kino besucht. 8 5 5 9 8 8 4 5 8 8 9 8 Preis Kino besucht j n j j n j j n n j j n Wir betrachten 2 mögliche Umwandlungen des Preisattributs in Ordinalattribute. Variante 1: • 4 und 5 werden zu billig: 4 Ausprägungen.
• 8 und 9 werden zu teuer: 8 Ausprägungen. Variante 2: • 4 wird zu billig: 1 Ausprägung.
• 5 wird zu moderat: 3 Ausprägungen. • 8 wird zu teuer: 6 Ausprägungen.
• 9 wird zu sehr teuer: 2 Ausprägungen.
108
5 Klassifikation
Für Variante 1 ergibt sich ein Gain von 0,97, für Variante 2 ein Wert von 0,73. Damit ist klar, dass der Gewinn bei Variante 2 größer sein wird. Dies ist ein typischer Effekt, Attribute mit vielen Ausprägungen werden bevorzugt. Deshalb teilt man den Informationsgewinn durch den ISplit, um dies auszugleichen. Man erhält für Variante 1 einen ISplit von 0,92, für Variante 2 einen ISplit von 1,73. Der größere ISplit reduziert den Gewinn für Variante 2 stärker als den Gewinn bei Variante 1, womit der Bevorzugungseffekt reduziert wird. Sei I(E) der Informationsgehalt der Tabelle, dann beträgt der Gewinn (ohne ISplit) für Variante 1: I(E) − 0,97 und für Variante 2: I(E) − 0,73. Mit dem ISplit ergibt und für Variante 2: I(E)−0,73 . sich für Variante 1: I(E)−0,97 0,92 1,73 Mit dem C4.5-Verfahren ist es nun möglich, einen Entscheidungsbaum für die IRISDaten (siehe Abschnitt A.1) zu generieren. In Abbildung 5.12 ist der von Weka erzeugte Entscheidungsbaum dargestellt. Dieser wurde mittels des J48-Algorithmus – der WekaVariante des C4.5 – berechnet. petalwidth 0.6
Iris-setosa (50.0)
petalwidth 1.7 Iris-virginica (46.0/1.0)
petallength 4.9
Iris-versicolor (48.0/1.0)
petalwidth 1.5 Iris-versicolor (3.0/1.0)
Abb. 5.12: Entscheidungsbaum für Iris-Daten
5.2.7
Probleme beim Entscheidungsbaumlernen
Beim Generieren eines Entscheidungsbaums kann es passieren, dass der Entscheidungsbaum die Trainingsdaten auswendig lernt. Er wird dann alle Trainingsdaten korrekt klassifizieren. Allerdings hat sich gezeigt, dass ein solcher Entscheidungsbaum manchmal auf den Testdaten nicht gut funktioniert, da er ja nur alle Trainingsdaten auswendig gelernt hat. Man bezeichnet dies als Overfitting. Man versucht, dies zu verhindern, und zwar durch ein künstliches Verkürzen der Bäume. Es gibt 2 einfache Ansätze:
5.2 Entscheidungsbaumlernen
109
1. Man fordert, dass jeder Unterbaum eine minimale Anzahl von Datensätzen enthält. Es werden keine weiteren Unterbäume erzeugt, falls eine bestimmte Anzahl von Trainingsdaten unterschritten wird. 2. Man kann aber auch zunächst den kompletten Entscheidungsbaum generieren und erst hinterher generierte Unterbäume durch ein Blatt ersetzen. Beide Vorgehen gehören zum sogenannten Pruning. Wir geben damit den Wunsch auf, dass unser Entscheidungsbaum die Trainingsdaten zu 100% korrekt vorhersagt. Dies kann ohnehin passieren, falls wir widersprüchliche Daten haben. Es kann durchaus zwei Kunden mit identischem Profil geben. Der eine Kunde ist aber ein guter, der andere ein schlechter Kunde. Dann kann unser Entscheidungsbaum auf den Trainingsdaten nicht zu 100% korrekt arbeiten. Ein mittels Pruning gekürzter Entscheidungsbaum kann in der späteren Anwendung deutlich bessere Ergebnisse erzielen als ein Entscheidungsbaum, der auf allen Trainingsdaten vollständig korrekt arbeitet. Mit dem Abschneiden (Pruning) zwingen wir den entstehenden Entscheidungsbaum zu verallgemeinern. Ein solcher Entscheidungsbaum funktioniert dann auf neuen Daten oft wesentlich besser. Im Entscheidungsbaum für die Iris-Daten (Abbildung 5.12) haben wir Pruning eingesetzt und somit bewusst Fehler zugelassen. Trotz dieses (generellen) Problems erfreuen sich Entscheidungsbäume großer Beliebtheit. Dies liegt zum einen daran, dass sie gut zu interpretieren sind. Zum anderen sind auch die Entscheidungsbaumverfahren nicht kompliziert und somit leicht zu implementieren. Ein Nachteil der Entscheidungsbaumverfahren ist, dass sie nicht inkrementell weiterentwickelt werden können. Wurde ein Entscheidungsbaum generiert, dann kann dieser generierte Baum nicht einfach modifiziert werden, falls neue Daten hinzukommen. Statt dessen muss man im allgemeinen einen neuen Entscheidungsbaum generieren. Neben den hier vorgestellten Verfahren gibt es eine Reihe von weiteren Entscheidungsbaumverfahren, wie NewID, ID5R, CHAID, CLS, LCLRD, AQ15.
5.2.8
Entscheidungsbaum und Regeln
Wollen wir unser Data-Mining-Modell zur Entscheidungsunterstützung verwenden, so benötigen wir dafür eine maschinenlesbare Darstellung. Der Entscheidungsbaum ist dafür in seiner graphischen Repräsentation ungeeignet. Wir können aber leicht aus einem Entscheidungsbaum Regeln (vgl. Abschnitt 4.3) generieren. Aus dem in Abbildung 5.11 auf Seite 104 dargestellten Entscheidungsbaum lassen sich problemlos Regeln extrahieren, die den kompletten Baum repräsentieren, beispielsweise Einkommen = ueber35 UND Kreditwuerdigkeit = unbekannt DANN Risiko= niedrig Einkommen = 0–15 DANN Risiko= niedrig ...
110
5 Klassifikation
Es gibt im Übrigen etliche Verfahren zur Generierung von Regeln, die nicht auf Entscheidungsbäumen basieren. Neben den im Abschnitt 7 über Assoziationsanalysen vorgestellten Verfahren, die ohne weiteres auch auf Klassifikationsaufgaben angewandt werden können, gibt es weitere wie beispielsweise AQ15, CN2 und LCLR [Pet05]. Aufgabe 5.4:
Entscheidungsbaum – Wetter-Beispiel
Wir betrachten erneut das Wetter-Beispiel, nun aber mit den ursprünglichen numerischen Werten für Temperatur und Luftfeuchtigkeit (siehe Abschnitt A.3). Bestimmen Sie aus den in Tabelle 5.5 gegebenen Daten einen Entscheidungsbaum für das Attribut ‚Play?‘, welches angibt, ob unter den gegebenen Witterungsbedingungen gespielt wird. Wählen Sie bei gleicher Güte zweier Attribute das in der Tabelle weiter links stehende. Wie gehen Sie mit den numerischen Werten um? Outlook sunny sunny overcast rain rain rain overcast sunny sunny rain sunny overcast overcast rain
Temp (◦ F) 85 80 83 70 68 65 64 72 69 75 75 72 81 71
Humidity (%) 85 90 78 96 80 70 65 95 70 80 70 90 75 80
Windy? false true false false false true true false false false true true false true
Play? no no yes yes yes no yes no yes yes yes yes yes no
Tabelle 5.5: Daten Wetter-Beispiel
Aufgabe 5.5:
Entscheidungsbaum – Restaurant
Die Tabelle 5.6 auf der nächsten Seite (vgl. Aufgabe 5.1 auf Seite 91) enthält 12 Datensätze mit diesen Attributen: • Alternative: Gibt es in der Nähe ein geeignetes anderes Restaurant? {ja, nein} • Fr/Sa: Ist Freitag oder Samstag? {ja, nein} • Hungrig: Bin ich hungrig? {ja, nein}
• Gäste: Wie viele Leute sind im Restaurant? {keine, einige, voll} • Reservierung: Habe ich reserviert? {ja, nein}
• Typ: Um welchem Restauranttyp handelt es sich? {Franzose, Chinese, Italiener, Burger}
5.3 Naive Bayes
111
• Wartezeit: Welche Wartezeit wird vom Restaurant geschätzt? {0–10, 10–30, 30–60, >60} • Warten (Zielattribut): Warte ich, wenn alle Tische besetzt sind? {ja, nein} Generieren Sie einen Entscheidungsbaum und klassifizieren Sie die letzten 3 Datensätze der Tabelle. Alternative ja ja nein ja ja nein nein nein nein ja nein ja ja ja nein
Fr/Sa
Hungrig
Gäste
nein nein nein ja ja nein nein nein ja ja nein ja nein ja nein
ja ja nein ja nein ja nein ja nein ja nein ja ja ja nein
einige voll einige voll voll einige keine einige voll voll keine voll einige voll keine
Reservierung ja nein nein nein ja ja nein ja nein ja nein nein nein ja nein
Typ
Zeit
Warten
Franz. Chin. Burger Chin. Franz. Ital. Burger Chin. Burger Ital. Chin. Burger Franz. Chin. Burger
0–10 30–60 0–10 10–30 >60 0–10 0–10 0–10 >60 10–30 0–10 30–60 30–60 10–30 0–10
ja nein ja ja nein ja nein ja nein nein nein ja
Tabelle 5.6: Daten Restaurantbeispiel
Aufgabe 5.6:
Entscheidungsbaum – Kontaktlinsen-Beispiel
Finden Sie für das Kontaktlinsen-Beispiel, welches im Abschnitt A.4 erläutert wird, einen Entscheidungsbaum.
5.3
Naive Bayes
Der Naive-Bayes-Algorithmus ist ein wahrscheinlichkeitsbasiertes Verfahren. Das Ziel ist die Vorhersage der wahrscheinlichsten Klasse. Es findet kein Training eines Modells statt. Die Vorhersage wird direkt aus den Trainingsdaten berechnet. Dabei gehen wir von einer grundlegenden Annahme aus: Alle Attribute sind voneinander unabhängig. Der Naive-Bayes-Algorithmus basiert auf der Bayesschen Formel, die in Berechnungen mit bedingten Wahrscheinlichkeiten ein Vertauschen der abhängigen Ereignisse erlaubt.
112
5.3.1
5 Klassifikation
Bayessche Formel
Sei Y ein Ereignis mit P (Y ) > 0. Dann heißt P (X|Y ) =
P (X ∧ Y ) P (Y )
bedingte Wahrscheinlichkeit von X unter der Bedingung Y . Falls P (Y ) = 0, so ist die bedingte Wahrscheinlichkeit nicht definiert. Stellt man die Formel für die bedingte Wahrscheinlichkeit um, so erhält man: P (X ∧ Y ) = P (Y ) · P (X|Y )
Betrachtet man die bedingte Wahrscheinlichkeit von Y bezüglich X, so ergibt sich analog: P (Y ∧ X) = P (X) · P (Y |X)
Da das logische Und kommutativ ist, gilt: P (Y ) · P (X|Y ) = P (X) · P (Y |X)
Somit erhält man die Bayessche Formel: P (X|Y ) =
P (Y |X) · P (X) P (Y )
Diese Formel ist bei vielen Problemen sehr nützlich, da sie die Berechnung von P (X|Y ) mittels P (Y |X) erlaubt. Häufig ist nur eine der beiden bedingten Wahrscheinlichkeiten verfügbar. Mit der Bayesschen Formel lässt sich somit die umgekehrte bedingte Wahrscheinlichkeit berechnen.
5.3.2
Der Naive-Bayes-Algorithmus
Wir beziehen uns wieder auf das Wetter-Beispiel (Abschnitt A.3). Sei A = {a1 , . . . , an } eine Menge von Attributwerten, zum Beispiel {sunny, hot}. Wir möchten nun berechnen, ob gespielt wird, wenn es sunny und hot ist. Mit der Bayesschen Formel erhalten wir: P (yes|[sunny, hot]) =
P ([sunny, hot]|yes) · P (yes) P ([sunny, hot])
Analog berechnen wir P (no|[sunny, hot]) =
P ([sunny, hot]|no) · P (no) P ([sunny, hot])
Wir sagen dann yes vorher, wenn P (yes|[sunny, hot]) größer als P (no|[sunny, hot]) ist, sonst no.
5.3 Naive Bayes
113
Wir sehen, dass in beiden Formeln im Nenner der Term P ([sunny, hot]) vorkommt. Da dieser für beide Ausdrücke gleich ist und wir ja nur bezüglich der Größe vergleichen, können wir diesen weglassen. Wir reden aber nun nicht mehr von der Wahrscheinlichkeit P , sondern von der sogenannten Likelihood L: L(yes|[sunny, hot]) = P ([sunny, hot]|yes) · P (yes) L(no|[sunny, hot]) = P ([sunny, hot]|no) · P (no) Der Naive-Bayes-Algorithmus geht von der Unabhängigkeit der Attribute aus und ersetzt: P ([sunny, hot]|yes) = P (sunny|yes) · P (hot|yes) Die Vorhersage einer Klasse erfolgt somit über die folgenden Größen: Relative Häufigkeit h[a, k] des Attributs a in der Klasse k Likelihood L[k](A) =
n
· h[k]
h[ai , k]
i=1
L[kj ](A) Wahrscheinlichkeit P [kj ](A) = L[k ](A) i
i
Vorhersage km : Pm (A) = max(P [kj ](A)) j
Die relative Häufigkeit h[a, k] ist exakt unser P (a|k). Wir ersetzen aber P (a|k) lieber durch die relative Häufigkeit h[a, k], da die Information über die Wahrscheinlichkeit genau genommen nicht vorliegt, sondern nur eine kleine Menge von gegebenen Beispieldaten. Die Likelihood hatten wir oben bereits eingeführt. Die Likelihoods vergleichen wir miteinander und nehmen davon den größten Wert. Um wieder Wahrscheinlichkeitswerte zu erhalten, normalisieren wir unsere Likelihoods, so dass deren Summe 1 ergibt. Dies erreichen wir dadurch, dass wir alle Likelihoods durch L[ki ](A). die Gesamtsumme aller Likelihoods dividieren: i
Wir erläutern das Vorgehen am Wetter-Beispiel.
Beispiel Wetterdaten Wir beziehen uns wieder auf das Wetter-Beispiel (Tabelle 5.7). Wird an einem Tag mit folgenden Eigenschaften gespielt? outlook temperature humidity windy
= = = =
sunny hot normal true
114 Tag 1 2 3 4 5 6 7 8 9 10 11 12 13 14
5 Klassifikation outlook sunny sunny overcast rainy rainy rainy overcast sunny sunny rainy sunny overcast overcast rainy
temperature hot hot hot mild cool cool cool mild cool mild mild mild hot mild
humidity high high high high normal normal normal high normal normal normal high normal high
windy false true false false false true true false false false true true false true
play no no yes yes yes no yes no yes yes yes yes yes no
Tabelle 5.7: Wetter-Daten
Schritt 1 Wir ermitteln zunächst die relativen Häufigkeiten. Es ergibt sich: h[sunny, yes] =
2 9
weil • es 9 Tage gibt, an denen gespielt wurde (play=yes),
und
• an 2 dieser Tage outlook=sunny war.
Die weiteren relativen Häufigkeiten, die wir benötigen, sind in Tabelle 5.8 fett markiert.
outlook temperature humidity windy
sunny overcast rainy hot mild cool high normal true false
play yes no 2/9 3/5 4/9 0/5 3/9 2/5 2/9 2/5 4/9 2/5 3/9 1/5 3/9 4/5 6/9 1/5 3/9 3/5 6/9 2/5
Tabelle 5.8: Relative Häufigkeiten
5.3 Naive Bayes
115
Schritt 2 Nun erfolgt die Berechnung der Likelihoods. L[yes](sunny, hot, normal, true) =h[sunny, yes]·h[hot, yes]·h[normal, yes]·h[true, yes]·h[yes] = 2/9 · 2/9 · 6/9 · 3/9 · 9/14 = 0,007055 L[no](sunny, hot, normal, true) = h[sunny, no] · h[hot, no] · h[normal, no] · h[true, no] · h[no] = 3/5 · 2/5 · 1/5 · 3/5 · 5/14 = 0,010286 Schritt 3 Jetzt werden die mit A abkürzen. P [yes](A) = = = P [no](A) = = =
Wahrscheinlichkeiten berechnet, wobei wir sunny, hot, normal, true L[yes](A) 0,007055 0,406835 L[no](A) 0,010286 0,593165
/ /
(L[yes](A) (0,007055
+ +
L[no](A)) 0,010286)
/ /
(L[yes](A) (0,007055
+ +
L[no](A)) 0,010286)
Schritt 4 Nun kann die Klasse vorhergesagt werden. Wir sagen die Klasse vorher, die die größte Wahrscheinlichkeit liefert. (P [yes](A) = 40,68%) < (P [no](A) = 59,32%)
⇒ NO
An einem sonnigen, heißen, aber stürmischen Tag mit normaler Luftfeuchtigkeit wird somit mit einer Wahrscheinlichkeit von etwa 41% gespielt, mit einer Wahrscheinlichkeit von 59% wird nicht gespielt. Also spielen wir lieber nicht. In Abbildung 5.13 ist der Knime-Workflow, in Abbildung 5.14 auf der nächsten Seite das Resultat dargestellt. File Reader
Naive Bayes Learner Naive Bayes Predictor
Daten lesen
Naive Bayes
File Reader Vorhersage
Zu klassiÞzierender Satz
Abb. 5.13: Naive Bayes – Wetter-Beispiel
116
5 Klassifikation
Abb. 5.14: Naive Bayes – Resultat
Bisher sind wir stillschweigend davon ausgegangen, dass die Daten nominal oder ordinal vorliegen. Dies ist auch sinnvoll, da die Anwendung von Naive Bayes auf metrische Daten unsinnig ist. Betrachten wir dazu das Wetterbeispiel (Tabelle 5.9) in der Originalversion mit den ursprünglichen numerischen Werten für Temperatur und Luftfeuchtigkeit (siehe Abschnitt A.3, Seite 289). Outlook sunny sunny overcast rain rain rain overcast sunny sunny rain sunny overcast overcast rain
Temp (◦ F) 85 80 83 70 68 65 64 72 69 75 75 72 81 71
Humidity (%) 85 90 78 96 80 70 65 95 70 80 70 90 75 80
Windy? false true false false false true true false false false true true false true
Play? no no yes yes yes no yes no yes yes yes yes yes no
Tabelle 5.9: Daten Wetter-Beispiel
Wenn wir auf diese Daten Naive Bayes direkt anwenden wollen, haben wir 2 Probleme: 1. Die Temperaturen 64◦ F und 65◦ F werden vom Verfahren als unterschiedliche Ausprägungen angesehen, obwohl sie fast gleich sind. Da Naive Bayes die relativen Häufigkeiten zählt, werden kleine Zahlen entstehen. 2. Das Verfahren scheitert, wenn eine Vorhersage für eine Temperatur von 63◦ F getroffen werden soll. Die Lösung für dieses Problem ist, dass vorab Intervalle gebildet werden. Dies ist in Tabelle 5.7 auf Seite 114 offensichtlich schon geschehen. Man kann geeignete Intervalle „per Hand“ bilden, bei großen Datenmengen sollte man jedoch auf automatische Verfahren zurückgreifen. Hierfür eignet sich beispielsweise das in Abschnitt 8 erläuterte Binning (Seite 210 und 218).
5.4 Vorwärtsgerichtete Neuronale Netze
117
Das Naive-Bayes-Verfahren zeichnet sich durch seine Effizienz aus. Die Trainingsmenge muss zur Bestimmung der relativen Häufigkeiten nur einmal durchlaufen werden. Ein Nachteil ist, dass das Verfahren von der Unabhängigkeit der Attribute ausgeht. Diese ist aber meistens nicht gegeben. Aufgabe 5.7:
Naive Bayes – Restaurantdaten
Tabelle 5.10 (vgl. Aufgabe 5.5) enthält 12 Datensätze mit diesen Attributen: • Alternative: Gibt es in der Nähe ein geeignetes anderes Restaurant? {ja, nein} • Fr/Sa: Ist Freitag oder Samstag? {ja, nein} • Hungrig: Bin ich hungrig? {ja, nein}
• Gäste: Wie viele Leute sind im Restaurant? {keine, einige, voll} • Reservierung: Habe ich reserviert? {ja, nein}
• Typ: Um welchem Restauranttyp handelt es sich? {Franzose, Chinese, Italiener, Burger} • Wartezeit: Welche Wartezeit wird vom Restaurant geschätzt? {0–10, 10–30, 30–60, >60} • Warten (Zielattribut): Warte ich, wenn alle Tische besetzt sind? {ja, nein}
Berechnen Sie mit Naive Bayes, ob wir in den letzten 3 Fällen, die in der Tabelle angegeben sind, warten. Aufgabe 5.8:
Naive Bayes – Wohnsituation
Sei eine Menge von Datensätze gegeben, die Werte mit dieser Bedeutung enthalten: a=angestellt, s=selbständig, v=verheiratet, l=ledig, M=Miete, E=Eigentum: Beruf Fam.st. Kinder Wohnung
a v j M
a l n E
a v n M
a v j E
s l j E
s l n M
s v j E
s v n E
Wo lebt ein lediger Angestellter mit Kindern?
5.4
Vorwärtsgerichtete Neuronale Netze
Klassifikationsaufgaben können auch mit Hilfe künstlicher neuronaler Netze gelöst werden. Es werden dabei vorwärtsgerichtete neuronale Netze eingesetzt. Diese werden auch als Backpropagation-Netze oder Multilayer Perceptrons (MLP) bezeichnet. Die Entwicklung eines künstlichen neuronalen Netzes erfordert einerseits die Festlegung der Netzstruktur, und andererseits beeinflusst das Training entscheidend das Verhalten eines Netzes. Wir betrachten zuerst die Netzarchitektur und diskutieren danach mögliche Lernverfahren.
118 Alternative ja ja nein ja ja nein nein nein nein ja nein ja ja ja nein
5 Klassifikation Fr/Sa
Hungrig
Gäste
nein nein nein ja ja nein nein nein ja ja nein ja nein ja nein
ja ja nein ja nein ja nein ja nein ja nein ja ja ja nein
einige voll einige voll voll einige keine einige voll voll keine voll einige voll keine
Reservierung ja nein nein nein ja ja nein ja nein ja nein nein nein ja nein
Typ
Zeit
Warten
Franz. Chin. Burger Chin. Franz. Ital. Burger Chin. Burger Ital. Chin. Burger Franz. Chin. Burger
0–10 30–60 0–10 10–30 >60 0–10 0–10 0–10 >60 10–30 0–10 30–60 30–60 10–30 0–10
ja nein ja ja nein ja nein ja nein nein nein ja
Tabelle 5.10: Restaurant-Daten
5.4.1
Architektur
Um ein künstliches neuronales Netz für eine Klassifikation einsetzen zu können, muss zuerst die Struktur des Netzes, die Netzarchitektur entwickelt werden. Das betrifft die Anzahl der Neuronen in der Eingabe-Schicht, in der Ausgabe-Schicht, Anzahl und Größe der verdeckten Schichten sowie die Verbindungen zwischen den Neuronen. Beginnen wir mit der Ausgabe-Schicht. Hier muss das Klassifikationsergebnis für einen Datensatz ablesbar sein. Entscheidend für die Struktur der Ausgabe-Schicht ist die Art der Codierung des Klassifikationsattributs. Im einfachen Fall erfolgt die Einordnung in zwei Klassen. Dafür kann ein Neuron ausreichend sein: aktiviert entspricht der einen Klasse, nicht aktiviert der anderen. Eine Ausgabe-Schicht aus zwei Neuronen ist ebenso möglich: Die Aktivierung eines Neurons signalisiert die Zugehörigkeit zu der jeweiligen Klasse. Dieser Ansatz kann verallgemeinert werden: Ist eine Klassifikation in n Klassen vorzunehmen, wird eine Ausgabe-Schicht aus n Neuronen aufgebaut, wobei die Aktivierung eines Neurons dann ein Maß für die Zugehörigkeit zur jeweiligen Klasse ausdrückt. Die Klasse, dessen Neuron am stärksten aktiviert ist, wird dann vorausgesagt. Wird die Größe der Eingabe- sowie der Ausgabe-Schicht von der Codierung der Daten bestimmt, so beeinflusst die Wahl der Aktivierungsfunktion die Codierung: • Wird die logistische Funktion eingesetzt, sollten die Daten aus dem Bereich [0,+1] sein. Werte außerhalb dieses Bereiches sind nicht sinnvoll. • Der Wertebereich [–1,+1] kann für die Codierung verwendet werden, wenn der Tangens Hyperbolicus als Aktivierungsfunktion zum Einsatz kommt.
5.4 Vorwärtsgerichtete Neuronale Netze
119
Abb. 5.15: Ein vorwärtsgerichtetes mehrschichtiges neuronales Netz
Abb. 5.16: Letzte trainierbare Verbindungsschicht und Ausgabe-Schicht
Nominale Daten werden üblicherweise durch eine Menge von Neuronen verarbeitet. Für jeden möglichen Wert wird ein Neuron verwendet: Ein Wert wird dann durch genau eine 1 und entsprechend viele Nullen dargestellt. Betrachten wir als Beispiel den Typ eines Artikels. Mögliche Werte seien CD, DVD, Blu-Ray, Buch, mp3-Download. 5 unterschiedliche Werte erfordern 5 Neuronen. Diese Werte werden dann entsprechend ihrer Reihenfolge codiert als: code(CD) code(DVD) code(Blu-Ray) code(Buch) code(mp3)
= = = = =
(1 (0 (0 (0 (0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0), 0), 0), 0), 1).
In analoger Weise können auch ordinale Werte codiert werden, wobei sich für diese die sogenannte unäre Codierung anbietet: Zahlen von 1 bis 5 werden dann als Folgen von Einsen codiert. Als Beispiel diene ein Attribut Schulnote. Es wird dabei codiert, dass eine 1 besser als eine 2 und diese besser als eine 3 usw. ist: 1 > 2 > 3 > 4 > 5.
120
5 Klassifikation
code(1) code(2) code(3) code(4) code(5)
= = = = =
(1 (1 (1 (1 (0
1 1 1 0 0
1 1 0 0 0
1), 0), 0), 0), 0).
Reelle Zahlen bedürfen einer besonderen Betrachtung. Möglich ist eine Intervallbildung. Die Zugehörigkeit zu einem Intervall wird dann wie ein ordinaler Wert codiert. Reelle Werte können ebenso normalisiert und so auf den Bereich [0,1] abgebildet werden (siehe auch Abschnitt 8.2.4). Damit wird jedes Attribut durch genau ein Eingabe-Neuron verarbeitet. Kritisch ist zu untersuchen, ob nicht die Unterschiede zwischen den einzelnen Werten dabei zu sehr verwischen. Beispiel 5.6:
Neuronen für Attribut Körpergröße
Es ist für das Attribut Körpergröße eine Eingabe für ein künstliches neuronales Netz zu entwickeln. Die Werte seien aus dem Bereich 150. . . 200. Es gibt viele Möglichkeiten, die Daten so vorzubereiten, dass ein künstliches neuronales Netz damit arbeiten kann. Zwei Varianten stellen wir hier vor: • Die Werte werden normiert: Es wird 1 Neuron verwendet. Der Wert 150 wird dann als 0.0 und der maximale Wert 200 als 1.0 codiert. Der Wert 180 liegt dann codiert als 0.6 vor. • Es werden 5 Intervalle gebildet und diese mittels 4 Neuronen codiert: Werte von 150. . . 159 werden als (0 0 0 0) dargestellt. Die Belegung der Neuronen mit den Werten (1 1 0 0) repräsentiert dann eine Körpergröße aus dem Intervall 170. . . 179. Die Bestimmung der Zwischenschicht(en) ist schwierig. Während es für Ein- und Ausgabe-Schicht durch die zu verarbeitenden Daten klare Vorgaben gibt, ist dies für die verdeckten Schichten nicht der Fall. Hier gilt es, mehrere Varianten auszuprobieren: ein oder zwei verdeckte Schichten mit unterschiedlichen Größen. Einige Empfehlungen aus den Erfahrungen der Autoren hierzu: eine verdeckte Schicht mit etwa der halben Größe der Eingabe-Schicht. Falls die Ergebnisse nicht zufriedenstellend sind, vergrößere man die innere Schicht bis auf die Größe der Eingabe-Schicht. Sind die Ergebnisse immer noch nicht wie gewünscht, experimentiere man mit einer zweiten inneren Schicht. Mehr als zwei innere Schichten sind theoretisch nicht nötig (vgl. [Zel97]).
5.4.2
Das Backpropagation-of-Error-Lernverfahren
Ist die Architektur eines neuronalen Netzes festgelegt, sind die Trainingsdaten entsprechend zu codieren. Die Anzahl der Werte pro Datensatz müssen mit der Anzahl der Neuronen in der Eingabe-Schicht übereinstimmen. Die Codierung des Klassifikationsattributs muss mit der Ausgabe-Schicht darstellbar sein. Für das Trainieren eines Klassifikators sind neben den Eingabedaten auch die gewünschten Ergebnisse für die Trainingsdaten erforderlich. Man spricht vom überwachten Lernen eines künstlichen neuronalen Netzes. Ist das Ergebnis bekannt, kann der Fehler bestimmt werden, den ein
5.4 Vorwärtsgerichtete Neuronale Netze
121
Abb. 5.17: Unterschiedliche Zwischenschichten für eine Aufgabe
neuronales Netz in seinem Verhalten aufweist. Dieser Fehler wird dann benutzt, um das künstliche neuronale Netz zu verändern. Auf diese Art und Weise lernt das neuronale Netz das gewünschte Klassifikationsverhalten. Vorwärtsgerichtete neuronale Netze werden mit einem Backpropagation-of-error-Algorithmus trainiert. Ein vorwärtsgerichtetes neuronales Netz besteht aus einer EingabeSchicht, ein oder mehreren Schichten verdeckter Neuronen sowie aus einer AusgabeSchicht. Abbildung 5.18 zeigt den Aufbau. Die Neuronen einer Schicht sind üblicherweise mit allen Neuronen der nachfolgenden Schicht verbunden. Dabei bestehen Verbindungen nur von der Eingabe-Schicht zur ersten Zwischenschicht, von dort eventuell zu einer nachfolgenden Zwischenschicht und dann von der letzten Zwischenschicht zur AusgabeSchicht. Daher leitet sich der Name ab: vorwärtsgerichtetes neuronales Netz (englisch feed-forward network). Die einzelnen Schichten bestehen dabei aus mehreren (vielen) künstlichen Neuronen.
Abb. 5.18: Schichten in einem vorwärtsgerichteten neuronalen Netz
122
5 Klassifikation
Wie bei Klassifikationsaufgaben üblich, wird das Netz mittels einer Menge von Trainingsdaten trainiert. Die „Kraft“ eines Netzes, das gespeicherte Wissen, verbirgt sich in den Gewichten der Verbindungen sowie in den Schwellwerten der Neuronen. Das Trainieren oder auch Lernen besteht somit aus einer Veränderung der Gewichte und Schwellwerte. Im Ergebnis wird der Fehler des neuronalen Netzes verkleinert. Der Netzfehler wird aus der Abweichung zwischen den Ausgabewerten der Ausgabe-Neuronen ok und den erwarteten Trainingswerten tk bestimmt. (ok − tk )2 err = k
Man kann sich nun vorstellen, dass die Gewichte der Verbindungen zu den AusgabeNeuronen entsprechend dem berechneten Netzfehler verändert werden können. Betrachten wir vereinfacht binäre Werte: Nehmen wir an, es wird ein Wert 1 erwartet, aber das entsprechende Ausgabe-Neuron ist nicht aktiv (Ausgabe ist 0). Dann sind die Verbindungsgewichte zu diesem Neuron zu erhöhen, damit die Netzeingabe des Ausgabe-Neurons größer wird und somit die Chance steigt, dass das Neuron aktiviert wird. Umgekehrt ist der Gewichtswert zu verringern, falls das Ausgabe-Neuron aktiviert wurde, aber ein Wert 0 erwartet wird. Die genaue Herleitung und mathematische Begründung kann in [Zel97] oder in [LC12] nachgelesen werden. Die Änderung eines Gewichts wij wird nach folgender Formel vorgenommen:
Dabei ist:
∆wij = λ · oi · δj
• λ: Der Lernfaktor bestimmt, wie stark der Fehler die Gewichte verändert. Die Wahl des Lernfaktors kann den Lernerfolg entscheidend beeinflussen. Typischerweise wird ein Lernfaktor aus dem Bereich 0,1 bis 0,8 gewählt: 0,1 ≤ λ ≤ 0,8. • oi : Ausgabewert des Vorgängerneurons der Verbindung zum Neuron j.
• δj : Das Fehlersignal wird für die Neuronen der verdeckten Schichten anders bestimmt als für Neuronen der Ausgabe-Schicht. Da die Ausgabe und somit der Fehler eines Neurons zudem von der gewählten Aktivierungsfunktion abhängt, fließt die Aktivierungsfunktion, beziehungsweise deren erste Ableitung, in die Berechnung des Fehlersignals ein. Die Veränderung der Gewichte ist abhängig von der gewählten Aktivierungsfunktion: Wird die logistische Funktion eingesetzt, so ergibt sich für das Fehlersignal eines Ausgabe-Neurons j: δj = oj · (1 − oj ) · (tj − oj )
Das Fehlersignal wird dabei nicht nur aus der Differenz aus berechneter Ausgabe oj und gewünschter Ausgabe, dem Trainingswert tj bestimmt. Die Aktivierungsfunktion beeinflusst maßgeblich die Ausgabe eines Neurons und somit auch den entstehenden
5.4 Vorwärtsgerichtete Neuronale Netze
123
Fehler. Vereinfacht dargestellt wird nun der Anstieg der Fehlerkurve bei der Berechnung des Fehlersignals berücksichtigt. Der Anstieg einer Kurve in einem Punkt wird durch die erste Ableitung berechnet und so fließt die erste Ableitung der logistischen Funktion in die Berechnung ein. Aufgabe 5.9:
Logistische Aktivierungsfunktion
Vergewissern Sie sich, dass die erste Ableitung der logistischen Aktivierungsfunktion (x) = fact (x) · (1 − fact (x)) wie folgt aussieht: fact Das Fehlersignal eines Neurons einer verdeckten Schicht ist nicht so einfach zu bestimmen, da für ein verdecktes Neuron kein erwarteter Wert, kein Trainingswert, vorhanden ist. Somit kann kein Fehler aus der Differenz eines berechneten und eines erwarteten Wertes ermittelt werden. Wie können nun die Gewichte in den Verbindungsschichten zu den verdeckten NeuronenSchichten sowie die Schwellwerte dieser verdeckten Neuronen dennoch angepasst werden? Man überlege sich, wie der Fehler in der Ausgabeschicht entsteht. Natürlich entsteht der Fehler durch „falsche“ Aktivierungen der Ausgabe-Neuronen. Dieser Wert wird aber berechnet aus der Netzeingabe eines Neurons, die wiederum aus den Ausgaben der Vorgängerneuronen multipliziert mit den jeweiligen Verbindungsgewichten entsteht. Gemäß dieser Überlegung wird das Fehlersignal eines Neurons j einer verdeckten Schicht unter Berücksichtigung aller Verbindungen wjk zu nachfolgenden Neuronen k und deren Fehlersignalen δk bestimmt.
w jk
i
w ij
k
j
Ausgabeschicht
Zwischenschicht
Abb. 5.19: Einfluss nachfolgender Neuronen auf das Fehlersignal
oj · (1 − oj ) · (tj − oj ) δj = o · (1 − o ) · δ · w j k jk j k
falls j Ausgabe-Neuron falls j inneres Neuron
124
5 Klassifikation
Der Einfluss der Aktivierungsfunktion auf das Fehlersignal ist für beide Arten von Neuronen gleich. Das Fehlersignal eines Neurons wird nun für die Veränderung des Gewichtes einer Verbindung zum Neuron j benutzt: wij = wij + λ · oi · δj
Zuerst kann nur das Fehlersignal für die Neuronen der Ausgabe-Schicht berechnet werden. Sind die Fehlersignale der Neuronen der Ausgabe-Schicht bekannt, können die Fehlersignale der letzten verdeckten Schicht berechnet werden und so weiter bis zur ersten verdeckten Schicht. Daher der Name des Lernalgorithmus: Backpropagation of error. Listing 5.9:
Backpropagation-Algorithmus
PROCEDURE Backpropagation of Error nZyklen := 0 REPEAT fehler := 0 nZyklen := nZyklen + 1 Muster i anlegen; // Bestimme das Fehlersignal fsigj jedes Ausgabeneurons j: FOR j := 1. . . AnzahlNeuronen(Ausgabeschicht) DO Bestimme Ausgabewert oj Bestimme Fehlerwert fj := tj − oj Bestimme Fehlersignal fsigj := oj · (1 − oj ) · fj fehler := fehler + fj2 END FOR // Gehe Schicht für Schicht von hinten nach vorne: FOR s := Ausgabeschicht-1 DOWNTO ErsteSchicht DO // Bestimme das Fehlersignal fsigsm des Neurons k der Schicht s: FOR k:=1. . . AnzahlNeuronen(Schichts ) DO // Bilde gewichtete Summe aus // Fehlersignalen der nachfolgenden Neuronen der Schicht s + 1 fsum := 0 FOR m:=1. . . AnzahlNeuronen(Schicht(s+1) ) DO fsum := fsum + wkm · fsig(s+1)m END FOR // Fehlersignal N euronsk aus Ableitung der Aktivierungsfunktion // und gewichteter Summe der Fehlersignale der Nachfolger berechnet: fsigsk := osk · (1 − osk )· fsum // Anpassung der Gewichte zu den nachfolgenden Neuronen: FOR m:=1. . . AnzahlNeuronen(Schicht(s+1) ) DO wkm := wkm + Lernrate · osk · fsig(s+1)m END FOR END FOR END FOR UNTIL fehler < tolerierbarerFehler OR Zyklenzahl erreicht END Backpropagation of Error
5.4 Vorwärtsgerichtete Neuronale Netze
5.4.3
125
Modifikationen des Backpropagation-Algorithmus
Betrachtet man die Architektur eines neuronalen Netzes als weitgehend fest, hängt das Ergebnis, die Qualität des Netzes, vom Trainingsprozess ab. Der Trainingsprozess wird beeinflusst von dem verwendeten Verfahren und den dabei zum Einsatz kommenden Parameterwerten. Beim einfachen Backpropagation-Algorithmus können verschiedene Werte für den Lernparameter λ probiert werden. Ziel dabei ist es, den Netzfehler zu verringern oder die Zahl der Lernschritte zu verringern, die zum Erreichen dieses minimalen Fehlers erforderlich sind. Da der Backpropagation-Algorithmus ein Gradientenabstiegsverfahren ist, können Situationen eintreten, die die Netzanpasssung verzögern oder gar verhindern. Betrachten wir vereinfacht den Netzfehler als Funktion eines einzelnen Verbindungsgewichtes, so lassen sich die Probleme graphisch darstellen, siehe Abbildung 5.20.
Abb. 5.20: Schwierige Situationen im Lernverfahren
Die Fehlerkurve ist jedoch nicht bekannt und so kann die Größe der Anpassungsschritte mittels des Lernparameters nur durch Experimente bestimmt werden. Ist der Lernparameter klein (nahe 0) und es liegt ein Plateau der Fehlerkurve vor, so wird der Lernprozess erheblich verzögert. Es kann sogar dazu führen, dass das Lernen abgebrochen wird, da eine Verkleinerung des Netzfehlers nicht mehr erwartet wird. Wählt man einen großen Lernparameter (nahe 1), so kann dies dazu führen, dass in engen Schluchten der Fehlerkurve ein Oszillieren eintritt: Bildlich springt der Fehlerwert von einer Wand zur anderen und zurück: Ein Einschwingen in das Minimum erfolgt nicht. Ebenso kann eine große Schrittweite dazu führen, dass – wie im rechten Bild angedeutet – das globale Minimum übersprungen und nur ein lokales Minimum erreicht wird. Diese Probleme haben zur Entwicklung mehrerer Modifikationen des BackpropagationAlgorithmus geführt, von denen wir drei häufig verwendete vorstellen: Backpropagation mit Momentum Das neue Verbindungsgewicht zwischen zwei Neuronen zum Zeitpunkt t + 1 ergibt sich aus dem aktuellen Gewicht zum Zeitpunkt t unter Berücksichtigung der sich gemäß Backpropagation ergebenden Veränderung. Zusätzlich wird die vorherige Änderung zum Zeitpunkt t − 1 mit hinzugezogen. ∆wij (t)
= λ · o i · δj
wij (t + 1) = wij (t) + λ · ∆wij (t − 1) + λ · ∆wij (t − 1)
126
5 Klassifikation
QuickProp Graphisch veranschaulicht bestimmt das Backpropagation-Verfahren als Gradientenabstiegsverfahren das neue Gewicht, indem eine Tangente, eine Gerade, an den Punkt der Fehlerkurve angelegt wird. QuickProp versucht, durch die Bestimmung einer quadratischen Kurve schneller das Fehler-Minimum zu erreichen. Zur Bestimmung der Parabel werden die beiden letzten Gewichtswerte wij (t − 2) sowie wij (t − 1) benutzt. QuickProp erzeugt im Lernprozess oft eine oszillierende Fehlerkurve. Resilient Propagation (RPROP) Resilient Propagation verzichtet gänzlich auf eine direkte Bestimmung der Gewichtsänderung aus dem berechneten Fehler, sondern stellt die Richtung des Fehlers in den Mittelpunkt. Betrag der Änderung und Richtung der Änderung werden dabei getrennt berechnet: • Weisen die letzten beiden Änderungen dasselbe Vorzeichen auf, dann wird mit diesem Vorzeichen ein großer Anpassungsschritt vorgenommen: Faktor 1 < η + , häufig η + = 1,2. • Werden unterschiedliche Richtungen vor die vorletzte sowie letzte Änderung berechnet, so wird die letzte Änderung rückgängig gemacht und ein betragsmäßig kleiner Anpassungsschritt vorgenommen: Faktor η − < 1, häufig η − = 0,5. Resilient Propagation wird im MLP-Knoten1 von Knime verwendet. In praktischen Anwendungen hat vielfach das einfache Backpropagation-Verfahren, auch als Vanilla Backpropagation bezeichnet, die besten Ergebnisse geliefert. Mehr zu den mathematischen Grundlagen des Backpropagation-Algorithmus und den verschiedenen Modifikationen findet man in [LC12] und insbesondere in [Zel97].
5.4.4
Ein Beispiel
Ein Beispiel wird im Abschnitt 1.6.3 im Zusammenhang mit der Software JavaNNS beschrieben. Im Gegensatz zu Knime können mit dem JavaNNS alle hier vorgestellten Lernverfahren eingesetzt und ausprobiert werden. Hier stellen wir in einem Beispiel die Arbeit mit dem neuronalen Netz in den Vordergrund, weniger das Data-Mining-Problem allgemein. Aus der Tabelle 5.11 auf der nächsten Seite ist wohl kaum erkennbar, welcher Art die Klassifikation ist. Gegeben sind 28 binäre Eingabewerte und ein ganzzahliges Klassifikationsmerkmal. Gruppiert man jedoch jeweils eine Zeile als eine 4×7-Matrix, so sind die Eingaben als Pixel-Darstellungen der 10 Ziffern leicht zu erkennen (Abbildung 5.21). Wir setzen das neuronale Netz für die Zeichenerkennung ein. Zeichenerkennung ist ebenso Mustererkennung, wie im Data Mining, nur dass wir Menschen hier das Muster kennen und so das Ergebnis der Klassifikation schnell überblicken können. Nun ist auch hier das Ziel, nicht nur die Trainingsdaten zu erkennen, sondern neue, unbekannte Daten ebenso zu klassifizieren. Dazu haben wir die Ziffernmuster etwas 1 MLP:
Multilayer Perceptron
5.4 Vorwärtsgerichtete Neuronale Netze 0 0 0 1 1 0 1 0 0 0
0 1 1 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1
0 0 0 0 1 0 1 0 0 0
0 1 1 1 1 1 0 1 1 1
1 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 1 1 0 0 1 1 1 1 1
0 0 0 1 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 1 1 1 1
0 0 0 1 1 1 0 0 0 1
0 1 0 0 1 1 0 1 1 0
1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 1 1
0 1 0 1 0 1 0 1 0 1
0 0 0 1 0 0 1 0 0 0
1 0 0 1 0 0 0 0 0 0
0 0 1 1 1 1 0 1 1 1
0 1 1 0 0 1 0 1 1 1
0 0 0 0 0 0 1 0 0 0
127 1 0 0 1 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 1 0 0 1 1 0 0 0 0
1 1 1 0 1 1 1 1 1 1
1 1 1 1 1 1 0 1 1 1
1 1 0 0 1 1 0 0 0 0
1 2 3 4 5 6 7 8 9 0
Tabelle 5.11: Ein Datensatz für die Klassifikation
Abb. 5.21: Eingabe-Muster: Ziffer 1 in Pixeldarstellung
„zerstört“, verrauscht. Diese verrauschten Muster muss das Netz dann ebenso erkennen können, dann ist die Klassifikationsaufgabe erfolgreich bearbeitet. Es wird ein Netz aus 4×8 Eingabe-Neuronen erstellt, und aus den 10 Klassen des Klassifizierungsmerkmals ergeben sich 10 Ausgabe-Neuronen. Erwartet wird, dass stets genau ein Neuron aktiviert ist und dies somit die zum Muster gehörige Klasse anzeigt. Als Zwischenschicht probieren wir es mit einer Anzahl von fünf verdeckten Neuronen. Die Muster-Datei wird, wie in Abschnitt 1.6.3 beschrieben, erstellt und eine Kopie dieser Muster-Datei mit entsprechend verrauschten Eingaben erzeugt. Nachdem das Netz angelegt und die Muster-Dateien geladen wurden, kann das Trainieren des Netzes beginnen. Im JavaNNS kann der Netzfehler für die Muster der Trainingsdatei einfach mit dem Netzfehler für die Muster der Testdatei verglichen werden. Hierzu ist im control panel im Reiter Pattern die jeweilige Datei als Training Set beziehungsweise Validation Set zu definieren. Das Ergebnis kann im Fehler-Graph-Fenster während des Trainings verfolgt werden. Aus der Abbildung 5.22 auf der nächsten Seite ist sowohl die Netzarchitektur als auch der Trainingsprozess erkennbar. Es wurde mit den Standard-Parametern für den Backpropagation-Algorithmus trainiert. Anhand der Fehlerkurve sieht man, dass ein Trainieren mittels der Trainingsmenge auch zum Verringern des Fehlers bei der TestMenge führt. Ein weiteres Trainieren führt dann dazu, dass zwar der Fehler für die Trainingsmenge weiter sinkt, jedoch der Fehler für die Testmenge steigt. Dies ist ein klares Zeichen für ein zu starkes Lernen, im Englischen Overfitting genannt. In unserem
128
5 Klassifikation
Abb. 5.22: Trainieren des neuronalen Netzes im JavaNNS
Beispiel werden nicht alle verrauschten Muster der Test-Menge korrekt erkannt. Dies ist bei 10% fehlerhaften Pixeln in einer 4×7-Matrix auch nicht verwunderlich. Ist das Muster in Abbildung 5.23 nun eine etwas verrauschte 6 oder eine 8? Diese fehlerhafte Klassifikation des Musters ist im Sinne des Data Minings eine typische Erscheinung. Trotz guter Vorarbeit wird man in den seltensten Fällen alle zukünftig auftretenden Datensätze eindeutig und korrekt klassifizieren können. Für das kleine Beispiel ist das entwickelte vorwärtsgerichtete neuronale Netz nicht nur in der Lage, die fehlerfreien Zifferndarstellungen zu erkennen, sondern es kann eine ganze Reihe leicht verrauschter Pixeldarstellungen ebenso korrekt in die entsprechende Klasse einordnen. Aufgabe 5.10:
Zeichenerkennung
Entwickeln Sie ein vorwärtsgerichtetes neuronales Netz, welches in der Lage ist, Ziffern in Pixeldarstellung zu erkennen. Sie können dabei das Beispiel des JavaNNS zur Erkennung von Großbuchstaben als Vorbild nehmen.
5.4 Vorwärtsgerichtete Neuronale Netze
129
Abb. 5.23: Zuordnung eines verrauschten Musters
Aufgabe 5.11:
Künstliche neuronale Netze für den Restaurantbesuch
Entwickeln Sie ein vorwärtsgerichtetes neuronales Netz für die Entscheidung, ob wir auf einen freien Tisch im Restaurant warten. Verwenden Sie die Daten der Tabelle 5.10 auf Seite 118. • Welche Vorverarbeitung der Daten ist nötig?
• Legen Sie die Architektur des Netzes fest. Probieren Sie unterschiedlich große innere Schichten. • Benutzen Sie Knime und auch den JavaNNS und trainieren Sie das Netz. • Welche Antwort gibt das trainierte Netz auf diese Situationen?
Alternative ja ja nein
Fr/Sa
Hungrig
Gäste
nein ja nein
ja ja nein
einige voll keine
Aufgabe 5.12:
Reservierung nein ja nein
Typ
Zeit
Franz. Chin. Burger
30–60 10–30 0–10
Warten
Iris-Klassifikation mittels vorwärtsgerichteter neuronaler Netze
Entwickeln Sie ein künstliches neuronales Netz, welches Iris-Daten klassifizieren kann. Die Aufgabe und die Daten sind im Anhang A.1 auf Seite 285 beschrieben.
130
5 Klassifikation
5.5
Support Vector Machines
5.5.1
Grundprinzip
Support Vector Machines (SVM) sind leistungsstarke Werkzeuge zur Klassifikation. Die Idee lässt sich an einem zweidimensionalen Beispiel gut illustrieren. Wir betrachten dazu die in Abbildung 5.24 dargestellte Punktemenge. Die Punkte gehören zu zwei Klassen, die durch unterschiedliche Grauwerte gekennzeichnet sind.
Abb. 5.24: Beispiel – Klassifikation
Wie lässt sich aus einem derartigen Beispiel ein Klassifikator generieren? Die Support Vector Machine trennt dazu die gegebenen Punkte – wie in Abbildung 5.25 dargestellt – durch eine Gerade.
Abb. 5.25: SVM in der Ebene
Sollen nun neue Daten klassifiziert werden, dann prüft man einfach, auf welcher „Seite“ der Geraden diese Daten liegen. Mit welchen Datentypen kann eine SVM umgehen? Offensichtlich lassen sich nur metrische Daten verarbeiten. Nun haben wir im Allgemeinen nicht nur Beispiele mit 2 Attributen, also Punkte in der Ebene, sondern es sind mehrere, oft sogar deutlich mehr als zwei Attribute. Wie kann
5.5 Support Vector Machines
131
das Konzept der SVM auf den n-dimensionalen Raum n verallgemeinert werden? Dazu betrachten wir zunächst, wie eine SVM im dreidimensionalen Raum agiert. Sind Punkte im 3 gegeben, dann wollen wir diese wieder gemäß ihrer Klassenzugehörigkeit trennen. Dies geht nicht mehr durch eine Gerade, hierzu wird eine Ebene benötigt (Abbildung 5.26).
Abb. 5.26: SVM im dreidimensionalen Raum
Dieses Prinzip kann auf den mehrdimensionalen Raum mit n Attributen n verallgemeinert werden. Im n-dimensionalen Raum teilt man die gegebene Punktmenge durch eine sogenannte Hyperebene, eine n–1-dimensionale Ebene. Zur Veranschaulichung konzentrieren wir uns aber auf Beispiele im zwei- oder dreidimensionalen Raum. Eine SVM in der hier vorgestellten Variante behandelt Klassifikationsaufgaben mit genau zwei Klassen.
5.5.2
Formale Darstellung von Support Vector Machines
Gegeben ist eine Trainingsmenge {(x1 , k1 ), (x2 , k2 ), . . . (xm , km )}
wobei xi ∈ n und ki ∈ {1, −1}.
Die gegebenen xi sind n-Tupel, die zwei unterschiedlichen Klassen zugeordnet sind, die wir hier durch −1 sowie 1 codieren.
Ziel der SVM ist es, eine Hyperebene zu finden, die die beiden Klassen am besten voneinander trennt. Was bedeutet hierbei „am besten“? Wir suchen die Hyperebene, deren minimaler Abstand zu den Elementen der beiden Klassen maximal wird. Eine solche Hyperebene kann man wie folgt beschreiben: wT · x + b = 0
132
5 Klassifikation
Abb. 5.27: SVM – optimale Hyperebene
w ist ein Vektor, der senkrecht auf der Hyperebene steht. wT · x ist das Skalarprodukt von zwei Vektoren, also n i=1
wi · xi
Die obige Darstellung wT · x + b = 0 ist äquivalent zur sogenannten Punkt-Normalform: wT · (x − x0 ) = 0 x0 ist dabei ein Punkt auf der Hyperebene. Alle anderen Punkte x auf der Hyperebene erfüllen die Bedingung, dass das Skalarprodukt, gebildet aus dem Vektor x − x0 und dem Vektor w, gerade Null ergibt, da diese offensichtlich senkrecht aufeinander stehen. Der Vektor w wird auch als Stützvektor bezeichnet, englisch support vector. Von diesem hat das Verfahren seinen Namen erhalten. Hat man eine solche, optimale Hyperebene gefunden, dann wird die Klasse eines neuen Punkts x ganz einfach dadurch ermittelt, dass man das Vorzeichen des Terms wT · x + b bestimmt. Ist das Vorzeichen positiv, wT · x + b > 0 so wird x die Klasse 1 zugewiesen, sonst die Klasse −1. Das Vorzeichen von wT · x + b bestimmt also die Klassenzuordnung: 1 falls wT · x + b > 0 klasse(x) = −1 falls wT · x + b < 0 Oder kürzer: klasse(x) = sgn(wT · x + b) Offensichtlich können wir damit für Punkte, die auf der Hyperebene liegen, keine Vorhersage treffen.
5.5 Support Vector Machines Bemerkung 5.10:
133
Lineare Separierbarkeit
Wir sind bisher stillschweigend davon ausgegangen, dass eine Hyperebene existiert, die alle gegebenen Beispiele akkurat trennt. Ist das der Fall, spricht man von linearer Separierbarkeit. Wie bestimmt man nun einen optimalen Stützvektor w? Im Fall der linearen Separierbarkeit wählt man den Stützvektor derart, dass die quadratische Norm ||w|| minimal wird unter der Restriktion, dass für alle i = 1 . . . m gilt: ki · (wT · xi + b) ≥ 1 Meistens ist die lineare Separierbarkeit nicht gegeben. Dies kann unterschiedliche Gründe haben. Zum einen können unsere Daten verrauscht sein, sie sind also nicht exakt. Zum anderen kann es sein, dass die Klassen sich überlappen. Für diesen Fall muss man zulassen, dass die Restriktionen verletzt werden. Die Verletzung der Restriktionen sollte aber natürlich möglichst gering sein. Man führt deshalb für jede der m Restriktion eine positive Schlupfvariable ζi ein. ki · (wT · xi + b) ≥ 1 − ζi
für alle 1 ≤ i ≤ m
An dieser Stelle wird nicht detailliert darauf eingegangen, wie dieses Optimierungsproblem gelöst wird. Die SVM wandelt das Optimierungsproblem in ein duales Problem um, und zwar mit Hilfe der Lagrange-Multiplikatoren und der Karush-Kuhn-TuckerBedingungen, und löst dann dieses. Es gibt Erweiterungen der Support Vector Machines, die sich von den oben dargestellten linearen Funktionen lösen. Solche nichtlineare Erweiterungen transformieren die gegebenen Daten in höherdimensionale Daten und verwenden sogenannte Kernelfunktionen. Den interessierten Lesern empfehlen wir dieses Buch über Support Vector Machines: [CST00].
5.5.3
Ein Beispiel
Wir betrachten den in Tabelle 5.12 dargestellten Ausschnitt aus einer Personaldatenbank. Die Umwandlung in numerische Daten ist bereits erfolgt. Wir überlassen die Interpretation der Daten dem Leser. Diese Daten lesen wir mit Hilfe des csv-Readers in Knime ein. Anschließend wandeln wir das Zielattribut Bildungsabschluss in eine Zeichenkette um. Nachdem wir die Daten im Verhältnis 70:30 in Trainings- und Testmenge aufgeteilt haben, wird der SVM-Learner auf die Trainingsmenge angewendet. Das von der SVM generierte Modell klassifiziert nun die Daten der Testmenge. Das Resultat ist zwar nicht zu 100% korrekt, aber die Vorhersage ist akzeptabel (Abbildung 5.29). Man beachte, dass eine Vorhersage auf der Basis einer solch kleinen Datenmenge generell sehr fragwürdig ist.
134
5 Klassifikation
Geschlecht
Alter
0 1 0 0 0 1 0 0 0 1 0 1
45 57 52 28 57 26 39 38 42 37 45 35
Jahresgehalt 32 35 40 27 45 27 39 32 31 30 32 30
Betriebszugehörigkeit 10 25 5 6 25 8 4 3 15 10 8 15
Position 0 1 2 0 2 0 2 0 0 1 0 1
Bildungsabschluss 0 1 1 0 1 0 1 0 0 1 0 1
Tabelle 5.12: Personaldaten Partitioning
CSV Reader
LIBSVMLearner
Number To String 70/30
Daten einlesen
SVM
Zielattribut nominal
LIBSVMPredictor
Testdaten vorhersagen LIBSVMPredictor
Lerndaten prüfen
Abb. 5.28: SVM – Beispiel-Workflow
Abb. 5.29: SVM – Vorhersage auf den Testdaten
Um zu prüfen, wie gut die Separierung erfolgt ist, wird die Vorhersage auch auf die Trainingsdaten angewendet. Auf diesen Daten ist die Vorhersage perfekt, wenngleich die angegebenen Wahrscheinlichkeiten belegen, dass die Separierung nicht vollständig gelang (Abbildung 5.30). Aufgabe 5.13:
SVM – Wetter-Beispiel
Finden Sie eine SVM für das Wetter-Beispiel (Abschnitt A.3, numerische Variante) und und sagen Sie vorher, ob in folgenden Situationen gespielt wird oder nicht.
5.5 Support Vector Machines
135
Abb. 5.30: SVM – Vorhersage auf den Trainingsdaten
outlook = sunny, temperature = 78, humidity = 83, windy = false outlook = rainy, temperature = 69, humidity = 94, windy = true Können Sie die Daten in dieser Form benutzen, oder muss man sie umcodieren? Aufgabe 5.14:
SVM – Kontaktlinsen
Finden Sie eine Support Vector Machine für die Kontaktlinsen-Daten (Abschnitt A.4). Können Sie die Daten in dieser Form benutzen, oder muss man diese umcodieren? Aufgabe 5.15:
SVM – Pflanzenarten
Eine Gruppe von Bauern möchte ihre Ernte gemeinschaftlich verbessern. Dazu wurden von mehreren Pflanzenarten die Standortbedingungen der Felder aller Bauern gesammelt. Finden Sie eine Support Vector Machine für die Vorhersage der Klasse (wächst, wächst nicht). Was müssen Sie in der Datenvorverarbeitung tun, um das SVM-Verfahren anwenden zu können? In welche Klasse fällt der Beispiel-Datensatz (feucht, neutral, 6)? ID 1 2 3 4 5 6 7 8
Feuchte trocken feucht trocken feucht trocken feucht feucht feucht
Säure basisch neutral alkalisch alkalisch neutral basisch basisch neutral
Temp. (Celsius) 7 8 9 5 6 7 7 10
Klasse wächst wächst nicht wächst wächst nicht wächst wächst nicht wächst nicht wächst
6
Cluster-Analyse The probability of winning the lottery is slightly greater if you buy a ticket. Yellin’s Law
Im Folgenden befassen wir uns mit Verfahren, die Objekte zu geeigneten Mengen (Clustern) zusammenfassen (vgl. Abschnitte 3.1 und 4.6). Die Clusteranalyse gehört zum unüberwachten Lernen (Abschnitt 2.6). Die Grundannahme dabei ist, dass ähnliche Objekte sich durch einen geringeren Abstand als unähnliche auszeichnen. Wir werden folglich ein Abstandsmaß voraussetzen, mit dessen Hilfe wir die Ähnlichkeit von Objekten quantifizieren können. Abstandsmaße wurden im Abschnitt 2.3 behandelt. Eine gute Einführung in Cluster-Verfahren findet man auch in [HKP12].
6.1
Arten der Cluster-Analyse
Cluster-Verfahren lassen sich in vier Unterklassen einteilen: • Partitionierende Clusterbildung • Hierarchische Clusterbildung
• Dichtebasierte Clusterbildung
• Clusterbildung mit Neuronalen Netzen Es gibt weitere Cluster-Verfahren, die nicht in diese Kategorien passen, beispielsweise Graph-basierte Verfahren. Diese behandeln wir aber nicht.
Partitionierende Clusterbildung Partitionierendes Clustern hat zum Ziel, die Menge von Objekten in k Cluster zu zerlegen. Bei der partitionierenden Clusterbildung wählt man eine (beliebige) Anfangspartitionierung von k Clustern. Man kann diese durch den Medoid oder Centroid, vgl. Abschnitt 4.6, repräsentieren. Aus dieser Anfangspartitionierung werden nun die Objekte schrittweise so zwischen den Clustern umgeordnet, dass sich die Güte der Gruppierung – die wir noch definieren müssen – immer weiter verbessert. Dazu wird in jedem Rechendurchlauf für jeden Cluster beispielsweise der Centroid berechnet. Anschließend werden
138
6 Cluster-Analyse
alle Objekte demjenigen Cluster zugeordnet, dessen Repräsentanten sie am nächsten sind. Das Verfahren endet, wenn kein Objekt mehr einem anderen Cluster zugeordnet wird, wenn also die Güte der Partitionierung sich nicht weiter verbessert. Partitionierende Clusterverfahren teilen die Eingabedaten in disjunkte Cluster ein: • Jeder Cluster besteht aus mindestens einem Objekt.
• Jedes Objekt ist höchstens in einem Cluster enthalten.
Der Algorithmus sieht prinzipiell wie folgt aus. Listing 6.1:
Partitionierendes Clustern
PROCEDURE Partitionierendes Clustern Erzeuge (zufällig) k Anfangscluster Ci //Alle Objekte x werden (zufällig) einem Cluster zugeordnet REPEAT Tausch_erfolgt := false Bestimme die Repräsentanten x1 , x2 , . . . , xk der Cluster Berechne neue Zuordnung aller x aus den Eingabedaten zu den Clustern Ci IF ein x wird einem anderen Cluster zugewiesen THEN Tausch_erfolgt := true UNTIL NOT Tausch_erfolgt END Partitionierendes Clustern Dazu werden zwei Verfahren – k-Means (Abschnitt 6.2) und k-Medoid (Abschnitt 6.3) – vorgestellt. Beide gehören zur Klasse der Mittelpunkt-Verfahren. Jedes Objekt gehört dabei immer nur zu einer Klasse. Es gibt partitionierende Verfahren, die wahrscheinlichkeitsbasiert arbeiten und die obigen Forderungen aufweichen. Jedes Objekt kann verschiedenen Clustern zugeordnet sein, jeweils mit einer gewissen Wahrscheinlichkeit (Abschnitte 6.4 und 6.10).
Hierarchische Clusterbildung Bei der hierarchischen Clusterbildung wird eine Hierarchie von Clustern derart aufgebaut, dass immer die Cluster mit minimaler Distanz, also größter Ähnlichkeit, verschmolzen werden. Es können beispielsweise übergeordnete Cluster durch Vereinigung bereits bestehender Cluster gebildet werden. Der Ablauf dieses Verfahrens lässt sich in einer Baumstruktur (Dendrogramm) darstellen (Abbildung 6.1). Ein Dendrogramm ist ein Baum, dessen Knoten jeweils einen Cluster repräsentieren und der folgende Eigenschaften besitzt: • Die Wurzel repräsentiert die gesamte Datenmenge.
• Ein innerer Knoten repräsentiert die Vereinigung aller Objekte, die in den darunterliegenden Teilbäumen enthalten sind. • Die Blätter repräsentieren einzelne Objekte.
Man unterscheidet bei der hierarchischen Cluster-Analyse zwei Verfahrensklassen.
6.1 Arten der Cluster-Analyse
139
Abb. 6.1: Hierarchische Clusterbildung
Agglomerative Clusterbildung Bei der agglomerativen Clusterbildung (Abschnitt 6.5) wird mit der kleinsten Auflösung von Clustern angefangen, den einzelnen Objekten selbst. Anfangs enthält jeder Cluster genau ein Objekt. Die zwei jeweils ähnlichsten Cluster werden dann zu einem hierarchisch höheren Cluster verschmolzen. Dieser Vorgang wird wiederholt, bis nur noch ein Cluster vorhanden ist. Divisive Clusterbildung Die divisive Clusterbildung baut eine Hierarchie in umgekehrter Reihenfolge auf. Es behandelt die gesamte Datenmenge anfangs als einen großen Cluster und teilt sie in kleinere, hierarchisch tiefere Cluster ein. Dies erfolgt solange, bis in jedem Cluster genau ein Objekt vorhanden ist. Nachteilig kann bei beiden Vorgehensmodellen sein, dass einmal gebildete Cluster – frühe Verschmelzungs- oder Aufteilungsentscheidungen – nicht wieder aufgelöst werden können. Der Vorteil dieser Verfahren ist, dass die Anzahl der Cluster nicht vorgegeben werden muss. Hierarchische Verfahren eignen sich besonders dann gut, wenn man an den Verbindungen zwischen den Clustern interessiert ist. Aufgrund der nötigen paarweisen Distanzbildung für alle Objekte sind hierarchische Verfahren schlecht skalierbar und in der Praxis auf wenige tausend Elemente beschränkt. Weiterhin haben hierarchische Verfahren Probleme mit Ausreißern.
Dichtebasierte Clusterbildung Die meisten Clusterverfahren versuchen, Gruppen von Objekten zusammenzufassen, die sich ähnlich sind, die also einen geringen Abstand zueinander haben. Partitionierende Verfahren, wie beispielsweise das im Abschnitt 6.2 vorgestellte Verfahren k-Means, führen zu konvexen Clustern. Diese Verfahren scheitern folglich, wenn die Objekte eben gerade nicht konvexe Gruppen bilden, sondern beispielsweise wie in Abbildung 6.2 auf der nächsten Seite dargestellt angeordnet sind. Wir hätten gern eine Clusterbildung, wie sie in Abbildung 6.3 dargestellt ist. Diese werden wir aber mittels k-Means nicht bekommen.
140
6 Cluster-Analyse
Abb. 6.2: Nichtkonvexe Gruppen
Abb. 6.3: Clusterbildung auf nichtkonvexen Gruppen
Hier setzen dichtebasierte Verfahren an (Abschnitt 6.6). Die Grundidee ist, Cluster zu bilden, so dass innerhalb eines Clusters in der Nachbarschaft eines jeden Objektes eine minimale Anzahl von weiteren Objekten liegt. Die Dichte der Punkte innerhalb eines Clusters muss somit einen gewissen Schwellwert übersteigen.
Cluster-Analyse mit Neuronalen Netzen Werden neuronale Netze für die Bildung von Cluster eingesetzt (Abschnitte 6.7 bis 6.9), dann werden diese neuronalen Netze nicht überwacht trainiert. Verfahren des nicht überwachten Lernens verwenden das Wettbewerbslernen. Ein Neuron des neuronalen Netzes gewinnt den Wettbewerb gemäß der Frage: Welches Neuron ist der Eingabe am ähnlichsten? Dazu sind alle Eingabe-Neuronen mit allen anderen Neuronen verbunden. Jedes Neuron besitzt somit genau so viele eingehende Verbindungen, wie es Eingabe-Neuronen gibt. Der Vektor der eingehenden Verbindungen eines Neurons Wj hat somit dieselbe Dimension wie die Eingabe X. Unter Nutzung eines Ähnlichkeitsmaßes werden die Abstände aller Neuronen zur Eingabe berechnet, und das Neuron mit dem geringsten Abstand gewinnt. Je nach Verfahren werden dann die Gewichte an den eingehenden Verbindungen des Neurons oder auch der benachbarten Neuronen verändert. So entstehen dann Gebiete von Neuronen ähnlich starker Erregung für zueinander ähnliche Eingaben. Diese Gebiete repräsentieren dann die Cluster.
6.2 Der k-Means-Algorithmus
6.2
141
Der k-Means-Algorithmus
Der k-Means-Algorithmus ist ein einfaches und populäres partitionierendes Verfahren zur Clusteranalyse. Der Begriff k-Means stammt von MacQueen [Mac67]. Beim k-Means-Verfahren wird die Anzahl der gesuchten Cluster vorgegeben. Die Zentren der Cluster werden zunächst zufällig festgelegt und später iterativ verändert. Ein Cluster wird dabei durch seinen Centroiden (Schwerpunkt) repräsentiert. Wir betrachten zunächst eine einfache Variante des k-Means-Algorithmus. In den Abbildungen 6.4 - 6.7 ist das Vorgehen dargestellt.
Abb. 6.4: Clustering mit k-Means – Ausgangsdaten
Zunächst generiert man initiale Cluster, siehe Abbildung 6.5. Diese initialen Cluster können beispielsweise mittels eines Zufallsgenerators erzeugt werden. In unserem Beispiel wurden die initialen Cluster derart generiert, dass man sie auch gut darstellen kann. Im Schritt 2 werden die Centroide berechnet, dargestellt durch X (Abbildung 6.5). Im zweidimensionalen, reellen Raum ergibt sich der Centroid durch die jeweiligen Mittelwerte der x- und y-Koordinaten aller Objekte. Initiale Cluster
Centroide berechnen X
X X
Abb. 6.5: Clustering mit k-Means – Schritte 1 und 2
Im nächsten Schritt erfolgt eine neue Zuordnung aller Punkte zu den Clustern. Man berechnet dazu die Abstände aller Punkte zu den 3 Centroiden, die jeweils einen Cluster repräsentieren. Als Abstandsmaß wird die euklidische Distanz eingesetzt. Man sieht, dass
142
6 Cluster-Analyse
der obere Cluster einige Punkte auf seiner rechten Seite verliert. Die Neuberechnung der Centroide – die alten Clustercentroide sind durch x, die neuen durch X dargestellt – zeigt eine deutliche Verschiebung (Abbildung 6.6). Neuordnung und neue Centroide xX X
x X
x
Abb. 6.6: Clustering mit k-Means – Schritt 3
Dieses Vorgehen setzt sich nun iterativ fort. Es erfolgt in jedem Durchlauf eine Neuzuordnung der Knoten zu den Clustern und eine erneute Berechnung der Centroide. Für unser Beispiel sind die nächsten Schritte in Abbildung 6.7 dargestellt. Der obere Cluster nimmt dem linken, unteren Cluster nach und nach dessen obere Punkte ab. Das Verfahren endet, wenn kein Punkt mehr seinen Cluster wechselt.
Neuordnung und neue Centroide
Neuordnung und neue Centroide
X
X X
X
X X
Abb. 6.7: Clustering mit k-Means – Schritte 4 und 5
Der k-Means-Algorithmus arbeitet in seiner Grundvariante also wie folgt: Listing 6.2:
k-Means – Basis-Variante
PROCEDURE k-Means Erzeuge (zufällig) k Anfangscluster Ci
6.2 Der k-Means-Algorithmus
143
//Alle Objekte x werden (zufällig) einem Cluster zugeordnet REPEAT Tausch_erfolgt := false Bestimme die Centroide x1 , x2 , . . . , xk der Cluster Für alle x aus den Eingabedaten: Weise x demjenigen Cluster Ci zu, zu dessen Centroiden xi x die geringste Distanz hat IF ein x wird einem anderen Cluster zugewiesen THEN Tausch_erfolgt := true UNTIL NOT Tausch_erfolgt END k-Means Was sind die Vorteile des k-Means-Verfahrens? Man könnte vermuten, dass das Verfahren viele Iterationen benötigt, um stabile Cluster zu erzeugen. Die Erfahrung zeigt, dass dies nicht der Fall ist. Die Anzahl der Iterationen ist vergleichsweise klein. Das Verfahren lässt sich leicht implementieren, denn genau genommen besteht das Verfahren nur aus Abstandsberechnungen und Neuzuordnungen. Weiterhin ist das Vorgehen recht anschaulich. Deshalb ist das k-Means-Verfahren so populär. Nachteile des k-Means-Verfahrens sind die Abhängigkeit von der Qualität der initialen Zerlegung. Ist die initiale Zerlegung ungünstig, kann sich dies durchaus negativ auf das Resultat und auch auf die Anzahl der Iterationen auswirken. Gute Initialcluster zu finden, ist folglich für dieses Verfahren von großer Bedeutung. Ebenso ist kritisch zu vermerken, dass das Verfahren gegen Rauschen und Ausreißer empfindlich sein kann, da alle Objekte in die Berechnung des Centroiden eingehen. Ein Ausreißer zieht den Centroiden in seine Richtung und kann einen Cluster somit verzerren. Weiterhin ist der Aufwand hoch, da in jedem Schritt alle Distanzen neu berechnet werden. Nachteilig kann auch sein, dass die Anzahl der Cluster vorgegeben werden muss. Der k-Means-Algorithmus erwartet im Allgemeinen numerische Werte. Man muss also nominale und ordinale Attribute in numerische Werte umwandeln. Ebenso ist kritisch zu vermerken, dass der k-Means-Algorithmus konvexe Cluster liefert. Hat man Cluster, die sich beispielsweise wie ein Schlauch im n-dimensionalen Raum zwischen anderen Clustern befinden, dann kann k-Means diese nicht finden. Problematisch kann auch sein, dass man die Zahl der Cluster festlegen muss. Was ist die optimale Clusteranzahl? Diese Frage beantwortet das k-Means-Verfahren nicht. Dies muss der Nutzer entscheiden. Es gibt Ansätze für das Bestimmen eines optimalen k, auf die hier nicht weiter eingegangen wird. Trotz der Nachteile dieses Verfahrens ist der k-Means-Algorithmus ein leistungsfähiger Algorithmus für die Cluster-Analyse. Betrachten wir ein Beispiel genauer. In Abbildung 6.8 sind zweidimensionale Daten gegeben, die wir in drei Cluster zerlegen möchten. Wir verwenden die euklidische Distanz. Wir möchten 3 Cluster bilden und benötigen folglich 3 initiale Cluster. Dies lösen wir ganz einfach, indem wir (willkürlich) die Punkte (1, 5), (2, 6), (3, 6) als Clustermittelpunkte unserer initialen Cluster festlegen. Nun starten wir das k-Means-Verfahren. Die initialen Cluster sind unglücklich gewählt, so dass die Punkte (1, 5) und (2, 6) zunächst „allein“ bleiben. Alle anderen Punkte werden dem Cluster (3, 6) zugeordnet, da ihre euklidische Distanz zu (3, 6) geringer ist als zu (1, 5) und (2, 6).
144
6 Cluster-Analyse
9 8 7 6 5
Daten
4 3 2 1 0
0
1
2
3
4
5
6
7
8
9
x 1 2 3 5 5 6 6 7 7 8 8 8
y 5 6 6 1 3 1 8 3 6 1 3 7
Abb. 6.8: k-Means – Ausgangssituation 9 8 7 6 5
NEU Daten ALT
4 3 2 1 0
0
1
2
3
4
5
6
7
8
9
Abb. 6.9: k-Means – Schritt 1
Im nächsten Schritt wandert der Punkt (3, 6) zum Cluster (2, 6), da sein Abstand zu (2, 6) geringer als zum Clustermittelpunkt (6.3, 3.9) ist. Der Clustermittelpunkt des Clusters wird zu (2.5, 6) (Abbildung 6.10 auf der nächsten Seite). Im Schritt 3 setzt sich der Trend fort, dass der Cluster (2.5,6) weitere Punkte vom rechten Cluster übernimmt. Dadurch verschieben sich die Mittelpunkte. Im 4. Schritt sieht man, dass nun auch der Cluster (1,5) aktiv wird und der Punkt (2,6) ihm zugeordnet wird (Abbildung 6.11). Im 5. Schritt erhalten wir nun endlich die Cluster, die wir erwartet haben. Im Schritt 6 ändert sich nichts mehr, so dass das Verfahren beendet wird (Abbildung 6.12).
6.2 Der k-Means-Algorithmus
145
9 8 7 6 5
NEU Daten ALT
4 3 2 1 0
0
1
2
3
4
5
6
7
8
9
Abb. 6.10: k-Means – Schritt 2 9
9
8
8
7
7
6
6
5
NEU Daten ALT
4 3
5
3
2
2
1
1
0
0
1
2
3
4
5
6
7
8
0
9
NEU Daten ALT
4
0
1
2
3
4
5
6
7
8
9
Abb. 6.11: k-Means – Schritte 3 und 4 9
9
8
8
7
7
6
6
5
NEU Daten ALT
4 3
5
3
2
2
1
1
0
0
1
2
3
4
5
6
7
8
9
Abb. 6.12: k-Means – Schritte 5 und 6
NEU Daten ALT
4
0
0
1
2
3
4
5
6
7
8
9
146
6 Cluster-Analyse
Betrachten wir ein weiteres Beispiel. in zwei Cluster einteilen. Alter verheiratet Eigenheim alt ja ja alt ja nein mittel nein nein mittel ja ja jung nein nein jung ja nein jung ja ja alt nein ja
Die Daten der nachfolgenden Tabelle möchten wir Akademiker ja nein nein ja nein nein ja nein
Einkommen hoch gering gering hoch gering mittel mittel hoch
Können wir k-Means sofort anwenden? Nein, denn wir haben zwar mit der HammingDistanz ein Abstandsmaß, um die Abstände berechnen zu können, aber beim Berechnen der Mittelpunkte der Cluster scheitern wir, da wir bei nominalen/ordinalen Werten kein arithmetisches Mittel berechnen können. Eine Alternative ist das in Abschnitt 6.3 vorgestellte k-Medoid-Verfahren, wir wollen aber doch zunächst versuchen, das kMeans-Verfahren anzuwenden. K-Means verlangt numerische Werte, die wir jedoch nicht vorliegen haben. Die binären Attribute können wir sofort in 0/1 umwandeln. Bei den Attributen Alter und Einkommen stellen wir fest, dass dies ordinale Attribute sind. Wir können die Werte – unter Beachtung der Ordnung – in Zahlen umwandeln: 0/0,5/1. Alter 1 1 0,5 0,5 0 0 0 1
verheiratet 1 1 0 1 0 1 1 0
Eigenheim 1 0 0 1 0 0 1 1
Akademiker 1 0 0 1 0 0 1 0
Einkommen 1 0 0 1 0 0,5 0,5 1
Mit dieser Tabelle könnten wir nun k-Means starten. Beachten Sie, dass wir die beiden ordinalen Attribute auch durch 0/1/2 codieren könnten. Der Unterschied zwischen beiden Codierungen ist, dass der Einfluss dieser beiden Attribute bei der 0/1/2-Variante steigt, da die Abstände zwischen diesen Attributwerten größer werden. Auf dieses Problem gehen wir im Abschnitt 8 ein. Beim k-Means-Verfahren spielt die Initialisierung – das Bilden initialer Cluster – eine maßgebliche Rolle. Es gibt mehrere Varianten, möglichst gute initiale Cluster zu erhalten. Wie bereits erwähnt, ist eine zufällige Zuordnung der Punkte zu den Clustern möglich – ein sehr einfacher Ansatz. Alternativ kann man damit beginnen, gute Centroide zu bestimmen. Auch dieses kann durch eine zufällige Auswahl geschehen. Man kann aber auch Objekte als Centroide wählen, die möglichst unähnlich sind, somit weit auseinander liegen. Das k-Means-Verfahren sucht eine Zerlegung in k Cluster, die in einem gewissen Sinn optimal ist. Optimal bedeutet hier, dass die Summe aller Abstände der Objekte zu ihren Clustermittelpunkten minimal ist.
6.2 Der k-Means-Algorithmus
147
Die Kosten (Kompaktheit) des Clusters Ci werden gemessen durch: dist(xi , x) Kosten(Ci ) = x∈Ci
Die Gesamtkosten ergeben sich dann als Summe aller Clusterkosten: Kosten =
k
Kosten(Ci )
i=1
Diese „Kosten“ gilt es zu minimieren. Aufgrund des hohen Aufwands des k-Means-Verfahrens in seiner Grundvariante – in jedem Schritt müssen alle Abstände neu berechnet werden – hat man nach Verbesserungsmöglichkeiten gesucht, um eine schnellere Konvergenz des Verfahrens zu erreichen. Eine einfache Modifikation sieht vor, dass die Centroide der neuen Cluster nicht erst nach der Umordnung aller Punkte, sondern bei jeder Umordnung angepasst werden, siehe Listing 6.3. Listing 6.3:
k-Means – modifiziert
PROCEDURE k-Means modifiziert Erzeuge (zufällig) k Anfangscluster Ci //Alle Objekte x werden (zufällig) einem Cluster zugeordnet REPEAT Tausch_erfolgt := false Bestimme die Centroide x1 , x2 , . . . , xk der Cluster IF Es existiert ein x, welches zu einem anderen Clustermittelpunkt xi näher als zu seinem aktuellen Cluster Cj (Centroid xj ) liegt THEN Ordne x dem Cluster Ci zu Tausch_erfolgt := true END IF UNTIL NOT Tausch_erfolgt END k-Means modifiziert Zu klären ist noch, wann das Verfahren beendet wird. Dies realisiert man meistens dadurch, dass man nach einer bestimmten Anzahl von Versuchen, in denen keines der Objekte den Cluster wechselt, aufhört. Bei kleinen Mengen durchläuft man natürlich wieder alle Objekte. Wenn kein Objekt den Cluster wechselt, dann ist die entstandene Clusterbildung abgeschlossen. Der Vorteil des Verfahrens ist, dass in jedem Schritt nur eine eingeschränkte Anzahl von Abständen neu berechnet werden muss. Nachteilig ist, dass die Geschwindigkeit des Verfahrens meistens – stärker als bei der Basis-Variante – von einer guten Anfangspartitionierung und die Konvergenz von der Reihenfolge der gewählten x abhängen kann.
148
6 Cluster-Analyse
Beispiel 6.1:
Cluster-Analyse – Schwertlilien
Einer der Standard-Testdatensätze im Data Mining ist der Iris-Datensatz (siehe Anhang A.1). Es sind hierbei die drei Schwertlilienarten zu erkennen: • Iris Setosa,
• Iris Virginica,
• Iris Versicolor. Gegeben sind die Attribute Länge und Breite des Kelchblattes (Sepalum) sowie Länge und Breite des Kronblatts (Petalum). 1. sepal length in cm 2. sepal width in cm 3. petal length in cm 4. petal width in cm 5. class Iris Setosa, Iris Versicolor, Iris Virginica 5.1 , 3.5 4.9 , 3.0 4.7 , 3.2 4.6 , 3.1 ........
, , , ,
1.4 1.4 1.3 1.5
, , , ,
0.2 0.2 0.2 0.2
, , , ,
Iris-setosa Iris-setosa Iris-setosa Iris-setosa
Auch wenn wir es hier mit einem Klassifikationsproblem zu tun haben, so möchten wir auf diese Daten den k-Means-Algorithmus anwenden. Dabei lassen wir natürlich das Klassen-Attribut heraus und vergleichen dann, ob die Clusterbildung die Einteilung in die richtigen Klassen erreicht, sprich: ob die vom k-Means-Algorithmus gebildeten Cluster mit den vorgegebenen Klassen im Datensatz identisch sind. In Abbildung 6.13 auf der nächsten Seite sind die mit k-Means berechneten Cluster dargestellt, aus Gründen der Übersichtlichkeit nur bezüglich der Attribute sepal length, petal length. Vergleichen wir diese Cluster mit den Originalklassen (Abbildung 6.14), so sehen wir, dass die Clusterbildung nur eine der drei Klassen vollständig erkannt hat. Die anderen beiden Klassen werden zwar nicht hundertprozentig korrekt erkannt, aber es sind nur wenige Fehler auszumachen. Zudem zeigt auch die Originalklassifikation einige Ausreißer, die von einem Clusterbildungsverfahren nicht erkannt werden können. Man beachte, dass wir die Werte auf den Wertebereich [0, 1] normalisiert (siehe Abschnitt 8.2.4) haben, um eine unterschiedliche Gewichtung der Attribute im Abstandsmaß zu vermeiden (Abbildung 6.15).
6.2 Der k-Means-Algorithmus
Image (SVG)
149
JFreeChart View
Abb. 6.13: Clustering mit k-Means – Iris-Daten
Image (SVG)
JFreeChart View
Abb. 6.14: Originalklassen – Iris-Daten
ARFF Reader
Normalizer
k-Means
Einlesen
[0,1]
Clustern
Abb. 6.15: Workflow – Iris-Daten
String Replace (Dictionary)
Color Manager
Cluster benennen
Farben zuweisen
Scatter Plot (JFreeChart)
Cluster darstellen
150
6 Cluster-Analyse
Wir hatten bereits darauf hingewiesen, dass der k-Means-Algorithmus metrische Werte voraussetzt, da die Berechnung des Centroiden bei nominalen und ordinalen Daten unmöglich, zumindest aber schwierig ist. Ordinale Daten lassen sich meistens in metrische Daten umwandeln. Bei nominalen Attributen kann man durch Binarisierung eine Umwandlung in numerische Werte erreichen (Abschnitt 8). Es gibt Modifikationen des k-Means-Verfahrens, die nominale Attribute erlauben, beispielsweise das k-ModesVerfahren. Aufgabe 6.1:
K-Means
Gegeben seien die folgenden, zweidimensionalen Datensätze: x y
3 5
6 2
8 3
1 5
2 4
2 6
6 1
6 8
7 3
7 6
8 1
8 7
Finden Sie für diese Datensätze 3 Cluster mittels k-Means! Verwenden Sie die ersten drei Datentupel als Anfangszentren der Cluster. Berechnen Sie dann die Zugehörigkeit aller Datensätze zu einem der 3 Cluster. Nun berechnen Sie auf Basis der gefunden Cluster den Centroid neu. Dann ordnen Sie wieder alle Datensätze erneut den Clustern zu usw. Verfolgen Sie die Wanderung der Centroide.
Aufgabe 6.2:
K-Means
Erläutern Sie, wie man bei dem k-Means-Verfahren den Centroid berechnet.
Aufgabe 6.3:
K-Means – Pflanzenarten
Eine Gruppe von Bauern möchte ihre Ernte gemeinschaftlich verbessern. Dazu wurden von mehreren Pflanzenarten die Standortbedingungen der Felder aller Bauern gesammelt. Bilden Sie 2 Cluster mittels des k-Means-Verfahrens. Was müssen Sie in der Datenvorverarbeitung tun, um das k-Means-Verfahren anwenden zu können? In welchen Cluster fällt der Beispiel-Datensatz (feucht, neutral, 6)? ID 1 2 3 4 5 6 7 8
Feuchte trocken feucht trocken feucht trocken feucht feucht feucht
Säure basisch neutral alkalisch alkalisch neutral basisch basisch neutral
Temp. (Celsius) 7 8 9 5 6 7 7 10
Klasse wächst wächst nicht wächst wächst nicht wächst wächst nicht wächst nicht wächst
6.3 Der k-Medoid-Algorithmus
6.3
151
Der k-Medoid-Algorithmus
Ein Verfahren, das dem k-Means-Verfahren sehr ähnlich ist, ist das k-Medoid-Verfahren [KR87]. Der Unterschied zu k-Means ist, dass als Repräsentant des Clusters nicht der Schwerpunkt (Centroid), sondern der sogenannte Medoid verwendet wird. Im Unterschied zum Centroid muss der Medoid ein Element der Eingabedatenmenge sein. Der Medoid kann beispielsweise als derjenige Punkt der Eingabedaten gewählt werden, der die geringste Entfernung zum Centroid hat. Hat man aber nominale oder ordinale Attribute, so ist die Berechnung des Centroids nicht möglich. Was ist der Durchschnitt zwischen 2 männlichen und einer weiblichen Person? Deshalb können wir den k-Means-Algorithmus nicht einfach nur dahingehend ändern, dass der Medoid als der dem Centroid nächstgelegene reale Datensatz berechnet wird und sich die Neuordnung am Medoid orientiert. Stattdessen werden „bessere“ Medoide durch Tauschen gesucht. Listing 6.4:
Medoid-basiertes Clustern
PROCEDURE k-Medoid Wähle k Objekte m1 . . . mk als Clusterrepräsentanten Ordne alle Objekte gemäß Distanzfunktion einem Cluster mi zu REPEAT Tausch_erfolgt := false IF Es existiert ein x (kein Medoid) und mi (Medoid), bei deren Tausch (x wird Medoid, mi wird Nicht-Medoid) sich die Cluster-Qualität verbessert THEN Führe Tausch durch und berechne Clusterzuordnung neu Tausch_erfolgt := true END IF UNTIL NOT Tausch_erfolgt END k-Medoid Natürlich ist im THEN-Zweig der Tausch unnötig, da für das Überprüfen, ob sich die Qualität verbessert hat, der Tausch ja temporär schon durchgeführt werden muss. Im THEN-Zweig ersetzt dieser temporäre Tausch die letzte gültige Cluster-Bildung. Die Verwendung des Medoids hat den Vorteil, dass das Verfahren – im Vergleich mit k-Means – meistens unempfindlicher gegenüber Ausreißern ist, da im Gegensatz zum k-Means-Verfahren nicht der Schwerpunkt, der ja kein echter Datensatz ist, genommen wird, sondern ein realer Datensatz. Ein Ausreißer kann somit den Repräsentanten nicht mehr in seine Richtung „ziehen“, wenn der Repräsentant aus der Hauptgruppe des Clusters genommen wird. Im Algorithmus 6.4 wird ein neuer Medoid nur dann akzeptiert, wenn sich die Qualität der Cluster-Bildung verbessert.
152
6 Cluster-Analyse
Die Qualität einer Clusterbildung kann wieder über die bereits eingeführten Kosten definiert werden: dist(xi , x) Kosten(Ci ) = x∈Ci
Die Gesamtkosten (Summe aller Clusterkosten) Kosten =
k
Kosten(Ci )
i=1
gilt es zu minimieren.
Der Algorithmus akzeptiert nur dann einen neuen Medoid, wenn die Gesamtkosten kleiner werden. Einer der ersten k-Medoid-Algorithmen war PAM : Partitioning Around Medoids [KR90]. Der PAM-Algorithmus führt eine vollständige Suche nach einem besten neuen Medoid durch. Listing 6.5:
PAM
PROCEDURE PAM Wähle k Objekte m1 . . . mk als Clusterrepräsentanten Ordne alle Objekte gemäß Distanzfunktion einem Cluster mi zu REPEAT Tausch_erfolgt := false Kand := { (x, m) | m ist Medoid, x ist Nicht-Medoid, durch einen Tausch ergäbe sich eine Verbesserung} IF Kand = ∅ THEN Finde (x, m) ∈ Kand mit der maximalen Verbesserung Tausche x und m Tausch_erfolgt := true END IF UNTIL NOT Tausch_erfolgt END PAM Die Schritte vor der REPEAT-Anweisung werden als Build-Phase bezeichnet, die restlichen Schritte als Swap-Phase. Der PAM-Algorithmus berechnet eine komplette Matrix, in der die Distanzen zwischen den Punkten gespeichert sind.
6.3 Der k-Medoid-Algorithmus Beispiel 6.2:
153
PAM
Wir betrachten folgende Menge von Punkten im zweidimensionalen Raum. Nr. 1 2 3 4 5 6 7 8 9 10
x 2 4 5 1 3 3 5 6 7 7
y 5 2 3 5 4 6 1 8 5 6
Wir möchten 2 Cluster bilden. Als Anfangs-Medoide wählen wir die ersten beiden Punkte. Als Abstandsmaß verwenden wir die euklidische Distanz. Nun ordnen wir die Punkte den Clustern zu und berechnen die Kosten. Nr. x y dist1 dist2 Kosten Cluster 1 2 5 0 3,61 0 1 0 0 2 2 4 2 3,61 1,41 2 3 5 3 3,61 1,41 1 4,24 1 1 4 1 5 1,41 1 5 3 4 1,41 2,24 1,41 1 6 3 6 1,41 4,12 5 1,41 1,41 2 7 5 1 5 6,32 5 1 8 6 8 5 4,24 4,24 2 9 7 5 5,1 5 5 2 10 7 6 20,9 Die Kosten betragen also 20,9. Nun tauscht PAM einen Nicht-Medoid mit einem Medoid. Tauscht man beispielsweise den Medoid 2 mit dem Objekt 8 – die neuen Centroiden wären somit Punkt 1 und Punkt 8 – so ergeben sich folgende Kosten. Nr. 1 2 3 4 5 6 7 8 9 10
x 2 4 5 1 3 3 5 6 7 7
y 5 2 3 5 4 6 1 8 5 6
dist1 0 3,61 3,61 1 1,41 1,41 5 5 5 5,1
dist2 5 6,32 5,1 5,83 5 3,61 7,07 0 3,16 2,24
Kosten 0 3,61 3,61 1 1,41 1,41 5 0 3,16 2,24 21,44
Cluster 1 1 1 1 1 1 1 2 2 2
Die Kosten würden größer, womit dieser Tausch nicht in Frage kommt.
154 Tauscht man dagegen Cluster nimmt zu. Nr. x y dist1 1 2 5 0 2 4 2 3,61 3 5 3 3,61 1 4 1 5 5 3 4 1,41 6 3 6 1,41 5 7 5 1 5 8 6 8 5 9 7 5 5,1 10 7 6
6 Cluster-Analyse 2 und 3, so ergeben sich geringere Kosten. Die Qualität der dist2 3,61 1,41 0 4,47 2,24 3,61 2 5,1 2,83 3,61
Kosten 0 1,41 0 1 1,41 1,41 2 5 2,83 3,61 18,68
Cluster 1 2 2 1 1 1 2 1 2 2
PAM probiert nun alle Varianten und wählt den Tausch mit der größten Verbesserung. Anschließend wird nach dem nächsten, möglichen Tausch gesucht. Ergänzend sei erwähnt, dass der PAM eine gute Wahl von k durch die sogenannten Silhouetten-Funktion, eine graphische Repräsentation der Objektverteilung und ihrer Häufigkeit unterstützt. Der PAM-Algorithmus bewertet die Güteverbesserung der Clusterbildung für alle möglichen Vertauschungen von Medoid und Nicht-Medoid. Dies sorgt zwar meistens dafür, dass gute Cluster gefunden werden, die Laufzeit allerdings mit der Anzahl der Eingabeobjekte sehr stark ansteigt und PAM daher nur für kleine Mengen geeignet ist. Eine weniger gründliche Suche führt das Verfahren Clustering Large Applications based on RANdomized Search (CLARANS) [NH94] durch, bei dem man nicht den kompletten Eingaberaum absucht, sondern zufallsbasiert nur einen Teil der Daten berücksichtigt. Dadurch ist das Verfahren viel effizienter, ohne dabei in der Praxis wesentlich schlechtere Ergebnisse als PAM zu liefern. Die Vorstufe zu CLARANS war CLARA (Clustering LARge Applications). CLARA arbeitet nicht auf der gesamten Beispielmenge, um Cluster zu bilden, sondern wählt eine Teilmenge aus. Auf diese wird nun der PAM-Algorithmus angewendet. Dieses Verfahren findet nicht unbedingt die optimale Clusterbildung, da es ja passieren kann, dass ein Medoid einer besten Clusterbildung überhaupt nicht in der Beispielmenge vorkommt. Um nicht von einer unglücklichen Wahl der Teilmenge abhängig zu sein, wird das gesamte Procedere folglich mehrfach wiederholt. Ausgewählt wird die Clusterbildung, die bezüglich der obigen Kosten minimal ist. Während CLARA mit einer festen Teilmenge arbeitet, löst CLARANS sich wieder von dieser festen Teilmenge. Der CLARANS-Algorithmus benötigt 2 Parameter: numLocal legt fest, wie oft nach einer guten Cluster-Bildung gesucht wird, maxNeighbours legt fest, wie viele Versuche des Vertauschens eines Medoid mit einem Nichtmedoid erlaubt sind, ohne dass eine Verbesserung eintritt.
6.3 Der k-Medoid-Algorithmus Listing 6.6:
155
CLARANS
PROCEDURE CLARANS j := 1 CB := Generiere_Cluster_Bildung REPEAT j := j+1 CBj := Generiere_Cluster_Bildung IF CBj ist besser als CB THEN CB := CBj UNTIL j = numLocal END CLARANS FUNCTION Generiere_Cluster_Bildung CB := Initialisiere die k Medoide REPEAT i := 0 Weise jeden Punkt seinem besten Medoid zu Tausch_erfolgt := false WHILE i < maxNeighbours AND NOT Tausch_erfolgt DO Suche zufällige Tauschpartner Medoid / Nichtmedoid IF Cluster-Qualität verbessert sich THEN Führe Tausch durch // CB wird geändert Tausch_erfolgt := true ELSE i:=i+1 END IF END WHILE UNTIL NOT Tausch_erfolgt RETURN CB END Generiere_Cluster_Bildung CLARANS unterscheidet sich von PAM und CLARA in folgenden Punkten: • Höchstens maxNeighbours Versuche des Tauschens von Medoid und Nichtmedoid werden unternommen, um eine Verbesserung zu finden. • Die erste Ersetzung, die eine Verbesserung erzielt, wird auch durchgeführt.
• Die Suche nach k „optimalen“ Medoiden wird nur numLocal Mal wiederholt. CLARANS verzichtet auf die Vollständigkeit, ist dadurch aber schneller. Die praktische Komplexität liegt bei PAM bei n3 , bei CLARANS bei n2 . Man kann anstelle des Centroids oder Medoids auch den Median verwenden. Dies führt zum k-Median-Algorithmus. Der Unterschied ist, dass ein Kompromiss zwischen dem
156
6 Cluster-Analyse
Centroid, also einem fiktiven Punkt, der in den gegebenen Datensätzen nicht vorkommen muss, und dem Medoid, einem realen Datensatz gesucht wird. Dieser Kompromiss sieht so aus, dass in jeder Komponente der Median berechnet wird. Der Repräsentant muss nun kein existierender Datensatz sein, aber jede Komponente muss zumindest einen existierenden Wert haben. Betrachten wir die 3 Datensätze (0, 4), (2, 0), (5, 2), so ergibt sich: Centroid (2.3, 2) Medoid (2, 0) Median (2, 2) Der Medoid ist ein existierender Datensatz, der Centroid ein fiktiver Punkt. Der Median existiert zwar möglicherweise auch nicht, aber der Wert in beiden Komponenten kommt in mindestens einem Datensatz vor. Aufgabe 6.4:
K-Medoid – Pflanzenarten
Eine Gruppe von Bauern möchte ihre Ernte gemeinschaftlich verbessern. Dazu wurden von mehreren Pflanzenarten die Standortbedingungen der Felder aller Bauern gesammelt. Bilden Sie 2 Cluster mittels des k-Medoid-Verfahrens. Was müssen Sie in der Datenvorverarbeitung tun, um das k-Medoid-Verfahren anwenden zu können? In welchen Cluster fällt der Datensatz (feucht, neutral, 6, wächst)? ID 1 2 3 4 5 6 7 8
6.4
Feuchte trocken feucht trocken feucht trocken feucht feucht feucht
Säure basisch neutral alkalisch alkalisch neutral basisch basisch neutral
Temp. (Celsius) 7 8 9 5 6 7 7 10
Klasse wächst wächst nicht wächst wächst nicht wächst wächst nicht wächst nicht wächst
Erwartungsmaximierung
Erwartungsmaximierung [DLR77] gehört zur Kategorie der partitionierenden Verfahren. Im Gegensatz zu den vorherigen Methoden werden beim Clustering nach Erwartungsmaximierung (EM) die Objekte nicht bestimmten Clustern eindeutig zugeordnet. Objekte können zu mehreren Clustern gehören, jeweils mit einer bestimmten Wahrscheinlichkeit. Eine Wahrscheinlichkeitsverteilung ist eine Abbildung, die jedem möglichen Ausgang eines Zufallsexperiments eine Wahrscheinlichkeit zuordnet. Beim Clustering durch Erwartungsmaximierung nimmt man also an, dass die Daten aus einem Zufallsexperiment entstanden sind, und approximiert die Cluster durch Gaußverteilungen.
6.4 Erwartungsmaximierung
157
Eine Gaußverteilung ist eine symmetrische Wahrscheinlichkeitsverteilung, die einen Graphen in Glockenform induziert. Gaußverteilungen werden benutzt, weil sich – durch eine Mischung dieser – beliebige andere Verteilungen approximieren lassen. Man nimmt nun an, dass die Eingabedaten aus einer Mischung von k Gaußverteilungen entstanden sind. Das Ziel des EM-Algorithmus ist es daher, die k Gaußverteilungen zu finden, für die die Wahrscheinlichkeit, dass die gegebenen Daten aus ihnen entstanden sind, maximal ist. Dazu beginnt man ähnlich wie beim k-Means- oder k-Medoid-Verfahren mit beliebigen Startwerten und verbessert die Clusterverteilung iterativ. Man beginnt mit k zufällig gewählten Gauß-Verteilungen. Nun berechnet man die Wahrscheinlichkeiten, mit denen • ein Punkt x (Objekt) aus einer
• der k Gaußverteilungen Ci (i = 1, . . . , k) entstanden ist.
Dabei ist:
1 − 1 (x−µCi )T ( ·e 2 P (x|Ci ) = (2π)k | Ci |
Ci
)−1 (x−µCi )
• k die Anzahl der Cluster • Ci die Kovarianzmatrix für die Punkte im Cluster Ci
• µCi der Vektor des Mittelpunkts des Clusters i
Jetzt berechnet man die Gesamt-Wahrscheinlichkeitsdichte für x: P (x) =
k i=1
Wi · P (x|Ci )
Wi ist dabei die Anzahl der Objekte im Cluster Ci , geteilt durch die Anzahl aller Objekte, also eine Gewichtung entsprechend der Größe des Clusters (relative Häufigkeit). Die Wahrscheinlichkeit, mit der ein bestimmtes Objekt x zu einem Cluster Ci gehört, ist (Satz von Bayes, vgl. Abschnitt 5.3.1): P (Ci |x) = Wi ·
P (x|Ci ) P (x)
Um zu prüfen, ob die gegebenen Daten mit maximaler Wahrscheinlichkeit aus den errechneten Gaußverteilungen entstanden sind, werden alle (für alle Objekte) Wahrscheinlichkeitsdichten zu einer Gesamt-Wahrscheinlichkeitsdichte summiert: log(P (x)) E= x
E soll maximiert werden.
158
6 Cluster-Analyse
1. Der iterative Algorithmus berechnet zu den initialen Belegungen die Wahrscheinlichkeiten P (xi ), P (xj |Ci ) und P (Ci |xj ).
2. Dann werden aus diesen Werten neue Mittelwerte der k Cluster bestimmt. 3. Dazu werden Wi , µCi und Ci neu berechnet. 4. Aus denen ergeben sich dann wiederum neue Wahrscheinlichkeiten.
5. Dies wird solange wiederholt, bis E nicht mehr erhöht werden kann. Rechnerisch kann nun ein Objekt mehreren Clustern angehören, nämlich gerade denen, für die P (Ci |xj ) > 0 ist. Um der Einschränkung des partitionierenden Clustering zu genügen, dass ein Objekt höchstens einem Cluster angehört, kann man die Objekte demjenigen Cluster Ci zuordnen, für den P (Ci |xj ) maximal ist. Der Erwartungsmaximierungs-Algorithmus ist in Weka verfügbar.
Clustering nach Erwartungsmaximierung hat ebenso wie die Verfahren nach Mittelpunktbestimmung Probleme, Cluster zu finden, die bestimmte Eigenschaften aufweisen. So können beispielsweise Cluster, die stark unterschiedliche räumliche Strukturen besitzen, schlecht von solchen Verfahren erkannt werden. Für solche Cluster bietet sich das dichtebasierte Clustering (Abschnitt 6.6) an.
6.5
Agglomeratives Clustern
Agglomeratives Clustern ist den hierarchischen Clusterverfahren zuzuordnen. Der Algorithmus ist in Listing 6.7 dargestellt. Das Vorgehen wird wieder an einem Beispiel erläutert. Listing 6.7:
Agglomeratives Clustern
PROCEDURE AgglomerativesClustern Erzeuge zu jedem Objekt einen eigenen Cluster // Jedes Objekt x aus den Eingabedaten bildet einen eigenen Cluster n := Anzahl der Objekte REPEAT Berechne die Abstände aller Cluster zueinander Vereinige diejenigen Cluster Ca und Cb mit den geringsten Abständen n := n − 1 UNTIL n = 1 END AgglomerativesClustern
6.5 Agglomeratives Clustern Beispiel 6.3:
159
Agglomeratives Clustering
In dem in Abbildung 6.1 auf Seite 139 dargestellten Beispiel befinden sich im ersten Schritt die einzelnen Punkte {1, 2, 3, 4, 5, 6} aus dem Diagramm auf der untersten Ebene (Blätter) des Dendrogramms. Dies sind die Blätter des Baums. Im zweiten Schritt werden nun die zwei Cluster, zwischen denen die Distanz minimal ist, zu einem Cluster zusammengefügt. Ausgehend vom euklidischen Abstand bedeutet das für unser Beispiel, dass nun die Cluster (Punkte) 1 und 2 zu einem Cluster verschmelzen, da sie die geringste Distanz zueinander aufweisen. Alle anderen Kombinationen der Punkte ergeben eine größere Distanz.
Abb. 6.16: Agglomeratives Clustering – Schritt 1
Jetzt verschmelzen Cluster 4 und 5, da diese nun den geringsten Abstand haben.
Abb. 6.17: Agglomeratives Clustering – Schritt 2
Nun hängt das weitere Verhalten vom gewählten Abstandsmaß ab. Wählt man Single Linkage (Seite 160), so verschmelzen als nächstes die Cluster {1, 2} und 3 (Abbildung 6.18 auf der nächsten Seite). Im nächsten Schritt werden die Cluster {4, 5} und 6 vereinigt, bevor im letzten Schritt ein großer Cluster entsteht (Abbildung 6.19 auf der nächsten Seite). Zu klären ist noch, wie die Ähnlichkeit von Clustern bestimmt wird. Es gibt hier eine Reihe von Ansätzen.
160
6 Cluster-Analyse
Abb. 6.18: Agglomeratives Clustering – Schritt 3
Abb. 6.19: Agglomeratives Clustering – Schritt 4
Single Linkage (Nearest Neighbour) Die Distanz zwischen 2 Clustern Ca und Cb wird anhand des kleinsten Abstands zweier Objekte xa ∈ Ca und xb ∈ Cb definiert (Abbildung 6.20). distSingleLinkage (Ca , Cb ) =
min
xa ∈Ca ,xb ∈Cb
(dist(xa , xb ))
Abb. 6.20: Abstand zwischen Clustern – Single Linkage
6.5 Agglomeratives Clustern
161
Complete Linkage (Furthest Neighbour) Die Distanz zwischen 2 Clustern Ca und Cb wird anhand des größten Abstands zweier Objekte xa ∈ Ca und xb ∈ Cb definiert (Abbildung 6.21). distCompleteLinkage (Ca , Cb ) =
max
xa ∈Ca ,xb ∈Cb
(dist(xa , xb ))
Abb. 6.21: Abstand zwischen Clustern – Complete Linkage
Average Linkage (Within Groups) Diese Variante der Distanz sucht einen Kompromiss zwischen Single Linkage und Complete Linkage. Die Distanz zwischen 2 Clustern Ca und Cb wird durch den durchschnittlichen Abstand von Objekten xa ∈ Ca und xb ∈ Cb definiert (Abbildung 6.22). distAverageLinkage (Ca , Cb ) =
1 · |Ca | · |Cb |
dist(xa , xb )
xa ∈Ca , xb ∈Cb
Abb. 6.22: Abstand zwischen Clustern – Average Linkage
Mit |Ca | bezeichnen wir die Anzahl von Objekten, die in Cluster Ca liegen.
162
6 Cluster-Analyse
Centroid Die Distanz zwischen 2 Clustern Ca und Cb wird durch den Abstand der Centroide ca und cb der Cluster Ca und Cb definiert (Abbildung 6.23). distCentroid (Ca , Cb ) = dist(ca , cb ) Die Centroide sind grau dargestellt.
Abb. 6.23: Abstand zwischen Clustern – Centroid
Man kann natürlich anstelle des Centroids auch mit dem Medoid arbeiten. Die Distanz zwischen 2 Clustern Ca und Cb wird dann durch den Abstand der Medoide ma und mb der Cluster Ca und Cb definiert (Abbildung 6.24). distMedoid (Ca , Cb ) = dist(ma , mb ) In Abbildung 6.24 wurden die Medoide als die dem Centroiden nächstgelegenen Punkte gewählt.
Abb. 6.24: Abstand zwischen Clustern – Medoid
WARD Dieses Verfahren (siehe [War63]) beruht auf der Varianz innerhalb eines Clusters. Es werden die Varianzen aller Cluster berechnet. Nun werden diejenigen 2 Cluster gewählt, deren Vereinigung zu einer minimalen Erhöhung der Summe aller Varianzen führt.
6.6 Dichtebasiertes Clustern
163
Neben den hier vorgestellten Varianten, gibt es weitere Möglichkeiten, die Abstände zwischen Clustern zu messen, beispielsweise die Median-basierte Methode. Wir können festhalten, dass es nicht die eine Methode gibt, die für alle Anwendungsfälle das beste Ergebnis liefert. Man muss demzufolge mit mehreren Abstandsmaßen experimentieren.
6.6
Dichtebasiertes Clustern
Cluster, die stark unterschiedliche räumliche Strukturen besitzen, werden schlecht von den bisherigen Verfahren erkannt. In solchen Fällen ist die dichtebasierte Clusterbildung von Vorteil. Bisher haben wir einen Cluster als eine Menge von Objekten, die möglichst nah an einem gewissen Mittelpunkt liegen, betrachtet. Alternativ kann man einen Cluster aber auch als Menge von Objekten ansehen, die in einer bestimmten Dichte zueinander stehen und von anderen Clustern durch Regionen geringerer Dichte getrennt werden. Die lokale Punktdichte für jeden Punkt im Cluster muss eine vorher festgelegte Mindestdichte erreichen. Die Menge von Objekten, die einen Cluster ausmacht, ist räumlich zusammenhängend. Im Gegensatz zu den Verfahren k-Means und k-Medoid muss diese Menge aber nicht konvex sein. Ausgangspunkt ist somit, dass wir eine minimale Dichte erzielen wollen. Diese Dichte wird üblicherweise durch 2 Parameter spezifiziert: • Man gibt einen Radius > 0 vor.
• MinimumPunkte gibt an, wie viele Objekte mindestens in der Nachbarschaft eines Punktes liegen müssen.
Ein klassischer Vertreter des dichtebasierten Clusterns ist der DBScan-Algorithmus (Density-Based Spatial Clustering of Applications with Noise) [EKSX96]. Er benötigt folgende Parameter: die gegebenen Datensätze DB und die beiden Dichteparameter. Listing 6.8:
Algorithmus DBSCAN
1
PROCEDURE DBSCAN(DB, , MinimumPunkte) clusterid := 0 Kennzeichne alle x ∈ DB als unklassifiziert FORALL x ∈ DB IF x ist unklassifiziert THEN IF expandiere(DB, x, clusterid, MinimumPunkte) THEN clusterid := clusterid+1 END DBSCAN 1 Darstellung
in Anlehnung an [BBHK10, S. 171].
164
6 Cluster-Analyse
PROCEDURE expandiere(DB, x, clusterid, MinimumPunkte, ) Set = {y ∈ DB | dist(x, y) ≤ } IF nicht genügend Objekte in Set (|Set| < MinimumPunkte), THEN kennzeichne x als noise und RETURN false FORALL y ∈ Set: Kennzeichne y mit der aktuellen clusterid Lösche x aus Set FORALL z ∈ Set Set2 = {y ∈ DB | dist(z, y) ≤ } IF genügend Objekte in Set2 (|Set2 | ≥ MinimumPunkte) THEN FORALL s ∈ Set2 IF s gehört zu keinem Cluster (unklassifiziert oder noise) THEN IF s unklassifiziert THEN Füge s in Set ein Markiere s mit clusterid Lösche z aus Set RETURN true END expandiere Der Algorithmus kennzeichnet zu Beginn alle Objekt zunächst als „nicht bearbeitet“ (unklassifiziert). Dann wird ein beliebiges Objekt aus der Menge genommen und die Menge der in der -Umgebung liegenden Objekte berechnet. Dies passiert bereits in der booleschen Funktion expandiere. Ist die Anzahl der Nachbarschaftsobjekte zu gering, wird das aktuelle Objekt als „Rauschen“ (noise) gekennzeichnet. Gibt es genug Objekte, so entsteht ein neuer Cluster. Nun muss nur noch geschaut werden, ob man den Cluster entlang der neuen Objekte – also der Nachbarn des aktuellen Objekts – noch weiter expandieren kann. Natürlich darf man über die Nachbarpunkte nur unter der Maßgabe, dass auch diese Nachbarpunkte in ihrer Nachbarschaft genügend Nachbarn haben, hinausgehen. Der DBScan kennt 3 Arten von Punkten: 1. Punkte, die selbst dicht sind, sogenannte Kernobjekte. Dies sind Punkte, in deren Umgebung die Minimalanzahl von dichten Nachbarpunkten erreicht wird. 2. Punkte, die dichteerreichbar sind. Dies sind Objekte, die von einem Kernobjekt des Clusters erreicht werden, aber nicht selbst Kernobjekte sind. Sie haben also nicht genügend „dichte“ Nachbarpunkte, sind aber selbst im Einzugsbereich eines Kernobjekts. Diese Punkte bilden den Rand des Clusters. 3. Rauschpunkte, die weder dicht noch dichteerreichbar sind. Dies sind also Punkte, die weder genügend „dichte“ Nachbarpunkte haben noch im Einzugsgebiet eines Kernobjekts sind. Im obigen Algorithmus 6.8 werden diese mit noise gekennzeichnet. Das Vorgehen von DBScan kann man leicht veranschaulichen. Wir betrachten eine Punktmenge im zweidimensionalen Raum und starten mit einem beliebigen Punkt. Wir fordern eine minimale Anzahl an Nachbarpunkten von 2 und legen einen entsprechenden Radius fest. Dies ist in Abbildung 6.25 auf der nächsten Seite dargestellt. Aus Gründen der Übersichtlichkeit haben wir einen Punkt am Rand gewählt.
6.6 Dichtebasiertes Clustern
165
Abb. 6.25: DBScan – Schritt 1
Die grau markierten Punkte liegen in der geforderten Nähe – wir verwenden die euklidische Distanz – zum Ausgangspunkt. Somit ist unser Punkt ein Kernobjekt. Es entsteht ein neuer Cluster. Das Verfahren setzt nun mit den grauen Punkten fort. Dies ist die Menge Set. Für jeden grauen Punkt wird nun die Menge Set2 der dichtgelegenen Nachbarn berechnet.
Abb. 6.26: DBScan – Schritt 2
Beide Punkte sind selbst Kernpunkte. Deshalb setzt sich das Verfahren nun mit den nächsten Punkten fort. Die Punkte aus der gekrümmten Punktewolke werden so nach und nach erreicht und bilden einen Cluster (Abbildung 6.27 auf der nächsten Seite). Da der Algorithmus alle Punkte durchläuft, werden irgendwann auch die anderen Punkte bearbeitet, so dass die 3 gewünschten Cluster von DBScan gefunden werden. Man beachte, dass es Punkte geben kann, die keinem Cluster zugeordnet werden. Dies sind die Noise-Punkte. Ebenso kann es passieren, dass Punkte von mehreren Clustern dichteerreichbar sind. Dann erfolgt die Zuordnung gemäß Algorithmus 6.8 zu dem Cluster, der als letztes diesen Punkt erreicht. Beides ist in unserem Beispiel aber nicht der Fall.
166
6 Cluster-Analyse
Abb. 6.27: DBScan – weitere Schritte
Ein Vorteil von DBScan ist, dass die Clusteranzahl sich automatisch ergibt. Probleme gibt es beim DBScan bezüglich einer geschickten Wahl der minimalen Punkteanzahl und des Umgebungsradius . Beide Parameter müssen dem Algorithmus vorgegeben werden. Dies bietet wieder Freiraum für Experimente. Das DBScan-Verfahren ist unter Weka verfügbar. Es gibt eine Reihe von Erweiterungen des DBScan-Algorithmus, von denen hier stellvertretend der DENCLUE-Algorithmus sowie der OPTICS-Algorithmus (Ordering Points To Identify the Clustering Structure) genannt seien.
6.7
Clusterbildung mittels selbstorganisierender Karten
Künstliche neuronale Netze werden für mehrere Anwendungsklassen des Data Mining eingesetzt. Je nach Aufgabe sind eine spezielle Architektur des Netzes sowie darauf abgestimmte Lernverfahren erforderlich. Selbstorganisierende Karten (Self Organising Map, SOM), auch Kohonen-Netze oder Kohonen Feature Map genannt, sind in der Lage, Daten zu clustern.
6.7.1
Aufbau
Eine selbstorganisierende Karte besteht aus zwei Schichten von Neuronen, siehe Abbildung 6.28: 1. Die Eingabe-Schicht ist eindimensional und repräsentiert die Daten. Es ist die Schnittstelle nach außen: An die Eingabe-Neuronen werden die zu analysierenden Daten angelegt. 2. Die Karten- oder Kohonen-Schicht. Diese ist gleichzeitig Verarbeitungs- als auch Ausgabe-Schicht.
6.7 Clusterbildung mittels selbstorganisierender Karten
167
Die Eingabe-Schicht ist vollständig mit der Karten-Schicht verbunden. Die Neuronen der Karten-Schicht sind alle untereinander implizit verbunden: Es gibt keine trainierbaren Gewichte, der geometrische Abstand zweier Neuronen wird als Gewicht der Verbindung zwischen den Neuronen angesehen. Die Nachbarschaft, die Ferne oder Nähe eines Neurons zu einem anderen wird dann im Trainingsprozess berücksichtigt: Je näher desto stärker werden die Verbindungen eines Nachbar-Neurons zu den Eingabe-Neuronen beeinflusst.
Abb. 6.28: Eine selbstorganisierende Karte
Will man nun eine selbstorganisierende Karte für ein Clustering-Problem entwickeln, sind die Größen der beiden Schichten zu bestimmen. Die Anzahl der Neuronen der Eingabe-Schicht entspricht der Anzahl der Werte eines Musters. Alle Daten müssen aus dem Wertebereich [0,1] sein; eine Vorverarbeitung, die möglicherweise die Anzahl der Eingabe-Neuronen vergrößert, kann erforderlich werden. Die Größe der Kartenschicht kann nicht exakt bestimmt werden. Hier sind Experimente mit mehreren Karten und auch unterschiedlichen Dimensionen nötig. Ein guter Start ist eine quadratische Karte mit einer Größe von 10×10 Neuronen.
6.7.2
Lernen
Das Lernen einer selbstorganisierenden Karte ist ein unüberwachtes Lernen: Es stehen keine Trainingsdaten zur Verfügung, anhand derer die Qualität der Ausgabe einer selbstorganisierenden Karte geprüft werden könnte. Somit wird die selbstorganisierende Karte allein durch das Anlegen der Eingabedaten trainiert. Ziel des Trainings ist eine Cluster-Bildung: Ausgangspunkt dabei ist, dass die Kohonen-Schicht nicht alleine als eine Menge von Neuronen betrachtet wird, sondern es ist eine 2-dimensionale Anordnung von Neuronen, in der die Positionen der Neuronen eine entscheidende Rolle spielen. Ähnliche Datensätze, Muster, werden auf ähnliche Bereiche der selbstorganisierenden Karte abgebildet. Diese Bereiche können dann als die Cluster angesehen werden. Dabei gibt es keinen eindeutigen Vertreter eines Clusters, stattdessen können mehrere Neuronen eines Gebietes diese Funktion wahrnehmen. Wie erfolgt nun die Zuordnung eines Musters zu einem Cluster? Da jedes Neuron der Eingabe-Schicht mit jedem Neuron der Karten-Schicht verbunden ist, setzt sich die
168
6 Cluster-Analyse
Netzeingabe eines Neurons aus allen Ausgaben der Eingabe-Neuronen sowie entsprechend vielen Gewichten an den Verbindungen zusammen (Abbildung 6.29).
Abb. 6.29: Eingabe eines Neurons der Karten-Schicht: M × Wn
Wir haben es bei jedem Neuron j der Kartenschicht mit zwei Vektoren zu tun: 1. Das Eingabe-Muster ist ein Vektor M aus k Werten. 2. Die Menge aller Verbindungsgewichte win zu einem Neuron n bilden einen Vektor Wn , der die Aktivierung des Neurons n bestimmt. Im Verarbeitungsprozess wird nun zufällig ein Muster angelegt und das Neuron bestimmt, welches zu dieser Eingabe am ähnlichsten ist. Was bedeutet nun, dass eine Eingabe einem Neuron am ähnlichsten ist? Das Eingabe-Muster ist ein Vektor M aus k Werten. Betrachten wir ein Neuron n, so besitzt dieses Neuron k Verbindungen von den Eingaben-Neuronen mi , die mit Gewichten win versehen sind. Das Neuron n ist somit vertreten durch den Vektor der Verbindungsgewichte Wn . Wir können dann den euklidischen Abstand distEuklid (M, n) zwischen dem Muster M und dem Neuron n bestimmen: distEuklid (M, n) = (mi − win )2 i
Werden nun für alle Neuronen der Kartenschicht diese Distanzen berechnet, gibt es ein Neuron, welches den geringsten Abstand zum Eingabe-Muster aufweist (Abbildung 6.30 auf der nächsten Seite). Das ist das Gewinner-Neuron z, für das gilt: distEuklid (M, z) = min distEuklid (M, n) n
Nun werden die Verbindungsgewichte wiz zum Gewinner-Neuron so verändert, dass das Gewinner-Neuron der Eingabe noch etwas ähnlicher wird. Zudem werden Verbindungsgewichte von den Eingabe-Neuronen zu den Neuronen in der Nachbarschaft des Gewinner-Neurons z ebenfalls angepasst, so dass diese Vektoren Wn ebenso der Eingabe M ähnlicher werden. Die Anpassung ist abhängig vom Abstand dist(i, z) zum Gewinner-Neuron z. Es werden nur die Neuronen innerhalb eines bestimmten Radius verändert. Die Gewichtsänderung erfolgt meist nach folgender Formel: wij + λ · hjz · (mi − wij ) falls dist(j, z) ≤ r wij = wij sonst
6.7 Clusterbildung mittels selbstorganisierender Karten
169
Abb. 6.30: Gewinner-Neuron in der Karten-Schicht
Hierbei ist λ der Lernparameter, und h beeinflusst die Gewichtsänderung in Abhängigkeit von der Entfernung des Neurons j zum Gewinner-Neuron. r ist der Nachbarschaftsradius, innerhalb dessen die Gewichte verändert werden. Die Gewichtsänderung nimmt mit dem Abstand des Neurons i zum Gewinnerneuron z ab: hjz = e−
dist(j,z)2 2·r 2
Die Cluster-Bildung mittels einer selbstorganisierenden Karte erfolgt nach dem Algorithmus 6.9. Nach jedem Zyklus werden der Lernparameter sowie der Radius verkleinert. Am Anfang wird die gesamte Karte beeinflusst, und nach und nach erfolgen nur noch lokale Änderungen. Damit wird erreicht, dass der Prozess terminiert, da keine Änderungen mehr vorgenommen werden, wenn die Parameter sehr klein (0) geworden sind. Listing 6.9: Kohonen-Lernen PROCEDURE Kohonen-Lernen Initialisiere alle Gewichte wij REPEAT Wähle zufällig ein Muster m aus Bestimme Gewinner-Neuron z für Muster m FOR alle Neuronen j der Karten-Schicht DO IF dist(j, z) ≤ r THEN dist(j,z)2
hjz := e 2·r2 wij := wij + λ · hjz · (mi − wij ) END IF END FOR Verkleinere Lernfaktor λ sowie Radius r UNTIL λ = 0 OR r = 0 OR Anzahl Iterationen erreicht END Kohonen-Lernen
170
6.7.3
6 Cluster-Analyse
Visualisierung einer SOM
Das Prinzip einer selbstorganisierenden Karte kann man sich sehr gut veranschaulichen, allerdings vorzugsweise im 2-dimensionalen Eingaberaum: Alle Muster bestehen dann aus genau zwei Werten, die sich als x-y-Koordinaten interpretieren lassen. Das Eingabemuster kann somit als Punkt in der Ebene gezeichnet werden. Ebenso werden die Verbindungsgewichte von den beiden Eingabe-Neuronen zu einem Karten-Neuron als Koordinaten dieses Neurons interpretiert. Das Neuron wird als Punkt in der Ebene dargestellt.
Ring - Eingabe schwarz - Gewinner-Neuron grau - Nachbarschaft hellgrau - unbeeinflusst
Abb. 6.31: Visualisierung der Karten-Schicht als Punkte in der Ebene
Das Training einer selbstorganisierenden Karte wird dann als Ortsveränderung der Neuronen in der Ebene wahrgenommen. Am Beginn sind die Neuronen zufällig in der Ebene verteilt; zufällig, da die Verbindungsgewichte mit zufälligen Werten initialisiert werden. Im Zuge des Trainings werden zufällig beliebige Punkte aus dem Eingabe-Raum dem Netz präsentiert. Dabei werden die Verbindungsgewichte verändert, optisch verändert sich die Position des Neurons. Am Ende des Lernprozesses haben sich die Neuronen der Kartenschicht gleichmäßig über den Eingaberaum verteilt. Jedes Neuron ist dann der Vertreter für alle Punkte (Eingaben) innerhalb der entsprechenden Voronoi-Kachel, siehe Abbildung 6.32 auf der nächsten Seite. In der Abbildung sind die Daten als kleine Punkte erkennbar, die alle dem kreisförmigen Eingaberaum entstammen, der das Bild fast ausfüllt. Die Neuronen sind als grau gefüllte (im Original grüne) kleine Kreise dargestellt. Das aktuell verarbeitete Muster ist ein etwas kräftigerer eckiger Punkt, und das zugehörige Gewinner-Neuron befindet sich im oberen rechten Bereich als ein großer dunkler (im Original roter) Kreis. Jedes Neuron ist somit Vertreter eines Clusters, dem alle Muster (Punkte) innerhalb der jeweiligen begrenzten Fläche, der Voronoi-Kachel, zugeordnet sind.
6.7.4
Ein Beispiel
Wir greifen hier auf ein anschauliches, aber schon altes Beispiel zurück. Nach Kruse [KMM91] geht das Beispiel auf Ritter und Kohonen [RK89] zurück. Tiere werden an-
6.7 Clusterbildung mittels selbstorganisierender Karten
171
Abb. 6.32: Visualisierung der Karten-Schicht mit Voronoi-Kacheln (DemoGNG, siehe http://www.demogng.de/, 2015-12-05)
hand ihrer Eigenschaften durch binäre Vektoren beschrieben. Wir Menschen kennen die Namen der Tiere, die selbstorganisierende Karte nicht. Eine SOM kann nur die Merkmale analysieren, und es stellt sich die Frage: Kann eine SOM Ähnlichkeiten zwischen den Tieren erkennen und diese entsprechend clustern? Die Merkmale mit ihren Bedeutungen sind in Tabelle 6.1 angegeben, Tabelle 6.2 auf der nächsten Seite enthält die Datensätze der 13 Tiere. Position 1 2 3 4 5 6 7
Merkmal klein mittel groß 2 Beine 4 Beine Haare Hufe
Position 8 9 10 11 12 13
Merkmal Mähne Federn jagt rennt fliegt schwimmt
Tabelle 6.1: Merkmale der Tierdaten
Mittels des JavaNNS lässt sich eine selbstorganisierende Karte für das Beispiel aufbauen. Für die Eingabe wird eine entsprechende Eingabe-Schicht aus 13 Neuronen (Typ Input) erzeugt. Die Karte selbst kann als eine 10×10-Neuronen-Schicht angelegt werden (Typ Hidden). Als Aktivierungsfunktion wird der euklidische Abstand gewählt: Dunkel gefärbte Neuronen haben einen geringeren Abstand zur Eingabe als helle Neuronen. So lässt sich das Erregungszentrum visuell erkennen. In der speziellen Kohonen-Ansicht in Abbildung 6.33 auf der nächsten Seite werden die Grenzen zwischen den Clustern visualisiert.
172 Tier Taube Henne Ente Gans Eule Falke Adler Fuchs Hund Wolf Katze Tiger Loewe Pferd Zebra Kuh
6 Cluster-Analyse 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0
2 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
4 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
6 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
7 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
8 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0
9 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
10 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0
11 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0
12 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0
13 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Tabelle 6.2: Daten des Tierbeispiels
Abb. 6.33: Visualisierung der Cluster für das Tier-Beispiel im JavaNNS
Eine Visualisierung, die für kleinere Beispiele anschaulicher ist, schreibt direkt in das Gewinner-Neuron den Namen des Datensatzes, siehe Abbildung 6.34. Daraus lässt sich erkennen, dass eine selbstorganisierende Karte tatsächlich eigenständig Ähnlichkeiten erkennen kann. Tiere mit ähnlichen Eigenschaften werden benachbarten Neuronen zugeordnet. Es bilden sich Cluster auf der Karte heraus, die nach dem Training dann für eine Klassifikation weiterer Daten, im Beispiel Tiere, genutzt werden können. Da im Beispiel die Tiere Pferd und Zebra identisch sind, werden diese natürlich auch auf dasselbe Gewinner-Neuron abgebildet, und man wird stets nur einen der beiden Namen erkennen. Die Experimente werden mit einer kleinen selbstentwickelten Software durchgeführt2 .
2 SoKo-Wismar
(Self-Organising Kohonen map) wurde von Studenten 2002 programmiert.
6.8 Clusterbildung mittels neuronaler Gase
173
Abb. 6.34: Die SOM gruppiert ähnliche Tiere in dieselben Karten-Bereiche.
6.8
Clusterbildung mittels neuronaler Gase
Die Bezeichnung Neuronales Gas lässt erkennen, dass das Konzept auf zwei Vorbildern beruht: Zum einen wird die Idee der künstlichen neuronalen Netze aufgegriffen, und zum anderen wird der Datensatz als ein Punkt im mehrdimensionalen Raum mit einem Teilchen in einem Gas verglichen. Diese Teilchen haben schwache Verbindungen zu anderen Teilchen und können sich weitgehend frei bewegen. Von den künstlichen neuronalen Netzen wird das Konzept des Lernens auf neuronale Gase übertragen. Ein neuronales Gas besteht aus einer Menge von Neuronen, die keine Verbindung untereinander aufweisen. Eine Eingabe-Schicht ist darüber hinaus erforderlich, um eine Eingabe – ein Eingabe-Muster oder einen Eingabe-Vektor – für das neuronale Gas verfügbar zu machen. Alle Neuronen der Eingabe-Schicht sind mit jedem Gas-Neuron verbunden. Analog zu einer selbstorganisierenden Karte besitzt jedes Gas-Neuron n genauso viele gewichtete Eingabeverbindungen, wie die Eingabe Elemente aufweist: k, siehe Abbildung 6.35. Für den späteren Einsatz wird ein neuronales Netz mit Eingabe-Mustern trainiert. Bei einem neuronalen Gas wird das sogenannte weiche Wettbewerbslernen eingesetzt. Beim Wettbewerbslernen wird für ein Eingabe-Muster ein Gewinner-Neuron bestimmt, und für dieses Gewinner-Neuron werden die Verbindungsgewichte von der Eingabe zu diesem
174
6 Cluster-Analyse
Eingabe
Neuronales Gas
Abb. 6.35: Struktur eines neuronalen Gases
Gewinner-Neuron verändert. Der Algorithmus 6.10 Wettbewerbslernen zeigt die Vorgehensweise. Mit dieser Veränderung werden das Eingabe-Muster X und der GewichtsVektor des Gewinner-Neurons n etwas ähnlicher. Durch das wiederholte Anlegen aller Muster kristallisiert sich somit das Gewinner-Neuron als Mittelpunkt eines Clusters heraus. Die konkreten Formeln zur Veränderung der Gewichte Wj sowie des Lernfaktors und des Nachbarschaftsradius k können [LC12] oder [Fri98] entnommen werden. Im Algorithmus werden die folgenden Bezeichnungen verwendet: Wj : Vektor der Verbindungsgewichte von der Eingabe-Schicht zum Neuron j X:
Eingabe-Muster (Eingabe-Vektor), entspricht der Ausgabe aller Neuronen der Eingabe-Schicht.
Listing 6.10:
Neuronales Gas Lernen
PROCEDURE Wettbewerbslernen für neuronales Gas REPEAT Wähle zufällig Muster X aus, belege damit die Eingabe-Schicht Bestimme Gewinner-Neuron n für Muster X Verändere Gewichte Wn Bestimme die k ähnlichsten Neuronen für das Muster X FOR j:= 1 TO k DO Verändere Gewichte Wj Verringere Lernparameter und k UNTIL gewünschte Anpassung erreicht END Wettbewerbslernen Die Demonstrationssoftware DemoGnG3 von Fritzke und Loos [Fri98] veranschaulicht den Lernprozess eines neuronalen Gases. Zugleich lässt sich am zweidimensionalen Fall gut erkennen, wie die Neuronen am Ende des Trainingsprozesses als Mittelpunkte von Clustern entstehen, die den Eingaberaum abdecken. Die Abbildung 6.36 auf der nächsten Seite zeigt das Ergebnis des Trainingsprozesses für einen 2-dimensionalen Eingaberaum. Ein derartig trainiertes neuronales Gas kann dann zum Klassifizieren von Daten eingesetzt werden. 3 siehe
http://www.demogng.de/, 2015-12-04
6.9 Clusterbildung mittels ART
175
Abb. 6.36: Die Neuronen des neuronalen Gases überdecken den Eingaberaum
Während ein neuronales Gas mit einer fest vorgegebenen Anzahl von Neuronen arbeitet, steigt die Anzahl der Neuronen in einem wachsenden neuronalen Gas langsam an. Es wird mit zwei Neuronen begonnen, und nach einigen Trainingsschritten wird zwischen den beiden Neuronen mit dem größten Fehler ein neues Neuron eingefügt. Dieser Prozess lässt sich wieder sehr gut in der DemoGNG-Software nachvollziehen. Abbildung 6.37 zeigt links das wachsende neuronale Gas am Anfang des Prozesses und rechts im Zustand, nachdem das Gas bereits auf 8 von maximal 10 Neuronen angewachsen ist. Der Trainingsalgorithmus kann detailliert in [Fri98] oder [Fri97] nachgelesen werden.
Abb. 6.37: Wachsendes neuronales Gas in zwei Stadien (DemoGNG)
6.9
Clusterbildung mittels ART
Die Adaptive Resonanz Theorie (ART) ist ein besonders interessanter Ansatz künstlicher neuronaler Netze, der das sogenannte Plastizitäts-Stabilitäts-Dilemma vorwärtsgerichteter neuronaler Netze zu lösen versucht. Das Plastizitäts-Stabilitäts-Dilemma besteht darin, dass ein einmal trainiertes Netz keine Muster anderer Klassen erkennen kann: Wurde ein Netz trainiert, um alle Großbuchstaben zu erkennen, so wird es keine Kleinbuchstaben klassifizieren können. Es besitzt keine Plastizität. Trainiert man nun die Kleinbuchstaben, geht die Fähigkeit verloren, Großbuchstaben zu erkennen; es ist nicht stabil. Die Idee des Art-Netzes besteht nun darin, dass es eine bestimmte Menge von Mustern erkennen kann und aber auch in der Lage ist zu erkennen, dass ein Muster sich nicht einer der vorhandenen Klassen zuordnen lässt. In diesem Fall wird eine neue Klasse eingerichtet. Dieses dynamische Anwachsen der Zahl der Klassen kann als ein Cluster-
176
6 Cluster-Analyse
Bildungs-Prozess gesehen werden. Ein ART-Netz kann somit beides. In einer ersten Phase kann es zum Clustern eingesetzt werden: Aus der Menge der Eingabe-Muster werden Cluster gebildet. Dasselbe Netz kann dann auch Muster klassifizieren. Dabei behält es die Fähigkeit, bei Bedarf einen neuen Cluster zu bilden. Wann wird nun ein neuer Cluster gebildet? Diese Frage wird durch die Beschreibung der Arbeitsweise eines ART-Netzes beantwortet. Grundlage der Beschreibung bildet die Abbildung 6.38: Eingabe-Muster M
g2
g1
Vergleichsschicht F1
Erkennungsschicht F2
Ähnlichkeitsparameter sim
Abb. 6.38: Struktur eines ART-Netzes
• Eine Eingabe wird an das Netz angelegt.
• Für die Eingabe wird ein Gewinner-Neuron z in der Erkennungsschicht F2 bestimmt. • Zu jedem bereits verwendeten Neuron der Erkennungsschicht F2 existiert ein Vergleichsmuster in der Vergleichsschicht F1 . Dieses Muster ist das Referenzmuster der von z vertretenen Klasse. • Nun sind mehrere Möglichkeiten denkbar:
1. Die Eingabe ist dem Referenzmuster ähnlich: Dann ist z die Klasse, zu der die Eingabe zuzuordnen ist. 2. Ist die Eingabe dem Referenzmuster von z nicht ähnlich, so wird das Neuron aus dem Wettbewerb ausgeschlossen, ein neues Gewinner-Neuron bestimmt und der Vergleich mit dem Referenzmuster vorgenommen. 3. Wurden auf diese Weise alle Neuronen, zu denen es ein Referenzmuster gibt, probiert und keine Ähnlichkeit entdeckt, gehört die aktuelle Eingabe zu keiner der vorhandenen Klassen. Eine neue Klasse ist erforderlich: Ein noch nicht verwendetes Neuron der Erkennungsschicht wird zum Vertreter der neuen Klasse, und das Eingabemuster wird als Referenzmuster der neuen Klasse gespeichert.
• Wurde das Muster einer Klasse zugeordnet, werden die Gewichte der Verbindungen modifiziert und damit das Referenzmuster so geändert, dass es auch das aktuelle Eingabe-Muster vertreten kann.
6.10 Der Fuzzy-c-Means-Algorithmus
177
Entscheidend für die Arbeitsweise eines ART-Netzes ist der Begriff der Ähnlichkeit. Diese Ähnlichkeit wird durch den Nutzer vorgegeben und dem Netz als Parameter sim übergeben. Für sim gilt: 0 ≤ sim ≤ 1. Ein kleiner Wert führt dazu, dass viele Muster als zueinander ähnlich angesehen werden. Ein Wert nahe 1 hat zur Folge, dass fast alle unterschiedlichen Muster auch in unterschiedliche Klassen eingeordnet werden.
Abb. 6.39: Eingabemuster M und Referenzmuster in einem ART-Netz ( JavaNNS)
Unter den Beispielen des JavaNNS findet man auch ein ART-Netz für die Erkennung von Großbuchstaben, die als 5×7-Pixel-Matrix eingegeben werden. An diesem Beispiel lässt sich sehr gut der Einfluss des Ähnlichkeitsparameters sim auf die Klassifizierung sowie Cluster-Bildung nachvollziehen. Abbildung 6.39 zeigt den Buchstaben M als Eingabemuster und das zugehörige Referenzmuster. Bei einem Ähnlichkeitsfaktor von sim = 0,5 werden alle Großbuchstaben in nur 7 Klassen unterteilt, wird sim = 0,8 gesetzt, werden schon 19 Klassen unterschieden. Mit dem Ähnlichkeitsparameter steuert der Nutzer somit die Anzahl der Cluster, die gebildet werden. ART-Netze werden immer wieder in der Literatur angeführt. Leider gibt es keine einfach zu benutzende Software, um diese Netze auch für realistische Aufgaben einsetzen zu können.
6.10
Der Fuzzy-c-Means-Algorithmus
Wir kehren zum Abschluss des Cluster-Kapitels nochmal zum k-Means-Algorithmus (Abschnitt 6.2) zurück. Der k-Means-Algorithmus hat einen Nachteil. Er zwingt die Zuordnung der Daten zu jeweils einem Cluster. Wir haben aber bereits gesehen, dass dies ab und an nicht sinnvoll ist. Betrachten wir im 2-dimensionalen Raum die in Abbildung 6.40 dargestellten Daten. Wir wollen 2 Cluster bilden. Wo soll die Grenze zwischen den 2 Clustern verlaufen?
178
6 Cluster-Analyse
Abb. 6.40: Clustering mit k-Means – Problem
Mit dem dichtebasierten Clustern (Abschnitt 6.6) hatten wir einen Ansatz kennengelernt, der mit solchen Punktewolken umgehen kann. Dies hilft uns allerdings hier nicht, da sich auch der dichtebasierte Clusteralgorithmus DBScan hart entscheidet, ob ein Punkt zu einem Cluster dazugehört oder nicht. Bei dieser Verteilung ist es nicht angebracht, den Algorithmus zu einer 0/1-Entscheidung zu zwingen. Gerade bei den „mittleren“ Punkten ist dies mehr als fragwürdig. Sollen auf den gegebenen Daten 2 Cluster gebildet werden, ist es sinnvoll zuzulassen, dass die Punkte zu beiden Clustern gehören, aber eben nur anteilig. Man lässt also auch Zugehörigkeitswerte zwischen 0 und 1 zu. Dies ist ein typischer Fuzzy-Ansatz. Damit geben wir die Restriktion der Disjunktheit der Cluster untereinander auf (vgl. Seite 58). Dies hatten wir auch beim EM-Algorithmus (Abschnitt 6.4) bereits getan. Zur Darstellung der Zugehörigkeit zu den Clustern eignet sich eine Matrix. Wir betrachten 4-dimensionale Daten (⊂ 4 ) und gehen davon aus, dass wir 5 Datensätze gegeben haben, die 4 Clustern zuzuordnen sind. In der folgenden Matrix ist die Zugehörigkeit der 5 Datensätze zu den 4 Clustern dargestellt.
U =
0, 1 0, 2 0 0, 8 0
0 0 1 0 1
0 0, 8 0 0, 2 0
0, 9 0 0 0 0
In den Zeilen ist die Zugehörigkeit des jeweiligen Datensatzes zum jeweiligen Cluster dargestellt. uij ist die Zugehörigkeit des Datensatzes xi zum Cluster Cj . Ohne die Daten hier aufgeführt zu haben, können wir deren Zugehörigkeit zu den Clustern ablesen. Der erste Datensatz gehört gemäß der obigen Matrix zu 10% zum ersten Cluster C1 , zu 90% zum Cluster C4 . Analog wird der Datensatz 4 zu 80% zum Cluster C1 , zu 20% zum Cluster C3 zugeordnet. Das Beispiel zeigt, dass durchaus eine eindeutige Zuordnung zugelassen ist (Datensätze 3 und 5). Cluster C2 ist ein Cluster, wie ihn auch der k-Means-Algorithmus gebildet hätte.
6.10 Der Fuzzy-c-Means-Algorithmus
179
Ist k die Anzahl der zu bildenden Cluster und n die Anzahl der zu clusternden Daten, so hat die Matrix U die Größe n × k. Das Element uij ist dann die Zugehörigkeit des Datensatzes xi zum Cluster Cj . Wir fordern zusätzlich, dass die Summe aller Zugehörigkeitswerte eines Datensatzes xi zu den Clustern 1 ergibt: k
uij = 1
für alle i
j=1
Leere Cluster werden nicht zugelassen: n
uij > 0
für alle j
i=1
Jeder Cluster Cj hat somit mindestens ein Element, wenngleich möglicherweise auch nur mit einem geringen Zugehörigkeitsprozentsatz. Das Ziel des Fuzzy-c-Means ist eine möglichst gute Clusterung der gegebenen Daten. Als Qualitätsfunktion (vgl. Abschnitt 9.5) dient folgende Summe: Q=
n k i=1 j=1
2 um ij · dist(xi , cj )
(6.1)
Die Gewichte uij sind die in der Matrix U enthaltenen Werte. Hierbei ist dist(xi , cj ) die euklidische Distanz zwischen xi und dem Clusterzentrum cj des Clusters Cj . Durch den Wert von m steuert man, wie weich beziehungsweise scharf die Clusterbildung erfolgt. m muss größer als 1 sein. Doch nun zum eigentlichen Algorithmus. Das Fuzzy-c-Means-Verfahren wurde von Dunn [Dun73] und Bezdek [Bez81] entwickelt. Wie findet man optimale Zugehörigkeitswerte uij ? Offensichtlich handelt es sich um ein Optimierungsproblem. Die Qualitätsfunktion 6.1 muss minimiert werden. Zusätzlich sind die Nebenbedingungen zu erfüllen. Man wendet hier das Lagrangeverfahren an und erhält – auf die mathematischen Details verzichten wir – diese Cluster-Mittelpunkte
cj =
n
um ij · xi
i=1 n
i=1
(6.2)
um ij
und die neuen Zugehörigkeitswerte: uij =
1 2 k dist(xi ,cj ) m−1
s=1
dist(xi ,cs )
(6.3)
180
6 Cluster-Analyse
Der Parameter m ist für die Trennungsschärfe der Clusterbildung verantwortlich. Lässt man m gegen unendlich laufen, so konvergieren die uij gegen k1 . Nähert sich m dagegen 1, so erhält man scharfe Cluster. Die Zugehörigkeitswerte liegen dann dicht bei 0 beziehungsweise 1. Ein Wert von m = 2 hat sich als ein günstiger Startwert für Experimente herausgestellt. Listing 6.11:
Fuzzy-c-Means
1. Initialisiere U . 2. Berechne die Cluster-Mittelpunkte cj gemäß Formel 6.2. 3. Berechne die neue Zugehörigkeitsmatrix U gemäß Formel 6.3. 4. Falls die Verbesserung von U nur noch gering ist (< ), dann stoppe, sonst gehe zu 2. Die Initialisierung von U kann beispielsweise zufallsgesteuert erfolgen. Der Parameter steuert das Ende des Verfahrens. Betrachten wir abschließend die Iris-Daten (vgl. Abschnitt A.1) und wenden den in Knime verfügbaren Fuzzy-c-Means auf die normalisierten Daten an, so erhalten wir folgende Ausgabe:
Abb. 6.41: Clustering der Iris-Daten mit Fuzzy-c-Means (Ausschnitt)
Hier sind die Zugehörigkeitswerte graphisch dargestellt. Knime bietet uns zusätzlich den Gewinnercluster – den Cluster mit der größten Zugehörigkeit – an.
7
Assoziationsanalyse The one who says it cannot be done should never interrupt the one who is doing it. The Roman Rule
Ziel einer Assoziationsanalyse ist es, Assoziationsregeln (vgl. Abschnitt 3.4) zu finden. Assoziationsregeln sind den Klassifikationsregeln ähnlich, nur dass sich die Vorhersage nicht auf das Zielattribut beschränkt, sondern dass auch Zusammenhänge zwischen beliebigen Attributen gesucht werden. Die Assoziationsanalyse gehört zum überwachten Lernen (Abschnitt 2.6). Anhand von gegebenen Beispielen werden Zusammenhänge zwischen Attributen gesucht. Das Gebiet der Suche nach Assoziationsregeln hat sich mittlerweile zu einem eigenen Teilgebiet entwickelt, welches auch unter dem Begriff Association rule mining (ARM) geführt wird. Eines der Hauptanwendungsgebiete der Assoziationsanalyse ist die Warenkorbanalyse. Eine Assoziationsregel der Form „Wer A kauft, kauft auch B“ kann für ein Verkaufsunternehmen von großem Wert sein. Die Waren in einem Supermarkt kann man dann so anordnen, dass A und B nicht allzu weit auseinander platziert werden und dazwischen Produkte angeordnet werden, die auch mit einer gewissen Wahrscheinlichkeit gemeinsam mit A gekauft werden. Das Standard-Verfahren für die Assoziationsanalyse ist der A-Priori-Algorithmus, für den eine Vielzahl von Varianten existiert. Als ein weiteres Verfahren betrachten wir FPGrowth, welches ebenso das häufige gemeinsame Auftreten von Dingen untersucht.
7.1
Der A-Priori-Algorithmus
Der A-Priori-Algorithmus [AS94] ist eines der zentralen iterativen Verfahren zur Erzeugung von Assoziationsregeln. Er stellt eine Weiterentwicklung des AIS-Algorithmus dar, welcher 1993 veröffentlicht wurde [AIS93]. Ziel des A-Priori-Algorithmus ist es, Frequent Itemsets in der Menge aller sogenannten Items zu finden. Als Item werden beliebige Objekte bezeichnet; in einem Warenkorb sind dies die Artikel oder Produkte. Frequent Itemsets sind Item-Mengen, also Mengen von Objekten, deren relative Häufigkeit (ihr Support, vgl. Abschnitte 9.2.1 und 4.4) den durch den Analysten festgelegten minimalen Schwellwert überschreitet. Sei der minimale Support mit 2% festgelegt. Die Menge {Bier, Brot, Margarine} ist ein Frequent Itemset, falls diese Dreier-Kombination in mindestens 2% aller Einkäufe vorkommt.
182
7 Assoziationsanalyse
Wieso reicht es, sich bei der Suche nach Assoziationsregeln auf Frequent Itemsets zu beschränken? Eine Regel „Wer A und B kauft, kauft auch C“ erfüllt den geforderten, minimalen Support genau dann, wenn die Menge {A, B, C} ein Frequent Itemset ist. Der A-Priori-Algorithmus wird in zwei Schritten ausgeführt: 1. Finden von Frequent Itemsets mit ausreichendem Support: Zunächst werden alle Mengen von Produkten gesucht, die den geforderten Support aufweisen. Dies sind bei der Warenkorbanalyse alle Produktmengen, die gemäß dem Support oft genug gemeinsam gekauft wurden. 2. Erzeugen von Assoziationsregeln aus allen Frequent Itemsets: Im zweiten Schritt generiert man aus diesen Frequent Itemsets Regeln. Der A-Priori-Algorithmus beschränkt sich bei der Generierung der Assoziationsregeln im Schritt 2 ausschließlich auf die Verwendung der vorher gefundenen Frequent Itemsets. Dies schränkt den Suchraum ein und verringert dadurch die Komplexität des Verfahrens. Betrachten wir zunächst den 1. Schritt, das Finden von Frequent Itemsets. Begonnen wird mit einelementigen Frequent Itemsets. Im nächsten Durchlauf werden aus den gefundenen einelementigen Frequent Itemsets zweielementige, im darauffolgenden Durchlauf aus den zweielementigen Itemsets dreielementige Itemsets erzeugt. Der Vorgang wird solange wiederholt, bis keine Frequent Itemsets mehr gefunden werden. Die gefundenen Frequent Itemsets werden auch als Kandidaten bezeichnet. Für jeden Kandidaten wird der Support berechnet. Ist er kleiner als der Schwellwert, wird der Kandidat verworfen. Damit die Anzahl der Kandidaten weiter reduziert und das Laufzeitverhalten verbessert werden kann, wird die Monotonieeigenschaft der Itemsets verwendet. M ⊂N
→
supp(M ) ≥ supp(N )
Sie besagt, dass jede nichtleere Teilmenge M eines Frequent Itemsets N wiederum ein Frequent Itemset sein muss. Der Support kann also nicht kleiner werden, wenn man aus einem Kandidaten für ein Frequent Itemset ein Item herausnimmt. Wird umgekehrt zu einem Frequent Itemset ein Item hinzugefügt, so kann der Support nicht größer werden. Das bedeutet, dass man bei der Bildung von zweielementigen Frequent Itemsets nur auf diejenigen einelementigen Frequent Itemsets zurückgreift, die den Support erfüllen. Denn gemäß der Monotonie wird der Support nicht größer, wenn zu einem Itemset ein weiteres Item hinzugefügt wird. Erfüllt also ein einelementiges Frequent Itemset den Support nicht, so kann ein Itemset, welches dieses Item enthält, den geforderten Support nicht erfüllen. Analog müssen wir beim Erzeugen von Vierer-Kandidaten nicht jede beliebige ViererKombination von Items untersuchen, sondern nur die Vierer-Kandidaten, die aus zwei Dreier-Kandidaten entstehen. Haben wir die Frequent Itemsets {A,B,C} und {A,C,D},
7.1 Der A-Priori-Algorithmus
183
so könnte {A,B,C,D} ein Frequent Itemset sein. Diesen Kandidaten müssen wir in Erwägung ziehen. Wissen wir aber, dass {B,C,D} kein Dreier-Frequent-Itemset war, dann kann {A,B,C,D} wegen der Monotonie kein Frequent Itemset sein. Wir müssen also nicht in unserer Warenkorb-Datenbank zählen, ob unser Kandidat den Support erfüllt. Wir wissen vorher, dass der Support nicht erfüllt wird. Das spart viel Rechenzeit.
7.1.1
Generierung der Kandidaten
Das Generieren der Kandidaten betrachten wir nun detailliert. Die Kandidaten werden in zwei Phasen erzeugt: 1. Join-Phase 2. Pruning-Phase In der Join-Phase werden alle (k−1)-elementigen Itemsets, die sich nur in einem Element unterscheiden, paarweise miteinander verbunden. Es entstehen somit k-elementige ItemMengen, bei denen sichergestellt ist, dass mindestens zwei Teilmengen der Größe k − 1 ebenfalls Frequent Itemsets sind. In der Pruning-Phase wird für die k-elementigen Kandidaten geprüft, ob jede (k − 1)elementige Teilmenge auch ein Frequent Itemset war. Ist dies nicht erfüllt, ist auch nur eine Teilmenge kein Frequent Itemset, so kann der k-elementige Kandidat wegen der Monotonie-Eigenschaft kein Frequent Itemset sein. Für die verbleibenden Kandidaten ist dann zu prüfen, ob diese den geforderten minimalen Support aufweisen. Im Listing 7.1 ist der Algorithmus dargestellt. Wir werden den Begriff Frequent Itemset im Folgenden durch FIS abkürzen. Für die Menge der n-elementigen Frequent Itemsets verwenden wir die Abkürzung FISn . Listing 7.1:
A Priori – Generierung der FIS
PROCEDURE GenerateFIS(minsupp, SetOfItemsets) FIS1 := { {x} | supp({x}) ≥ minsupp} // Berechne alle FIS der Größe 1 k := 1 WHILE FISk = ∅ k := k+1 // Join-Phase Berechne FISk := {a ∪ b | a, b ∈ FISk−1 , |a ∪ b| = k} FORALL c ∈ FISk // Pruning: Sind alle k − 1-Teilmengen in FISk−1 ? IF x ⊂ c existiert mit |x| = k − 1 und x ∈ FISk−1 THEN lösche c in FISk FORALL c ∈ FISk // Ist der Support erfüllt? IF supp{c} < minsupp THEN lösche c in FISk RETURN i FISi END GenerateFIS Natürlich führt man den Support-Test sofort durch, wenn ein Kandidat die PruningPhase überstanden hat. Aus Gründen der Übersichtlichkeit werden diese Schritte im Algorithmus getrennt.
184
7 Assoziationsanalyse
Bei der Berechnung der Teilmengen ist es sinnvoll, Teilergebnisse wie Support und Konfidenz zwischenzuspeichern, um häufige Zugriffe auf die Datenbasis zu vermeiden. Wir illustrieren die Arbeitsweise des A-Priori-Algorithmus an einem Beispiel. Beispiel 7.1:
A Priori – Kinobesuch
Wir betrachten Kinobesuche und untersuchen, wer gern mit wem zusammen ins Kino geht. Kinobesuch-ID k1 k2 k3 k4 k5 k6
Kinobesucher Anne, Claudia, Ernst Anne, Ernst, Gudrun Anne, Claudia, Ernst, Franz, Gudrun Anne, Claudia, Horst Bernd, Claudia, Ernst, Franz, Gudrun Bernd, Claudia, Ernst, Gudrun, Horst
Wir fordern als minimalen Support: 50%. Wir beginnen mit dem Zählen des Supports für die einzelnen Personen. Wir zählen dazu die relative Häufigkeit der Personen in unserer Kino-Tabelle mit diesen 6 Datensätzen. Kinobesucher Anzahl Support Anne 4 66% 2 33% Bernd 5 83% Claudia 5 83% Ernst 2 33% Franz 4 66% Gudrun 2 33% Horst Was sehen wir? Bernd, Franz und Horst erfüllen nicht den minimalen Support. Bei der Bildung von Zweier-Frequent-Itemsets können wir diese drei Besucher ignorieren, denn jedes Frequent Itemset der Größe 2 mit einer dieser 3 Personen hat garantiert einen Support, der maximal 33% beträgt. Wieder bezeichnen wir mit FISn die Menge der Frequent Itemsets der Größe n und bilden zuerst die Kandidaten für FIS2 . Kandidaten für FIS2 {Anne, Claudia} {Anne, Ernst} {Anne, Gudrun} {Claudia, Ernst} {Claudia, Gudrun} {Ernst, Gudrun}
Support 50% 50% 33% 66% 50% 66%
Nr. 1 2 3 4 5 6
Beim Schritt vom FIS1 zu FIS2 müssen wir natürlich kein Pruning durchführen, da die echten Teilmengen aller Kandidaten aus FIS2 ja genau den Elementen aus FIS1 entsprechen.
7.1 Der A-Priori-Algorithmus
185
Für alle Kandidaten berechnen wir den Support. Einer dieser sechs Kandidaten – die Nummer 3, {Anne, Gudrun} – erfüllt den Support nicht. Jetzt bilden wir Kandidaten für FIS3 . Dies tun wir aber nicht durch blindes Ausprobieren aller Kombinationen. Vielmehr bilden wir Kombinationen von Frequent Itemsets aus FIS2 , so dass ein Dreier-Kandidat entsteht. Welche Kombinationen können wir bilden? Kombination Kandidaten für FIS3 {Anne, Claudia, Ernst} 1+2, 1+4, 2+4 {Anne, Claudia, Gudrun} 1+5 2+6 {Anne, Ernst, Gudrun} {Claudia, Ernst, Gudrun} 4+5, 4+6, 5+6
Support ?% ?% ?% ?%
Müssen wir jetzt wieder zählen, um den Support zu bestimmen? Nein, die beiden mittleren Kandidaten können wir sofort ausschließen, da {Anne, Gudrun} kein Zweier-Frequent-Itemset ist und somit die Kandidaten {Anne, Claudia, Gudrun} und {Anne, Ernst, Gudrun} aufgrund der Monotonie des Supports den geforderten Support nicht haben können. Unser Kandidat {Anne, Claudia, Ernst} – hier müssen wir wieder zählen – erfüllt den minimalen Support von 50% nicht, hingegen erfüllt {Claudia, Ernst, Gudrun} mit 50% den geforderten Support. Vierer-Kandidaten kann es nicht geben, da |FIS3 | = 1, wir haben nur ein DreierFrequent-Itemset. Mit dem geforderten Support können wir aus dem Beispieldaten fünf Zweier- und ein Dreier-Frequent-Itemset ermitteln.
7.1.2
Erzeugen der Regeln
Nachdem wir die Frequent Itemsets erzeugt haben, zerlegen wir jedes Frequent Itemset Y in 2 nichtleere Teilmengen X und Y \ X und betrachten die Regel: X → (Y \ X)
Man kann beispielsweise für Y = {a, b, c, d} die Regel (a, b) → (c, d) betrachten. Wir müssen natürlich noch prüfen, ob diese Regel die minimale Konfidenz erfüllt. Die Konfidenz ist definiert als (vgl. Abschnitte 9.2.2 und 4.4): conf(X → (Y \ X)) =
supp(Y ) supp(X)
Die Konfidenz ist über den Support definiert. Da wir uns den Support im vorangegangenen Schritt für jedes Frequent-Itemset gemerkt haben, ist es nicht erforderlich, erneut in der Datenbank zu zählen. Wir müssen natürlich alle Regeln, die sich aus den möglichen Zerlegungen von Y ergeben, prüfen. Für jedes Frequent Itemset Y werden Assoziationsregeln der Form X → (Y \ X) – mit X ⊂ Y und X = ∅ – gesucht, die die Konfidenz-Bedingung erfüllen: conf(X → (Y \ X)) =
supp(Y ) ≥ confmin supp(X)
186
7 Assoziationsanalyse
Es ist dabei nicht nötig, alle möglichen Assoziationsregeln auf ihre Konfidenz zu prüfen. Für ein Itemset Y = {a, b, c, d} und X = {a, b, c} ist der Support von X = {a, b} größer als der von X (oder gleich). Durch das Ersetzen von X mit X kann die Konfidenz nur sinken. Wenn die Regel X → (Y \ X) nicht die minimale Konfidenz erreicht, ist es nicht erforderlich, die Regeln der Form X → (Y \ X ) mit X ⊂ X zu betrachten.
Das Ergebnis enthält alle Assoziationsregeln, die sowohl den minimalen Support als auch die minimale Konfidenz aufweisen. Wo liegen die Vorteile des Verfahrens? Es handelt sich um einfache Mengenoperationen. Damit ist eine Implementierung nicht kompliziert. Und die Komplexität wird stark gesenkt. Überlegen Sie, wie viele Regelkandidaten beim einfachen Ausprobieren aller Kombinationsmöglichkeiten (beispielsweise bei 1 Million Verkaufsprodukten) entstehen.
Nachteilig ist, dass die Komplexität zwar drastisch gesenkt wird, man aber trotzdem bei großen Datenmengen Laufzeitprobleme durch die häufige Supportberechnung – was im Allgemeinen einen Zugriff auf eine Datenbank bedeutet – bekommen kann. Beispiel 7.2:
A Priori – Kinobesuch
Wir setzen unser obiges Beispiel fort und betrachten zur Veranschaulichung den einzigen Dreier-Kandidaten: {Claudia, Ernst, Gudrun}. Wir greifen uns nur eine Variante heraus, um die Konfidenz zu berechnen: Claudia, Ernst → Gudrun Den Support haben wir mit 50% bereits berechnet. Wie hoch ist die Konfidenz? conf(M → N ) = P (N |M ) =
supp(M ∪ N ) supp(M )
Also: conf(Claudia, Ernst → Gudrun) =
50 = 0,75 66
Da wir die Support-Werte schon berechnet haben, müssen wir nicht erneut auf unsere Datenbank zugreifen, um die Konfidenz zu erhalten. Wie oft haben wir insgesamt in unserer Datenbank zählen müssen, um den Support zu bestimmen? In der Phase der Generierung der FIS (vergleiche Beispiel 7.1 auf Seite 184) mussten wir wie folgt auf unsere Datenbasis zugreifen: Ermittlung der Einer-Frequent-Itemsets FIS1 : 7 Ermittlung der Zweier-Frequent-Itemsets FIS2 : 6 Ermittlung der Dreier-Frequent-Itemsets FIS3 : 2 Ermittlung der Vierer-Frequent-Itemsets FIS4 : 0
7.1 Der A-Priori-Algorithmus
187
Bei einem naiven Ansatz hätten wir allein für das Finden von Frequent Itemsets der Größe 2 insgesamt 21 Varianten probieren müssen, für FIS3 und FIS4 sogar jeweils 35. Die Anzahl möglicher Regeln – auch wenn man auf der rechten Regelseite nur genau ein Item platziert – vervielfacht die Komplexität. Da die Komplexität dieses Verfahrens allein durch die häufigen Zugriffe auf die Datenbank, in der die Itemsets gespeichert sind, bestimmt ist, ist die Einsparung offensichtlich. Beispiel 7.3:
Frequent Itemset
Seien folgende Frequent Itemsets der Größe 3 bereits berechnet. Wir überspringen also die Erzeugung der Mengen FIS1 , FIS2 sowie FIS3 und nehmen folgende Frequent Itemsets der Größe 3 als gegeben an: {a, b, c} (1) {a, b, d} (2) {a, c, d} (3) {a, c, e} (4) {b, c, d} (5)
Daraus lassen sich folgende 4er-Kandidaten erzeugen (Join): {a, b, c, d} (1+2) {a, c, d, e} (3+4) {a, b, c, e} (1+4)
Durch Pruning fallen {a, c, d, e} und {a, b, c, e} weg, da diese Mengen je eine (k − 1)Teilmenge enthalten ({c, d, e} beziehungsweise {b, c, e}), die keine Dreier-FrequentItemsets sind. Bisher haben wir Assoziationsregeln nur auf boolesche Daten angewendet: Unsere Datensätze dürfen nur Attribute enthalten, die wahr oder falsch sind: Butter wird gekauft, Claudia geht ins Kino. Kann man Assoziationsregeln auch für Datensätze vom folgenden Typ finden? Alter < 40 ≥ 40 < 40 ≥ 40 < 40 < 40 ≥ 40 < 40 ≥ 40
Puls unregelmäßig unregelmäßig regelmäßig unregelmäßig unregelmäßig regelmäßig regelmäßig regelmäßig regelmäßig
Blutdruck normal normal normal unnormal normal normal unnormal normal normal
Zustand gesund krank gesund krank krank gesund krank gesund gesund
Auf diese Daten kann man auf den ersten Blick den A-Priori-Algorithmus nicht anwenden. Wenn wir aber die Attribute in binäre Attribute (vgl. Abschnitt 8.2.4) umwandeln, dann ist der Algorithmus problemlos einsetzbar (Tabelle 7.1 auf der nächsten Seite).
188
7 Assoziationsanalyse
Alter Alter Puls Puls Blutdruck Blutdruck Zustand Zustand unnormal=n 7 2. unnormal=n 7 ==> normal=y 7 3. ge40=n 5 ==> less40=y 5 4. less40=y 5 ==> ge40=n 5 5. less40=y 5 ==> unnormal=n 5 6. less40=y 5 ==> normal=y 5 7. ge40=n 5 ==> unnormal=n 5 8. ge40=n 5 ==> normal=y 5 ....
8 12 8 2 conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1)
7.1 Der A-Priori-Algorithmus
189
Es fällt auf, dass wir durch die Binärcodierung etliche unsinnige Regeln – wie beispielsweise die Regeln 1. . . 4 – erzeugen. Dies lässt sich zwar durch geeignete Filter im Nachhinein korrigieren, ist aber unnötig. Da wir ja ohnehin schon Binärattribute haben (das Alter, der Blutdruck, der Puls und der Zustand sind alle binär), reicht es aus, dass wir unsere Daten wie folgt darstellen: Alter ≥40 n y n y n n y n y
Puls regelmäßig n n y n n y y y y
Blutdruck normal y y y n y y n y y
Zustand gesund y n y n n y n y y
Nun findet Knime – mit einem minimalen Support von 30% und einer minimalen Konfidenz von 90% – eine Reihe von nützlichen Regeln: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ge40=n 5 ==> normal=y 5 gesund=y 5 ==> normal=y 5 ge40=n gesund=y 4 ==> normal=y 4 regelmaessig=y gesund=y 4 ==> normal=y 4 regelmaessig=y normal=y 4 ==> gesund=y 4 ge40=n regelmaessig=y 3 ==> normal=y 3 ge40=n regelmaessig=y 3 ==> gesund=y 3 ge40=n regelmaessig=y gesund=y 3 ==> normal=y 3 ge40=n regelmaessig=y normal=y 3 ==> gesund=y 3 ge40=n regelmaessig=y 3 ==> normal=y gesund=y 3
conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1) conf:(1)
Dieses Vorgehen ist nicht auf binäre Attribute beschränkt. Liegt neben weiteren Attributen ein Attribut alter mit den Ausprägungen jung, mittel und alt vor, so beginnt das A-priori-Verfahren mit den Itemsets: alter=jung, alter=mittel und alter=alt. Für die Berechnungen des Supports und der Konfidenz zählt man nun einfach, wie oft das Attribut die entsprechende Ausprägung hat. Auch mit den Originaldaten der Tabelle auf Seite 187 kann man in Knime arbeiten. Man muss nur mittels Create Collection Column die Itemsets bilden (Abbildung 7.2). Einige Assoziationsregeln lassen sich auch als Klassifikationsregeln (siehe Abschnitte 3.2 und 4.3) interpretieren. Wollen wir den Zustand (gesund oder krank) vorhersagen, so beschränken wir die rechte Seite der Wenn-Dann-Regeln auf diesen Zustand. Von den obigen Regeln sind dann die folgenden interessant: 5. 7. 9. 10.
regelmaessig=y normal=y 4 ==> gesund=y 4 ge40=n regelmaessig=y 3 ==> gesund=y 3 ge40=n regelmaessig=y normal=y 3 ==> gesund=y 3 ge40=n regelmaessig=y 3 ==> normal=y gesund=y 3
conf:(1) conf:(1) conf:(1) conf:(1)
190
7 Assoziationsanalyse
CSV Reader
Create Collection Column
Association Rule Learner (Borgelt)
Einlesen
Sammeln
Regeln Þnden
Abb. 7.2: A Priori – Variante 2
Durch diese Regeln können wir aber nicht für jeden Fall den Zustand des Patienten vorhersagen. Insofern werden wir mit Assoziationsregeln selten eine komplette Klassifikation erreichen. Aber zumindest für Teilmengen ist eine Klassifikation möglich. Aufgabe 7.1:
Assoziationsanalyse – A Priori
Seien diese Einkäufe gegeben: ID t1 t2 t3 t4 t5 t6
gekaufte Artikel Brot, Saft, Cola, Bier Saft, Cola, Wein Brot, Saft, Wasser Cola, Bier, Saft Brot, Saft, Cola, Bier, Wein Wasser
Vervollständigen Sie zunächst für die gegebenen Assoziationsregeln folgende Tabelle: Regel Saft → Cola Cola → Saft Cola → Bier Bier → Cola
Support
Konfidenz
Finden Sie dann alle Frequent Itemsets mit einem minimalen Support von 0,4.
Aufgabe 7.2:
Assoziationsanalyse – A Priori
Seien diese 3-elementigen Frequent Itemsets gegeben: {{i1, i2, i3}, {i2, i3, i4}, {i3, i5, i7},
{i1, i2, i4}, {i2, i3, i5}, {i2, i4, i5},
{i1, i3, i4}, {i3, i4, i5}, {i3, i6, i7}}
Welche Kandidaten der Länge 4 entstehen während der Join-Phase? Welche dieser Kandidaten werden in der Pruning-Phase gelöscht? Kann es Kandidaten der Länge 5 geben?
7.2 Frequent Pattern Growth Aufgabe 7.3:
191
Assoziationsanalyse
Angenommen, unsere gegebenen Beispieldaten haben 6 Attribute mit jeweils 2 möglichen Werten. Wie viele Regeln kann man aufstellen, wenn auf der rechten Seite exakt ein Item steht?
7.2
Frequent Pattern Growth
Es gibt sowohl eine Reihe von Modifikationen des A-Priori-Algorithmus als auch andere Methoden zum Finden von Assoziationsregeln. Ein solches alternatives Verfahren ist FP-Growth (Frequent Pattern Growth), welches ohne den Schritt der Generierung der Frequent Itemsets auskommt (siehe [HKP12]). Die Idee ist hier – ausgehend von den relativen Häufigkeiten der einzelnen Items – durch eine geschickte Repräsentation der Itemsets und das gleichzeitige Zählen der Häufigkeiten einen gerichteten Graphen zu erzeugen, aus dem man direkt die Frequent Itemsets – die bei diesem Verfahren Frequent Pattern genannt werden – ablesen kann. Wir betrachten folgende Itemsets: ID 01 02 03 04 05 06
Itemset a, d, e, f, g a, b, c, d, f, g a, d, f a, c, g a, c, f, g c, d, e, f
Im ersten Schritt werden 1. die relativen Häufigkeiten berechnet, 2. die Itemsets um die Items reduziert, die den Support nicht erfüllen, und 3. die Itemsets bezüglich der relativen Häufigkeit der Items absteigend sortiert. Wählen wir als minimalen Support 40%, so ergibt sich: Item a b c d e f g
Häufigkeit 5 1 4 4 2 5 4
Support erfüllt? ja nein ja ja nein ja ja
ID 01 02 03 04 05 06
Itemset a, f, d, g a, f, c, d, g a, f, d a, c, g a, f, c, d, g f, c, d
Die Items b und e erfüllen den Support nicht und werden gelöscht. Dann werden die Itemsets sortiert. Diese sortierten Itemsets werden als Pattern bezeichnet. Nun wird der sogenannte FP-Tree aufgebaut. Es werden alle Pattern (die sortierten Itemsets) durchlaufen und in den FP-Tree übertragen. Man legt zusätzlich eine Tabelle
192
7 Assoziationsanalyse
an, in der alle verbliebenen Items mit einem Link auf den ersten erzeugten Knoten eingetragen werden. Beginnen wir mit dem Übertragen des ersten Pattern (Itemset 01), so ergibt sich der in Abbildung 7.3 dargestellte Baum.
root Item
Link
a f c d g
a/1 f/1 d/1 g/1
Abb. 7.3: FP-Tree – Schritt 1, afdg
Im Graphen haben wir die (bisherige) Häufigkeit vermerkt. Nun arbeiten wir das nächste Pattern (Itemset 02) ein (Abbildung 7.4). Man beginnt an der Wurzel und geht möglichst weit auf bereits bekannten Wegen. Dort erhöht man die Zähler um jeweils 1. Erst wenn ein neuer Teilpfad beginnt (hier ab dem Item c), wird der aktuelle Pfad verlassen. Für das Itemset 03 ergibt sich, dass dieser Pfad bereits komplett vorhanden ist (Abbildung 7.4).
root Item a f c d g
root Item
Link a/2 f/2 d/1
c/1
g/1
d/1
a f c d g
g/1 Abb. 7.4: FP-Tree – Schritt 2, afcdg und Schritt 3, afd
Link a/3 f/3 d/2
c/1
g/1
d/1 g/1
7.2 Frequent Pattern Growth
193
Nach Abarbeitung aller 6 Pattern erhalten wir den in Abbildung 7.5 dargestellte Baum.
root Item
Link
a f c d g
f/1
a/5 f/4
c/1
d/2
c/2
g/1
d/2
c/1 g/1
d/1
g/2 Abb. 7.5: FP-Tree
Nun ist noch zu klären, wie man aus diesem Baum die Assoziationsregeln extrahiert. Dieser Schritt wird hier nur skizziert, für eine detaillierte Darstellung sei auf [HKP12] oder [Bra13] verwiesen. Um auf alle Items Zugriff zu haben, werden die unterschiedlichen Knoten, die zu einem Item gehören, verbunden. Dies wird durch die gestrichelten Verbindungen dargestellt. Wir betrachten zunächst eine vereinfachte Variante des FP-Trees, einen sogenannten Single Prefix Path FP-Tree. Dieser Baum ist dadurch ausgezeichnet, dass von der Wurzel nur ein Pfad abgeht, der irgendwann verzweigt.
root a/5 f/4 d/2
c/2
g/1 Abb. 7.6: Single prefix path FP-Tree
194
7 Assoziationsanalyse
Der Baum besteht aus zwei Teilen, dem Präfix P (af) und einem Multipath-Teil MP, der aus 2 Teilpfaden besteht (dg und c). In beiden Teilbäumen P und MP kann nun getrennt gesucht werden. Hier gestaltet sich die Suche einfach. Der MP-Teilbaum enthält kein Frequent Itemset, da wir einen Support von 40% gefordert hatten. Bei der Suche nach geeigneten Kandidaten gehen wir von unten nach oben. Wir sehen beispielsweise, dass g nur einmal vorkommt und können g – in diesem Teilbaum – sofort ausschließen. Jetzt erkennen wir auch den Vorteil der sortierten Darstellung der Items. Der Support einer Menge ist immer durch das unterste Element des entsprechenden Teilbaums bestimmt. Gäbe es in MP ein Frequent Itemset, so könnte man dies nun mit jedem beliebigen Frequent Itemset aus P verknüpfen. Im Präfixteil des Baums finden wir drei Mengen: {a}, {f}, {a, f}. Da der MP-Teil keinen Kandidaten liefert, bleibt hier als einzige Menge, die nicht nur ein Item enthält: {a, f}. Doch zurück zum FP-Tree aus Abbildung 7.5. Auch cg ist ein Frequent Itemset, welches den Support erfüllt. Dies ermittelt man, indem man zunächst alle Pfade, die g nicht enthalten, eliminiert (Abbildung 7.7) und dann – von g ausgehend – auch alle anderen gKnoten untersucht. Dazu werden die gestrichelten Verbindungen benötigt. Alle Knoten, die unterhalb von g liegen, können wir ignorieren, da diese separat betrachtet werden. Wir arbeiten nur von unten nach oben.
root a/5 f/4 c/2 d/2
d/2
g/1
g/2
c/1
g/1
Abb. 7.7: Reduzierter FP-Tree für g
Man sammelt nun alle Pattern, die mit g als Suffix möglich sind: afd/1 und afcd/2 und ac/1 Diese 3 Pfade erfüllen den Support nicht. Wir können sie aber zu 2 Pfaden zusammenfassen, die dann den minimalen Support von 40% erfüllen. Die Pattern afd und afcd haben als gemeinsames Teilmuster afd/3; afcd und ac werden zu ac/3. afd/3 und ac/3
7.3 Assoziationsregeln für spezielle Aufgaben
195
Die Pattern acg und afdg – und alle deren Teilmengen – sind somit Frequent Pattern. Dies führt man für alle Items durch und erhält: Item Pattern im FP-Tree reduzierter FP-Tree g afd/1; afcd/2; ac/1 afd/3; ac/3 d
af/2; afc/2; fc/1
af/4; fc/3
c f
af/2; a/1; f/1 a/4
a/3; f/3 a/4
Frequent Pattern afdg, afg, adg, fdg, ag, fg, dg; acg, cg, (ag) afd, ad, fd; fcd, cd, fd ac, fc af
Bei den Frequent Pattern tauchen nur diejenigen auf, die auf das jeweilige Item enden. Berücksichtigt man die obigen Ausführungen zu Single Prefix Path Trees, kann man das Finden aller Kombinationen noch vereinfachen. Aufgabe 7.4:
Assoziationsanalyse – FP Growth
Suchen Sie mit Hilfe des FP-Growth-Verfahrens die Frequent Pattern im KinoBeispiel (Beispiel 7.1 auf Seite 184). Wir fordern als minimalen Support: 50%. Kinobesuch-ID k1 k2 k3 k4 k5 k6
7.3
Kinobesucher Anne, Claudia, Ernst Anne, Ernst, Gudrun Anne, Claudia, Ernst, Franz, Gudrun Anne, Claudia, Horst Bernd, Claudia, Ernst, Franz, Gudrun Bernd, Claudia, Ernst, Gudrun, Horst
Assoziationsregeln für spezielle Aufgaben
In diesem Abschnitt betrachten wir einige der im Kapitel 4 angesprochenen speziellen Assoziationsregeln etwas genauer. Darüber hinaus gibt es weitere Arten von Assoziationsregeln, beispielsweise Fuzzy-Assoziationsregeln, die mit vagen Begriffen umgehen können.
7.3.1
Hierarchische Assoziationsregeln
Häufig ist man in der Situation, dass der Support sehr, sehr niedrig angesetzt werden muss, da die Vielfalt an Items und damit die Heterogenität zu groß ist. Dies ist bei Warenkorbanalysen sehr oft der Fall. In den Warenkorbdatenbanken sind die detaillierten Produkte abgespeichert. Die Datenbank unterscheidet zwischen dem Liter Milch von Anbieter A und dem Liter Milch von Anbieter B. Dies ist für eine Warenkorbanalyse hinderlich. Hier interessiert uns beispielsweise eine allgemeine Regel wie: Wer Milch kauft, kauft auch Kakao. Insofern ist die Unterscheidung zwischen Hersteller A und B nicht zweckmäßig.
196
7 Assoziationsanalyse
Natürlich kann es sehr wohl sinnvoll sein, zwischen den Anbietern zu unterscheiden. Aber auch dann ist eine Zusammenfassung von Produkten durchaus sinnvoll. Beispielsweise kann man alle Produkte des Anbieters A zusammenfassen. Beispiel 7.4:
Hierarchische Assoziationsregeln
Betrachten wir einen kleinen Ausschnitt einer fiktiven Warenkorbdatenbank. Hier haben wir uns bereits von den Herstellern gelöst. Gabel x
Löffel x
x x
Messer
Tasse
x
x x
x
Teller x x
Becher x
x
... ... ... ... ... ... ...
Hier können wir keinen vernünftigen Zusammenhang zwischen den Produkten herstellen. Wir können aber eine Begriffshierarchie einführen; wir verwenden Besteck als Oberbegriff für die Items Gabel, Löffel, Messer und Geschirr als Oberbegriff für Tasse, Teller, Becher. Wir sehen sofort, dass Assoziationsregeln für Besteck und Geschirr einen höheren Support als Regeln mit den ursprünglichen Produkten aufweisen. Man entfernt nun die Unterbegriffe wie Gabel, Löffel, Messer aus der Datenbank und ersetzt diese durch ein Attribut Besteck. Es gibt einige Algorithmen (siehe [SA95]), die die Taxonomien gleich beim Generieren der Frequent Itemsets benutzen.
7.3.2
Quantitative Assoziationsregeln
Häufig hat man nicht nur ordinale und nominale Attribute in den Beispieldaten, sondern auch metrische Werte, beispielsweise die Anzahl der Kinder. Eine mögliche Assoziationsregel könnte lauten: Wer mehr als drei Kinder hat, hat ein großes Auto. Für solche Attribute wie die Kinderanzahl sind unsere beiden Algorithmen auf den ersten Blick nicht geeignet. Die obigen Algorithmen arbeiten auf booleschen Attributen. Sie zählen, wie oft welche Attribute – in Kombination mit anderen Attributen – wahr sind. Man kann aber durchaus die obigen Algorithmen analog anwenden. Eine Möglichkeit ist – falls die Anzahl der Werte, die das numerische Attribut annehmen kann, gering ist – die Umwandlung des numerischen Attributs in ein ordinales. Jeder Wert wird einfach als ordinale Ausprägung des Attributs aufgefasst. Dies funktioniert natürlich nicht mehr, wenn wir viele Ausprägungen haben.
7.3 Assoziationsregeln für spezielle Aufgaben
197
Gibt es viele Ausprägungen, so stößt man auf zwei Probleme. Zum einen können die Regeln unsinnig sein, denn meistens ist die Unterscheidung zwischen einer 21-jährigen und einer 22-jährigen Person nicht sinnvoll. Zum anderen kann es passieren, dass der geforderte Support nicht erreicht wird, da es zu den einzelnen Ausprägungen des Attributs zu wenig Datensätze gibt. In [SA96] wird auf die Behandlung numerischer Attribute eingegangen. Die Idee ist, auf intelligente Art Intervalle zu bilden. Und zwar erfolgt das Zusammenfassen von Intervallen immer unter der Berücksichtigung des geforderten Supports und der minimalen Konfidenz. Die Intervalle können dann als boolesche Attribute aufgefasst werden. Das Intervall 2 oder 3 Kinder ist wahr (1), wenn die Person 2 oder 3 Kinder hat, sonst falsch(0). Ähnlich wie bei der hierarchischen Assoziationsanalyse fassen wir also Attributwerte zusammen, nur eben nicht durch Oberbegriffe, sondern durch Intervalle. Beispiel 7.5:
Quantitative Assoziationsregeln
Seien diese Daten gegeben: Alter 35 27 40 24 42 33 23
Kinder 3 1 4 1 4 2 0
Verheiratet j j j n j j n
Autos 2 1 2 0 2 2 0
Das Attribut Verheiratet ist nominal, die anderen sind metrisch. Man könnte die Attribute Kinder und Autos als ordinal auffassen, da nur wenige Ausprägungen vorhanden sind. Fordert man einen Support von 20%, so benötigen wir stets mindestens zwei Datensätze, die denselben Wert enthalten. Somit fallen die Kinderzahl 0 und 2 heraus, da diese nur je einmal vorkommen. Gleiches gilt für die Autoanzahl 1. Natürlich bekommen wir auch mit diesem Ansatz Regeln, beispielsweise: WENN Kinder = 4 DANN Autos = 2. WENN Verheiratet = n DANN Autos = 0 (und umgekehrt). Trotzdem ist dies unbefriedigend, denn wir haben keine Chance, auf eine Regel zu kommen, die für junge Leute die Anzahl der Kinder auf maximal 1 vorhersagt. Bildet man nun für das Alter und für die Kinder geeignete Intervalle (bezüglich der Details sei auf [SA96] verwiesen) • Alter39 • Kinder01, Kinder>1
198
7 Assoziationsanalyse
und transformiert die Attribute in boolesche Attribute, Alter 39 0 0 1 0 1 0 0
Kinder 01 0 1 0 1 0 0 1
Kinder >1 1 0 1 0 1 1 0
Verheiratet
Auto0
Auto1
Auto2
j j j n j j n
0 0 0 1 0 0 1
0 1 0 0 0 0 0
1 0 1 0 1 1 0
so erhält man mehr sinnvolle Regeln. Beispielsweise wird jetzt die Regel gefunden: WENN Alter 9 auftreten. • Verletzte Plausibilitätsbeziehungen: Ein sonst umsatzschwacher Kunde hat plötzlich einen sehr hohen Jahresumsatz. Widersprüchliche Daten können beispielsweise dadurch entstehen, dass Attributwerte nicht zusammenpassen.
212
8 Datenvorbereitung
Beispiel 8.3:
Widersprüchliche Daten
• Das Alter eines Kunden passt nicht zu seinem Geburtsjahr.
• Der Wohnort einer Person und die Postleitzahl widersprechen sich. Auch das mehrfache Vorkommen von Datensätzen kann Probleme verursachen, da bei vielen Verfahren dieser Datensatz aufgrund des Mehrfachauftretens ein höheres Gewicht bekommt. Dies tritt beispielsweise beim Entscheidungsbaumlernen, beim Trainieren neuronaler Netze und auch beim k-Nearest-Neighbour-Verfahren auf. Wie kann man mit derartigen Problemen umgehen? Meistens kommt man in diesen Situationen um eine Korrektur per Hand oder durch speziell dafür geschriebene Vorverarbeitungsprogramme nicht herum. Im Allgemeinen gibt es bei solchen Fehlern – wir gehen davon aus, dass wir bereits nur eine Datentabelle haben – nur zwei Kategorien von Korrekturen. • Löschen Wir können den Datensatz mit dem falschen Wert löschen. Ebenso können wir Attribute, in denen mehrfach falsche Werte vorkommen, entfernen. • Zuhilfenahme anderer Datensätze Wir versuchen, auf der Basis der nicht fehlerbehafteten Datensätze einen plausiblen Wert zu finden. Die erste Möglichkeit ist offensichtlich, hat aber – analog der Diskussion um fehlende Werte – den Nachteil, dass unser Datenbestand eventuell zu sehr schrumpft, so dass ein sinnvolles Data Mining unmöglich wird. Die zweite Möglichkeit – die Zuhilfenahme anderer Datensätze – ist ebenso nachvollziehbar. Beide Möglichkeiten folgen dem Vorgehen beim Umgang mit fehlenden Werten. Problematisch wird es, wenn wir widersprüchliche Werte haben und nicht klären können, welcher Wert falsch, welcher richtig ist. Die Möglichkeit des Löschens besteht natürlich immer noch, betrifft dann aber sofort mindestens zwei Datensätze.
8.2.3
Datenreduktion
Bei vielen Data-Mining-Aufgaben sind die Datensätze sehr umfangreich. Dies kann dazu führen, dass Data Mining mit diesen Datenmengen sehr aufwändig beziehungsweise unmöglich ist. Durch Datenreduktion versucht man, dieses Problem zu mindern oder zu lösen. Dabei gibt es zwei Optionen. Zum einen kann man durch das Zusammenfassen von Attributen die Komplexität verringern. Zum anderen kann durch eine geeignete Stichprobe – eine repräsentative Teilmenge aller gegebenen Datensätze – die Problemgröße reduziert werden. Folgende Techniken können angewendet werden: 1. Aggregation 2. Dimensionsreduktion
8.2 Arten der Datenvorbereitung
213
3. Datenkompression 4. Numerische Datenreduktion Aggregation Unter Aggregation – auch Verdichtung – versteht man das Zusammenfassen von Fakten zu einem Fakt oder das Generalisieren der Daten. So kann man beispielsweise Daten durch ihre Mittelwerte ersetzen oder Teilwerte zu einer Gesamtsumme zusammenfassen (siehe Seite 223). Hat man die Umsätze einer Firma pro Monat vorliegen, so kann man diese Werte zum Jahresumsatz aufsummieren. Statt 12 einzelnen Datensätzen wird dann mit nur einem weitergearbeitet. Neben dieser zeilenweisen Aggregation, kann auch eine spaltenweise Aggregation erfolgen, die mehrere Attribute aggregiert. Hat man Tag, Monat, Jahr als einzelne Attribute, so kann man diese 3 Attribute zu einem Attribut Datum zusammenfassen. Ebenso können beispielsweise die Umsätze der einzelnen Unterabteilungen zu einem Attribut – dem Gesamtumsatz – zusammengefasst werden. Damit reduziert man nicht die Zahl der Datensätze, aber die Anzahl der Attribute. Dimensionsreduktion Bei der Dimensionsreduktion werden irrelevante Daten – also Attribute – vernachlässigt und relevante Daten (Attribute) einbezogen. Folgende Vorgehensweisen bieten sich an: • Schrittweise Vorwärtsauswahl: Gute Attribute werden schrittweise in die Zielmenge eingegliedert. Die Attributmenge wächst sukzessive. • Schrittweise Rückwärtseliminierung: Ausgehend von der Gesamtmenge werden uninteressante Attribute schrittweise eliminiert. Beide Vorgehensweisen lassen sich natürlich kombinieren. Im Rahmen der Dimensionsreduktion stellt sich die Frage, welche Attribute man sofort weglassen kann, ohne eventuell signifikante Informationen zu verlieren. Offensichtlich sind die folgenden Situationen: 1. Die Ausprägungen eines Attributs sind in unserer Daten alle identisch. Haben wir beispielsweise nur Daten über Frauen, dann können wir das Attribut Geschlecht löschen. Es kann keinen Beitrag leisten. Dies ändert sich natürlich sofort, wenn Daten über Männer dazukommen. 2. Sind bei einem nominalen Attribut alle Werte unterschiedlich, dann können wir nicht erwarten, dass dieses Attribut bei der Generierung eines Entscheidungsbaums einen Beitrag liefert. Dies sieht natürlich anders aus, falls man k-Nearest Neighbour anwenden möchte. Dann kann es ja durchaus passieren, dass neue Daten mit exakt einem dieser Werte auftreten. Auf metrische Daten können auch Techniken wie die Hauptachsentransformation oder die multidimensionale Skalierung (siehe Seite 253) angewendet werden, um die Dimension zu reduzieren.
214
8 Datenvorbereitung
Datenkompression Die Daten werden entweder transformiert oder codiert, um eine Reduktion der Datenmenge und damit eine Reduktion der Komplexität des Data Mining zu erhalten. Hier steht die Verringerung der Anzahl der Attribute im Vordergrund. Beispielsweise fasst man Binärattribute zu einem Byte zusammen oder vereint die separaten Attribute für die Produkte Löffel, Gabel, Messer . . . zu einem Attribut Besteck (vgl. Aggregation, Seite 223). Numerische Datenreduktion Eine numerische Datenreduktion – die Auswahl einer repräsentativen Teilmenge der gegebenen Datensätze – kann auf der Basis von Stichproben realisiert werden. Man nimmt für das Data Mining nicht die gesamte Datenmenge, sondern nur eine – natürlich viel kleinere – Stichprobe. Zu klären ist die Frage, wie man diese Stichprobe bildet. • Zufällige Stichprobe Es werden rein zufällig Datensätze aus der Quelldatenmenge ausgewählt. • Repräsentative Stichprobe Es werden zufällig Datensätze aus der Quelldatenmenge ausgewählt, allerdings so, dass die Stichprobe repräsentativ ist. Dazu wird die Auswahl unter Beachtung der Häufigkeitsverteilungen bestimmter Attribute getroffen. Ebenso sollte man absichern, dass jede Attributausprägung – bei nominalen und ordinalen Attributen – vorkommt. Bei Klassifikationsproblemen muss jede Klasse ausreichend vertreten sein. • Geschichtete Stichprobe Wie bei der repräsentativen Stichprobe werden Datensätze zufällig ausgewählt. Es wird aber darauf geachtet, dass bedeutsame Attribute auch einen Wert im Datensatz besitzen. • Inkrementelle Stichproben Eine erste Stichprobe wird nach der Datenanalyse Schritt für Schritt erweitert. Dies kann nach einem der obigen Verfahren geschehen. • Average Sampling Die Quelldatenmenge wird in Teile gespalten und jeder Teil unabhängig von den anderen einer Analyse unterzogen. Die Ergebnisse werden im Anschluss daran gemittelt und so zu einem Gesamtergebnis vereint. • Selektive Stichprobe Aus der Quelldatenmenge werden unergiebige Datensätze herausgefiltert. Anschließend wird eine Stichprobenziehung durchgeführt. • Windowing Ähnlich wie bei der inkrementellen Stichprobe wird hier von einer Basisstichprobe ausgegangen. Diese wird nach der Analyse aber nur um ergiebige Datensätze – beispielsweise Datensätze für Klassen, bei denen das Verfahren sich schlecht
8.2 Arten der Datenvorbereitung
215
verhielt – erweitert. Sprich: Zu Beginn wird nur ein Teil der Trainingsdaten (Datenfenster) verwendet. Dann werden nur noch Trainings-Datensätze in die Trainingsmenge aufgenommen, bei denen sich das erlernte Verfahren – beispielsweise ein Entscheidungsbaum – falsch verhält. • Clustergestützte Stichprobe Bei dieser Methode werden ähnliche Datensätze in Clustern zusammengefasst und ein Repräsentant (oder einige) gewählt, der im Anschluss für die Analyse herangezogen wird. Alternativ kann man eine numerische Datenreduktion auch über lineare Regression erreichen. Dabei ersetzt man die Daten durch die Koeffizienten einer linearen Regressionsfunktion. Knime unterstützt die Stichprobenwahl. Die einfachste Variante ist in Abbildung 8.4 dargestellt. Der Partitioning-Knoten bietet die Möglichkeit, den gesamten Datenbestand in einem bestimmten Prozentsatz aufzuteilen. Bei Klassifikationsaufgaben sollte man Stratified Sampling wählen, um in den Teilmengen die Häufigkeitsverteilung bezüglich des Zielattributs zu erhalten. Dies ist sinnvoll, da ein Verfahren zum Generieren eines Entscheidungsbaums natürlich ausreichend Beispiele für alle möglichen Werte der vorherzusagenden Klasse braucht, um sinnvolle Vorhersagen liefern zu können. Eine Vorhersage für gute und schlechte Kunden wird nicht gelingen, wenn in der Trainingsmenge nur schlechte Kunden auftauchen.
Abb. 8.4: Stichprobenwahl nach Prozenten
Oft tritt bei Klassifikationsaufgaben das Problem auf, dass die Zielklassen nicht gleich häufig in der Datenmenge vertreten sind. Knime bietet auch hierfür Unterstützung, in Form des Knotens Equal Size Sampling.
216
8.2.4
8 Datenvorbereitung
Datentransformation
Bisher haben wir Probleme der Datenvorbereitung diskutiert, die unabhängig vom jeweiligen Verfahren auftreten. In diesem Abschnitt nähern wir uns nun dem eigentlichen Data-Mining-Schritt, der tatsächlichen Datenanalyse. Oftmals sind die Daten in ihrer ursprünglichen Form nicht zum Data Mining geeignet. Die Datentransformation hat die Aufgabe, die Daten in eine Form umzuwandeln, mit der das jeweilige Data-MiningVerfahren arbeiten kann. Es gibt eine Reihe von Transformationen, die bei der Datenvorbereitung hilfreich sind. Häufig ist eine Anpassung 1. der Datentypen, 2. von Konvertierungen oder Codierungen, 3. von Zeichenketten, 4. von Datumsangaben, 5. von Maßeinheiten und Skalierungen erforderlich. Weitere Transformationen können sinnvoll sein: 1. Kombination oder Separierung von Attributen 2. Berechnung abgeleiteter Werte 3. Datenaggregation 4. Datenglättung Anpassung der Datentypen; Konvertierungen und Codierungen Oft stellt sich die Frage, von welchem Datentyp ein Attribut ist. Betrachtet man die 2 als einzelnen Wert, so stellt sich die Frage: Ist diese 2 vom Datentyp Character oder Integer? Sollte eine Umwandlung stattfinden? Häufig können Werte auf unterschiedliche Weise dargestellt werden: Den Wochentag kann man als Mo . . . So oder als Zahlen 1 . . . 7 darstellen. Andererseits sind wir häufig – durch das verwendete Verfahren – gezwungen, Daten in andere Datentypen umzuwandeln. So verlangt beispielsweise der ID3-Algorithmus (Abschnitt 5.2.3) Attribute, die ordinal beziehungsweise nominal sind, da der ID3 nicht mit metrischen Attributen umgehen kann. Gleiches gilt für den Naive-Bayes-Algorithmus. Für den k-Nearest-Neighbour-Algorithmus (Abschnitt 5.1) sind aber metrische Daten erforderlich. Es kann also erforderlich sein, metrische in nominale Attribute (oder umgekehrt) umzuwandeln. An zwei Beispielen wird illustriert, wie eine solche Umwandlung vonstatten gehen kann.
8.2 Arten der Datenvorbereitung Beispiel 8.4:
217
Codierungen – Körpergröße
Möchten wir das Attribut Körpergröße bei der Generierung eines Entscheidungsbaums mittels ID3 verwenden, müssen wir es in ein nominales Attribut umwandeln. • Variante 1: Gibt es nur eine geringe Anzahl von Werten, so können wir einfach den Zahlenwert in einen String umwandeln. • Variante 2: Wir bilden Intervalle, beispielsweise [1,00−1,60], und geben diesen Namen: klein. Wir können dies manuell tun oder ein automatisches Verfahren – beispielsweise Cluster-Bildung – anwenden. Eine weitere Technik haben wir mit dem Binning schon kennengelernt. Beispiel 8.5:
Codierungen – Leistungsklassen von Autos
Haben wir ein Attribut Geschwindigkeit mit ordinalen Ausprägungen (sehr schnell, schnell, mittelschnell, langsam) gegeben und wollen den k-Nearest-Neighbour-Algorithmus mit dem euklidischen Abstand anwenden, so müssen wir das Attribut zunächst in ein numerisches umwandeln. Wollen wir dies normiert tun – also Werte zwischen 0 und 1 haben – so bietet sich folgende Codierung an: • sehr schnell → 1
• schnell → 0,66
• mittelschnell → 0,33
• langsam → 0
Die Umwandlung von sehr schnell in 1 und langsam in 0 ist offensichtlich, da wir ja eine Codierung im Intervall [0, 1] haben wollen. Allerdings könnten wir die beiden anderen Werte durchaus alternativ codieren: • sehr schnell → 1
• schnell → 0,8
• mittelschnell → 0,5
• langsam → 0
Wichtig ist nur, dass die Ordnungsrelation sehr schnell > schnell > mittelschnell > langsam nicht verletzt wird. Beide Codierungen sind korrekt; sie erhalten die Ordnung der Werte. Allerdings können sie beim k-Nearest-Neighbour-Algorithmus zu unterschiedlichen Resultaten führen, da die Abstände zwischen den Geschwindigkeitswerten unterschiedlich sind.
218
8 Datenvorbereitung
Bei der ersten Variante ist der Abstand zwischen sehr schnell und mittelschnell 0,67, bei der zweiten 0,5. Dies kann Auswirkungen auf das Resultat haben. Binning wurde bereits als Technik angesprochen. Auch für die Umwandlung von numerischen Attributen in nominale Werte ist Binning sehr nützlich. An einem Beispiel sollen die Konvertierungsmöglichkeiten mittels Binning erläutert werden: Beispiel 8.6:
Binning
Wir haben folgende Messwerte gegeben: {20, 25, 27, 28, 29, 32, 37, 44, 56, 68, 70, 72} und wollen diese in 3 Gruppen (Bins) einsortieren. Dies kann man folgendermaßen umsetzen: • Gleichgroße Bins numerisch – Bin 1: {20, 25, 27, 28}
– Bin 2: {29, 32, 37, 46}
– Bin 3: {56, 68, 70, 70}
• Gleichgroße Bins nominal
– Bin1 für die Werte {20, 25, 27, 28}
– Bin2 für die Werte {29, 32, 37, 46}
– Bin3 für die Werte {56, 68, 70, 70}
• Ersetzen durch Mittelwerte – Bin 1: {25, 25, 25, 25}
– Bin 2: {36, 36, 36, 36}
– Bin 3: {66, 66, 66, 66}
• Ersetzen durch Grenzwerte – Bin 1: {20, 20, 28, 28}
– Bin 2: {29, 29, 46, 46}
– Bin 3: {56, 56, 70, 70}
Ergänzend sei vermerkt, dass es Binning-Verfahren gibt, die eine Intervallbildung derart vornehmen, dass die Ausprägungen des Zielattributs – falls es ein solches gibt – berücksichtigt werden. Für die neuronalen Netze und auch die Assoziationsanalyse ist die Binärcodierung eine zentrale Codierungsform. Durch Binärcodierung wird aus Attributen mit einer bestimmten Anzahl Merkmalsausprägungen eine Menge binärer Attribute. Jeder Merkmalsausprägung wird ein neues, binäres Attribut zugeordnet, das den Wert 1 annimmt, wenn die Ausprägung in einem einzelnen Datensatz vorkommt und sonst den Wert 0
8.2 Arten der Datenvorbereitung
219
besitzt (vgl. Beispiel 4.7 auf Seite 77 oder Abschnitt 5.4.1 auf Seite 118). Dieses Verfahren kann beispielsweise das Attribut Kaufverhalten mit den Ausprägungen Vielkäufer, Seltenkäufer und Nichtkäufer so transformieren, dass man das Attribut Kaufverhalten durch 3 Binärattribute Vielkäufer, Seltenkäufer, Nichtkäufer ersetzt. Auf diese Weise wird ein qualitatives Attribut in mehrere, binärcodierte Attribute überführt. Das Binärcodierungsverfahren bereitet nominale und ordinale Attribute für Algorithmen vor, die numerische Attribute erfordern. Eine abgewandelte binäre Codierung basiert auf der sogenannten unären Codierung, die einfach so viele Einsen enthält, wie die Zahl, die wir darstellen wollen. Betrachten wir hierzu wieder das Attribut Kaufverhalten und codieren die Werte gemäß ihrer Ordnung: Vielkäufer/2 > Seltenkäufer/1 > Nichtkäufer/0 In der unären Darstellung wird die 2 durch zwei Einsen (1 1), die Eins durch eine 1 und die 0 durch keine Eins dargestellt. Wir füllen die nur aus Einsen bestehende Codierung mit Nullen auf und erhalten eine binäre Codierung, die die Ordnung aufrecht erhält und sogar noch eine Binärstelle weniger als die vorherige Codierung aufweist: Vielkäufer/(1 1) > Seltenkäufer/(1 0) > Nichtkäufer/(0 0) Bei der Anwendung der binären Codierungen ist zu beachten, dass die Performanz der Datenanalyse durch die steigende Attributanzahl beeinträchtigt werden kann. Diskretisierung wird angewendet, um den Wertebereich von numerischen Attributausprägungen in endlich vielen Teilmengen zusammenzufassen. Eine Reihe von Verfahren kann numerische Attribute nicht verarbeiten und setzt folglich eine Diskretisierung voraus. Die Diskretisierung kann beispielsweise bei der Verallgemeinerung des Alters sinnvoll sein, da auf diese Weise die Altersinformationen zu Altersgruppen {jung, mittel, alt} zusammengefasst werden können und so eine Reduzierung der Attributausprägungen erreicht wird. Mit dem Binning (Seite 210) hatten wir bereits eine Diskretisierungstechnik kennengelernt. Die dort vorgestellten Binning-Varianten arbeiten unüberwacht. Die Intervallbildung erfolgt entweder • per Hand (durch eine manuelle Festlegung der Intervallgrenzen) oder
• durch die Erzeugung gleichgroßer Intervalle. Die letzte Variante kann derart modifiziert werden, dass in jedem Intervall eine gleichgroße Anzahl von Elementen vorkommt. Bei all diesen Varianten gibt man die Zahl der zu bildenden Intervalle vor. Für Klassifikationsdaten, also Daten, bei denen eine Klasseneinteilung vorliegt. gibt es eine Reihe von überwachten Diskretisierungstechniken. Diese nutzen die Zusatzinformation, die sich aus der Klassenzugehörigkeit ergibt. Wir betrachten ein Attribut A, welches diskretisiert werden soll. Man könnte beispielsweise die Intervallbildung des Attributs A mit dem kleinsten Wert, den A annimmt, beginnen. Wir merken uns die Klasse, zu der der Datensatz mit dem kleinsten Wert
220
8 Datenvorbereitung
gehört. Nun durchläuft man aufsteigend die Werte von A. Wenn der erste Wert auftaucht, der eine andere Klassenzugehörigkeit hat, führen wir eine Intervallgrenze ein und beginnen ein neues Intervall. Wir merken uns wieder die neue Klasse und fahren aufsteigend fort. Dieses Verfahren ist aus mehreren Gründen nicht sinnvoll. Der wichtigste Grund ist, dass dadurch im Normalfall sehr viele Intervalle entstehen würden. Meistens möchte man aber die Anzahl der Intervalle vorgeben. Deshalb hat man beispielsweise Verfahren entwickelt, die analog der im Kontext des ID3-Algorithmus behandelten Entropie von Shannon (Abschnitt 5.2) die Intervallbildung derart vornehmen, dass die „Unordnung“ bezüglich des Zielattributs möglichst gering ist. Auch Cluster-Verfahren wie k-Means (vgl. Abschnitt 6.2) können für eine Intervallbildung genutzt werden. Dies geht sowohl unüberwacht als auch überwacht. Bei der überwachten Variante benötigt man natürlich wieder ein Klassenattribut, welches in die Clusterbildung einbezogen wird. Alle diese Diskretitisierungsverfahren sind ausführlich in [CSPK07, Kapitel 8] erläutert. Anpassung von Zeichenketten Kann das Data-Mining-Programm mit Umlauten, Groß- und Kleinschreibung sowie Leerzeichen in den Datensätzen umgehen, oder muss man die Daten umwandeln? Gegebenenfalls muss dies bereits bei der Datenintegration erfolgen. Anpassung von Datumsangaben und Maßeinheiten Datumsangaben sind oft unterschiedlich codiert (auf Grund von unterschiedlichen Formaten in verschiedenen Ländern, 12.03.2003; 12-03-03; 03-12-03) und erfordern daher eine Vereinheitlichung. Es können auch Daten aus unterschiedlichen Zeitzonen vorhanden sein, die auf jeden Fall angepasst werden müssen, da sonst das Ergebnis verfälscht wird. Gleiches gilt für die Anpassung von Maßeinheiten, da diese oft nur nationalen Standards genügen (beispielsweise Inch, Zentimeter, Yard, Meter). Die Anpassung von Zeit- oder Datumsangaben sowie die Einführung gleicher Maßeinheiten sollte nach Möglichkeit bereits bei der Datenintegration durchgeführt werden. Normalisierung und Skalierung Die Normalisierung oder Normierung transformiert sämtliche Merkmalsausprägungen eines Attributs auf die Werte einer stetigen, numerischen Skala. Sollen numerische Werte auf das Intervall [0, 1] normiert werden, so benötigt man dazu nur den minimalen und maximalen Wert min(xi ), max(xi ) des Attributs. Der normierte Wert berechnet sich wie folgt: xneu =
x − min(xi ) max(xi ) − min(xi )
Zunächst wird von allen Werten der Minimalwert subtrahiert (dann ist das Minimum 0). Anschließend wird durch die maximale Differenz zweier Werte dividiert.
8.2 Arten der Datenvorbereitung
221
Eine andere Normalisierungstechnik berechnet den statistischen Mittelwert und die Standardabweichung der Attributwerte, subtrahiert den Mittelwert von jedem Wert und dividiert dann das Ergebnis durch die Standardabweichung. Normalisierung kann dann angewendet werden, wenn Minimum und Maximum eines Attributes gegeben sind. Die Normalisierung kann beispielsweise zur Codierung des Alters eingesetzt werden. Der Minimalwert ist 0 Jahre und der Maximalwert beispielsweise 100 Jahre. Ein Alter von 40 Jahren würde dann – auf einer Skala von 0 bis 1 – mit 0,4 codiert werden. Beispiel 8.7:
Normalisierung
Wir betrachten folgende Daten über den Patientenzustand: Nr. 1 2 3 4 5 6 7 8 9 10
Alter 27 65 33 55 38 36 53 26 43 60
Puls unregelmäßig unregelmäßig regelmäßig unregelmäßig unregelmäßig regelmäßig regelmäßig regelmäßig regelmäßig regelmäßig
Blutdruck 117 123 127 150 120 121 140 107 111 112
Zustand gesund krank gesund krank krank gesund krank gesund gesund gesund
Wir möchten den Algorithmus k-Nearest Neighbour (Abschnitt 5.1) anwenden und codieren folglich – der k-Nearest Neighbour arbeitet mit numerischen Attributen besser – das nominale Attribut Puls als numerisches Attribut. Das Zielattribut lassen wir unverändert. Nr. 1 2 3 4 5 6 7 8 9 10
Alter 27 65 33 55 38 36 53 26 43 60
Puls 0 0 1 0 0 1 1 1 1 1
Blutdruck 117 123 127 150 120 121 140 107 111 112
Zustand gesund krank gesund krank krank gesund krank gesund gesund gesund
222
8 Datenvorbereitung
Anhand des letzten Datensatzes testen wir k-Nearest Neighbour (k=2). CSV Reader
String Replacer String Replacer
Daten lesen unregelmaessig -> 0
String To Number
regelmaessig -> 1
Datentyp Puls in integer umwandeln
Partitioning
K Nearest Neighbor
Letzten Datensatz abspalten
KlassiÞkation
Leider versagt der Algorithmus hier. Für den Patienten 10 wird krank vorhergesagt, der Patient ist aber gesund. Können wir uns erklären, wieso hier eine falsche Vorhersage erfolgt? Schauen wir auf die Daten, so erkennen wir, dass die 2 nächsten Nachbarn garantiert unabhängig vom Puls sind. Ausgehend vom euklidischen Abstand liefert der Puls maximal einen Unterschied von 1. Insofern ist klar, dass das Abstandsmaß vom Blutdruck und vom Alter dominiert wird. Dies können wir durch Normalisierung verhindern. Jedes numerische Attribut wird auf das Intervall [0, 1] normalisiert. Nr. 1 2 3 4 5 6 7 8 9 10
Alter 0,0256 1,0 0,1795 0,7436 0,3089 0,2564 0,6923 0,0 0,4359 0,8718
CSV Reader
Puls 0,0 0,0 1,0 0,0 0,0 1,0 1,0 1,0 1,0 1,0
Blutdruck 0,2326 0,3721 0,4651 1,0 0,3023 0,3256 0,7674 0,0 0,0930 0,1163
Zustand gesund krank gesund krank krank gesund krank gesund gesund gesund Partitioning K Nearest Neighbor
String Replacer
String Replacer
Daten lesen unregelmaessig -> 0
Normalizer
String To Number
regelmaessig -> 1
Datentyp Puls in integer umwandeln
Denormalizer
Normalisieren
Letzten Datensatz abspalten
KlassiÞkation Normalisierung rückgängig machen
Nun gelingt auch die korrekte Vorhersage für Datensatz 10. Mit der Normalisierung der Daten sollte experimentiert werden. Zunächst normalisieren wir auf das Intervall [0, 1]. Bekommen wir keine zufriedenstellenden Resultate, können Attribute gemäß der geschätzten Bedeutung statt auf [0,1] auf [0,X] normalisiert werden: Je größer X, desto größer der Einfluss des Attributs. Den gleichen Effekt kann man mit der gewichteten Euklidischen Distanz (siehe Seite 45) erreichen.
8.2 Arten der Datenvorbereitung
223
Es gibt weitere Formen der Normalisierung. Eine lineare Normalisierung ist nicht zwingend, eine logarithmische Normalisierung ist ebenso möglich. Kombination oder Separierung von Attributen Es kann nötig sein, verschiedene Attribute zu einem neuen zusammenzufügen wie beispielsweise Tag, Monat und Jahr zu Datum. Umgekehrt kann es aber auch erforderlich sein, das Datum in seine Bestandteile zu zerlegen, um so beispielsweise den Monatsanfang oder den jeweiligen Wochentag erkennen zu können. Erst durch den Wochentag ist es eventuell möglich, das Kaufverhalten der Kunden besser zu analysieren. Berechnung abgeleiteter Werte Durch das Berechnen abgeleiteter Werte können ganz neue Attribute aufgenommen werden. So kann das Attribut Gewinn durch die Differenz der Attributwerte Ausgaben und Einnahmen berechnet werden. Datenaggregation Datenaggregation kann nicht nur aus Sicht der Datenkompression (Seite 214) erforderlich sein. Vielmehr kann die Aggregation aus inhaltlichen Gründen sinnvoll sein. Oft liegen die Daten in einer zu feinen Aggregationsebene vor. Wird zum Beispiel die Einwohnerzahl von Berlin gesucht und liegen nur die Einwohnerzahlen der einzelnen Stadtteile vor, so kann man durch Aggregation – in diesem Fall Summenbildung – die Daten in eine höhere Aggregationsebene überführen. Erst dann sind eventuell sinnvolle Aussagen über Berlin – im Kontext der deutschen Großstädte – möglich. Datenglättung Die Hauptidee der Datenglättung (siehe auch verrauschte Daten, Seite 209) ist, dass jeder numerische Wert aus der gegebenen Datenmenge durch idealisierte Werte, die sich beispielsweise durch Regression ergeben, ersetzt wird. Das Ziel der Methode ist, die ursprüngliche Wertemenge durch eine reduzierte Menge zu ersetzen, da man hofft, dass solche Werte zu besseren Lösungen führen. Darüber hinaus wird das Rauschen in den Daten reduziert. Man kennt vier Techniken, mit denen Daten geglättet werden können: • Eingruppierung (binning) • Clustering
• kombinierte menschliche und maschinelle Kontrolle • Regression
Diese hatten wir bereits bei der Behandlung von verrauschten Daten und Ausreißern diskutiert (Seite 209ff.).
224
8.3
8 Datenvorbereitung
Ein Beispiel
Wir erläutern einige Aspekte dieses Kapitels an einem kleinen Beispiel. Dazu nehmen wir an, wir hätten unsere Daten bereits aus den unterschiedlichsten Quellen gesammelt und diese in einer Datentabelle (Tabelle 8.3) vereinigt. Pers. nr. 1 2 3 4 5 6 7 8 9 10 11 12 13
Wohn- Ge- Alter ort schlecht 23966 m 45 23966 w 57 23966 m 52 23966 m 28 23966 male 57 23966 fem 26 23966 m 39 23966 m 38 23966 m 42 23966 w 37 23966 m 45 23966 m 37 23966 w 35
Jahresgehalt 32 35000 40 27 45 27 39 32 31 30 32 30
Betriebszugehörigkeit 10 25 5 6 25 96 4 3 15 10 8 5 15
Position
Bildungsabschluss arb Lehre verw Bachelor manager Master arb Lehre manager Master arb Lehre manager Master arb Lehre arb ohne verw Abi arb verw
Abi
Tabelle 8.3: Beispiel – Datenvorbereitung
Was fällt uns als erstes auf? Der Wohnort ist bei allen Personen gleich. Dieses Attribut enthält die Information, dass alle in Wismar wohnen. Dies wird uns aber bei Analysen nicht helfen, denn wir benötigen ja gerade unterschiedliche Werte der Attribute, um Unterschiede oder Ähnlichkeiten zwischen den Objekten herstellen zu können. Dieses Attribut kann folglich gelöscht werden. Wir reduzieren damit die Dimension des Problems (vgl. Seite 212). Das Geschlecht ist sowohl als m/w als auch als male/fem angegeben. Im Datensatz 2 ist das Jahresgehalt wohl nicht in Tausend angegeben. Im Datensatz 12 fehlen etliche Werte. Diesen sollten wir folglich weglassen. Im Datensatz 6 steht bei Betriebszugehörigkeit eine 96. Es gibt 2 Interpretationen: Die 96 könnte als 1996, also als Zugehörigkeit seit 1996 interpretiert werden. Es könnte aber auch sein, dass die Betriebszugehörigkeit in Monaten angegeben wurde. Wir entscheiden uns hier für die Monate, da eine Zugehörigkeit seit 1996 bei einem Alter von 26 höchst unwahrscheinlich ist. In Datensatz 11 fehlt der Bildungsabschluss. Das können wir beispielsweise korrigieren, indem wir dort den häufigsten Wert einsetzen, der für die gleiche Position (arb) vorkommt: Lehre. Wir müssen uns an dieser Stelle aber dessen bewusst sein, dass wir mit dieser Aktion schon etwas in die Daten hinein interpretieren, und zwar einen möglichen Zusammenhang zwischen Bildungsabschluss und Position. Man könnte alternativ ein Verfahren wie k-Nearest Neighbour (vgl. Abschnitt 5.1) einsetzen, um so über den oder die nächsten Nachbarn einen Wert für den Bildungsabschluss zu finden.
8.3 Ein Beispiel
225
Die veränderten Daten sind in Tabelle 8.4 dargestellt. Pers. nr. 1 2 3 4 5 6 7 8 9 10 11 13
Geschlecht
Alter
m w m m m w m m m w m w
45 57 52 28 57 26 39 38 42 37 45 35
Jahresgehalt 32 35 40 27 45 27 39 32 31 30 32 30
Betriebszugehörigkeit 10 25 5 6 25 8 4 3 15 10 8 15
Position arb verw manager arb manager arb manager arb arb verw arb verw
Bildungsabschluss Lehre Bachelor Master Lehre Master Lehre Master Lehre ohne Abi Lehre Abi
Tabelle 8.4: Beispiel – korrigierte Tabelle
Nun müssen wir das Ziel unserer Analyse in die Datenvorbereitung einbeziehen. Zunächst gehen wir davon aus, dass wir die Daten clustern möchten. Offensichtlich wird die Personalnummer keine Information enthalten. Informationen wie die Zugehörigkeit zu einer Abteilung sind hier nicht zu erkennen. Die Betriebszugehörigkeit könnte man anhand dieser ID im ordinalen Sinn herauslesen, diese haben wir aber ohnehin explizit gegeben. Die Personalnummer können wir folglich ersatzlos streichen. Für das Clustern sind metrische Werte günstig, da man mit diesen besser rechnen kann und folglich bessere Abstandsmaße bekommt. Wir können die nominalen Attribute durch Integer-Werte codieren (Tabelle 8.5). Geschlecht
Alter
0 1 0 0 0 1 0 0 0 1 0 1
45 57 52 28 57 26 39 38 42 37 45 35
Jahresgehalt 32 35 40 27 45 27 39 32 31 30 32 30
Betriebszugehörigkeit 10 25 5 6 25 8 4 3 15 10 8 15
Tabelle 8.5: Beispiel – numerische Werte
Position 0 1 2 0 2 0 2 0 0 1 0 1
Bildungsabschluss 1 3 4 1 4 1 4 1 0 2 1 2
226
8 Datenvorbereitung
Wenn wir mit dieser Tabelle clustern (Knime, 3 Cluster), dann erhalten wir die in Abbildung 8.5 dargestellten Cluster.
Abb. 8.5: Clusterversuch 1
Auffällig ist, dass das Alter offensichtlich ein große Rolle spielt. Woran liegt das? Der Abstand zwischen einer 26jährigen und einer 57jährigen Person ist so gravierend (31), dass die Unterschiede in den anderen Attributen eine zu vernachlässigende Rolle spielen. Nur die Attribute Jahresgehalt und Betriebszugehörigkeit liefern signifikante Abstände. Aber auch diese sind geringer als die Abstände beim Alter. Und die beiden Attribute Position und Bildungsabschluss liefern nur minimale Abstände. Wie können wir die Dominanz des Alter-Attributs verhindern? Wir normalisieren alle Daten auf das Intervall [0, 1] (Tabelle 8.6). Dies hatten wir bereits in Beispiel 8.7 auf Seite 221 diskutiert. Geschlecht
Alter
0 1 0 0 0 1 0 0 0 1 0 1
0,61 1 0,84 0,06 1 0 0,42 0,39 0,52 0,35 0,61 0,29
Jahresgehalt 0,28 0,44 0,72 0 1 0 0,67 0,28 0,22 0,17 0,28 0,17
Betriebszugehörigkeit 0,32 1 0,09 0,14 1 0,23 0,05 0 0,55 0,32 0,23 0,55
Tabelle 8.6: Beispiel – normalisierte Werte
Position 0 0,5 1 0 1 0 1 0 0 0,5 0 0,5
Bildungsabschluss 0,25 0,75 1 0,25 1 0,25 1 0,25 0 0,5 0,25 0,5
8.3 Ein Beispiel
227
Nun erhalten wir die in Abbildung 8.6 dargestellten Cluster (wieder nur bezüglich des Alters).
Abb. 8.6: Clusterversuch 2 – Alter
Unsere Vermutung beim Betrachten der Ausgangsdaten ist sicherlich, dass der Bildungsabschluss ein bedeutsames Attribut sein wird. Diese Vermutung wird durch die nun vorliegende Cluster-Bildung bestätigt, wie wir aus der Darstellung der Cluster bezüglich des Bildungsabschlusses in Abbildung 8.7 erkennen können. Diese Cluster-Bildung stützt unsere These. Durch die Normalisierung der Daten haben wir ein Modell – hier eine Clusterbildung – bekommen, welches uns sinnvoll erscheint.
Abb. 8.7: Clusterversuch 2 – Bildungsabschluss
228
8 Datenvorbereitung
Zurück zu den Rohdaten. Nehmen wir an, wir möchten einen Entscheidungsbaum für diese Daten entwickeln, und zwar für das Zielattribut Jahresgehalt. Jetzt benötigen wir keine metrischen Attribute, sondern nominale oder ordinale Attribute. Wir müssen daher in unserer Ausgangstabelle die metrischen Attribute in ordinale oder nominale umwandeln (Tabelle 8.7). Dies kann man so bewerkstelligen, dass man auf allen Werten eines Attributs Clustering durchführt. Man erhält so zwei Intervalle, die man entsprechend benennt. Geschlecht
Alter
m w m m m w m m m w m w
alt alt alt jung alt jung jung jung alt jung alt jung
Jahresgehalt gering viel viel gering viel gering viel gering gering gering gering gering
Betriebszugehörigkeit kurz lang kurz kurz lang kurz kurz kurz lang kurz kurz lang
Position arb verw manager arb manager arb manager arb arb verw arb verw
Bildungsabschluss Lehre Bachelor Master Lehre Master Lehre Master Lehre ohne Abi Lehre Abi
Tabelle 8.7: Beispiel – nominale Werte
Mit diesen Daten kann man nun den ID3-Algorithmus anwenden und erhält mit dem Zielattribut Gehalt den in Abbildung 8.8 dargestellten Entscheidungsbaum.
Abb. 8.8: Entscheidungsbaum mit ID3
Aufgabe 8.1:
Datenvorbereitung und Buch-Beispiele
Gehen Sie die Beispiele im Buch durch und untersuchen Sie die Datenvorbereitung. Überlegen Sie sich alternative Transformationen und vergleichen Sie dann die Resultate.
9
Bewertung Negative expectations yield negative results. Positive expectations yield negative results. Nonreciprocal Laws of expectations.
In großen Datenmengen kann sich Wissen in verschiedensten Strukturtypen darstellen. Jedes Verfahren des Data Minings sucht nur nach einem spezifischen Strukturtyp. So kann es dazu kommen, dass eine Information nicht gefunden wird, die zwar vorhanden, nicht aber in dieser speziellen Struktur darstellbar ist. Es ist beispielsweise sinnvoll, bei einer Klassifikationsaufgabe Tests sowohl mit neuronalen Netzen als auch mit Entscheidungsbäumen durchzuführen. Um nun die Qualität der erzielten Modelle einschätzen zu können, benötigen wir eine Vergleichbarkeit. Diese Vergleichbarkeit erfolgt auf der Basis von Bewertungszahlen. Wir befassen uns also nun mit dem abschließenden Schritt in einem Data-MiningProzess gemäß des Modells von Fayyad, der Bewertung und Evaluierung der erzielten Resultate (siehe Abbildung 1.2, Seite 6). Im Abschnitt 1.3 hatten wir bereits Kriterien, die an ein Data-Mining-Resultat anzulegen sind, definiert: 1. Validität 2. Neuartigkeit 3. Verständlichkeit 4. Nützlichkeit Zur Bewertung dieser Kriterien betrachten wir einige Interessantheitsmaße. Zunächst ist anzumerken, dass ein Verfahren beziehungsweise ein errechnetes Modell nur dann bewertet werden kann, wenn das erwartete Ergebnis zum Vergleich vorliegt oder anderweitig die Qualität der Lösung bewertet werden kann. Beim überwachten Lernen ist dies möglich, da wir das Resultat kennen. Wir können beim Entscheidungsbaumlernen zählen, wie oft der Entscheidungsbaum die Klassenzugehörigkeit korrekt, wie oft er sie inkorrekt vorhersagt. Bei der Bewertung von Clustering-Verfahren ist es etwas komplizierter zu entscheiden, ob ein Verfahren beziehungsweise eine Clusterbildung gut oder schlecht ist. Eine Ausnahme ist natürlich, wenn wir Cluster-Verfahren anhand gegebener Beispiele untersuchen, ob diese die von uns gewünschten Cluster erzeugen. Geht man aber von realen Aufgaben aus, bei denen die gewünschten Zielcluster eben nicht bekannt sind, so werden zwei unterschiedliche Verfahren mit denselben Daten eventuell zu unterschiedlichen Clustern führen. Aber auch derartig erzeugte, unterschiedliche Cluster lassen sich miteinander vergleichen.
230
9.1
9 Bewertung
Prinzip der minimalen Beschreibungslängen
Bevor wir auf einige Bewertungsmaße eingehen, stellen wir einen Grundsatz an den Anfang: Werden mehrere Verfahren im Ergebnis als gleich gut bewertet, wird der Vorzug dem Verfahren beziehungsweise dem Modell gegeben, das die gesuchten Zusammenhänge am einfachsten und am leichtesten nachvollziehbar darstellt. Diesen Grundsatz nennt man Prinzip der minimalen Beschreibungslängen, engl. MDL – minimum description length. Die Beschreibungslänge ist definiert als: • Speicherplatz zur Beschreibung einer Theorie
plus
• Speicherplatz zur Beschreibung der Fehler (Ausnahmen) der Theorie Dieses Konzept geht auf William of Ockham, geboren in Ockham (in Surrey, England) ca. 1285 zurück, der postulierte, dass ein Modell desto besser sei, je einfacher es ist (Occam’s razor). Wir hatten dieses Prinzip schon beim Generieren von Entscheidungsbäumen zugrunde gelegt: Unser Ziel waren kompakte, also kleine Bäume.
9.2
Interessantheitsmaße für Assoziationsregeln
Wir gehen zunächst auf die Bewertung von Assoziationsregeln (vgl. Abschnitt 4.4) ein. Das Ergebnis einer Assoziationsanalyse ist oft eine große Menge an Regeln. Die problembezogene Interpretation und Bewertung der Regeln muss durch den Nutzer erfolgen. Dies kann ein Problem darstellen, da die Anzahl der Regeln oft kaum überschaubar ist und kein generelles Vorgehensmodell mit einheitlichen Bewertungsgrundlagen existiert. Dieses Problem wird auch als post-mining rule analysis problem bezeichnet. Das Ziel einer sinnvollen Interpretation ist es, die Fülle an Informationen adäquat zu reduzieren: • Es ist möglich, die Regeln entsprechend bestimmter signifikanter Merkmale zu sortieren, beispielsweise Support oder Konfidenz. Danach lässt sich die Bedeutung einer Regel besser einschätzen. • Die Regelmenge kann gefiltert werden. Regeln, die bestimmten Kriterien entsprechen, werden ausgeblendet. Beispielsweise kann man alle Regeln entfernen, deren Support geringer als 20% ist oder die bestimmte Begriffe aus der ursprünglichen Datenmenge enthalten. Nimmt man das Warenkorbbeispiel, so ließe sich auch nach Regeln filtern, die Kaffee und Milch enthalten. • Sind die Regeln nicht sehr komplex, so lassen sich graphische Darstellungen heranziehen, die Korrelationen zwischen bestimmten Attributen erkennen lassen.
9.2 Interessantheitsmaße für Assoziationsregeln
231
Wenn kein explizites Analyseziel verfolgt wird, kann das Durchführen dieser Maßnahmen schnell in ein Trial and Error verfallen. Es ist deshalb sinnvoll, sogenannte Interessantheitsmaße zur Bewertung von Regeln zu verwenden. Interessantheitsmaße erlauben eine Bewertung der Ergebnisse einer Assoziationsanalyse auf mathematischer Grundlage.
9.2.1
Support
Der Support wurde bereits im Abschnitt 4.4 eingeführt (Seite 74). Der Support ist ein Maß für die Häufigkeit, mit der die Kombination aus Vor- und Nachbedingung einer Regel M → N in den Datensätzen auftritt. Er wird mit reellen Werten zwischen 0 und 1 gemessen und gibt an, welcher Anteil der Gesamtmenge von einer Regel erfasst wird. Leider ist es nicht möglich, allgemein zu sagen, welche Support-Werte eine Regel aufweisen muss, um weitere Beachtung zu verdienen. Der Support sagt lediglich aus, welche Tatsachen oft und welche eher selten vorkommen. Trotzdem können seltene Items auch interessante Zusammenhänge enthalten. Der Support einer Regel M → N ist definiert durch: supp(M → N ) = P (M ∪ N )
Wir berechnen die relative Häufigkeit, in wie vielen Datensätzen unserer Datenmenge sowohl M als auch N vorkommt. Der Support lässt sich mittels eines Venn-Diagramms veranschaulichen (Abbildung 9.1). Der Support ergibt sich aus dem Flächeninhalt der schraffierten Fläche, geteilt durch die Fläche der gesamten Menge.
Abb. 9.1: Support der Assoziationsregel M → N
9.2.2
Konfidenz
Die Konfidenz gibt die bedingte Wahrscheinlichkeit eines Items N bei gegebenem Item M an. Sie stellt die Stärke des Zusammenhangs dar. Analog zum Support wird auch die Konfidenz in Werten zwischen 0 und 1 gemessen. conf(M → N ) = P (N |M ) =
supp(M → N ) supp(M )
Die Konfidenz ergibt sich aus dem Verhältnis der schraffierten Fläche, also aller Fälle, in denen sowohl M als auch N gilt, zu der gestrichelten Fläche M.
232
9 Bewertung
Abb. 9.2: Konfidenz der Assoziationsregel M → N
Ein großer Nachteil der Konfidenz ist, dass auch Regeln, deren statistische Korrelation gering ist, eine hohe Konfidenz haben können. Das liegt daran, dass die Berechnung der Konfidenz die Wahrscheinlichkeit von N außer Acht lässt. Beispiel 9.1:
Konfidenz
Am Beispiel des Warenkorbs lässt sich argumentieren: Brot und Milch werden in absoluten Zahlen sehr häufig gekauft. Sie in einen Zusammenhang mit anderen Produkten zu setzen, ist daher wenig sinnvoll. Nehmen wir an, Brot wird immer gekauft. Dann hat die Regel WENN Trüffel DANN Brot eine Konfidenz von 1,0. Wir können die Trüffel durch andere Produkte ersetzen, die Konfidenz bleibt 1,0. Dieser statistische Zusammenhang ist offensichtlich sehr fragwürdig. Es ist daher sinnvoll, sich – neben Support und Konfidenz – weitere Interessantheitsmaße anzuschauen. Das obige Trüffel-Brot-Problem bekommt man durch ein weiteres Interessantheitsmaß in den Griff, die Vollständigkeit (completeness). completeness(M → N ) = P (M ∪ N |N ) =
supp(M → N ) supp(N )
Abb. 9.3: Completeness der Assoziationsregel M → N
Die Completeness ergibt sich aus dem Verhältnis der schraffierten Fläche, also aller Fälle, in denen sowohl M als auch N gilt, und der gepunkteten Fläche N.
9.2 Interessantheitsmaße für Assoziationsregeln Beispiel 9.2:
233
Interessantheitsmaße für Assoziationsregeln
Seien folgende Werte gegeben: • P (M ) = 0,50
• P (N ) = 0,40
• P (M ∪ N ) = 0,35
Es ergeben sich folgende Werte: supp(M → N ) = P (M ∪ N ) = 0,35 conf(M → N ) = P (N |M ) =
0,35 supp(M → N ) = = 70% supp(M ) 0,50
completeness(M → N ) = P (M ∪ N |N ) =
supp(M → N ) 0,35 7 = = supp(N ) 0,40 8
Die Konfidenz der Regel ist nicht sonderlich gut, allerdings wird das durch die relativ hohe Completeness ausgeglichen, so dass die Regel doch ein interessanter Kandidat ist.
9.2.3
Gain-Funktion
Es kommt vor, dass eine Regel, die knapp am Support scheitert, eine sehr hohe Konfidenz hat. In dieser Situation ist es natürlich ärgerlich, dass wir eine starre Grenze durch den Support definiert haben. Ganz auf den Support zu verzichten geht aber auch nicht, da dann äußerst seltene Regeln (mit geringem Support) akzeptiert werden. Mit der Gain-Funktion wird dies vermieden. Die Gain-Funktion stellt einen Mix aus Support und Konfidenz dar, der die genannten Probleme verhindert. gain(M → N ) = supp(M → N ) − θ · supp(M ). Der Parameter θ kann Werte zwischen 0 und 1 annehmen, wodurch der Wert der GainFunktion stets zwischen −θ und 1 − θ liegt.
Ein Wert der Gain-Funktion gleich 0 besagt, dass in jedem θ1 -ten Fall, in dem M enthalten ist, auch N vorkommt. Werte über beziehungsweise unter 0 symbolisieren einen stärkeren beziehungsweise schwächeren Zusammenhang. Bemerkung 9.1:
Gain
Woher kommt der „Gain“? Wir fordern, dass eine Regel M → N , die zwar eine hohe Konfidenz hat, andererseits aber nicht so oft vorkommt (der Support von M ist gering), einen geringeren Interessantheitswert bekommt als eine Regel, die die
234
9 Bewertung
gleiche Konfidenz und einen höheren Support (von M ) hat. Je geringer der Support von M, desto höher muss die Konfidenz der Regel sein: conf(M → N ) ≥
minconf +θ supp(M )
Eine hohe Konfidenz kann also einen geringen Support (und umgekehrt) ausgleichen. →N ) können wir die Wir erlauben θ zwischen 0 und 1. Mit conf(M → N ) = supp(M supp(M ) Ungleichung mit supp(M ) multiplizieren und erhalten: supp(M → N ) ≥ minconf + supp(M ) · θ supp(M → N ) − θ · supp(M ) ≥ minconf
9.2.4
p-s-Funktion
Mit den Unzulänglichkeiten einiger Interessantheitsmaße für Assoziationsregeln befasste sich Gregory Piatetsky-Shapiro [PS91]. Er forderte, dass Interessantheitsmaße für Assoziationsregeln (Rule interest, RI ) folgende Kriterien erfüllen müssen: 1. RI(M → N ) = 0 gilt genau dann, wenn supp(M → N ) = P(M ) · P(N ) ist. Das Interessantheitsmaß soll 0 sein, wenn M und N statistisch unabhängig sind. 2. RI wächst mit supp(M → N ) monoton.
3. RI ist mit P(M ) und P(N ) monoton fallend. Kriterium 1 befasst sich mit der Situation, dass M und N statistisch unabhängig voneinander sind. Was heißt das? Wie viele korrekte Vorhersagen für N würden wir per Zufall erwarten? Wenn wir dies ohne jede Restriktion tun, dann ist die Wahrscheinlichkeit für das zufällige Auswählen eines Einkaufs, der N erfüllt, gerade P(N ), also die relative Häufigkeit von N. Fordern wir nun zusätzlich, dass auch M erfüllt ist, dann sollte sich P(M ) · P(N ) ergeben, falls M und N unabhängig sind. Kriterium 1 fordert folglich, dass RI = 0 ist, falls sich der Support der Regel M → N genau so verhält wie bei der zufälligen Auswahl von Itemsets, die M und N erfüllen, falls M und N unabhängig sind. Kriterium 2 fordert, dass RI mit dem Support der Regel steigt. Präziser: RI wächst mit dem Support der Regel, falls supp(M ) und supp(N ) konstant bleiben. Die Forderung 3 besagt, dass das Interessantheitsmaß RI mit steigender relativer Häufigkeit von M monoton fallend ist. Gleiches muss bezüglich N gelten. Auch hier muss man aber fordern, dass die jeweils anderen Werte konstant bleiben. Die Konfidenz erfüllt nur die Bedingung 2. Insbesondere Kriterium 1 wird häufig verletzt, auch unabhängige Mengen M und N werden meistens mit einer hohen Konfidenz bewertet. Auch Kriterium 3 erfüllt die Konfidenz nicht, da die Konfidenz nicht von P(N ) abhängt.
9.3 Gütemaße und Fehlerkosten
235
Die p-s-Funktion erfüllt die obigen Restriktionen. Sie ist für θ = supp(N ) mit der Gain-Funktion identisch. ps(M → N ) = supp(M → N ) − supp(M ) · supp(N )
Die p-s-Funktion geht davon aus, dass der Support einer Regel höher als der bei statistischer Unabhängigkeit sein sollte. Positive Werte spiegeln einen positiven Zusammenhang wider, negative Werte einen negativen Zusammenhang.
9.2.5
Lift
Teilt man die p-s-Funktion durch supp(M ) · supp(N ) und ignoriert den konstanten Subtrahend 1, so ergibt sich der Lift. Der Lift gibt an, inwiefern sich die Verteilung eines Elements in einer Teilmenge von der in der Gesamtmenge unterscheidet. Werte größer als 1 entsprechen einer positiven Korrelation. Somit bedeutet ein Lift von 1 eine Korrelation von Null. Ein Lift von 4 der Regel M → N besagt beispielsweise, dass N innerhalb dieser Regel viermal häufiger als in der Gesamtmenge auftritt. lift(M → N ) = Aufgabe 9.1:
supp(M → N ) conf(M → N ) = supp(M ) · supp(N ) supp(N )
Bewertung von Assoziationsregeln
Berechnen Sie für die Regel M →N
den Support, die Konfidenz und Completeness sowie den Gain, p-s-Wert und Lift. Gegeben haben wir 50.000 Datensätze, in denen M 900-mal, N 1200-mal auftritt. M und N treten gemeinsam 800-mal auf.
9.3
Gütemaße und Fehlerkosten
Nachdem wir Interessantheitsmaße für Assoziationsregeln betrachtet haben, wenden wir uns nun der Frage zu: Wie kann man die Qualität eines Entscheidungsbaums oder einer k-Nearest-Neighbour-Klassifikation messen? Ein einfacher Ansatz ist das Berechnen des Fehlers einer Vorhersage (Klassifikation oder numerische Vorhersage). Man vergleicht einfach den erwarteten mit dem vorhergesagten Wert.
9.3.1
Fehlerraten
Fehlerrate bei Klassifikationen Bei Klassifikationsproblemen ist unter der Fehlerrate der relative Anteil der falsch klassifizierten Beispiele einer Instanzenmenge zu verstehen: Fehlerrate =
Falsche Klassenzuordnungen Alle Klassenzuordnungen
236
9 Bewertung
Fehlerrate bei numerischer Vorhersage Bei numerischer Vorhersage wird diese absolute Aussage durch den Abstand der vorhergesagten zu den erwarteten Ergebnissen ergänzt: (Realwerti − Vorhersagewerti )2 i Fehlerrate = Realwert2i i
Es gibt eine Reihe weiterer Maße für die Bewertung numerischer Vorhersagen, siehe [WFH11, S. 180].
Erfolgsrate Um einen subjektiv besseren Eindruck zu vermitteln, wird häufig die Erfolgsrate – statt der Fehlerrate – angegeben: Erfolgsrate = 1 − Fehlerrate
9.3.2
Weitere Gütemaße für Klassifikatoren
Speziell für Klassifikatoren existieren weitere Gütemaße, die das Konzept der Fehlerraten erweitern und von denen wir uns hier einige anschauen. Wir betrachten dazu einen Klassifikator, der gute Kunden vorhersagen soll. Man unterscheidet 4 Fälle: TP (richtig positiv) – Ein guter Kunde wird als guter erkannt. TN (richtig negativ) – Ein nicht guter Kunde wird als nicht guter erkannt. FP (falsch positiv) – Ein nicht guter Kunde wird als guter erkannt. FN (falsch negativ) – Ein guter Kunde wird als nicht guter erkannt. Darauf aufbauend werden abgeleitete Kenngrößen definiert [Run10, S. 86ff.]: Korrekte Klassifikationen T=TP+TN; alle korrekten Vorhersagen. Falsche Klassifikationen F=FP+FN; alle falschen Vorhersagen. Relevanz R=TP+FN; die Anzahl der guten Kunden. Irrelevanz I=FP+TN; die Anzahl der nicht guten Kunden. Positivität P=TP+FP; die Anzahl der als gut klassifizierten Kunden. Negativität N=TN+FN; die Anzahl der als nicht gut klassifizierten Kunden. Korrektheitsrate
T n;
Inkorrektheitsrate
der Anteil der korrekt klassifizierten Kunden.
F n;
der Anteil der nicht korrekt klassifizierten Kunden.
9.3 Gütemaße und Fehlerkosten
237
Richtig-positiv-Rate TPR= TP R . Wie oft wurde ein guter Kunde auch als solcher klassifiziert? (Sensitivität, Trefferquote, Recall). Richtig-negativ-Rate TNR= TN I . Wie oft wurde ein nicht guter Kunde auch als solcher klassifiziert? Falsch-positiv-Rate FPR= FP I . Wie oft wurde ein nicht guter Kunde als guter klassifiziert? Falsch-negativ-Rate FNR= FN R . Wie oft wurde ein guter Kunde als nicht guter klassifiziert? Positiver Vorhersagewert, Genauigkeit, Präzision (precision) ein als gut vorhergesagter Kunde ein guter Kunde? Negativer Vorhersagewert ein nicht guter Kunde?
TN N .
TP P .
Wie oft ist
Wie oft ist ein als nicht gut vorhergesagter Kunde
Negative Falschklassifikationsrate Kunde ein guter Kunde? Positive Falschklassifikationsrate ein nicht guter Kunde?
FN N . FP P .
Wie oft ist ein als nicht gut vorhergesagter
Wie oft ist ein als gut vorhergesagter Kunde
Ein Gütemaß allein reicht meistens nicht aus. Beispielsweise kann eine 90%ige Korrektheitsrate sehr trügerisch sein. Betrachten wir ein Beispiel, bei dem 90% der Daten zur Klasse 1, die restlichen 10% zur Klasse 2 gehören. Sagen wir nun für alle Daten einfach die Klasse 1 vorher, so erreichen wir zwar sofort die 90% Korrektheit, sind aber von einem echten Klassifikator weit entfernt. Die gleiche Konstruktion können wir für die Gütemaße TPR, TNR, FPR, FNR (und auch die anderen) vornehmen, da sich diese auf nur einen Aspekt (TP/TN/FP/FN) der Klassifizierung beziehen. Aus diesem Grund nimmt man meistens mehrere Kenngrößen zur Bewertung eines Klassifikators, beispielsweise die Richtig-positiv-Rate (TPR) und die Falsch-positivRate (FPR). In einer Receiver-Operating-Curve – ROC-Diagramm – trägt man TPR und FPR gegeneinander auf. Auch ein PR-Diagramm wird oft verwendet, in welchem man Precision und Recall gegeneinander aufträgt. Beispiel 9.3:
Gütemaße für Klassifikatoren
Eine Klassifikation hat zu folgendem Ergebnis geführt: • Von den 1000 gegebenen Beispielen gehören 300 Kunden zur Klasse schlecht, 700 zur Klasse gut. • Unser Verfahren hat von den 300 schlechten Kunden 290 korrekt klassifiziert; von den 700 guten Kunden wurden 650 korrekt erkannt.
238
9 Bewertung
Wir berechnen exemplarisch einige der obigen Gütemaße. • TP=650, TN=290, FP=10, FN=50
• Korrekte Klassifikationen: T=TP+TN = 940 • Falsche Klassifikationen: F=FP+FN=60
• Relevanz: R=TP+FN = 700, Irrelevanz I=FP+TN=300 • Recall: TPR= TP R =
650 700
• Positivität: P=TP+FP=650+10=660 • Precision:
TP P
=
650 660
Um die oben diskutierte potentielle Einseitigkeit der Gütemaße zu reduzieren, werden Gütemaße auch kombiniert. So lassen sich Precision und Recall zu dem sogenannten F-Maß kombinieren. F-Maß 2 ·
Precision·Recall Precision+Recall
Der Wert des F-Maßes sollte nahe 1 liegen. Dies ist der Fall, wenn sich Precision und Recall jeweils nicht zu weit von 1 entfernt bewegen. Für das Beispiel 9.3 ergibt sich folgendes F-Maß: F-Maß = 2 · Beispiel 9.4:
Precision · Recall =2· Precision + Recall
650 650 660 · 700 650 650 660 + 700
= 0, 956
F-Maß
Wir betrachten einen Klassifikator für 100 Daten mit folgenden Werten: • TP=10, TN=10, FP=0, FN=80
• Korrekte Klassifikationen: T=TP+TN = 20 • Falsche Klassifikationen: F=FP+FN=80
• Relevanz: R=TP+FN = 90, Irrelevanz I=FP+TN=10 Unser Klassifikator klassifiziert also nur 20% der Beispiele korrekt. Die Precision konzentriert sich nur auf die positiv klassifizierten Fälle und liefert folglich 1. • Positivität: P=TP+FP=10 • Precision:
TP P
=
10 10
=1
9.3 Gütemaße und Fehlerkosten
239
Der Recall erkennt die Schwäche des Klassifikators: • Recall: TPR= TP R =
10 90
= 0, 1111
Das F-Maß kombiniert diese beiden Werte nun zu: • F-Maß: 2 ·
9.3.3
0,1111·1 0,1111+1
= 0, 2
Fehlerkosten
Im vorigen Abschnitt sind wir davon ausgegangen, dass die Fehler alle gleich wichtig für unser Resultat sind. Diese Annahme ist aber meistens nicht richtig. Unter betriebswirtschaftlichen Gesichtspunkten ist zu beachten, dass sich die aufgrund einer Klassifikation getroffenen Entscheidungen unterschiedlich auf Gewinn beziehungsweise Verlust einer Firma auswirken können. Unter Berücksichtigung dieses Aspekts lassen sich für ein Verfahren auch die sogenannten Fehlerkosten berechnen. Wird beispielsweise einem Bankkunden aufgrund der Klassifikation des Verfahrens ein Kredit bewilligt, den dieser nicht zurückzahlt, entstehen zusätzliche Kosten – möglicherweise sogar in Höhe der vollen Kreditsumme. Wird aber jemandem ein Kredit verweigert, der ihn zurückgezahlt hätte, entstehen lediglich Zinseinbußen. Fehler ist also nicht gleich Fehler. Die Kosten eines Fehlers bei einer Entscheidung für den Kredit sind höher als bei einer Entscheidung gegen den Kredit. Wenn nun verschiedene Fehlerarten mit ihren spezifischen Kosten ungleich verteilt auftreten, ist meist nicht das Modell mit der minimalen, sondern mit der betriebswirtschaftlich optimalen Fehlerrate gesucht. Man kann hierzu eine Kostenmatrix oder eine Bonusmatrix aufstellen, die je nach Vorhersagetreffer oder -fehler Plus- beziehungsweise Minuspunkte vergibt.
0 1
Vorhersage 0 1 10 −20 −30 20
Wird ein Datensatz des Typs 0 mit 1 vorhergesagt, so kostet uns das 20, eine korrekte Vorhersage für 0 bringt uns 10. Ziel ist nun nicht mehr, den Prozentsatz der korrekt vorhergesagten Datensätze, sondern den Gewinn zu maximieren. Beispiel 9.5:
Data Mining Cup 2002
Im Abschnitt 10 wird die Aufgabe des Data Mining Cups 2002 [DMC] behandelt. Dort wird eine solche Kostenmatrix angegeben: Kunde will Kunde wird als Kündiger klassifiziert. Kunde wird als Nichtkündiger klassifiziert.
kündigen 43,80e 0,00e
nicht kündigen 66,30e 72,00e
240
9 Bewertung
Erkennen wir einen Kündiger als Kündiger, so wird diesem ein Angebot unterbreitet. Durchschnittlich kann dann noch mit Einnahmen in Höhe von 43,80e gerechnet werden. Wird ein Kündiger nicht erkannt, kündigt dieser, und es sind keine Einnahmen mehr zu erwarten. Klassifizieren wir einen Nichtkündiger als Kündiger und unterbreiten ihm ein besseres Angebot, so wird er dieses dankend annehmen und folglich weniger bezahlen als vorher. Wir nehmen dann nicht mehr 72e ein, sondern nur noch 66,30e. Hier spielt also der Prozentsatz an richtigen Vorhersagen eine untergeordnete Rolle. Vielmehr kommt es auf den erzielten Gewinn an.
9.4
Testmengen
Alle Data-Mining-Verfahren zur Vorhersage basieren darauf, dass sie sich die ihnen präsentierten Muster in irgendeiner Weise „merken“, wenn auch nicht explizit jedes einzelne. So sollte jedes Verfahren die ihm häufig genug präsentierten Beispiele auch richtig bearbeiten. Was aber im Allgemeinen mehr interessiert, ist die Frage nach dem Verhalten des Verfahrens bei neuen Beispielen. Es ist daher sinnvoll, neben den Trainingsdaten auch noch einen Vorrat an Beispielen zu halten, der ausschließlich zum Testen verwendet wird. Die einzigen Daten, die wir zur Verfügung haben, sind die Trainingsdaten. Auf diesen kennen wir die korrekte Vorhersage oder Klassifikation. Folglich sollten wir diese Menge prozentual aufteilen. Auf der einen Teilmenge lernen wir, auf der anderen Teilmenge können wir dann prüfen, ob unser erlerntes Modell gut funktioniert oder nicht. Wir stellen folglich hier Verfahren vor, die eine für Trainingszwecke vorliegende Instanzenmenge in Trainings- und Testmengen zerlegen. Wir gehen wieder von der in Abschnitt 2.6 auf Seite 55 genannten grundlegenden Annahme aus, dass sich neue Datensätze genauso wie die vorliegenden Trainingsdaten verhalten. Ohne diese Annahme ist Data Mining nicht sinnvoll. Eine Konsequenz dieser Annahme ist, dass jegliche Zerlegung der gegebenen Beispiele so zu erfolgen hat, dass Trainings- und Testmenge einander „ähnlich“ sind. Um verschiedene Data-Mining-Verfahren sinnvoll miteinander vergleichen zu können, verwendet man idealerweise für alle Verfahren dieselbe Zerlegung der Instanzenmenge. So werden alle Verfahren mit denselben Daten trainiert beziehungsweise getestet. Dies gewährleistet die Vergleichbarkeit der Fehlerraten der Verfahren.
Holdout Beim Holdout wird eine Teilmenge der vorliegenden Menge „zur Seite gelegt“, um damit später testen zu können. Die restliche Instanzenmenge wird zum Trainieren eingesetzt. Faktisch wird die Instanzenmenge in zwei Teilmengen zerlegt, in die Trainings- sowie in die Testmenge. Train ∪ Test = Instanzenmenge
9.4 Testmengen
241
Stratifikation Bei absolut zufälligem Holdout kann das Problem auftreten, dass die Testdaten Beispiele enthalten, zu denen keine ähnlichen in den Trainingsdaten vorkommen – oder andersherum. Dann kann man nicht erwarten, dass sich das Verfahren auf neuen Daten, zu denen es in den Testdaten keine ähnlichen Beispiele gibt, gute Vorhersagen liefert. Unsere Grundannahme – neue Datensätze verhalten sich genauso wie die vorliegenden Trainingsdaten – fordert ja gerade, dass wir ähnliche Beispiele in den Trainingsdaten haben müssen. Mit der Stratifikation wird nun versucht, die Teilung so vorzunehmen, dass sowohl in der Trainings- als auch in der Testmenge die Häufigkeitsverteilung h der Klassen K dieselbe wie in der gesamten Instanzenmenge ist. = hTest = hTrain ∀k ∈ K : hInstanzenmenge k k k
Diese Option der Stratifizierung ist in Knime beim Partitioning möglich und sollte immer gewählt werden. In Abbildung 9.4 sind für das Wetterbeispiel eine schlechte Trainingsmenge und der mittels J48 generierte Entscheidungsbaum dargestellt. In der Trainingsmenge taucht nur 1 Beispiel für den Fall, dass nicht gespielt wird auf. Wir können nicht erwarten, dass ein Klassifikator gefunden wird, der gute Vorhersagen für play liefert. Man kann outlook tempe rature sunny hot overcast hot rainy mild rainy cool overcast cool sunny cool rainy mild sunny mild overcast mild overcast hot
humi dity high high high normal normal normal normal normal high normal
windy play false false false false true false false true true false
no yes yes yes yes yes yes yes yes yes
Humidity
= high
= normal
yes (6.0)
Outlook
= overcast
yes (2.0)
= rain
yes (1.0)
= sunny
no (1.0)
Abb. 9.4: Wetter-Beispiel – schlechte Trainingsmenge
einwenden, dass bei kleinen Datenmengen eine Datenanalyse ohnehin fragwürdig ist, aber derselbe Effekt tritt ein, wenn Tausende Datensätze vorliegen und die Aufteilung in Trainings- und Testmenge unglücklich vorgenommen wird. Der C4.5-Algorithmus zählt nur die relativen Häufigkeiten, so dass es keinen Unterschied zwischen einer unglücklichen Auswahl bei einer kleinen Menge und bei einer großen Menge gibt.
Kreuzvalidierung Bei der Kreuzvalidierung wird die zur Verfügung stehende Datenmenge in V gleich große Teilmengen zerlegt. Nun wird eine dieser Untermengen als Testmenge zurückbehalten,
242
9 Bewertung
mit den anderen wird das Verfahren trainiert. Auf der zurückbehaltenen Testmenge wird anschließend die Fehlerrate ermittelt. Dies wird mit jeder anderen Teilmenge als Testmenge wiederholt. Die Fehlerrate des Verfahrens wird als Mittelwert der jeweiligen Fehlerraten berechnet. Wiederholt man die Validierung mehrfach, liefert der Mittelwert der Fehlerraten der einzelnen Validierungen eine genauere Fehlerrate für das Verfahren. Eine Modifikation der Kreuzvalidierung ist das Bootstrapping, wo man zulässt, dass sich die Stichproben überschneiden.
Fehlerrate =
V
Fehlerratei
i=1
V
Leave-one-out Das Leave-one-out-Verfahren ist im wesentlichen identisch mit der Kreuzvalidierung. Hierbei wird jedoch die N -elementige Instanzenmenge in genau N Teilmengen zerlegt.
Fehlerrate =
|Instanzenmenge|
Fehlerratei
i=1
|Instanzenmenge|
Die Kreuzvalidierung lernt immer auf N − 1 Elementen und prüft den Klassifikator auf dem verbleibenden Beispiel.
9.5
Qualität von Clustern
Die Qualität einer Cluster-Bildung ist bei weitem nicht so einfach wie die eines Klassifikators zu bewerten. Wann ist eine Clusterbildung besser als eine andere? Wir haben diese Frage bereits in den Abschnitten 6.2 und 6.3 im Zusammenhang mit dem k-Meansund k-Medoid-Algorithmus angesprochen. Es gibt zwei unterschiedliche Herangehensweisen: Ansatz 1: Eine erste Forderung ist, dass die einzelnen Cluster möglichst kompakt sind. Dies kann man durch die Summe der Abweichungen der Objekte eines Clusters vom Clusterrepräsentanten (oder deren Quadrate) messen. Diese Abweichungen summiert man nun über alle Cluster. Diese Summe sollte minimal sein. Wir gehen hier zunächst davon aus, dass wir eine feste Clusteranzahl k vorgegeben haben. Die Güte einer ClusterBildung C lässt sich daher wie folgt messen: G1 =
k i=1
dist(x, mi )2
x∈Ci
Hier ist mi der Repräsentant von Cluster Ci . Die Qualität der Clusterbildung ist umso besser ist, je kleiner dieser Wert ist. Günstiger ist es daher, den Reziprokwert als
9.5 Qualität von Clustern
243
Gütemaß zu nehmen: Güte1 =
1 k
dist(x, mi )2
i=1 x∈Ci
Diesen Ansatz haben wir im Zusammenhang mit dem k-Means- und k-Medoid-Verfahren diskutiert. Ansatz 2: Wir können ebenso fordern, dass die Cluster möglichst weit voneinander entfernt liegen. Man summiert dann die Quadrate der Distanzen zwischen allen Clusterrepräsentanten. Güte2 = dist(mj , mi )2 1≤i≤j≤k
Man kann die Ansätze kombinieren, indem man beide Gütemaße multipliziert: Güte = Güte1 · Güte2 Beim ersten Gütemaß kann man alternativ auch den maximalen Abstand zweier Punkte in einem Cluster nehmen. Ebenso könnte man zu jedem Punkt die Distanz zu seinem nächsten Nachbarn (im gleichen Cluster) nehmen und davon das Maximum über alle Punkte bilden (minimum distance, single linkage). Diese Konzepte hatten wir beim agglomerativen Clustern in Abschnitt 6.5 vorgestellt. Bisher sind wir von einer festen Clusteranzahl k ausgegangen. Ändert sich etwas, wenn wir k variabel lassen? Wir suchen nach einem beliebigen Clustering, bei dem aber die Anzahl der Cluster nicht vorgegeben ist. Sehen Sie das Problem? Nehmen wir unsere obigen Gütemaße, wäre das Resultat ein Clustering, bei dem alle Objekte einen separaten Cluster bilden. Die Qualität nach Gütemaß 1 ist dann maximal, da der Nenner 0 ist; besser geht das nicht. Auch nach Gütemaß 2 ist die Güte maximal. Eine Möglichkeit, mit variablen k umzugehen, ist es, Experimente mit verschieden k durchzuführen und dann die Qualität der Cluster-Bildungen miteinander zu vergleichen. Eine zweite Möglichkeit ergibt sich aus der hierarchischen Cluster-Bildung (Abschnitt 6.1). Sowohl beim agglomerativen als auch beim divisiven Clustern kann man anhand bestimmter Kriterien die optimale Cluster-Bildung finden (vgl. Abschnitt 6.5). Eine dritte Möglichkeit ist der sogenannte Silhouetten-Koeffizient [Rou87]. Der Silhouettenkoeffizient benötigt den durchschnittlichen Abstand dist1 (x) eines Objekts x zu den anderen Objekten im gleichen Cluster sowie den durchschnittlichen Abstand dist2 (x), den x zu den Objekten des nächstgelegenen Clusters hat. Der Silhouetten-Koeffizient von x ist definiert als s(x) =
dist1 (x) − dist2 (x) max(dist1 (x), dist2 (x))
244
9 Bewertung
Der Silhouetten-Koeffizient eines Clusters ergibt sich dann als arithmetisches Mittel der Silhouetten-Koeffizienten aller Objekte im Cluster. Der Silhouetten-Koeffizient kann Werte zwischen −1 und 1 annehmen. Ein Wert nahe 1 spricht für eine gute Trennung, −1 dagegen. Gute Cluster liefern Koeffizienten, die möglichst in der Nähe von 1, zumindest aber deutlich über 0 liegen.
9.6
Visualisierung
Ziel eines Data-Mining-Projekts ist die Gewinnung von Wissen. Ob Cluster, ein Entscheidungsbaum oder Assoziationsregeln – die entwickelten Modelle und Lösungen sind in irgendeiner Art und Weise zu veranschaulichen. Zum einen dient das dem eigenen Verständnis des Problems und der Daten. Zudem erhöht eine verständliche Repräsentation des Modells beziehungsweise der Ergebnisse das Vertrauen in die erarbeitete Lösung. Zum anderen müssen wir unsere Resultate auch in einer verständlichen, nachvollziehbaren Form präsentieren, um unsere Kunden, Kollegen oder Vorgesetzten zu überzeugen, dass die gefundenen Resultate korrekt und wertvoll sind. Wir Menschen sind schlecht darin, Zahlenkolonnen zu vergleichen. Muster dagegen erkennen wir gut. Wir betrachten die Iris-Datensätze (siehe Anhang A.1). Der IrisDatensatz besteht aus 50 Beobachtungen, an denen jeweils vier Attribute der Blüten (sepal length, sepal width, petal length, petal width in cm) erhoben wurden. Jede Pflanze ist einer Iris-Art zugeordnet (Iris Setosa, Iris Versicolor, Iris Virginica). 5.1 , 3.5 4.9 , 3.0 4.7 , 3.2 4.6 , 3.1 ........
, , , ,
1.4 1.4 1.3 1.5
, , , ,
0.2 0.2 0.2 0.2
, , , ,
Iris-setosa Iris-setosa Iris-setosa Iris-setosa
Aus diesen vorliegenden Daten können wir Menschen wenig beziehungsweise wohl gar nichts herauslesen. Visualisieren wir die Daten aber wie in Abbildung 9.5, so bekommen wir sofort einen ersten Eindruck und erkennen einige Zusammenhänge. In diesem Abschnitt können wir keine umfassende Einführung in die Visualisierung mittels Computern geben, vielmehr zeigen wir exemplarisch einige Möglichkeiten auf. Einige Formen der Visualisierung haben wir in den Kapiteln dieses Buchs bereits genutzt, wie die Darstellung eines Entscheidungsbaums oder die Bilder der neuronalen Netze. Ein Entscheidungsbaum wird nie in seiner graphischen Form – wie beispielsweise die Weka-Darstellung in Abbildung 1.21 auf Seite 31 – gespeichert. Für eine gute Verständlichkeit und auch Dokumentation ist diese Form der Präsentation aber sehr gut geeignet. Auch Regeln könnte man im weitesten Sinn dazuzählen, auch wenn dies eher unter lesbarer Repräsentation denn unter Visualisierung einzuordnen ist. Doch nun einige Beispiele für Visualisierungen.
9.6 Visualisierung Image (SVG)
245
JFreeChart View
Abb. 9.5: Visualisierung Iris-Daten in Knime
Eine einfache Form der Visualisierung ist das Linien-Diagramm (line chart). Dargestellt werden zweidimensionale Informationen. In Abbildung 9.6 sind die Funktionen f (x) = cos(2 · π · x) und g(x) = cos(3 · π · x) dargestellt (erstellt mit GnuPlot1 ). 1
f(x) g(x)
0.5 0 -0.5 -1
0
0.2
0.4
0.6
0.8
1
Abb. 9.6: Visualisierung – Liniendiagramm 1
Bereits hier sehen wir, dass man Farben leicht benutzen könnte, um in eine zweidimensionale Darstellung eine 3. Information – hier die Zuordnung der Linien zur jeweiligen Funktion – einzubringen. Wann eignet sich ein solches Linien-Diagramm? Ein Linien-Diagramm kann immer dann eingesetzt werden, wenn ein Zusammenhang zwischen zwei Dimensionen besteht beziehungsweise vermutet wird. In Abbildung 9.7 auf der nächsten Seite sind die Werte für sepal length und petal length abgebildet. Auch wenn diese Grafik nicht komplett 1 http://gnuplot.info/
246
9 Bewertung
überzeugt, so wird doch die Vermutung verstärkt, dass ein Zusammenhang zwischen diesen beiden Attributen existieren kann. Image (SVG)
JFreeChart View
Abb. 9.7: Visualisierung – Liniendiagramm 2
Gerade in der Vorbereitungsphase kann ein solches Diagramm nützlich sein. Aus Abbildung 9.7 haben wir beispielsweise eine Hypothese abgeleitet. Visualisierung kann uns also nicht nur beim Verständnis der Daten helfen, sondern auch beim Aufstellen von plausiblen Hypothesen. Aber auch für die Darstellung der Verbesserung der Qualität eines Data-Mining-Modells in unseren Experimenten sind Linien-Diagramme sehr gut geeignet. Man kann in einem Liniendiagramm die Werte bezüglich mehrerer Attribute anzeigen lassen. In Abbildung 9.8 sind die Datensätze des Iris-Beispiels dargestellt, wobei die Datensätze vorab nach petal length und sepal length sortiert wurden. Auf der xAchse ist die Nummer des Datensatzes abgetragen, auf der y-Achse der jeweilige Wert der vier Attribute. Wir sehen an beiden Abbildungen, dass ein Liniendiagramm hierfür nur bedingt geeignet ist, da in diesem Beispiel diskretisierte Werte – die Iris-Werte sind auf eine Kommastelle gerundet – vorliegen. Folglich ist eine Interpolation, die vom Liniendiagramm vorgenommen wird, unsinnig. Sinnvoller – und inhaltlich korrekt – ist hier das Punktediagramm (Seite 250 f.). Das Liniendiagramm hebt jedoch stärker den möglichen Zusammenhang zwischen den Attributen hervor. Für den nächsten Diagrammtyp – das Balkendiagramm (bar chart) – verwenden wir den Sojabohnen-Datensatz (siehe Abschnitt A.2). In diesem Beispiel werden Krankheiten von Sojabohnen vorhergesagt. Mit einem Balkendiagramm kann man sich die Häufigkeit von Attributwerten veranschaulichen.
9.6 Visualisierung
247
7,9 7,1 6,1 5,1 4,1 3,1 2,1 1,1 0,1 ...
...
...
...
...
...
...
...
...
7
10
8
12
83
8
13
84
62
24
32
1
22
Abb. 9.8: Visualisierung – Liniendiagramm 3
In Abbildung 9.9 ist die Häufigkeitsverteilung des Zielattributs, hier der Krankheiten dargestellt. Image (SVG)
JFreeChart View
Abb. 9.9: Visualisierung – Balkendiagramm 1
Diese Information kann nützlich sein, um so beispielsweise zu erkennen, ob wenige Krankheiten sehr oft vorkommen und ob für bestimmte Krankheiten nur wenige Beispiele vorliegen. Insbesondere eine zu geringe Anzahl von Beispielen für eine bestimmte
248
9 Bewertung
Ausprägung des Zielattributs kann zu falschen Klassifikationen führen. Hat man nur zwei Beispiele für eine bestimmte Krankheit gegeben, so ist die Anwendung des kNearest Neighbour mit einem hohen Wert für k fragwürdig. Auch in einem Balkendiagramm lassen sich Informationen über mehrere Attribute darstellen. In Abbildung 9.10 sind die Häufigkeitsverteilungen für mehrere Attribute zu sehen. Diese Darstellung ist nur sinnvoll, wenn die Attribute denselben Wertebereich besitzen. Dies ist hier der Fall. Die gewählten Attribute plant growth, leaves, stem, seed haben alle denselben Wertebereich: ?, abnorm, norm.
Abb. 9.10: Visualisierung – Balkendiagramm 2
Aber nicht nur für nominale und ordinale Daten sind Balkendiagramme sinnvoll. Auch für metrische Daten kann man Balkendiagramme verwenden. Im Balkendiagramm 9.11 auf der nächsten Seite sind die Iris-Daten veranschaulicht. Da wir es hier mit metrischen Attributen zu tun haben, müssen die Daten vor der Visualisierung diskretisiert werden. Dies erfolgt mittels Binning. Jeder Wertebereich der 4 Attribute wird in diesem Beispiel separat in 10 Intervalle (Bins) zerlegt. Wir sehen, dass die Balkendiagramme bei der Darstellung mehrerer Attribute an ihre Grenzen stoßen, da die Balken sich zum Teil verdecken. Histogramme sind eine spezielle Form von Balkendiagrammen. Ein Histogramm haben wir bereits in Abbildung 1.19 auf Seite 29 in Weka gesehen. In Abbildung 9.12 auf der nächsten Seite ist die Aufteilung der Klassen für sepal length dargestellt. Für sepal length wurden 6 Intervalle – wieder durch Binning – gebildet. Iris setosa ist grau dargestellt, Iris versicolor hellgrau, Iris virginica schwarz. Man erkennt auch hier einen leichten Zusammenhang zwischen den Werten für sepal length und der Klassenzugehörigkeit. Kleinere Werte sprechen für die Klasse Iris setosa, größere Werte für die Klasse Iris virginica.
9.6 Visualisierung
Abb. 9.11: Visualisierung – Balkendiagramm 3
Abb. 9.12: Visualisierung – Histogramm
249
250
9 Bewertung
Eine Alternative zum Balkendiagramm ist das Kreisdiagramm (Tortendiagramm, pie chart). In Abbildung 9.13 ist die Verteilung der Krankheiten der Soja-Bohnen dargestellt. Die Größe der Kreissegmente entspricht dem prozentualen Anteil an der Gesamtmenge. Man sieht bereits hier, dass ein solches Kreisdiagramm wohl für eine Präsentation sinnvoll ist, aber nicht für die permanente Arbeit in der Datenvorbereitung.
Abb. 9.13: Visualisierung – Kreisdiagramm
Die bisherigen Diagrammtypen sind für die Visualisierung der gegebenen Daten in den vorbereitenden Phasen der Datenanalyse – mit Einschränkungen auch das Kreisdiagramm – geeignet. Gerade die Phasen des Verstehens der Daten und der Datenvorbereitung – siehe CRISP-Modell in Abschnitt 1.3 – können von guten Visualisierungen profitieren und zu ersten Hypothesen führen. Die nächsten Diagrammtypen – die Punkte-Diagramme – können natürlich ebenso in der Datenvorbereitung eingesetzt werden, sie eignen sich aber auch sehr gut für die Visualisierung von Klassen oder Clustern. Ein Punkte-Diagramm (Streu- oder ScatterDiagramm) haben wir in Abbildung 9.5 auf Seite 245 bereits benutzt. Mit PunkteDiagrammen kann man die Verteilung von Klassen – bei sonst numerischen Attributen – gut visualisieren. In Abbildung 9.14 auf der nächsten Seite ist dies für die Iris-Datensätze mittels GnuPlot geschehen. Wir haben in dieser zweidimensionalen Darstellung nun sogar 4 Dimensionen abgebildet: petal length, sepal length, sepal width und die Iris-Klasse.
9.6 Visualisierung
251
7 setosa versicolor virginica
Petal length
6 5 4 3
8
2
7 6
1 2
2.5
Sepal length
5 3 3.5 Sepal width
4
4.5
Abb. 9.14: Visualisierung – Punkte-Diagramm
Eine Variante der Punkte-Diagramme sind die Blasendiagramme (Bubble chart). Abbildung 9.15 zeigt die Iris-Datensätze bezüglich petal width und petal length. Die Klassen sind durch Grauwerte gekennzeichnet. Zusätzlich kann man in einem Blasendiagramm wieder eine 4. Dimension darstellen. Hier wurden die Werte für sepal length dargestellt, und zwar durch die Größe der Punkte.
Abb. 9.15: Visualisierung – Blasendiagramm
252
9 Bewertung
Man erkennt nun nicht nur den Zusammenhang zwischen petal width und petal length, sondern auch die Zusammenhänge zwischen petal width und den Irisklassen, zwischen petal length und den Irisklassen sowie zwischen sepal length und den Irisklassen. Eine weitere Variante der Punkte-Diagramme sind die in Knime verfügbaren Streudiagramm-Matrizen (scatter matrix), die mehrere Punktediagramme in einem Fenster vereinigen. Abbildung 9.16 zeigt die Iris-Datensätze bezüglich petal length, sepal length und sepal width. Die Klassen sind wieder durch Grauwerte gekennzeichnet.
Abb. 9.16: Visualisierung – Streudiagramm-Matrix
Der Vorteil der Streudiagramme ist, dass man in einer Darstellung mehrere Attributkombinationen darstellen kann. Es gibt eine Reihe von weiteren Diagrammtypen. Eine Baumkarte (Tree Map) dient der Visualisierung von hierarchischen Strukturen. Man stellt die Hierarchie durch ineinander verschachtelte Rechtecke dar. Die Rechtecke widerspiegeln in ihrer Größe proportional die Größenverhältnisse. Dies kann man beispielsweise beim hierarchischen Clustern einsetzen. Es gibt einige weitere Varianten der Balkendiagramme wie die gestapelten Säulendiagramme und auch die Treppenstufendiagramme. Eine gute Einführung in die Varianten der Visualisierung wird in [Yau11] gegeben.
9.6 Visualisierung
253
Jede Visualisierung stößt jedoch mit steigender Dimension der Daten an ihre Grenzen. Wir haben zwar gesehen, dass man auch 4 Attribute gleichzeitig – nutzt man Farbe und Größe, dann sogar 5 – visualisieren kann, meistens ist es aber schwer, die relevanten Informationen auf 4 Dimensionen einzugrenzen. Im Sojabohnenbeispiel (Abschnitt A.2) haben wir mehr als 30 Attribute. Und dies ist eher der Normalfall. Insofern ist der Wunsch, die Dimension zu reduzieren, berechtigt. Es gibt eine Reihe von Techniken, die die Dimension reduzieren. Der klassische Vertreter ist die Hauptachsentransformation (PCA – Principal Component Analysis). Sie setzt numerische Attribute voraus. Die Hauptachsentransformation modifiziert die Daten derart, dass die Struktur der Daten achsenparallel wiedergegeben wird. Betrachten wir die Iris-Daten – nur bezüglich petal length und sepal length und auf das Intervall [0, 1] normalisiert, wie in Abbildung 9.17 dargestellt, so sehen wir, dass eine geringe Drehung im Uhrzeigersinn die Daten bezüglich der x-Achse besser darstellt.
Abb. 9.17: Iris-Daten
Dies ist der Ansatz der Hauptachsentransformation. Alle Datensätze x werden mittels einer Transformationsmatrix PCA umgewandelt. ¯) xneu = PCA · (x − x
Mit x ¯ bezeichnen wir den Vektor der Durchschnittswerte der x-Komponenten. Die Matrix PCA kann eine n×n-Matrix sein. Dann werden die Daten nur „gedreht“. Sie kann aber – das war unser Ausgangspunkt – auch für die Dimensionsreduktion genutzt werden, dann hat die Matrix die Größe m × n, wobei m < n.
Und welche Matrix suchen wir? Gesucht ist die Matrix, die die Varianz in der Projektionswelt maximiert. Dies führt zu einem Eigenwertproblem. Man erhält m Vektoren, die gerade die Hauptachsen sind. Die Transformationsmatrix wird aus diesen Vektoren gebildet.
Führt man dies für die Iris-Daten durch, so erhält man die in Abbildung 9.18 dargestellten Daten.
254
9 Bewertung
Abb. 9.18: Iris-Daten – Hauptachsentransformation
Für die Dimensionsreduktion gibt es etliche weitere Verfahren, wir verweisen den Leser hier auf die Literatur.
10
Eine Data-Mining-Aufgabe The simpler it looks, the more problems it hides. Lee’s Law of Electrical Repair.
10.1
Die Aufgabe
Die bisher diskutierten Beispiele dienten in erster Linie der Veranschaulichung von Vorgehensweisen oder Verfahren. Data Mining wird aber nicht auf Datenmengen angewendet, die nur aus einigen Dutzend Datensätzen bestehen. Realistische Aufgaben können vereinzelt auf einigen Hundert Datensätzen beruhen, in der Regel gilt es Tausende oder sogar Millionen von Datensätzen zu analysieren. In diesem Kapitel illustrieren wir die Vorgehensweise des Data Minings anhand eines umfangreicheren Beispiels. Seit vielen Jahren wird der Data Mining Cup1 von der prudsys AG aus Chemnitz durchgeführt, bei dem in jedem Jahr eine Data-Mining-Aufgabe zu bearbeiten ist. Die Daten für diese Aufgabe werden von Firmen bereitgestellt, so dass der Data Mining Cup als ein guter Test für Probleme der realen Welt angesehen werden kann. Wir werden auf die Aufgabe aus dem Jahre 2002 zurückgreifen, bei der ein Vorhersagemodell für eine Mailingaktion eines Energieversorgers zu entwickeln ist. Das Kapitel orientiert sich an dem in Abschnitt 1.3 eingeführten Vorgehensmodell für Data-Mining-Aufgaben: Von der Problemanalyse über das Verständnis der Daten, der Datenvorbereitung, dem Einsatz von Data-Mining-Algorithmen bis hin zur Auswertung werden mögliche Vorgehensweisen und Experimente diskutiert. Somit kann das Kapitel dazu dienen, sich dem Data Mining erneut zu widmen und die einzelnen Schritte anhand einer komplexeren Aufgabe Revue passieren zu lassen. Die Ausführungen können als Handlungsanleitung für eigene Problembearbeitungen herangezogen werden. Im Data Mining Cup werden Trainingsdaten bereitgestellt, mit denen ein Vorhersagemodell entwickelt beziehungsweise trainiert wird. Das erarbeitete Modell wird dann auf eine zweite Menge, die Klassifikationsdaten angewendet. Die daraus entstehenden Vorhersagen werden im Rahmen des Wettbewerbs eingereicht. Erst nach Ende des Wettbewerbs werden auch für die Klassifikationsdaten die wahren Klassenzuordnungen veröffentlicht. Obwohl uns für das gewählte Beispiel auch für die Klassifikationsdaten die Ergebnisse vorliegen, werden wir hier so vorgehen, wie es im Rahmen des Wettbewerbs möglich ist. 1 Siehe
www.data-mining-cup.de, 2015-12-04.
256
10 Eine Data-Mining-Aufgabe
• Die Trainingsdaten werden sowohl zum Trainieren als auch zum Testen des erarbeiteten Vorhersagemodells eingesetzt. • Erst danach werden die Klassifikationsdaten mit dem erarbeiteten Modell klassifiziert und dieses Ergebnis mit den Ergebnisdaten verglichen. Damit können die Herangehensweise und deren Ergebnisse mit den Spitzenwerten aus dem Wettbewerb von 2002 verglichen werden.
10.2
Das Problem
Im offenen Markt der Energieversorger kommt es immer wieder dazu, dass Kunden den Anbieter wechseln. Ein Unternehmen der Branche hat aus den Erfahrungen des vorangegangenen Jahres erkannt, dass 10% seiner Kunden pro Jahr wechseln. Kann aus den Daten des vergangenen Jahres ein Vorhersagemodell entwickelt werden, welches Auskunft darüber gibt, welcher Kunde im laufenden Jahr den Vertrag kündigen wird? Kunden, die aufgrund der Vorhersage als potenzielle Kündiger klassifiziert werden, erhalten dann ein Angebot. Dieses Angebot soll die Kunden dazu bringen, den Energieversorger nicht zu wechseln. Aus der betriebswirtschaftlichen Analyse des Problems wurden folgende Werte herausgearbeitet: • Von einem Kunden, der nicht kündigt, kann das Unternehmen einen Betrag von 72,00e einnehmen. • Kündigt ein Kunde, so sind keine Einnahmen weiter zu verzeichnen.
• Wird einem Kunden, der kündigen will, ein Angebot unterbreitet, so kann bei einigen Kunden die Kündigung verhindert werden. Es wird dann eine durchschnittliche Einnahme in Höhe von 43,80e pro Kunde erzielt. • Erhält ein Kunde ein Angebot, der nicht kündigen will, so wird er sicherlich dieses für ihn günstigere Angebot annehmen. Das Unternehmen wird nur einen Betrag von 66,30e verbuchen können. Es entsteht also ein kleiner Verlust. Zusammengefasst ergibt sich die in Tabelle 10.1 dargestellte Kundenbewertungsmatrix. Kunde will Kunde erhält Angebot Kunde erhält kein Angebot
kündigen 43,80e 0,00e
nicht kündigen 66,30e 72,00e
Tabelle 10.1: Kundenbewertungsmatrix
Die Einnahmen, die ohne eine besondere Rabatt-Aktion erzielt werden, betragen: fgrund = 72,00e · Anzahl Nichtkündiger
10.2 Das Problem
257
Ziel ist es, ein Vorhersagemodell zu entwickeln, welches in Vorbereitung auf die RabattAktion die Kunden möglichst gut klassifiziert in potenzielle Kündiger sowie treue Kunden, also Nichtkündiger. Eine gute Vorhersage muss ein besseres Ergebnis erzielen, als ohne Rabatt-Aktion möglich ist. Die Zielfunktion beschreibt den zusätzlichen Gewinn, der durch die Rabatt-Aktion zu erwarten ist. Die Vorhersage muss diesen zusätzlichen Gewinn maximieren. Gewinn = 43,80e · Anzahl erkannter Kündiger +72,00e · Anzahl erkannter Nichtkündiger +66,30e · Anzahl nicht erkannter Nichtkündiger −fgrund Im Weiteren werden wir folgende Abkürzungen für diese Mengen verwenden: • kk: Anzahl korrekt erkannter Kündiger (werden angeschrieben)
• nk: Anzahl nicht erkannter Kündiger (werden nicht angeschrieben)
• kn: Anzahl korrekt erkannter Nichtkündiger (werden nicht angeschrieben) • nn: Anzahl nicht erkannter Nichtkündiger (werden angeschrieben)
Damit kann die Zielfunktion g, die es zu maximieren gilt, wie folgt formuliert werden: g = 43,80 · kk + 66,30 · nn + 72,00 · kn − 72,00 · (kn + nn) = 43,80 · kk − 5,70 · nn Der letzte Summand in der ersten Zeile 72,00 · (kn + nn) entspricht dem Grundwert, den das Unternehmen ohne Rabatt-Aktion erreicht. Dieser Grundwert wird nicht dem zusätzlichen Gewinn g zugerechnet. Die zweite Zeile gibt die komprimierte Form der Zielfunktion an. Die Daten, die zur Verfügung stehen, sind zum einen die Trainingsdaten Tr sowie zum anderen eine Datenmenge K, für die eine Klassifikation vorzunehmen ist. Beide Mengen, Tr sowie K, enthalten jeweils 10.000 Datensätze, von denen 10% zu der Menge der potenziellen Kündiger zählen. Für eine Menge aus 10.000 Kundendaten können folgende Abschätzungen getroffen werden: 1. Einnahmen, die ohne Rabatt-Aktion entstehen: 9.000 · 72,00 = 648.000e
2. Einnahmen, die bei einer Rabatt-Aktion entstehen, bei der jeder Kunde angeschrieben wird: 9.000 · 66,30 + 1.000 · 43,80 = 596.700 + 43.800 = 640.500e
3. Einnahmen, die erwartet werden könnten, falls eine Klassifikation einhundert Prozent korrekt erfolgt: 9.000 · 72, 00 + 1.000 · 43, 80 = 648.000 + 43.800 = 691.800e Rein theoretisch lässt sich somit durch ein Vorhersagemodell für die Rabattaktion ein zusätzlicher Gewinn von 43.800e erzielen. Im Wettbewerb von 2002 wurden die in Tabelle 10.2 auf der nächsten Seite dargestellten Ergebnisse erzielt.
258 Platz 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
10 Eine Data-Mining-Aufgabe Kündiger 523 477 448 440 454 456 379 411 446 418
Nicht-Kündiger 2673 2415 2213 2156 2269 2287 1731 1991 2274 2059
Gewinn 7671,30 7127,10 7008,30 6982,80 6951,90 6936,90 6733,50 6653,10 6573,00 6572,10
Tabelle 10.2: Ergebnisse im Data Mining Cup 2002
Scheint ein zusätzlicher Gewinn von 7.000e erst einmal nicht sehr hoch, so muss dabei berücksichtigt werden, dass dies der zusätzliche Ertrag je 10.000 Kunden ist. Energieversorger haben durchaus mehrere Hunderttausend oder Millionen von Kunden, so dass es sich hier doch um nennenswerte Beträge handelt, die mittels Data Mining zusätzlich erwirtschaftet werden können.
10.3
Die Daten
Die Datensätze der Trainings- sowie der Klassifikationsmenge enthalten 33 Attribute inklusive der Identifikationsnummer, siehe Tabelle 10.3 auf der nächsten Seite. Die Trainingsmenge enthält zusätzlich das Attribut canceler, welches die Erfahrung aus dem vergangenen Jahr widerspiegelt: Wer hat gekündigt? Die in der Tabelle 10.3 auf der nächsten Seite mit einem * gekennzeichneten Daten sind mikrogeografische Informationen, die für die Data-Mining-Cup-Aufgabe durch einen externen Dienstleister zur Verfügung gestellt wurden, siehe Aufgabenbeschreibung Data Mining Cup 2002 [DMC]. Bei einer ersten Durchsicht der Merkmale entsteht unwillkürlich die Frage: Welchen Zusammenhang kann es zwischen PKW-Index oder Versicherungstyp oder Pharmatypologie und dem Klassifikationsergebnis, kündigt oder kündigt nicht, geben? Eine typische Frage am Anfang einer Analyse. Man kann nicht vorschnell jeglichen Zusammenhang verneinen. Data Mining will ja gerade Zusammenhänge aufdecken, die nicht offensichtlich sind. Auf jeden Fall muss geklärt werden, ob die zur Verfügung stehenden Daten aus Datenschutzgründen überhaupt in die Untersuchung mit einfließen dürfen. Nur falls es keine Einwände aus Sicht des Datenschutzes gibt, dürfen die Daten für die Auswertung herangezogen werden. Für das Beispiel gehen wir davon aus, dass die Daten eingesetzt werden dürfen. Aus inhaltlicher Sicht werden keine Merkmale ausgelassen, aus technischer Sicht kann sich ergeben, dass man auf das eine oder andere Merkmal verzichten kann.
10.3 Die Daten
259
Merkmal ID payment_type
Typ Integer Integer
power_ consumption HHH HGEW MTREG0G MTKAU0G MTSTR0G MTBEB0G MTSTA0G MTBON0G MTADE0G MTALT0G MTFAM0G MTKDI0G MTKLE0G MTKKL0G MTKGB0G MTKGL0G SCMWGR2 SCMWGR3 SCMWGR4 SCMWGR5
Beschreibung ID-Merkmal, Datenbank-Schlüsselfeld Art der Bezahlung: 1 Überweisung, 2 Abbuchung, 3 andere Regelung
Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer
SCMWGR6 SCMWGR7 SCMWGR21 SCMWGR22 PHARM1 PHARM2 PHARM3 PHARM4 PHARM5 PHARM6 canceler
Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer yes/no
letzter jährlicher Stromverbrauch in kWh Anzahl Haushalte im Haus Anzahl Gewerbe im Haus Regionaltyp* Kaufkraft* Straßentyp* Bebauungstyp* Status* Prüfungsgrad Bonität* Anteil Deutscher* Altersstruktur* Familienstand* PKW-Indizes: PKW-Dichte* PKW-Indizes: PKW-Leistungsindex* PKW-Indizes: PKW-Kleinbusindex* PKW-Indizes: PKW-Gebrauchtwagenindex* PKW-Indizes: PKW-Geländewagenindex* Versicherungstyp: Treuer Vertreterkunde* Versicherungstyp: Anspruchsvoller Delegierer* Versicherungstyp: Preisorientierter Rationalist* Versicherungstyp: Überforderter Unterstützungssuchender* Versicherungstyp: Skeptisch-Gleichgültiger* Versicherungstyp: Distinguiert-Konservativer* Versicherungstyp: Affinität zu Direktwerbung* Versicherungstyp: Affinität zum Direktvertrieb* Pharmatypologie: Gesunder Kraftprotz* Pharmatypologie: Unkritischer Wehleidiger* Pharmatypologie: Skeptischer Verweigerer* Pharmatypologie: Informierter Körperbewusster* Pharmatypologie: Eingeschränkter Kassenpatient* Pharmatypologie: Konservativer Arztgläubiger* Zielmerkmal: yes = Kündiger, no = Kunde
Tabelle 10.3: Merkmale mit Datentyp in den Datenmengen des Energieversorgers
Neben einem ersten Blick auf die Bedeutung der Merkmale, ist zu Beginn eine statistische Untersuchung der Daten erforderlich, da die Merkmalseigenschaften die Art der Datenvorverarbeitung und die Wahl des Verfahrens beeinflussen. Die Statistik kann mittels einer Tabellenkalkulation oder auch mit dem Statistik-Knoten von Knime ermittelt werden.
260
10 Eine Data-Mining-Aufgabe
• Welchen Datentyp und Wertebereich besitzt das Merkmal? • Wie sehen Häufigkeit und Verteilung der Werte aus? • Gibt es Datensätze mit fehlenden Werten?
• Lassen sich Abhängigkeiten zwischen Merkmalen entdecken? Bei den Trainingsdaten handelt es sich um 10.000 Datensätze. Für die numerischen Daten werden das Minimum, das Maximum, der Mittelwert und der Median bestimmt. Zudem wird analysiert, ob und gegebenenfalls, wie viele Daten fehlen. Tabelle 10.4 gibt Auskunft über die vorliegenden Daten. Die Spalte ID wird dabei ausgelassen, da diese die Identifikationsnummer des Datensatzes enthält. Somit sind alle Werte in dieser Spalte voneinander verschieden und können nichts zu einer Analyse beitragen. payment_type power_consumption HHH HGEW MTREG0G MTKAU0G MTSTR0G MTBEB0G MTSTA0G MTBON0G MTADE0G MTALT0G MTFAM0G MTKDI0G MTKLE0G MTKKL0G MTKGB0G MTKGL0G SCMWGR2 SCMWGR3 SCMWGR4 SCMWGR5 SCMWGR6 SCMWGR7 SCMWGR21 SCMWGR22 PHARM1 PHARM2 PHARM3 PHARM4 PHARM5 PHARM6
Min 1 0 0 0 11 –9 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Max 3 27.500 82 29 16 –1 5 5 9 9 9 8 9 10 10 6 9 3 5 5 5 5 5 5 5 5 7 7 7 7 7 7
Tabelle 10.4: Statistik der Trainingsdaten
Mittelwert 1,737 2.491 3,230 0,290 14,438 –6,367 1,832 1,598 4,373 4,010 6,555 4,512 5,281 7,168 2,694 1,793 4,773 0,897 3,039 3,008 3,324 3,058 2,577 3,092 2,951 2,561 4,448 2,240 4,514 3,482 3,571 5,490
Median 2 2.089 2 0 15 –7 1 1 4 4 7 5 6 8 2 0 5 0 3 3 4 3 2 3 3 2 5 2 5 4 3 6
Fehlende Werte 0 0 851 851 852 852 852 852 852 852 852 852 852 854 854 2117 854 854 2296 2188 2296 2286 2188 2285 2296 2295 2012 2012 2012 2012 2012 2012
10.3 Die Daten
261
Für das Klassifikationsmerkmal canceler ermitteln wir die Anzahl der Datensätze in der jeweiligen Klasse und erhalten: Die Klasse der Nichtkündiger (no) enthält 9.000 und die Klasse der Kündiger (yes) enthält 1.000 Datensätze. Erwartungsgemäß enthält das Merkmal canceler keine fehlenden Werte. Sind, wie im Data Mining Cup, Klassifikationsdaten vorhanden, für die kein Klassifikationsergebnis vorliegt, so sollten auch diese Daten einer statistischen Betrachtung unterzogen werden. Nur wenn sich diese Daten ähnlich wie die Trainingsdaten verhalten, kann erwartet werden, dass ein Data-Mining-Prozess ein Ergebnis ermitteln kann. Die Tabelle 10.5 gibt Auskunft, und es zeigt sich, dass die Daten weitgehend denselben Wertebereichen entstammen. Das ist nicht verwunderlich, da insbesondere die Merkmalsgruppen MT*, SCHWGR* sowie PHARM* bereits codierte nominale Werte sind. Aber auch der Energieverbrauch ist ähnlich. Somit ist eine grundlegende Voraussetzung für ein erfolgreiches Data Mining erfüllt. payment_type power_consumption HHH HGEW MTREG0G MTKAU0G MTSTR0G MTBEB0G MTSTA0G MTBON0G MTADE0G MTALT0G MTFAM0G MTKDI0G MTKLE0G MTKKL0G MTKGB0G MTKGL0G SCMWGR2 SCMWGR3 SCMWGR4 SCMWGR5 SCMWGR6 SCMWGR7 SCMWGR21 SCMWGR22 PHARM1 PHARM2 PHARM3 PHARM4 PHARM5 PHARM6
Min 1 0 0 0 11 –9 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Max 3 31.062 137 40 16 –1 5 5 9 9 9 8 9 10 10 6 9 3 5 5 5 5 5 5 5 5 7 7 7 7 7 7
Mittelwert 1,747 2.526 3,206 0,299 14,434 –6,413 1,829 1,586 4,322 3,934 6,560 4,513 5,327 7,225 2,701 1,749 4,849 0,891 3,027 2,992 3,301 3,098 2,599 3,086 2,966 2,535 4,454 2,275 4,490 3,489 3,546 5,484
Tabelle 10.5: Statistik der Klassifikationsdaten
Median 2 2.123,5 2 0 15 –7 1 1 4 3 7 4,5 6 8 2 0 5 0 3 3 3 3 2 3 3 2 5 2 5 4 3 6
Fehlende Werte 0 0 853 853 856 856 856 856 856 856 856 856 856 862 862 2075 862 862 2255 2139 2255 2242 2139 2243 2255 2254 1969 1969 1969 1969 1969 1969
262
10 Eine Data-Mining-Aufgabe
Bevor wir weitere Schritte gemäß dem Data-Mining-Ablauf vornehmen, werden wir einen schnellen Versuch unternehmen und möglichst ohne Datenvorbereitung ein erstes Klassifikationsmodell entwickeln. Ziel ist es, einen ersten Eindruck über das zu erzielende Ergebnis zu erhalten. Zudem führen erste konkrete Experimente immer auch zu mehr Verständnis der Datenmengen und hoffentlich auch zu Inspirationen für das weitere Vorgehen. Weitgehend ohne Vorverarbeitung kann ein Entscheidungsbaum-Lernverfahren eingesetzt werden, wenn dieses auch mit numerischen Werten umgehen kann. Mittels Knime kann recht schnell ein erster Datenanalyse-Prozess entwickelt werden. Die notwendigen Schritte im Prozess sind: 1. Einlesen der Trainingsdaten 2. Behandeln der fehlenden Daten 3. Aufteilen der Trainingsmenge in eine Datei zum Trainieren und eine zum Testen 4. Einsetzen des Knotens zum Entscheidungsbaum-Lernen 5. Berechnen des Ergebnisses gemäß der Zielfunktion Histogram (interactive)
Statistics
Energieverbrauch
der Trainingsdaten
CSV Writer
>statistics.csv
Decision Tree Learner Decision Tree Java Snippet Java Snippet (simple) Row Filter Predictor Column Filter (simple) Partitioning
CSV Reader
Missing Value
dmc2002_train.txt
60:40 alle auf -1
Ergebnis- Zielfunktion Spalten / Zeile
Summe
Ergebnis
Abb. 10.1: Ein erster Analyse-Prozess
Abbildung 10.1 zeigt den Ablauf dieses ersten Experiments. Gleich mit aufgenommen in diesen ersten Versuch wurde ein Knoten, der die statistischen Werte anzeigt, sowie ein Histogramm des Energieverbrauchs. Beide sind aber für das erste Experiment nicht unbedingt erforderlich. Nach der Klassifikation der Testdaten selektiert der Knoten Column Filter die beiden für das Ergebnis entscheidenden Spalten: die erwartete Ausgabe in der Spalte canceler und die durch das Modell berechnete Klassifikation Prediction (DecTree). Mittels einer kleinen Berechnung wird für jede Zeile der Beitrag zur Zielfunktion berechnet und anschließend summiert.
10.4 Datenvorbereitung Listing 10.1:
263
Java Snippet
points = 0; if($Prediction (DecTree)$.equals("yes") && $canceler$.equals("yes")) points = 43.80; if($Prediction (DecTree)$.equals("yes") && $canceler$.equals("no")) points = –5.70; return points; Der zweite Java-Snippet-Knoten enthält nur die Summenbildung: GSum += $Punkte$; return GSum; Mit dem Zeilen-Filter am Ende kann man sich nur die letzten Zeilen anzeigen lassen, um somit auf einem Blick das Ergebnis in der Spalte GSumme zu sehen. Das Ergebnis ist nicht sehr hoch: 686,10. Sie werden durchaus abweichende Ergebnisse erhalten, wenn Sie diese Versuche starten. Die 60:40-Aufteilung der Datenmenge erfolgt stets zufällig neu und somit jedes Mal anders. Es lässt sich erreichen, dass immer dieselbe Aufteilung vorgenommen wird. Damit sind die Ergebnisse der verschiedenen Experimente besser vergleichbar. Die Aufteilung beeinflusst jedoch sehr stark auch das Ergebnis, jede neue Aufteilung bietet somit die Chance auf ein besseres Vorhersagemodell. Wir verwenden in unseren Experimenten meistens diese stets andere, zufällige Aufteilung. Die Schlussfolgerung ist: Man führe nie nur ein Experiment durch, sondern immer mehrere. Da in den Daten nur 10% Kündiger enthalten sind, sollten sowohl die Trainingsmenge (60%) als auch die Testmenge (40%) dasselbe Verhältnis aufweisen. Im Knime-Knoten wird dies durch Stratified Sampling erreicht. In unserem ersten Experiment verändert auch ein Normalisieren der Daten durch dezimales Skalieren das Ergebnis nicht. Ein schneller Erfolg ist nicht zu erwarten. Wir müssen uns die Daten genauer ansehen und Möglichkeiten der Datenvorbereitung einsetzen.
10.4
Datenvorbereitung
Daten, die im Rahmen des Data Mining Cups bereitgestellt werden, haben stets schon einige Schritte einer Datenvorbereitung durchlaufen. Dies gilt auch für die hier diskutierte Aufgabe eines Energieversorgers. So wurden den Daten des Energieversorgers (ID, payment_type, power_consumption) die mikrogeografischen Daten hinzugefügt. Zudem wurde eine Selektion vorgenommen: Die beiden vorliegenden Mengen, Trainingsmenge sowie Klassifikationsmenge, stellen jeweils einen repräsentativen Ausschnitt aller Kundendaten dar, der das Verhältnis Kunde zu Kündiger widerspiegelt. Nachdem der erste Versuch mit dem Aufbau eines Entscheidungsbaums noch nicht das gewünschte Ergebnis gebracht hat, werden wir nun einige Möglichkeiten zusammenstellen und entsprechende Experimente durchführen. Untersuchen wir noch einmal die
264
10 Eine Data-Mining-Aufgabe
statistischen Werte der Trainingsmenge (siehe Tabelle 10.4 auf Seite 260) und stellen einige Auffälligkeiten zusammen: 1. Es gibt viele unvollständige Datensätze. Werden alle Datensätze entfernt, die einen fehlenden Wert enthalten, so bleiben nur 7.601 Datensätze übrig. Zum Trainieren ist das ausreichend, aber wie werden die unvollständigen Datensätze in der Klassifikationsmenge behandelt? 2. Bis auf das Klassifikationsmerkmal sind alle anderen Merkmale ganzzahlig (Integer). Die meisten Attribute weisen nur wenig unterschiedliche Werte auf, die überwiegend einstellig sind: (0..5), (1..5), (1..7), (1..10). 3. Es liegt eine einfache Klassifikation in zwei Klassen vor, Kündiger und NichtKündiger. 4. Ohne dass in der Tabelle 10.4 die Standardabweichung mit aufgeführt ist, lässt sich aus dem Vergleich der Mittelwerte beziehungsweise Mediane mit den jeweiligen Minima sowie Maxima erkennen, dass der Energieverbrauch power_consumption sowie das Merkmal HHH stark gestreut sind und dass hier vermutlich einige Ausreißer anzutreffen sind. 5. Das Merkmal MTKAU0G enthält als einziges Merkmal negative Werte. 6. Die Merkmale power_consumption und HHH sind metrisch, alle anderen Merkmale sind ordinal. Letzteres lässt sich nicht aus den Wertebereichen ableiten, sondern ist an der Beschreibung der Merkmale zu erkennen. Welches Vorgehen kann aus diesen Erkenntnissen abgeleitet werden? 1. Die beiden Merkmale power_consumption sowie HHH sind auf ihre Verteilung hin zu untersuchen, eine Gruppierung der Werte ist vorzunehmen. Angestrebt wird ein Werteumfang ähnlich dem der anderen Werte, beispielsweise 0..10. 2. Es sind mehrere Varianten der Behandlung fehlender Werte möglich. Wir werden Versuche mit einem globalen Wert (−1) für fehlende Daten durchführen. Erfahrungen aus anderen Projekten zeigen, dass ein für jedes Merkmal individuell ermittelter Wert gute Ergebnisse erwarten lässt. Hierzu werden die fehlenden Werte durch den Median oder den Mittelwert des jeweiligen Merkmals ersetzt. 3. Je nach Verfahren können oder müssen die Werte normalisiert werden. 4. Da der Einfluss der mikrogeografischen Daten inhaltlich angezweifelt werden kann, sind auch Experimente mit reduzierten Datenmengen interessant. Wir werden einige Experimente mit gruppierten Daten für die Merkmale HHH und power_consumption durchführen. Ausgangspunkt ist die Überlegung, dass Median und Mittelwert nicht recht zu Minimum und Maximum „passen“. Mittels einer Tabellenkalkulation oder dem entsprechenden Knoten in Knime wird ein Histogramm erzeugt, welches die Verteilung der Daten angibt, siehe Abbildung 10.2.
10.4 Datenvorbereitung
265
900 800 700 600 500 400 300 200 100 0 825 1650 2475 3300 4125 4950 5775 6600 7425 8250 9075 9900 10725 11550 12375 13200 14025 14850 15675 16500 17325 18150 18975 19800 20625 21450 22275 23100 23925 24750 25575 26400 27225
0
Energieverbrauch kWh
Abb. 10.2: Verteilung der Energieverbrauchswerte
Während eine Häufung im Bereich bis zu etwa 6.000 kWh zu verzeichnen ist, sind größere Werte nur vereinzelt anzutreffen. Zudem muss auch damit gerechnet werden, dass in den Klassifikationsdaten vereinzelt noch größere Werte anzutreffen sind. Der Wertebereich wird gekappt und in Teilbereiche unterteilt (Binning). Eine mögliche Einteilung gibt Abbildung 10.3 an. In unseren Experimenten wird alternativ auch folgende Abbildung auf den Bereich 0..5 vorgenommen: if($power_consumption$ >5000) return 5; else return $power_consumption$/1000; 1600 1200 800 400 0
Abb. 10.3: Verteilung der Energieverbrauchswerte nach Kappung
Mit dem Merkmal HHH – Anzahl der Haushalte im Haus – wird analog verfahren. Das Histogramm zeigt eine abnehmende Häufung, wobei Werte > 10 nicht mehr vollständig
266
10 Eine Data-Mining-Aufgabe
und nur in sehr geringer Anzahl auftreten. Den Maximalwert von 82 kann man durchaus als Ausreißer betrachten. Der Wertebereich wird auf den Bereich 0..10 und größer 10 gekappt. Letzteres wird als 11 codiert, und so sind nun nur noch Werte aus dem Bereich 0..11 zu verarbeiten. 4000 3000 2000 1000 0
1
2
3
4
5
6
7
8
9
10 >10
Abb. 10.4: Verteilung HHH-Werte nach der Kappung
10.5
Experimente
Aus der Vielzahl möglicher Experimente verfolgen wir exemplarisch die nachfolgend aufgezählten Ansätze. Diese unterscheiden sich bezüglich der verwendeten Datenmenge, der Codierung, des Umgangs mit fehlenden Werten, der Normierung und natürlich hinsichtlich des Verfahrens, welches eingesetzt wird: • Die verwendeten Merkmale: alle oder nur die ersten drei payment_type, power_consumption sowie HHH (Anzahl der Haushalte im Haus); • Die Art der Codierung von power_consumption und HHH : keine weitere Codierung oder Gruppierung; • Die Art der Normalisierung: keine, Min-Max, Z-Normierung oder dezimale Skalierung; • Das verwendete Verfahren: k-Nearest Neighbour, Naive Bayes, Entscheidungsbaumverfahren, neuronale Netze; • Die verwendete Software für neuronale Netze: Knime oder JavaNNS. Alle anderen Experimente werden in Knime durchgeführt. Nachdem man sich einen ersten Überblick verschafft und auch ein erstes Experiment durchgeführt hat, ist es erforderlich, systematisch vorzugehen. Unbedingt erforderlich ist zudem, jedes noch so kleine Experiment genau zu protokollieren: Verfahren und deren Parameter, Daten, Codierungen und dazu die erzielten Resultate. Die Versuchung „herumzuprobieren“ ist oft recht hoch, und stets glaubt man, dass die nächste kleine
10.5 Experimente
267
Änderung den entscheidenden Durchbruch erzielt. Schnell geraten dabei auch recht erfolgreiche Versuche in Vergessenheit, diese können nur schwer und aufwändig wiederholt werden. Wir stellen eine Liste der Experimente auf, die durchgeführt werden. Dabei werden aufgezählt: das Verfahren, die Datenmenge, die Codierung der Merkmale power_consumption (pc) und HHH, die Behandlung fehlender Werte, die Normierung, die verwendete Software. Dazu wird eine sich aus dem Verfahren ergebende Behandlung der Daten angegeben. Wir beginnnen immer mit der aufgeführten Konfiguration und verändern diese in Abhängigkeit vom erzielten Resultat. 1. k-Nearest Neighbour, alle Merkmale, keine Codierung von pc und HHH, Median der Spalte für fehlende Werte, dezimale Skalierung, Knime. 2. Naive Bayes, alle Merkmale, pc und HHH gruppiert, Median der Spalte für fehlende Werte, keine Normierung, Knime. Alle Werte werden in nominale Werte (Zeichenketten) umgewandelt. 3. Entscheidungsbaum, alle Merkmale, keine Codierung von pc und HHH, global wird der Wert –1 für fehlende Werte eingesetzt, ohne Normierung, Knime. 4. Entscheidungsbaum, alle Merkmale, keine Codierung von pc und HHH, Median der Spalte für fehlende Werte, Normierung (es werden alle drei angebotenen Normierungen probiert), Knime. 5. Entscheidungsbaum, alle Merkmale, pc und HHH werden gruppiert, Median der Spalte für fehlende Werte, Normierung (es werden alle drei angebotenen Normierungen probiert), Knime. 6. Entscheidungsbaum, nur die drei Merkmale payment_type, power_consumption sowie HHH, pc und HHH werden gruppiert, Median der Spalte für fehlende Werte, Normierung (es werden alle drei angebotenen Normierungen probiert), Knime. 7. Neuronales Netz, alle Merkmale, ohne und mit Codierung von pc und HHH, fehlende Werte werden auf –1 gesetzt, dezimale Skalierung, Knime. Es werden zwei unterschiedliche verdeckte Schichten probiert. 8. Neuronales Netz, alle Merkmale, ohne und mit Codierung von pc und HHH, fehlende Werte werden auf –1 gesetzt, dezimale Skalierung, JavaNNS. Es werden zwei unterschiedliche verdeckte Schichten probiert. Der Einfluss des Lernverfahrens sowie des Lernfaktors werden untersucht. 9. Neuronales Netz, nur die drei Merkmale payment_type, power_consumption sowie HHH, pc und HHH werden gruppiert, Median der Spalte für fehlende Werte, dezimale Skalierung, Knime. 10. Neuronales Netz, nur die drei Merkmale payment_type, power_consumption sowie HHH, pc und HHH werden gruppiert, Median der Spalte für fehlende Werte, dezimale Skalierung, JavaNNS.
268
10 Eine Data-Mining-Aufgabe
Bei den Experimenten wird nur die gegebene Trainingsmenge für die Entwicklung eines Vorhersagemodells – eines Klassifikators – herangezogen. Um die Modelle dann mit den Ergebnissen des Data Mining Cups 2002 vergleichen zu können, werden die Klassifikationsdaten analysiert und die Klassifikationsergebnisse mit den tatsächlichen Klassen verglichen.
10.5.1
K-Nearest Neighbour
Das Experiment 1 verwendet den k-Nearest-Neighbour-Algorithmus (vergleiche Abschnitt 5.1, Seite 83). Der Ablauf ist in Abbildung 10.5 zu sehen. K Nearest Neighbor Missing Value Partitioning Bewertung Row Filter CSV Reader Normalizer Column Filter
dmc2002_ train.txt
Median Spalte
kNN 5 decimal scaling
60:40 Ergebnis -Spalten
Gewinn berechnen Ergebnis in letzter Zeile
Normalizer (Apply) Column Filter CSV Reader Missing Value K Nearest Neighbor Joiner Bewertung Row Filter dmc2002_ class.txt
Median Spalte
decimal scaling
kNN 5 CSV Reader
class columns Gewinn Soll und berechnen Ergebnis in Ergebnis letzter Zeile
dmc2002_realclass.txt
Abb. 10.5: Das Experiment k-Nearest Neighbour
Die fehlenden Werte werden durch den Median der Spalte ersetzt und die Daten anschließend dezimal skaliert (in den Bereich 0..1 normalisiert). Die Trainingsmenge wird anschließend in eine Menge zum Trainieren (60% der Datensätze) und eine Testmenge (40%) aufgeteilt. Der Knoten wird so konfiguriert, dass beide Mengen denselben Anteil von Datensätzen einer Klasse enthalten: Im Beispiel 10% Kündiger und 90% Kunden, die nicht kündigen. Nach der Klassifikation wird das Ergebnis ausgewertet. Dazu werden die zwei Spalten zusammengestellt, die das berechnete Ergebnis sowie das tatsächliche Ergebnis enthalten. Mittels eines kleinen Java-Programms (siehe Listing 10.1 auf Seite 263 und Abbildung 10.1 auf Seite 262) wird dann das Ergebnis entsprechend der Zielfunktion berechnet. Diese beiden Knoten werden hier und in allen weiteren Knime-Experimenten zu einem Meta-Knoten (Bewertung) zusammengefasst. Für k = 3 erhält man ohne eine Gewichtung des Abstandes für die Trainingsmenge einen Wert von: –25,20.
10.5 Experimente
269
Für k = 3, aber mit gewichteter Abstandsberechnung werden 906,00 erreicht. Für k = 5 und gewichteter Abstandsberechnung wird für die Testmenge 111,30 und für die gesamten, zu klassifizierenden Daten 986,40 erzielt. Wieso liefert das k-Nearest-Neighbour-Verfahren solche schlechten Resultate? Zum einen normalisieren wir zwar das Attribut power_consumption, allerdings verschieben wir durch die wenigen hohen Werte, die dann zu Werten gleich oder nahe 1 werden, die offenbar bedeutsamen, kleineren Stromverbräuche in die Nähe von 0, so dass der Abstand zwischen diesen sehr klein wird. Diese gehen dann in den Abstand offensichtlich zu einem viel zu geringen Anteil ein. Zum anderen ist bei diesem Experiment der Median als Wert für die fehlenden Werte wohl doch keine gute Idee. Wir codieren die fehlenden Werte durch −1. Modifizieren wir also unser Experiment: • k-Nearest Neighbour, alle Merkmale, Codierung von pc und HHH, −1 für fehlende Werte, dezimale Skalierung, gewichteter Abstand, Knime. Die Codierung von pc und HHH erfolgt so, dass pc bei 5000 und HHH bei 11 gekappt wird. if($power_consumption$>5000) return 5; else return $power_consumption$/1000; if ($HHH$>10) return 11; else return $HHH$; Mit dieser Konfiguration erreichen wir aber auch nur durchschnittlich 700e. Schauen wir nochmal auf die Daten. Nur 10% der Daten sind Kündiger. Das könnte dafür verantwortlich sein, dass zu viele Vorhersagen auf Nichtkündiger plädieren. Modifizieren wir erneut unser Experiment und sorgen dafür, dass die Zahl der Datensätze mit Nichtkündigern auf die Anzahl von 1000 reduziert wird. Dies kann man in Knime mittels des Knotens Equal Size Sampling erreichen. Auch dieser Versuch liefert eher deprimierende Resultate. Offensichtlich sind nicht alle Attribute für die Vorhersage wichtig. Durch die Skalierung gehen aber alle Attribute gleichgewichtig in die Vorhersage ein. Wir sollten folglich einen Versuch mit einer reduzierten Attributmenge unternehmen. Dazu wird in den Prozess der Datenvorverarbeitung ein Spalten-Auswahl-Knoten (column filter) eingefügt und nur die Spalten der drei Merkmale sowie das Klassifikationsmerkmal canceler übernommen. Nimmt man den in Abbildung 10.5 auf der vorherigen Seite dargestellten Ablauf, so kann der Knoten zum Beispiel vor dem Knoten Missing Value eingefügt werden. • k-Nearest Neighbour, nur die drei Merkmale payment_type, power_consumption sowie HHH, Codierung von pc und HHH, −1 für fehlende Werte, Equal Size Sampling, dezimale Skalierung, gewichteter Abstand, Knime. Mit k-Werten von 3 bis 10 erreichen wir nun Werte zwischen 2000 und 3000e. Man erreicht sogar über 5000e, wenn man die Attribute power_consumption (0..3) sowie HHH (0..6) ganzzahlig diskretisiert. if($power_consumption$ >5000) return 3; else return $power_consumption$/2000;
270
10 Eine Data-Mining-Aufgabe if ($HHH$ > 10) return 6; else return $HHH$/2;
Allerdings ist bei den Tests zu beobachten, dass die Streuung der Resultate groß ist. Insbesondere ist das Modell, welches auf den Trainingsdaten gut funktioniert, nicht immer das beste auf der Vorhersagemenge. Eine naheliegende Vermutung ist, dass die Trainingsmenge zu klein ist und folglich durch die zufällige Aufteilung instabile Lösungen generiert werden. In der Tat entsteht durch Equal Size Sampling eine Teilmenge, die nur noch 2000 Datensätze enthält, da nur 1000 Kündiger existieren und von den 9000 Kündigern nur 1000 ausgewählt werden, um das Verhältnis zwischen Kündigern und Nichtkündigern anzugleichen. Zum Trainieren nehmen wir nur 60%, es verbleiben also nur 1200 Daten zum Lernen. Es ist demnach zu überlegen, Tests mit einer eigenen Strategie zur Bildung der Trainingsmenge durchzuführen. Dazu kann man die gegebenen 10.000 Datensätze zunächst nach Kündiger und Nichtkündiger trennen. Von den Kündigern nimmt man einen bestimmten Prozentsatz, von den Nichtkündigern einen anderen Prozentsatz, so dass zwar nicht unbedingt ein Gleichverhältnis hergestellt wird, das deutliche Übergewicht der Nichtkündiger aber reduziert wird. In Knime lässt sich dies leicht mit den Knoten Row Splitter, Partitioning und Concatenate umsetzen. Führt man mit diesem Ansatz weitere Tests durch, so reduziert sich die Streuung drastisch, und man erhält stabil Resultate über 6000. Das beste Modell auf den Trainingsdaten ist nun auch das beste auf den Vorhersagedaten. Das beste, mit k-Nearest Neighbour erzielte Resultat ist: Ergebnis 6533,10
10.5.2
Charakterisierung des Experiments K-Nearest Neighbour, k=7, nur 3 Attribute dezimal normalisiert, kein gewichteter Abstand, Missing values: −1 Codierung von power_consumption (diskret): 0..3 Codierung von HHH (diskret): 0..6 eigene Trainingsmenge: 800 Kündiger, 1000 Nichtkündiger
Naive Bayes
Das Experiment 2 setzt den Naive-Bayes-Algorithmus ein, vergleiche Abschnitt 5.3. Die Struktur ähnelt dem vorherigen Experiment, allerdings sind hier mehr Vorbereitungsschritte erforderlich. Die Werte der Merkmale power_consumption und HHH werden wie oben beschrieben gruppiert. Hierzu werden jeweils zwei Java-Code-Knoten eingefügt, welche die bereits bei k-Nearest Neighbour verwendete Codierung der Merkmale power_consumption sowie HHH vornehmen: if($power_consumption$>5000) return 5; else return $power_consumption$/1000; if ($HHH$>10) return 11; else return $HHH$; Die fehlenden Werte werden zunächst durch den (gerundeten) Mittelwert der Spalte ersetzt. Danach werden alle Werte in Zeichenketten umgewandelt. Wieder werden 60%
10.5 Experimente
271 Naive Bayes Learner
CSV Reader
Java Snippet (simple) Java Snippet (simple)
Number To String Missing Value Partitioning
Naive Bayes Predictor Column Filter Bewertung Row Filter
alle Spalten dmc2002 _train.txt
codieren pow_cons
Mean
60:40
Vorhersage
codieren HHH
Naive Bayes Predictor Java Snippet Java Snippet Number To String CSV Reader (simple) (simple) Missing Value
dmc2002 _class.txt
codieren pow_cons
codieren HHH
Mean
alle Spalten
Vorhersage
ErgebnisSpalten
Gewinn berechnen
Ergebnis in letzter Zeile
Column Filter Joiner
class column CSV Reader
Soll+Ergebnis
Bewertung Row Filter
Gewinn berechnen
Ergebnis in letzter Zeile
dmc2002_realclass.txt
Abb. 10.6: Das Experiment Naive Bayes
der Testdaten für den Lernprozess verwendet und das Modell anhand der anderen 40% der Daten geprüft. Das erlernte Modell wird dann auch für die Klassifikationsdaten des Wettbewerbs eingesetzt. Die Berechnung der Ergebnisse erfolgt wieder, wie schon vorher beschrieben. Wir erhalten für die 40%-Testmenge einen Wert von 489,60. Für die gesamte Klassifikationsmenge steigt der Wert auf über Eintausend: 1213,80. Nach den Überlegungen beim Experiment 1 mittels k-Nearest-Neighbour sollten wir auch hier weitere Experimente durchführen. Auch bei Naive Bayes scheint es angebracht, eine Gleichverteilung der Datensätze bezüglich des Klassenattributs herzustellen (Equal Size Sampling). Ebenso sollten wir die fehlenden Werte wieder durch den gesonderten Wert −1 ersetzen. Die Gruppierung erfolgt wie oben beschrieben (power_consumption 0..5, HHH 0..11). Mit allen Attributen erreichen wir bei diesem Experiment Werte zwischen 2000 und 5000. Nehmen wir nur die drei Merkmale payment_type, power_consumption sowie HHH, so erreichen wir sogar Werte über 6000. Werte zwischen 4000 und 6500 erreicht man mit der Variante der kompakten Diskretisierung power_consumption (0..3) sowie HHH (0..6). Ergebnis 6355,50
6297,90
Charakterisierung des Experiments Naive Bayes, nur 3 Attribute Missing values: −1 Codierung von power_consumption (diskret): 0..5 Codierung von HHH (diskret): 0..11 Equal Size Sampling analog Codierung von power_consumption (diskret): 0..3 Codierung von HHH (diskret): 0..6
272
10 Eine Data-Mining-Aufgabe
Diese Resultate sind aber wieder mit einem Fragezeichen zu versehen, da zum einen die Streuung der Resultate hoch ist, zum anderen die Korrelation zwischen der Qualität auf den Testdaten und der Qualität auf den Vorhersagedaten gering ist. Abschließend führen wir folglich auch mit Naive Bayes Experimente auf der Basis der eigenen Generierung der Trainingsmenge (vergleiche die Experimente mit k-Nearest Neighbour) durch. Die Streuung der Resultate wird drastisch reduziert. Wir erhalten stabil Resultate über 6000. Die beste Vorhersage auf den Testdaten erzielt auch auf den Vorhersagedaten das beste Resultat. Mit diesem Vorgehen erreichen wir: Ergebnis 6165
10.5.3
Charakterisierung des Experiments Naive Bayes, nur 3 Attribute Missing values: −1 Codierung von power_consumption (diskret): 0..3 Codierung von HHH (diskret): 0..6 eigene Trainingsmenge: 800 Kündiger, 1000 Nichtkündiger
Entscheidungsbaumverfahren
Mit dem Entscheidungsbaum-Lernverfahren werden wir mehrere Experimente durchführen, die Experimente 3 bis 6. Dabei wird wieder auf einen ähnlichen Data-MiningProzess zurückgegriffen, wie dieser in den vorherigen Experimenten beschrieben wurde. Es wird von dem in Abbildung 10.1 auf Seite 262 dargestellten Ablauf ausgegangen und dieser insbesondere um die Klassifikation der Klassifikationsdaten ergänzt, siehe Abbildung 10.7.
CSV Reader
Decision Tree Learner Partitioning Missing Value Normalizer Decision Tree Predictor Column Filter
dmc2002 _train.txt
alle auf -1
alle Merkmale
CSV Reader
Missing Value
dmc2002 _class.txt
alle auf -1
Bewertung
Row Filter
60:40
Decision Tree Ergebnis Predictor -Spalten Normalizer (Apply) Column Filter Joiner
alle Merkmale CSV Reader
class columns
Soll +Ergebnis
Gewinn berechnen Bewertung
Gewinn berechnen
Ergebnis in letzter Zeile Row Filter
Ergebnis in letzter Zeile
dmc2002_realclass.txt
Abb. 10.7: Datenvorverarbeitung für Entscheidungsbaumlernen
Im ersten Versuch werden alle fehlenden Werte durch −1 ersetzt und keine Normierung vorgenommen. Für die Testmenge wird ein Wert von 407,70 erreicht, das Ergebnis für die gesamte Klassifikationsmenge ist 562,50. Im zweiten Versuch werden alle Merkmale
10.5 Experimente
273
normalisiert, und wir erhalten die Werte 1063,20 beziehungsweise 697,80. Das lässt vermuten, dass der Entscheidungsbaum zu stark an die Trainingsmenge angepasst ist und somit die Daten der Klassifikationsmenge nicht gut klassifizieren kann. Im nächsten Versuch, Experiment 4 werden alle fehlenden Werte durch den Median der jeweiligen Spalte ersetzt. Danach werden die Daten zuerst ohne und dann mit Normierung benutzt. Die Tabelle 10.6 zeigt die Resultate. Normalisierung ohne Normalisierung Min-Max-Normalisierung Z-Normalisierung dezimale Skalierung
Testdaten (4.000) 493,8 446,7 246,9 259,5
Klassifikationsdaten (10.000) 409,5 479,7 1290,6 1861,5
Tabelle 10.6: Ergebnisse Entscheidungsbaumlernen
Im Experiment 5 werden wir nun die Merkmale power_consumption und HHH wie oben beschrieben gruppieren und erneut das Entscheidungsbaum-Lernverfahren von Knime einsetzen. Wieder werden die verschiedenen Normalisierungen benutzt. Der geänderte Ablauf in der Datenvorverarbeitung entspricht dem in Abbildung 10.8 auf der nächsten Seite dargestellten Vorgehen. Allerdings verwenden wir zunächst alle Attribute. Alle weiteren Schritte entsprechen den vorherigen Experimenten. Die Ergebnisse können der Tabelle 10.7 entnommen werden. Normalisierung ohne Normalisierung Min-Max-Normalisierung Z-Normalisierung dezimale Skalierung
Testdaten (4.000) 366,6 318,3 796,5 376,8
Klassifikationsdaten (10.000) 75,0 1558,5 888,6 1377,9
Tabelle 10.7: Ergebnisse Entscheidungsbaumlernen mit codiertem Energieverbrauch
Wir haben hierbei keine reproduzierbare Aufteilung im Knoten Partitioning eingestellt. Somit wird mit jedem Reset eine zufällig neue Aufteilung in die 60% Trainingsmenge und die 40% Testmenge vorgenommen. Dieses lässt sich in den Experimenten ausnutzen, indem man durch wiederholtes Reset des Partitioning-Knoten neue Aufteilungen und somit auch neue Ergebnisse provoziert. Die Daten in diesen Tabellen sind also immer nur ungefähre Werte, die in eigenen Experimenten nicht unbedingt exakt erreicht werden. Als nächstes Experiment mit dem Entscheidungsbaum-Lernverfahren wird die Datenmenge wieder auf die drei Merkmale payment_type, power_consumption und HHH reduziert (Abbildung 10.8 auf der nächsten Seite). Die Reduktion führt dazu, dass die Schritte bis zum Ergebnis wahrnehmbar schneller abgearbeitet werden. Die Ergebnisse in Tabelle 10.8 zeigen aber, dass diese Datenreduktion zumindest für das gewählte Verfahren nicht den erhofften Erfolg bringt. Da wir auch hier nicht auf Anhieb akzeptable Resultate erzielen, beziehen wir wieder die Überlegungen ein, die wir bei den Experimenten zu k-Nearest Neigbour und Naive
274
10 Eine Data-Mining-Aufgabe Decision Tree Learner
CSV Reader
dmc2002 _train.txt
Java Snippet Java Snippet (simple) (simple) Column Filter
codieren pow_cons
Java Snippet CSV Reader (simple)
dmc2002 _class.txt
Codieren pow_con
codieren HHH
Partitioning Missing Value Normalizer
nur 3
Java Snippet (simple) Column Filter
Codieren HHH
nur 3
Mean
alle
Missing Value
Mean
Decision Tree Predictor
60:40
Normalizer (Apply)
Decision Tree Predictor
alle
Abb. 10.8: Gruppierung von power_consumption und HHH sowie Reduktion auf 3 Attribute
Normalisierung ohne Normalisierung Min-Max-Normalisierung Z-Normalisierung dezimale Skalierung
Testdaten (4.000) –11,4 38,1 26,7 43,8
Klassifikationsdaten (10.000) 108,6 –22,8 19,2 120,0
Tabelle 10.8: Ergebnisse Entscheidungsbaumlernen mit nur 3 Merkmalen
Bayes angestellt haben. Wir wiederholen die Experimente in folgender Konfiguration: • Entscheidungsbaum, nur die drei Merkmale payment_type, power_consumption sowie HHH, pc und HHH werden gruppiert, −1 für fehlende Werte, Equal Size Sampling, Knime. Die Situation verbessert sich nun deutlich. Gruppieren wir die Merkmale HHH (0..11), sowie power_consumption (0..5), so erhalten wir zwischen 3000 und 5000 Punkte. Erfolgt die Gruppierung in der zweiten Variante power_consumption (0..3) sowie HHH (0..6), so steigert man das erzielte Resultat auf bis zu 6000e. Zur Erinnerung: Man wird bei den Tests unterschiedliche Resultate erhalten, da die Aufteilung der Trainingsmenge zwar immer in der Variante Stratified Sampling erfolgt, die Auswahl aber trotzdem zufällig ist. Auffällig bei den bisherigen Tests ist, dass durch diesen Zufallsfaktor meistens eine breite Streuung der Resultate auftritt.
10.5 Experimente
275
Die besten, mit einem Entscheidungsbaum erzielten Resultate sind: Ergebnis 6665,70
6300,30
Charakterisierung des Experiments J 48, nur 3 Attribute Missing values: −1 Codierung von power_consumption (diskret): 0..5 Codierung von HHH (diskret): 0..11 Equal Size Sampling analog Codierung von power_consumption (diskret): 0..3 Codierung von HHH (diskret): 0..6
Auch hier beobachtet man eine große Abhängigkeit des Resultats von der Generierung der Trainingsmenge. Deshalb werden wir erneut mit der eigenen Generierung der Testmenge experimentieren. Man erhält etwas schlechtere Resultate, die dafür aber nur noch eine geringe Streuung aufweisen. Der beste Entscheidungsbaum auf den Trainingsdaten erzielt bei der Vorhersagemenge 6116,10 e. Ergebnis 6116,10
Charakterisierung des Experiments J 48, nur 3 Attribute Missing values: −1 Codierung von power_consumption (diskret): 0..3 Codierung von HHH (diskret): 0..6 eigene Trainingsmenge: 800 Kündiger, 1000 Nichtkündiger
Mit den bisherigen Verfahren erzielen wir durchaus akzeptable Resultate. Allerdings ist dazu doch eine Portion „Reindenken“ in die Daten erforderlich. Ein simples Anwenden der Verfahren ist selten erfolgreich. Wir halten fest, dass es sinnvoll sein kann, eine Vergleichbarkeit der Anzahl der Datensätze bezüglich des Zielattributs herzustellen. Ebenso wird festgestellt, dass die Resultate bei einigen Tests eine deutliche Streuung aufweisen. Erst ein eigenes Konzept für die Aufspaltung in Trainings- und Testmenge bringt stabile, gute Resultate.
10.5.4
Neuronale Netze
Die meisten Experimente führen wir mit künstlichen neuronalen Netzen durch. Neben Knime wird dazu auch der JavaNNS eingesetzt. Bei neuronalen Netzen beeinflussen sowohl die Netz-Architektur als auch das Training das Verhalten des Netzes. Verwendet wird ein vorwärtsgerichtetes neuronales Netz, ein MultiLayer Perceptron (MLP). Die Architektur des Netzes für eine Klassifikationsaufgabe wird in Knime weitgehend automatisch erzeugt: • Die Eingabe-Schicht enthält für jedes Merkmal genau ein Neuron. Für das Beispiel enthält das Netz somit 32 Eingabe-Neuronen. • Die Anzahl und die Größe der Zwischenschichten kann über das Konfigurationsmenü beeinflusst werden. Als Standard wird eine innere Schicht mit 10 Neuronen angenommen. Für das Beispiel mit 32 Eingabe-Neuronen ist das eine sinnvolle Größe.
276
10 Eine Data-Mining-Aufgabe
• Die Größe der Ausgabe-Schicht wird durch das Klassifikationsattribut bestimmt: Für jede Ausprägung des Merkmals wird ein Neuron eingesetzt. Für das Beispiel werden somit zwei Ausgabe-Neuronen verwendet, eines für die Klasse yes und eines für die Klasse no des Merkmals canceler. Es wird dann für einen Datensatz die Klasse vorhergesagt, dessen Neuron die höchste Aktivierung aufweist. CSV Reader
Partitioning MultiLayerPerceptron RProp MLP Learner Predictor Column Filter Bewertung
Missing Value Normalizer
Row Filter
60:40 dmc2002_ train.txt
alle auf -1
hidden: 1x20
alle Merkmale
CSV Reader
Missing Value
dmc2002_ class.txt
alle auf -1
MultiLayerPerceptron Normalizer (Apply) Predictor Column Filter
Joiner
CSV Reader
Ergebnis in letzter Zeile
Ergebnis -Spalten Bewertung
Row Filter
class columns Soll und Ergebnis
Ergebnis in letzter Zeile
dmc2002_realclass.txt
Abb. 10.9: Experimente mit einem neuronalen Netz
Experiment 7 nutzt alle Merkmale. Die Attribute power_consumption und HHH werden nicht codiert, für alle fehlenden Werte wird –1 eingesetzt. Es wird eine dezimale Skalierung verwendet. Der Ablauf sieht wieder ähnlich aus, es werden nur die Knoten für die Arbeit mit neuronalen Netzen eingesetzt, der MLP-Learner und der MLP-Predictor. Wir experimentieren mit zwei verschiedenen inneren Schichten, bestehend aus 10 beziehungsweise 20 Neuronen. Mehr als eine innere Schicht erscheint aufgrund der Netzgröße nicht angebracht. Das Netz wird unterschiedlich lange trainiert werden. Ein längeres Training kann das Ergebnis verbessern, ein zu langes Training führt jedoch zum Overfitting: die Trainingsdaten werden zwar besser bearbeitet, aber die Fehlerrate für die Testdaten steigt. Diesen Effekt kann man auch in den Ergebnis-Tabellen erkennen. Zwischenschicht 1×10
1×20
Lernzyklen 100 300 500 1000 3000 100 300 500 1000 3000 4000 6000
Testdaten 221,1 413,7 594,9 704,1 483,6 184,8 236,7 250,5 397,8 899,4 975,6 813,6
Klassifikationsdaten 217,5 657,6 387,0 1039,2 994,2 232,5 619,8 618,3 897,6 1563,3 1654,8 1277,7
Tabelle 10.9: Ergebnisse Experiment 7, Min-Max-normalisierte Daten
10.5 Experimente
277
So ist in den Tabellen 10.9 sowie 10.10 das Ergebnis nach 3.000 Lernzyklen kleiner als nach 1.000 Lernzyklen. Zwischenschicht 1×10
1×20
Lernzyklen 100 300 500 1000 3000 100 300 500 1000 3000
Testdaten 0,0 143,1 380,1 303,9 428,4 38,1 457,8 271,2 131,7 756,6
Klassifikationsdaten 0,0 393,0 543,6 1569,3 922,5 –11.4 1686,3 1867,8 1850,1 120,8
Tabelle 10.10: Ergebnisse Experiment 7, dezimal skalierte Daten
Dieselben Versuche werden jetzt mit den codierten Werten für power_consumption und HHH durchgeführt. Das MLP-Netz mit den codierten Daten, dem jeweiligen Median für die fehlenden Werte und einer dezimalen Skalierung erzielt die in Tabelle 10.11 gelisteten Ergebnisse. Überraschenderweise führt die Gruppierung der Werte für power_consumption und das Abschneiden der hohen Werte für HHH nicht zu einer Verbesserung. Zwischenschicht 1×10
1×20
Lernzyklen 100 300 500 1000 3000 100 300 500 1000 3000
Testdaten 0,0 423,1 73,2 527,7 885,9 0,0 404,4 690,3 548,4 927,7
Klassifikationsdaten 0,0 120,6 392,4 930,9 1654,2 –11,4 584,1 978,9 1265,1 1282,8
Tabelle 10.11: Experiment 7 mit gruppierten Werten für pc und HHH
Für dieselben Daten werden wir nun einmal mit dem JavaNNS ein neuronales Netz aufbauen und trainieren. Das Erzeugen eines neuronalen Netzes im JavaNNS kann in Abschnitt 1.6.3, Seite 32 nachgelesen werden. Das neuronale Netz besteht wieder aus 32 Eingabe-Neuronen – für jedes Merkmal ein Neuron – sowie in diesem Fall aus nur einem Ausgabe-Neuron. Ist dieses aktiviert, so wird die Klasse yes vorhergesagt, ist es nicht aktiviert die Klasse no. Wir legen eine Zwischenschicht von 16 Neuronen fest. Abbildung 10.10 zeigt das Netz sowie die Versuchsumgebung mit dem Steuerungsfenster und der Anzeige des Netzfehlers.
278
10 Eine Data-Mining-Aufgabe
Abb. 10.10: Neuronales Netz für Experiment 8 im JavaNNS
Für die Auswertung der Netzvorhersage und die Berechnung der Zielfunktion ist bei der Nutzung des JavaNNS ein entsprechendes Programm erforderlich. Die Netzausgabe liegt als res-Datei vor, in der für alle Eingaben die erwartete Ausgabe sowie die berechnete Ausgabe aufgeführt sind. Diese res-Datei muss ausgewertet werden. SNNS result file V1.4-3D generated at Mon Aug 12 10:13:35 2013 No. of patterns : 10000 No. of input units : 32 No. of output units : 1 startpattern : 1 endpattern : 10000 teaching output included #1.1 0 0.12242 #2.1 0 0.11077 #3.1 ... #102.1 1 0.15244 ...
10.5 Experimente
279
Die Autoren verwenden für die Auswertung der res-Datei ein kleines Java-Programm, welches die Anzahl der korrekt erkannten Klassen und das Ergebnis für die Zielfunktion anzeigt. Lernparameter BackProp 0,2 BackProp 0,5 RPROP
Lernzyklen 100 300 100 100 300
Testdaten 0 20 0 26 316
Klassifikationsdaten 0 209 43 64 477
Tabelle 10.12: Ergebnisse Experiment 8, dezimal skalierte Daten
Die Ergebnisse in Tabelle 10.12 sind als eher deprimierend einzuschätzen. Die Tabelle lässt erkennen, dass keine oder nur sehr wenige Kündiger erkannt werden, es werden wenige Einsen vom Netz erkannt. Die res-Datei zeigt, dass alle vom Netz berechneten Werte sehr klein sind und ein Wert nahe Eins gar nicht oder kaum auftritt. Eine einfache Idee verhilft dem Netz aber zu großer Leistungsfähigkeit: Wir wählen nicht den Schwellwert von 0,5 als Grenze zwischen 1 und 0, den Klassen yes und no, sondern ermitteln den günstigsten Schwellwert. Im Sinne der neuronalen Netze wird hier die Ausgabe der Neuronen mittels einer Ausgabefunktion aus der Aktivierung berechnet. Praktisch ist es folgende Bestimmung der Ausgabe out: out = (int) Math.round(act+shift); Der berechneten Aktivierung act wird ein Wert shift hinzuaddiert, damit leichter eine 1 erkannt wird. Diese Rechnung ist in das Auswerteprogramm integriert, und es kann leicht ein günstiger shift bestimmt werden. Korrekterweise ermitteln wir den shift anhand der Testmenge, die aus 40% Datensätzen der ursprünglichen Trainingsmenge besteht. Dieser shift wird dann auf die gesamten Klassifikationsdaten angewendet, und wir erhalten ein Ergebnis, das mit den Wettbewerbsergebnissen verglichen werden kann. Tabelle 10.13 zeigt die beeindruckenden Verbesserungen, die mit dieser Verschiebung des Schwellwertes des Ausgabe-Neurons erzielt werden können. Dieses Vorgehen hat in mehreren Projekten erfolgreich Anwendung gefunden. Lernparameter BackProp 0,2 BackProp 0,5 RPROP
Lernzyklen 100 300 100 100 300
Bias Shift 0,37 0,34 0,38 0,35 0,34
Testdaten 2048 1383 1571 2803 1871
Klassifikationsdaten 4243 3081 5076 6573 4865
Tabelle 10.13: Ergebnisse Experiment 8 mit modifizierten Schwellwert
Wieder führen wir weitgehend dasselbe Experiment durch, nur dass diesmal die Werte der Merkmale power_consumption sowie HHH, wie im Abschnitt 10.4 auf Seite 263
280
10 Eine Data-Mining-Aufgabe
Lernparameter BackProp 0,2 BackProp 0,5 RPROP
Lernzyklen 50 100 300 100 100 300
Bias Shift 0,34 0,33 0,33 0,33 0,33 0,33
Testdaten 3130 3223 3017 2984 2965 2486
Klassifikationsdaten 5741 7133 4930 6265 5520 4370
Tabelle 10.14: Ergebnisse Experiment 8 mit codierten Werten für pc und HHH
beschrieben, gruppiert werden. Wir geben hier gleich die Tabelle mit dem Bias Shift an, da nur diese Versuche gute Ergebnisse erreichen, siehe Tabelle 10.14 Zum Abschluss unserer Experimente wird nun auch die Variante mit ausschließlich den drei Merkmalen payment_type, power_consumtion und HHH mittels neuronaler Netze probiert. Experiment 9 nutzt dazu Knime und Experiment 10 den JavaNNS. Die fehlenden Werte werden durch den Median der jeweiligen Spalte ersetzt, alle Daten werden in den Bereich 0..1 skaliert. Wie im entsprechenden Experiment des Entscheidungsbaumlernens wird ein Spalten-Auswahl-Knoten zwischen der Codierung der Merkmale und dem Ersetzen der fehlenden Werte eingeordnet. Die Abbildung 10.11 zeigt die Datenvorverarbeitung. Alle weiteren Schritte sind identisch zum Ablauf in Abbildung 10.9 auf Seite 276. CSV Reader
Java Snippet Java Snippet (simple) Column Filter (simple)
dmc2002_ train.txt
codieren pow_cons
CSV Reader
Java Snippet (simple)
dmc2002_ class.txt
Codieren pow_con
codieren HHH
nur 3
Java Snippet (simple) Column Filter
Codieren HHH
nur 3
Missing Value
Normalizer
Mean
alle
Missing Value
Mean
Partitioning
60:40
Normalizer (Apply)
alle
Abb. 10.11: Vorverarbeitung für die Experimente 9 und 10
Mit dieser Versuchsanordnung werden keine guten Ergebnisse erzielt: Bei einer Zwischenschicht aus 10 Neuronen stellt sich auch mit 1.000 Lernzyklen für die Zielfunktion kein Ergebnis größer Null ein. Werden 20 Neuronen in der Zwischenschicht verwendet, ergibt sich erst bei 1.000 Lernzyklen ein Ergebnis von 43,80 für die Testdaten und von 120,0 für die Klassifikationsdaten. Trotz dieser schlechten Ergebnisse werden wir das Experiment 10 durchführen, somit mit denselben Daten ein Netz im JavaNNS trainieren. Die Architektur ist in Abbil-
10.5 Experimente
281
dung 10.12 zu sehen. Gleichzeitig ist die Lernumgebung erkennbar. Es wird mit der Trainingsmenge, der Muster-Datei tr60.pat, trainiert und die Muster-Datei tr40.pat zum Testen eingesetzt. Im Fehler-Graph-Fenster ist die Fehlerkurve für die Trainingsmenge (obere Linie) sowie der Fehler für die Testmenge (untere Linie) erkennbar. Bei den Experimenten mit dem JavaNNS verfolgt man den Verlauf der Fehlerkurven sehr genau. Bei zunehmenden Trainingszyklen sinkt zwar der Fehler für die Trainingsmenge, der Fehler für die Testmenge steigt dagegen an. Das Training muss vor dem Eintreten dieses Effektes abgebrochen werden.
Abb. 10.12: Ein neuronales Netz mit nur 3 Eingaben
Für unsere reduzierte Eingabe erhalten wir mit dem JavaNNS-Netz die in Tabelle 10.15 aufgeführten Ergebnisse. Ohne den Trick mit einer Verschiebung des Schwellwertes Lernparameter BackProp 0,1 RPROP
Lernzyklen 100 300 100
Bias Shift 0,35 0,37 0,37
Testdaten 2937 2951 0
Klassifikationsdaten 6198 6792 6150
Tabelle 10.15: Ergebnisse Experiment 10, nur 3 Eingabe-Merkmale
282
10 Eine Data-Mining-Aufgabe
wird kein Lerneffekt erzielt, so dass die Tabelle nur die Ergebnisse unter Nutzung des abgesenkten Schwellwertes angibt. Mit 6.792,00e wird in diesem Experiment nicht nur ein Wert erzielt, der in der Liste der Sieger von 2002 den Platz 7 bedeutet hätte, sondern dies wird dazu noch mit einer minimalen Eingabe und einem sehr kleinen Netz erreicht.
10.6
Auswertung der Ergebnisse
Die aufgezeigten Experimente können bei weitem nicht als vollständig für die Bearbeitung einer realistischen Data-Mining-Aufgabe gelten. Auf der einen Seite sind alle Data-Mining-Algorithmen mathematische und damit exakte Verfahren. Auf der anderen Seite kann nur durch eine Vielzahl von Experimenten ein gewünschtes oder zumindest nützliches Ergebnis erzielt werden. Es existiert derzeit kein Modell, welches uns in Abhängigkeit von einer Aufgabe, einen erfolgreichen Weg zum Ergebnis aufzeigt. Dieses Experimentieren ist dann die einzige Alternative zu einer rein mathematischen Vorgehensweise, die bei praktischen Problemen meistens nicht möglich ist. Mit unseren Experimenten haben wir aber gezeigt, dass der Energieversorger durch den Einsatz eines Vorhersagemodells für seine Rabatt-Aktion einen durchaus nennenswerten zusätzlichen Ertrag erwirtschaften kann. Die Experimente mit den besten Resultaten sind in Tabelle 10.16 auf der nächsten Seite aufgeführt. Auffallend ist, dass die neuronalen Netze, entwickelt im JavaNNS, die besten Ergebnisse zeigen. Allerdings muss dazu gesagt werden, dass diese Ergebnisse nur durch eine kreative Analyse und Weiterverarbeitung der Netz-Ausgaben erreicht werden. Die Arbeit mit dem JavaNNS erfordert zudem den Einsatz weiterer Software für die Datenvorbereitung sowie für die Auswertung der Netz-Ausgaben. Die Experimente mit den anderen Klassifikatoren zeigen, dass man durchaus auch in die Größenordnung von 6000 vorstoßen kann. Welche Schlussfolgerungen können aus den Experimenten für die Aufgabe aus dem Data Mining Cup 2002, der Entwicklung eines Vorhersagemodells für Kunden eines Energieversorgers gezogen werden? • Es sind stets mehrere (viele) Experimente nötig.
• Es sind verschiedene Verfahren und auch verschiedene Software-Werkzeuge (so vorhanden) einzusetzen und auszuprobieren. • Mittels vorgefertigter Komponenten können sehr schnell Data-Mining-Experimente durchgeführt werden. Dies ersetzt aber nicht ein Verständnis für die verwendeten Methoden. • Kreatives Herangehen und die Implementation eigener Verarbeitungsschritte können durchaus zu besseren Ergebnissen führen. • Die Datenvorbereitung hat einen großen Einfluss auf die Resultate.
• Experimentieren und das Protokollieren dieser Experimente sind für ein erfolgreiches Data Mining unerlässlich.
10.6 Auswertung der Ergebnisse Ergebnis 7133 6792 6573 6533,10
6355,50 6297,90 6165 6665,70 6300,30 6116,10
283
Charakterisierung des Experiments Neuronales Netz, alle Merkmale, power_consumption und HHH gruppiert, dezimal skaliert, JavaNNS Neuronales Netz, nur 3 Eingabe-Merkmale (payment_detail, power_consumption und HHH ), power_consumption und HHH gruppiert, dezimal skaliert, JavaNNS Neuronales Netz, alle Merkmale, keine Gruppierung, nur dezimal skaliert, JavaNNS K-Nearest Neighbour, k=7, nur 3 Attribute, dezimal normalisiert, kein gewichteter Abstand, Missing values: −1, Codierung von power_consumption (diskret): 0..3, Codierung von HHH (diskret): 0..6, eigene Trainingsmenge: 800 Kündiger, 1000 Nichtkündiger, Knime Naive Bayes, nur 3 Attribute, Missing values: −1, Codierung von power_consumption (diskret): 0..5, Codierung von HHH (diskret): 0..11, Equal Size Sampling, Knime analog, Codierung von power_consumption (diskret): 0..3, Codierung von HHH (diskret): 0..6, Knime Naive Bayes, nur 3 Attribute, Missing values: −1, Codierung von power_consumption (diskret): 0..3, Codierung von HHH (diskret): 0..6, eigene Trainingsmenge: 800 Kündiger, 1000 Nichtkündiger, Knime J48, nur 3 Attribute, Missing values: −1, Codierung von power_consumption (diskret): 0..5, Codierung von HHH (diskret): 0..11, Equal Size Sampling, Knime analog, Codierung von power_consumption (diskret): 0..3, Codierung von HHH (diskret): 0..6, Knime J48, nur 3 Attribute, Missing values: −1, Codierung von power_consumption (diskret): 0..3, Codierung von HHH (diskret): 0..6, eigene Trainingsmenge: 800 Kündiger, 1000 Nichtkündiger, Knime
Tabelle 10.16: Die besten Ergebnisse unserer Experimente
• Wenn möglich sind Experimente zu automatisieren, um viele Varianten zu probieren und somit die Chance auf gute Ergebnisse zu erhöhen. Die in den vorangegangen Abschnitten beschriebenen Herangehensweisen lassen noch viel Raum für weitere Experimente. Einige Möglichkeiten seien hier angesprochen: • Die Aufteilung der Trainingsmenge kann modifiziert werden. Statt 60:40 kann auch 70:30 oder 80:20 probiert werden. Dabei sollte man aber stets darauf achten, dass die Verteilung des Klassifikationsmerkmals in den Teilmengen gleich ist. Sind die Klassen aber sehr ungleich verteilt – wie in unserem Beispiel –, dann ist durchaus eine davon abweichende Aufteilung der Daten zu überlegen. • Die Gruppierung und Codierung für das Merkmal power_consumption kann modifiziert werden, zum Beispiel statt Gruppen von 0 bis 5 kann eine feinere Unterteilung der Verbrauchswerte bis etwa 6.000 kWh vorgenommen werden: 0..10 und größer 6.000.
284
10 Eine Data-Mining-Aufgabe
• Für die Arbeit mit neuronalen Netzen können alle Merkmale binarisiert werden und entsprechende Netze entwickelt werden. Auch hier kann man versuchen, die Zahl der Merkmale wieder auf drei zu beschränken. • Architektur und Lernparameter für das Trainieren neuronaler Netze können weiter variiert werden. • Die Binarisierung der Merkmale kann auch dazu benutzt werden, Assoziationsregeln zu entwickeln. Hierbei sind wir nur an Assoziationsregeln interessiert, die eine Verbindung mit dem Klassifikationsmerkmal herstellen. Sollten Sie sich an dieser Aufgabe versuchen, so gilt es, das Resultat von Frau Tanja Ciernioch – eine ehemalige Studentin – zu schlagen, die im Rahmen eines Semesterprojekts 2014 auf die Rekordpunktzahl von 7771,80 kam. Dies erreichte sie mit dem Naive-Bayes-Verfahren. Der Schlüssel zum Erfolg war hier eine exzellente, wohldurchdachte Datenvorverarbeitung. Wir wünschen Ihnen für die Bearbeitung Ihrer Data-Mining-Aufgabe viel Erfolg und die nötige Portion Glück.
A
Anhang
A.1
Iris-Daten
Einer der Standard-Testdatensätze im Data Mining ist der sogenannte Iris-Datensatz. Diese Daten gehören zu den Beispieldatensätzen von Weka. Edgar Anderson1 sammelte Daten für folgende Schwertlilienarten: • Iris Setosa,
• Iris Virginica,
• Iris Versicolor. Der Iris-Datensatz besteht aus jeweils 50 Beobachtungen dieser drei Arten von Schwertlilien, von denen jeweils vier Attribute der Blüten erfasst wurden, und zwar jeweils die Länge und die Breite des Sepalum (Kelchblatt) und des Petalum (Kronblatt). Die Daten bestehen also aus den Attributen: 1. sepal length in cm 2. sepal width in cm 3. petal length in cm 4. petal width in cm 5. class Iris Setosa, Iris Versicolor, Iris Virginica Die Daten liegen im sogenannten arff-Format vor, welches das Standardformat für Weka ist. In den Datensätzen haben wir Iris durch I abgekürzt. @RELATION iris @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE
sepallength sepalwidth petallength petalwidth class
REAL REAL REAL REAL {Iris-setosa,Iris-versicolor,Iris-virginica}
1 Edgar Anderson (1935).„The irises of the Gaspé Peninsula“. In: Bulletin of the American Iris Society 59: 2-5.
286
A Anhang
@DATA 5.1,3.5,1.4,0.2,I-setosa 4.9,3.0,1.4,0.2,I-setosa 4.7,3.2,1.3,0.2,I-setosa 4.6,3.1,1.5,0.2,I-setosa 5.0,3.6,1.4,0.2,I-setosa 5.4,3.9,1.7,0.4,I-setosa 4.6,3.4,1.4,0.3,I-setosa 5.0,3.4,1.5,0.2,I-setosa 4.4,2.9,1.4,0.2,I-setosa 4.9,3.1,1.5,0.1,I-setosa 5.4,3.7,1.5,0.2,I-setosa 4.8,3.4,1.6,0.2,I-setosa 4.8,3.0,1.4,0.1,I-setosa 4.3,3.0,1.1,0.1,I-setosa 5.8,4.0,1.2,0.2,I-setosa 5.7,4.4,1.5,0.4,I-setosa 5.4,3.9,1.3,0.4,I-setosa 5.1,3.5,1.4,0.3,I-setosa 5.7,3.8,1.7,0.3,I-setosa 5.1,3.8,1.5,0.3,I-setosa 5.4,3.4,1.7,0.2,I-setosa 5.1,3.7,1.5,0.4,I-setosa 4.6,3.6,1.0,0.2,I-setosa 5.1,3.3,1.7,0.5,I-setosa 4.8,3.4,1.9,0.2,I-setosa 5.0,3.0,1.6,0.2,I-setosa 5.0,3.4,1.6,0.4,I-setosa 5.2,3.5,1.5,0.2,I-setosa 5.2,3.4,1.4,0.2,I-setosa 4.7,3.2,1.6,0.2,I-setosa 4.8,3.1,1.6,0.2,I-setosa 5.4,3.4,1.5,0.4,I-setosa 5.2,4.1,1.5,0.1,I-setosa 5.5,4.2,1.4,0.2,I-setosa 4.9,3.1,1.5,0.1,I-setosa 5.0,3.2,1.2,0.2,I-setosa 5.5,3.5,1.3,0.2,I-setosa 4.9,3.1,1.5,0.1,I-setosa 4.4,3.0,1.3,0.2,I-setosa 5.1,3.4,1.5,0.2,I-setosa 5.0,3.5,1.3,0.3,I-setosa 4.5,2.3,1.3,0.3,I-setosa 4.4,3.2,1.3,0.2,I-setosa 5.0,3.5,1.6,0.6,I-setosa 5.1,3.8,1.9,0.4,I-setosa 4.8,3.0,1.4,0.3,I-setosa 5.1,3.8,1.6,0.2,I-setosa 4.6,3.2,1.4,0.2,I-setosa 5.3,3.7,1.5,0.2,I-setosa 5.0,3.3,1.4,0.2,I-setosa
7.0,3.2,4.7,1.4,I-versicolor 6.4,3.2,4.5,1.5,I-versicolor 6.9,3.1,4.9,1.5,I-versicolor 5.5,2.3,4.0,1.3,I-versicolor 6.5,2.8,4.6,1.5,I-versicolor 5.7,2.8,4.5,1.3,I-versicolor 6.3,3.3,4.7,1.6,I-versicolor 4.9,2.4,3.3,1.0,I-versicolor 6.6,2.9,4.6,1.3,I-versicolor 5.2,2.7,3.9,1.4,I-versicolor 5.0,2.0,3.5,1.0,I-versicolor 5.9,3.0,4.2,1.5,I-versicolor 6.0,2.2,4.0,1.0,I-versicolor 6.1,2.9,4.7,1.4,I-versicolor 5.6,2.9,3.6,1.3,I-versicolor 6.7,3.1,4.4,1.4,I-versicolor 5.6,3.0,4.5,1.5,I-versicolor 5.8,2.7,4.1,1.0,I-versicolor 6.2,2.2,4.5,1.5,I-versicolor 5.6,2.5,3.9,1.1,I-versicolor 5.9,3.2,4.8,1.8,I-versicolor 6.1,2.8,4.0,1.3,I-versicolor 6.3,2.5,4.9,1.5,I-versicolor 6.1,2.8,4.7,1.2,I-versicolor 6.4,2.9,4.3,1.3,I-versicolor 6.6,3.0,4.4,1.4,I-versicolor 6.8,2.8,4.8,1.4,I-versicolor 6.7,3.0,5.0,1.7,I-versicolor 6.0,2.9,4.5,1.5,I-versicolor 5.7,2.6,3.5,1.0,I-versicolor 5.5,2.4,3.8,1.1,I-versicolor 5.5,2.4,3.7,1.0,I-versicolor 5.8,2.7,3.9,1.2,I-versicolor 6.0,2.7,5.1,1.6,I-versicolor 5.4,3.0,4.5,1.5,I-versicolor 6.0,3.4,4.5,1.6,I-versicolor 6.7,3.1,4.7,1.5,I-versicolor 6.3,2.3,4.4,1.3,I-versicolor 5.6,3.0,4.1,1.3,I-versicolor 5.5,2.5,4.0,1.3,I-versicolor 5.5,2.6,4.4,1.2,I-versicolor 6.1,3.0,4.6,1.4,I-versicolor 5.8,2.6,4.0,1.2,I-versicolor 5.0,2.3,3.3,1.0,I-versicolor 5.6,2.7,4.2,1.3,I-versicolor 5.7,3.0,4.2,1.2,I-versicolor 5.7,2.9,4.2,1.3,I-versicolor 6.2,2.9,4.3,1.3,I-versicolor 5.1,2.5,3.0,1.1,I-versicolor 5.7,2.8,4.1,1.3,I-versicolor
6.3,3.3,6.0,2.5,I-virginica 5.8,2.7,5.1,1.9,I-virginica 7.1,3.0,5.9,2.1,I-virginica 6.3,2.9,5.6,1.8,I-virginica 6.5,3.0,5.8,2.2,I-virginica 7.6,3.0,6.6,2.1,I-virginica 4.9,2.5,4.5,1.7,I-virginica 7.3,2.9,6.3,1.8,I-virginica 6.7,2.5,5.8,1.8,I-virginica 7.2,3.6,6.1,2.5,I-virginica 6.5,3.2,5.1,2.0,I-virginica 6.4,2.7,5.3,1.9,I-virginica 6.8,3.0,5.5,2.1,I-virginica 5.7,2.5,5.0,2.0,I-virginica 5.8,2.8,5.1,2.4,I-virginica 6.4,3.2,5.3,2.3,I-virginica 6.5,3.0,5.5,1.8,I-virginica 7.7,3.8,6.7,2.2,I-virginica 7.7,2.6,6.9,2.3,I-virginica 6.0,2.2,5.0,1.5,I-virginica 6.9,3.2,5.7,2.3,I-virginica 5.6,2.8,4.9,2.0,I-virginica 7.7,2.8,6.7,2.0,I-virginica 6.3,2.7,4.9,1.8,I-virginica 6.7,3.3,5.7,2.1,I-virginica 7.2,3.2,6.0,1.8,I-virginica 6.2,2.8,4.8,1.8,I-virginica 6.1,3.0,4.9,1.8,I-virginica 6.4,2.8,5.6,2.1,I-virginica 7.2,3.0,5.8,1.6,I-virginica 7.4,2.8,6.1,1.9,I-virginica 7.9,3.8,6.4,2.0,I-virginica 6.4,2.8,5.6,2.2,I-virginica 6.3,2.8,5.1,1.5,I-virginica 6.1,2.6,5.6,1.4,I-virginica 7.7,3.0,6.1,2.3,I-virginica 6.3,3.4,5.6,2.4,I-virginica 6.4,3.1,5.5,1.8,I-virginica 6.0,3.0,4.8,1.8,I-virginica 6.9,3.1,5.4,2.1,I-virginica 6.7,3.1,5.6,2.4,I-virginica 6.9,3.1,5.1,2.3,I-virginica 5.8,2.7,5.1,1.9,I-virginica 6.8,3.2,5.9,2.3,I-virginica 6.7,3.3,5.7,2.5,I-virginica 6.7,3.0,5.2,2.3,I-virginica 6.3,2.5,5.0,1.9,I-virginica 6.5,3.0,5.2,2.0,I-virginica 6.2,3.4,5.4,2.3,I-virginica 5.9,3.0,5.1,1.8,I-virginica
A.2 Sojabohnen
A.2
287
Sojabohnen
Vorhergesagt werden sollen die Krankheiten der Sojabohnen abhängig von verschiedenen Faktoren, wie beispielsweise von Umwelteinflüssen. Die Daten sind in Weka als Beispieldaten enthalten. Sie stammen von R. S. Michalski und R. L. Chilausky2 . Wir beschreiben die Attribute in ihrem Originalformat, also in Englisch. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
date: plant-stand: precip: temp: hail: crop-hist:
april,may,june,july,august,september,october normal,lt-normal lt-norm,norm,gt-norm lt-norm,norm,gt-norm yes,no diff-lst-year,same-lst-yr,same-lst-two-yrs, same-lst-sev-yrs area-damaged: scattered,low-areas,upper-areas,whole-field severity: minor,pot-severe,severe seed-tmt: none,fungicide,other germination: ’90-100%’,’80-89%’,’lt-80%’ plant-growth: norm,abnorm. leaves: norm,abnorm leafspots-halo: absent,yellow-halos,no-yellow-halos leafspots-marg: w-s-marg,no-w-s-marg,dna leafspot-size: lt-1/8,gt-1/8,dna leaf-shread: absent,present leaf-malf: absent,present leaf-mild: absent,upper-surf,lower-surf stem: norm,abnorm lodging: yes,no stem-cankers: absent,below-soil,above-soil,above-sec-nde canker-lesion: dna,brown,dk-brown-blk,tan fruiting-bodies: absent,present external decay: absent,firm-and-dry,watery mycelium: absent,present int-discolor: none,brown,black sclerotia: absent,present fruit-pods: norm,diseased,few-present,dna fruit spots: absent,colored,brown-w/blk-pecks,distort,dna seed: norm,abnorm mold-growth: absent,present seed-discolor: absent,present seed-size: norm,lt-norm
2 R. S. Michalski and R. L. Chilausky. Learning by Being Told and Learning from Examples: An Experimental Comparison of the Two Methods of Knowledge Acquisition in the Context of Developing an Expert System for Soybean Disease Diagnosis, International Journal of Policy Analysis and Information Systems, Vol. 4, No. 2, 1980.
288
A Anhang
34. shriveling: absent,present 35. roots: norm,rotted,galls-cysts 36. Classes: diaporthe-stem-canker, charcoal-rot, rhizoctonia-root-rot, phytophthora-rot, brown-stem-rot, powdery-mildew, downy-mildew, brown-spot, bacterial-blight, bacterial-pustule, purple-seed-stain, anthracnose, phyllosticta-leaf-spot, alternarialeaf-spot, frog-eye-leaf-spot, diaporthe-pod-&-stem-blight, cyst-nematode, 2-4-d-injury, herbicide-injury. Fehlende Werte sind wieder durch ein ? gekennzeichnet. Aus Gründen der Übersichtlichkeit verzichten wir auf die Darstellung des arff-Files und zeigen nur einen typischen Datensatz: @DATA october, normal, gt-norm, norm, yes, same-lst-yr, low-areas, pot-severe, none, 90-100, abnorm, abnorm, absent, dna, dna, absent, absent, absent, abnorm, no, above-sec-nde, brown, present, firm-and-dry, absent, none, absent, norm, dna, norm, absent, absent, norm, absent, norm, diaporthe-stem-canker ....
A.3 Wetterdaten
A.3
289
Wetter-Daten
Einer der Klassiker im Data Mining ist der Datensatz über das Problem, bei welchem Wetter gespielt wird. Mit 14 Datensätzen gehören die Daten gewiss nicht zu den Massendaten, sie sind aber durch ihre geringe Größe zur Veranschaulichung der Data-MiningAlgorithmen sehr gut geeignet. Es gibt 2 Varianten dieser Daten.
Variante 1 Die erste Variante gibt die Temperatur und die Luftfeuchtigkeit numerisch an. Outlook sunny sunny overcast rain rain rain overcast sunny sunny rain sunny overcast overcast rain
Temp (◦ F) 85 80 83 70 68 65 64 72 69 75 75 72 81 71
Humidity (%) 85 90 78 96 80 70 65 95 70 80 70 90 75 80
Windy? false true false false false true true false false false true true false true
Tabelle A.1: Daten Wetter-Beispiel – numerisch
Die Attribute sind: Outlook sunny, overcast, rain Temp in Fahrenheit Humidity in % Windy? true, false Play? yes, no
Play? no no yes yes yes no yes no yes yes yes yes yes no
290
A Anhang
Variante 2 Die zweite Variante gibt die Temperatur und die Luftfeuchtigkeit ordinal an. Die Attribute sind: Outlook sunny, overcast, rain Temp hot, mild, cool Humidity high, normal Windy? true, false Play? yes, no Tag 1 2 3 4 5 6 7 8 9 10 11 12 13 14
outlook sunny sunny overcast rainy rainy rainy overcast sunny sunny rainy sunny overcast overcast rainy
temperature hot hot hot mild cool cool cool mild cool mild mild mild hot mild
humidity high high high high normal normal normal high normal normal normal high normal high
Tabelle A.2: Daten Wetter-Beispiel – nominal
windy false true false false false true true false false false true true false true
play no no yes yes yes no yes no yes yes yes yes yes no
A.4 Kontaktlinsen-Daten
A.4
291
Kontaktlinsen-Daten
Die Daten stammen von J. Cendrowska3 . Ziel ist die Vorhersage, ob eine Person Kontaktlinsen benötigt und – wenn dies der Fall ist – welche Sorte der Linsen (hart oder weich) zu bevorzugen ist. Die Daten sind in Weka als Beispieldaten enthalten. Wir beschreiben die Attribute in ihrem Originalformat, also in Englisch. attribute 1 age of the patient: young, pre-presbyopic, presbyopic attribute 2 spectacle prescription: myope, hypermetrope attribute 3 astigmatic: no, yes attribute 4 tear production rate: reduced, normal attribute 5 class: hard : the patient should be fitted with hard contact lenses soft : the patient should be fitted with soft contact lenses none : the patient should not be fitted with contact lenses Hier das komplette File im Arff-Format: @relation contact-lenses @attribute @attribute @attribute @attribute @attribute
age spectacle-prescrip astigmatism tear-prod-rate contact-lenses
{young, pre-presbyopic, presbyopic} {myope, hypermetrope} {no, yes} {reduced, normal} {soft, hard, none}
@data % 24 instances young, myope, no, reduced, none young, myope, no, normal, soft young, myope, yes, reduced, none young, myope, yes, normal, hard young, hypermetrope, no, reduced, none young, hypermetrope, no, normal, soft young, hypermetrope, yes, reduced, none young, hypermetrope, yes, normal, hard pre-presbyopic, myope, no, reduced, none pre-presbyopic, myope, no, normal, soft pre-presbyopic, myope, yes, reduced, none pre-presbyopic, myope, yes, normal, hard pre-presbyopic, hypermetrope, no, reduced, none pre-presbyopic, hypermetrope, no, normal, soft 3 Cendrowska, J. „PRISM: An algorithm for inducing modular rules“, International Journal of ManMachine Studies, 1987, 27, 349–370.
292 pre-presbyopic, hypermetrope, yes, reduced, none pre-presbyopic, hypermetrope, yes, normal, none presbyopic, myope, no, reduced, none presbyopic, myope, no, normal, none presbyopic, myope, yes, reduced, none presbyopic, myope, yes, normal, hard presbyopic, hypermetrope, no, reduced, none presbyopic, hypermetrope, no, normal, soft presbyopic, hypermetrope, yes, reduced, none presbyopic, hypermetrope, yes, normal, none
A Anhang
Abbildungsverzeichnis 1.1
Business Intelligence (nach [Glu01]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.2
Ablauf eines Data-Mining-Prozesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.3
CRISP-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.4
Interdisziplinarität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5
Knime – Start-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6
Knime – Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7
Knime – Wetterbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.8
Knime – Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.9
Knime – Scorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.10
Knime – Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.11
Knime – Java Snippet für Punktevergabe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.12
Knime – Java Snippet zum Summieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.13
Knime – Loops 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.14
Knime – Loops 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.15
Knime – Loops 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.16
Knime – Loops 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.17
Weka – Start-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.18
Weka – Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.19
Weka – Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.20
Weka – ID3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.21
Weka – Entscheidungsbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.22
Weka – SimpleKMeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
294
Abbildungsverzeichnis
1.23
JavaNNS: Erzeugen einer Neuronen-Schicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.24
JavaNNS: Trainieren eines Netzes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.25
JavaNNS: Speichern des Ergebnisses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1
Beispiel Manhattan-Distanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.2
Beispiel Distanzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3
Ein künstliches neuronales Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4
Ein künstliches Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5
Schwellwertfunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.6
Logistische Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.7
Die Funktion Tangens Hyperbolicus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.8
Beispiel: Ein Neuron fungiert als UND-Schalter . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.1
Schlechtes und gutes Clustering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2
Klassifikation – Lernphase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3
Beispiel Regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.4
Web Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.1
Die Quadranten einer Entscheidungstabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2
Entscheidungsbaum Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.3
Weka-Entscheidungsbaum Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4
Centroid und Medoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.5
Cluster für das Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.6
Wissensspeicher künstliches neuronales Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.1
k-Nearest Neighbour 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.2
k-Nearest Neighbour 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.3
Beispiel Einkommen – k-Nearest Neighbour Workflow . . . . . . . . . . . . . . . . . . . . . 87
5.4
Beispiel Einkommen – k-Nearest Neighbour Resultat . . . . . . . . . . . . . . . . . . . . . . 87
5.5
Entscheidungsbaum Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Abbildungsverzeichnis
295
5.6
Entscheidungsbaum 1 für das Kredit-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.7
Entscheidungsbaum 2 für das Kredit-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.8
Informationsgewinn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.9
Gain-Berechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.10
Workflow Kreditwürdigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.11
Entscheidungsbaum Kreditwürdigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.12
Entscheidungsbaum für Iris-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.13
Naive Bayes – Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.14
Naive Bayes – Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.15
Ein vorwärtsgerichtetes mehrschichtiges neuronales Netz . . . . . . . . . . . . . . . . . . 119
5.16
Letzte trainierbare Verbindungsschicht und Ausgabe-Schicht . . . . . . . . . . . . . . 119
5.17
Unterschiedliche Zwischenschichten für eine Aufgabe . . . . . . . . . . . . . . . . . . . . . 121
5.18
Schichten in einem vorwärtsgerichteten neuronalen Netz . . . . . . . . . . . . . . . . . . 121
5.19
Einfluss nachfolgender Neuronen auf das Fehlersignal . . . . . . . . . . . . . . . . . . . . . 123
5.20
Schwierige Situationen im Lernverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.21
Eingabe-Muster: Ziffer 1 in Pixeldarstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.22
Trainieren des neuronalen Netzes im JavaNNS . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.23
Zuordnung eines verrauschten Musters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.24
Beispiel – Klassifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.25
SVM in der Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.26
SVM im dreidimensionalen Raum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.27
SVM – optimale Hyperebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.28
SVM – Beispiel-Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.29
SVM – Vorhersage auf den Testdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.30
SVM – Vorhersage auf den Trainingsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.1
Hierarchische Clusterbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
296
Abbildungsverzeichnis
6.2
Nichtkonvexe Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.3
Clusterbildung auf nichtkonvexen Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.4
Clustering mit k-Means – Ausgangsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.5
Clustering mit k-Means – Schritte 1 und 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.6
Clustering mit k-Means – Schritt 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.7
Clustering mit k-Means – Schritte 4 und 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.8
k-Means – Ausgangssituation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.9
k-Means – Schritt 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.10
k-Means – Schritt 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.11
k-Means – Schritte 3 und 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.12
k-Means – Schritte 5 und 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.13
Clustering mit k-Means – Iris-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.14
Originalklassen – Iris-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.15
Workflow – Iris-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.16
Agglomeratives Clustering – Schritt 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.17
Agglomeratives Clustering – Schritt 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.18
Agglomeratives Clustering – Schritt 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
6.19
Agglomeratives Clustering – Schritt 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
6.20
Abstand zwischen Clustern – Single Linkage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
6.21
Abstand zwischen Clustern – Complete Linkage . . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.22
Abstand zwischen Clustern – Average Linkage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.23
Abstand zwischen Clustern – Centroid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.24
Abstand zwischen Clustern – Medoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.25
DBScan – Schritt 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
6.26
DBScan – Schritt 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
6.27
DBScan – weitere Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
6.28
Eine selbstorganisierende Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Abbildungsverzeichnis
297
6.29
Eingabe eines Neurons der Karten-Schicht: M × Wn . . . . . . . . . . . . . . . . . . . . . . 168
6.30
Gewinner-Neuron in der Karten-Schicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.31
Visualisierung der Karten-Schicht als Punkte in der Ebene . . . . . . . . . . . . . . . . 170
6.32
Visualisierung der Karten-Schicht mit Voronoi-Kacheln . . . . . . . . . . . . . . . . . . . 171
6.33
Visualisierung der Cluster für das Tier-Beispiel im JavaNNS . . . . . . . . . . . . . 172
6.34
Die SOM gruppiert ähnliche Tiere in dieselben Karten-Bereiche. . . . . . . . . . . 173
6.35
Struktur eines neuronalen Gases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
6.36
Die Neuronen des neuronalen Gases überdecken den Eingaberaum . . . . . . . . . 175
6.37
Wachsendes neuronales Gas in zwei Stadien (DemoGNG) . . . . . . . . . . . . . . . . . 175
6.38
Struktur eines ART-Netzes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
6.39
Eingabemuster M und Referenzmuster in einem ART-Netz (JavaNNS) . . . 177
6.40
Clustering mit k-Means – Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
6.41
Clustering der Iris-Daten mit Fuzzy-c-Means (Ausschnitt) . . . . . . . . . . . . . . . . . 180
7.1
A Priori – Variante 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.2
A Priori – Variante 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.3
FP-Tree – Schritt 1, afdg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
7.4
FP-Tree – Schritt 2, afcdg und Schritt 3, afd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
7.5
FP-Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.6
Single prefix path FP-Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.7
Reduzierter FP-Tree für g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1
Datenvorbereitung (eigene Darstellung nach [FPSS96]) . . . . . . . . . . . . . . . . . . . . 201
8.2
Knime – Missing Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
8.3
Knime – Missing Values – individual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.4
Stichprobenwahl nach Prozenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.5
Clusterversuch 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.6
Clusterversuch 2 – Alter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
298
Abbildungsverzeichnis
8.7
Clusterversuch 2 – Bildungsabschluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
8.8
Entscheidungsbaum mit ID3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.1
Support der Assoziationsregel M → N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
9.2
Konfidenz der Assoziationsregel M → N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
9.3
Completeness der Assoziationsregel M → N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
9.4
Wetter-Beispiel – schlechte Trainingsmenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
9.5
Visualisierung Iris-Daten in Knime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
9.6
Visualisierung – Liniendiagramm 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
9.7
Visualisierung – Liniendiagramm 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
9.8
Visualisierung – Liniendiagramm 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
9.9
Visualisierung – Balkendiagramm 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
9.10
Visualisierung – Balkendiagramm 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
9.11
Visualisierung – Balkendiagramm 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
9.12
Visualisierung – Histogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
9.13
Visualisierung – Kreisdiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
9.14
Visualisierung – Punkte-Diagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
9.15
Visualisierung – Blasendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
9.16
Visualisierung – Streudiagramm-Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
9.17
Iris-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
9.18
Iris-Daten – Hauptachsentransformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
10.1
Ein erster Analyse-Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10.2
Verteilung der Energieverbrauchswerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
10.3
Verteilung der Energieverbrauchswerte nach Kappung . . . . . . . . . . . . . . . . . . . . . 265
10.4
Verteilung HHH-Werte nach der Kappung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
10.5
Das Experiment k-Nearest Neighbour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
10.6
Das Experiment Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Abbildungsverzeichnis
299
10.7
Datenvorverarbeitung für Entscheidungsbaumlernen . . . . . . . . . . . . . . . . . . . . . . 272
10.8
Gruppierung von power_consumption und HHH sowie Reduktion auf 3 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
10.9
Experimente mit einem neuronalen Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
10.10 Neuronales Netz für Experiment 8 im JavaNNS . . . . . . . . . . . . . . . . . . . . . . . . . . 278 10.11 Vorverarbeitung für die Experimente 9 und 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 10.12 Ein neuronales Netz mit nur 3 Eingaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Tabellenverzeichnis 1.1
Iris-Daten mit k-Nearest Neighbour (Schleife) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.2
Wetter-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1
Tabelle der Wahrheitswerte der logischen Verknüpfungen . . . . . . . . . . . . . . . . . . 53
3.1
Klassifikation – Testphase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.2
Klassifikation – Anwendungsphase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.1
Entscheidungstabelle für das Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2
Erweiterte Entscheidungstabelle für das Wetter-Beispiel . . . . . . . . . . . . . . . . . . . 70
4.3
Data-Mining-Entscheidungstabelle für das Wetter-Beispiel . . . . . . . . . . . . . . . . 71
5.1
Restaurant-Beispiel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.2
Daten Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.3
Kreditrisiko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.4
Kreditrisiko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.5
Daten Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.6
Daten Restaurantbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.7
Wetter-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.8
Relative Häufigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.9
Daten Wetter-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.10
Restaurant-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.11
Ein Datensatz für die Klassifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.12
Personaldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.1
Merkmale der Tierdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
6.2
Daten des Tierbeispiels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.1
Transformierte Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
302
Tabellenverzeichnis
8.1
Typische Datenfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.2
Binning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.3
Beispiel – Datenvorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.4
Beispiel – korrigierte Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
8.5
Beispiel – numerische Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
8.6
Beispiel – normalisierte Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.7
Beispiel – nominale Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10.1
Kundenbewertungsmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
10.2
Ergebnisse im Data Mining Cup 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
10.3
Merkmale mit Datentyp in den Datenmengen des Energieversorgers . . . . . . . 259
10.4
Statistik der Trainingsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
10.5
Statistik der Klassifikationsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
10.6
Ergebnisse Entscheidungsbaumlernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
10.7
Ergebnisse Entscheidungsbaumlernen mit codiertem Energieverbrauch . . . . . 273
10.8
Ergebnisse Entscheidungsbaumlernen mit nur 3 Merkmalen . . . . . . . . . . . . . . . 274
10.9
Ergebnisse Experiment 7, Min-Max-normalisierte Daten. . . . . . . . . . . . . . . . . . . 276
10.10 Ergebnisse Experiment 7, dezimal skalierte Daten . . . . . . . . . . . . . . . . . . . . . . . . . 277 10.11 Experiment 7 mit gruppierten Werten für pc und HHH . . . . . . . . . . . . . . . . . . . 277 10.12 Ergebnisse Experiment 8, dezimal skalierte Daten . . . . . . . . . . . . . . . . . . . . . . . . . 279 10.13 Ergebnisse Experiment 8 mit modifizierten Schwellwert . . . . . . . . . . . . . . . . . . . 279 10.14 Ergebnisse Experiment 8 mit codierten Werten für pc und HHH . . . . . . . . . . 280 10.15 Ergebnisse Experiment 10, nur 3 Eingabe-Merkmale . . . . . . . . . . . . . . . . . . . . . . 281 10.16 Die besten Ergebnisse unserer Experimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 A.1
Daten Wetter-Beispiel – numerisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
A.2
Daten Wetter-Beispiel – nominal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Verzeichnis der Symbole dist
Abstand zweier Datensätze
simil
Ähnlichkeit zweier Datensätze
θ
Schwellwert
wij
Verbindungsgewicht zwischen Neuronen
acti
Aktivierung eines Neurons
oi
Ausgabe (output) eines Neurons
∧
Logisches Und
→
Implikation
∃
Existenzquantor
¬
Negation
∩
Mengendurchschnitt
⊆
Teilmengenbeziehung
∨
Logisches Oder
↔
Äquivalenz
∀
Allquantor
Menge der reellen Zahlen
∪
Mengenvereinigung
∈
Elementbeziehung
supp
Support einer Regel
conf
Konfidenz
A
Attributmenge
E
Beispielmenge
ωB
Menge aller Werte, die das Attribut B annehmen kann
I(.)
Informationsgehalt
p(.)
Relative Häufigkeit
G(.)
Gain (Zuwachs, Gewinn)
304
Verzeichnis der Symbole
gini(.)
Gini-Index
GINI(.)
Gewinn (Gain) auf der Basis des Gini-Index
L[.](.)
Likelihood
P
Wahrscheinlichkeit
sim
Ähnlichkeitsparameter
ps(.)
p-s-Funktion
lift(.)
Lift-Funktion
Produkt
Verzeichnis der Abkürzungen ARM
Association rule mining
ART
Adaptive Resonanz Theorie
BI
Business Intelligence
CLARANS
Clustering Large Applications based on RANdomized Search
CRISP
Cross Industry Standard Process for Data Mining
DM
Data Mining
EIS
Executive Information Systems
EM
Erwartungsmaximierung
FIS
Frequent Itemset
FN
Falsch-negative Klassifikation
FP-Growth
Frequent Pattern Growth
FP
Falsch-positive Klassifikation
ID 3
Iterative Dichotomiser 3
JavaNNS
Java Neural Network Simulator
KDD
Knowledge Discovery in Databases
KNIME
Konstanz Information Miner
MDL
Minimum Description Length
MIS
Management Information Systems
MLP
Multilayer Perceptron
OCR
Optical Character Recognition
OLAP
Online Analytical Processing
PAM
Partitioning Around Medoids
RI
Rule interest, Interessantheit einer Regel
ROC
Receiver-Operating-Curve
SOM
Selbstorganisierende Karte
TDIDT
Top down induction of decision trees
306
Verzeichnis der Abkürzungen
TN
Richtig-negative Klassifikation
TP
Richtig-positive Klassifikation
WEKA
Waikato Environment for Knowledge Analysis
Literaturverzeichnis [AIS93]
Agrawal, Rakesh; Imielinski, Tomasz; Swami, Arun: Mining association rules between sets of items in large databases. In: Bunemann, P.; Jajodia, S. (Hrsg.): Proceedings of the ACM SIGMOD Conference on Management of Data, Washington D.C. New York: ACM Press, 1993, S. 207–216
[AS94]
Agrawal, Rakesh; Srikant, Ramakrishnan: Fast Algorithms for Mining Association Rules. In: Proceedings 20th Int. Conf. Very Large Data Bases, VLDB. Santiago, Chile: Morgan Kaufmann, 1994, S. 487–499
[BBHK10]
Berthold, Michael R.; Borgelt, Christian; Höppner, Frank; Klawonn, Frank: Guide to Intelligent Data Analysis – How to Intelligently Make Sense of Real Data. Berlin, Heidelberg: Springer, 2010
[Bez81]
Bezdek, James C.: Pattern Recognition with Fuzzy Objective Function Algorithms. New York: Plenum Press, 1981
[Blu07]
Blum, Norbert: Einführung in Formale Sprachen, Berechenbarkeit, Informations- und Lerntheorie. München: Oldenbourg, 2007
[Bra13]
Bramer, Max: Principles of Data Mining. 2. Auflage. London: Springer, 2013
[Cha13]
Chamoni, Peter: Data Mining. http://www.enzyklopaedie-der-wirtschaftsinformatik.de. In: Enzyklopädie der Wirtschaftsinformatik. Online-Ausgabe. München: Oldenbourg, 2013
[Chu14]
Chu, Wesley W. (Hrsg.): Data Mining and Knowledge Discovery for Big Data. Berlin, Heidelberg: Springer, 2014
[CSPK07]
Cios, Krzysztof J.; Swiniarski, Roman W.; Pedrycz, Witold; Kurgan, Lukasz A.: Data Mining: A Knowledge Discovery Approach. Springer, 2007 (New York, NY, USA)
[CST00]
Christianini, Nello; Shawe-Taylor, John: An Introduction to Support Vector Machines and other kernel-based learning methods. Cambridge University Press, 2000
[DLR77]
Dempster, Arthur P.; Laird, Nan M.; Rubin, Donald B.: Maximum Likelihood from Incomplete Data via the EM Algorithm. In: Journal of the Royal Statistical Society Series B 39 (1) (1977), S. 1–38
308
Literaturverzeichnis
[DMC]
Data Mining Cup. http://www.data-mining-cup.de, Abruf: 1.12.2015
[Dun73]
Dunn, J. C.: A fuzzy relative of the ISODATA process and its use in detecting compact well-separated clusters. In: Journal of Cybernetics Vol. 3 (1973), S. 32–57
[Eas]
Web-Seite der Firma Easy.Data.Mining. http://www.easydatamining.com/de/, Abruf: 1.12.2015
[EKSX96]
Ester, Martin; Kriegel, Hans-Peter; Sander, Jörg; Xu, Xiaowei: A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise. In: Proceedings of 2nd International Conference on Knowledge Discovery and Data Mining, AAAI Press, 1996, S. 226–231
[FPSS96]
Fayyad, Usama M.; Piatetsky-Shapiro, Gregory; Smyth, Padhraic: From Data Mining to Knowledge Discovery: An Overview. In: Fayyad, Usama M.; Piatetsky-Shapiro, Gregory; Smyth, Padhraic; Uthurusamy, Ramasamy (Hrsg.): Advances in Knowledge Discovery and Data Mining. Menlo Park, Cambridge, London: MIT Press, 1996, S. 1–34
[Fre79]
Frege, Gottlob: Begriffsschrift, eine der arithmetischen nachgebildete Formelsprache des reinen Denkens. Halle a/S: Verlag von Louis Nebert, 1879. – in: Ignacio Angelelli (Hrsg.): Begriffsschrift und andere Aufsätze, 6. Nachdruck der 2. Auflage von 1964, Olms-Verlag 2007
[Fri97]
Fritzke, Bernd: Some Competitive Learning Methods / Institut für Neuroinformatik, Ruhr-Universität Bochum. http://www.demogng.de/, Abruf: 1.12.2015. 1997. – Forschungsbericht
[Fri98]
Fritzke, Bernd: Vektorbasierte neuronale Netze. Aachen: Shaker, 1998
[FS07]
Feldman, Ronen; Sanger, James: The Text Mining Handbook – Advanced Approaches in Analyzing Unstructured Data. Cambridge University Press, 2007
[Gab10]
Gaber, Mohamed M.: Scientific Data Mining and Knowledge Discovery – Principles and Foundations. Berlin, Heidelberg: Springer, 2010
[Glu01]
Gluchowski, Peter: Business Intelligence: Konzepte, Technologien und Einsatzbereiche. In: HMD – Praxis der Wirtschaftsinformatik 222 (2001), S. 5–15
[Glu12]
Gluchowski, Peter: Data Warehouse. http://www.enzyklopaedie-der-wirtschaftsinformatik.de, Abruf: 1.12.2015. In: Enzyklopädie der Wirtschaftsinformatik. Online-Ausgabe. München: Oldenbourg, 2012
[Han98]
Hand, David J.: Consumer Credit and Statistics. In: Hand, David J.; Jacka, Saul D. (Hrsg.): Statistics in Finance. London: Hodder Arnold, 1998, S. 69–81
Literaturverzeichnis
309
[HKMW01] Hippner, Hajo; Küsters, Ulrich; Meyer, Matthias; Wilde, Klaus D. (Hrsg.): Handbuch Data Mining im Marketing: Knowledge Discovery in Marketing Databases. Braunschweig u.a.: Vieweg, 2001 [HKP12]
Han, Jiawei; Kamber, Micheline; Pei, Jian: Data Mining: Concepts and Techniques. 3. Auflage. Waltham: Morgan Kaufmann, 2012
[Hum14]
Hummeltenberg, Wilhelm: Business Intelligence. http://www.enzyklopaedie-der-wirtschaftsinformatik.de, Abruf: 1.12.2015. In: Enzyklopädie der Wirtschaftsinformatik. Online-Ausgabe. München: Oldenbourg, 2014
[JAV]
SNNS – Stuttgarter Neuronale Netze Simulator. http://www.ra.cs.uni-tuebingen.de/software/JavaNNS/, Abruf: 1.12.2015
[KBG+ 14]
Kurbel, Karl; Becker, Jörg; Gronau, Norbert; Sinz, Elmar; Suhl, Leena (Hrsg.): Enzyklopädie der Wirtschaftsinformatik – Online-Lexikon. 8. Auflage. München: Oldenbourg, 2014 http://www.enzyklopaedie-der-wirtschaftsinformatik.de
[KBM13]
Kemper, Hans-Georg; Baars, Henning; Mehanna, Walid: Business Intelligence. 3. Auflage. Vieweg + Teubner, 2013
[KMM91]
Kruse, Hilger; Mangold, Roland; Mechler, Bernhard: Programmierung neuronaler Netze: Eine Turbo Pascal Toolbox. Bonn, München u.a.: Addison-Wesley, 1991
[KNI]
KNIME – Konstanz Information Miner. http://www.knime.org, Abruf: 1.12.2015
[KR87]
Kaufman, Leonard; Rousseeuw, Peter J.: Clustering by Means of Medoids. 1987 (Reports of the Faculty of Mathematics and Informatics. Delft University of Technology)
[KR90]
Kaufman, Leonard; Rousseeuw, Peter J.: Finding groups in data: an introduction to cluster analysis. New York: John Wiley and Sons, 1990
[Lau85]
Laubsch, Joachim: Techniken der Wissensdarstellung. In: Habel, Christopher (Hrsg.): Repräsentation von Wissen und natürlichsprachliche Systeme. Berlin u.a.: Springer-Verlag, 1985 (Informatik-Fachberichte), S. 48–93
[LB01]
Linoff, Gordon S.; Berry, Michael J. A.: Mining the Web. New York: John Wiley & Sons, 2001
[LC12]
Lämmel, Uwe; Cleve, Jürgen: Künstliche Intelligenz. München: Hanser, 4. Auflage, 2012
310
Literaturverzeichnis
[Mac67]
MacQueen, James B.: Some Methods for Classification and Analysis of MultiVariate Observations. In: Le Cam, L.; Neyman, J. (Hrsg.): Proceedings of the 5th Berkeley Symposium on Mathematical Statistics and Probability Bd. 1, University of California Press, 1967, S. 281–297
[MN73]
Moore, James; Newell, Allen: How can Merlin understand? In: Gregg, Lee W. (Hrsg.): Knowledge and Cognition, Lawrence Earlbaum Hillsdale N.J., 1973, S. 201–252
[NH94]
Ng, Raymond T.; Han, Jiawei: Efficient and Effective Clustering Methods for Spatial Data Mining. In: Proceedings 20th Int. Conf. Very Large Data Bases, VLDB. Santiago, Chile: Morgan Kaufmann, 1994, S. 144–155
[PA14]
Peña-Ayala, Alejandro: Educational Data Mining – Applications and Trends. Berlin, Heidelberg: Springer, 2014
[Pet05]
Petersohn, Helge: Data Mining. München: Oldenbourg, 2005
[PF91]
Piateski, Gregory; Frawley, William: Knowledge Discovery in Databases. Cambridge, MA, USA: MIT Press, 1991
[PM10]
Poole, David; Mackworth, Alan: Artificial Intelligence. Oxford University Press, 2010
[PS91]
Piatetsky-Shapiro, Gregory: Discovery, analysis and presentation of strong rules. In: Piatetsky-Shapiro, Gregory; Frawley, William J. (Hrsg.): Knowledge Discovery in Databases. AAAI Press, 1991, S. 229–248
[Qui86]
Quinlan, Ross: Induction of Decision Trees. In: Machine Learning 1 (1986), S. 81–106
[Qui93]
Quinlan, Ross: C4.5: Programs for Machine Learning. Morgan Kaufmann, 1993
[RK89]
Ritter, Helge; Kohonen, Teuvo: Self-organizing semantic maps. Otaniemi, 1989 (Report / Helsinki University of Technology. Faculty of Information Technology. Laboratory of Computer and Information Science.)
[Rou87]
Rousseeuw, Peter: Silhouettes: a graphical aid to the interpretation and validation of cluster analysis. In: J. Comput. Appl. Math. 20 (1987), Nr. 1, S. 53–65
[Run00]
Runkler, Thomas A.: Information Mining. Vieweg, 2000
[Run10]
Runkler, Thomas A.: Data Mining. Vieweg, 2010
[RV06]
Romero, Cristobal; Ventura, Sebastian (Hrsg.): Data Mining in E-Learning. Southampton, Boston: WIT Press (UK), 2006
Literaturverzeichnis
311
[RVPB11]
Romero, Cristobal; Ventura, Sebastian; Pechenizkiy, Mykola; Baker, Ryan S. (Hrsg.): Handbook of Educational Data Mining. New York: Taylor and Francis, 2011
[SA95]
Srikant, Ramakrishnan; Agrawal, Rakesh: Mining Generalized Association Rules. In: Proceedings of the 21th International Conference on Very Large Data Bases. San Francisco, CA, USA: Morgan Kaufmann, 1995 (VLDB ’95), S. 407–419
[SA96]
Srikant, Ramakrishnan; Agrawal, Rakesh: Mining Quantitative Association Rules in Large Relational Tables. In: Jagadish, H. V.; Mumick, Inderpal S. (Hrsg.): Proceedings of the 1996 ACM SIGMOD International Conference on Management of Data, Montreal, Quebec, Canada, June 4-6, 1996, ACM Press, 1996, S. 1–12
[SPM+ 08]
Soares, Carlos; Peng, Yonghong; Meng, Jun; Washio, Takashi; Zhou, Zhi-Hua (Hrsg.): Applications of Data Mining in E-business and Finance. Amsterdam, Berlin, Oxford, Tokyo, Washington DC: IOS Press, 2008
[War63]
Ward, Joe H.: Hierarchical Grouping to Optimize an Objective Function. In: Journal of the American Statistical Association 58 (1963), S. 236–244
[WEK]
WEKA – Waikato Environment for Knowledge Analysis. http://www.cs.waikato.ac.nz/~ml/weka/index.html, Abruf: 1.12.2015
[WFH11]
Witten, Ian H.; Frank, Eibe; Hall, Mark A.: Data Mining. 3. Auflage. Morgan Kaufmann, 2011
[Yau11]
Yau, Nathan: Visualize this. Indianapolis: Wiley, 2011
[Zel97]
Zell, Andreas: Simulation Neuronaler Netze. München: Oldenbourg, 1997
Index Ablauf eines Data-Mining-Prozesses, 5 Abstandsmaß, siehe Distanz Adaptive Resonanz Theorie, 175 Agglomerative Clusterbildung, 59, 139, 158 Algorithmus, 158 Aggregation, 213, 223 Ähnlichkeit, 177 Ähnlichkeitsmaß, 43 Cosinus, 46 Aktivierungsfunktion, 49, 118 Allquantifizierung, 52 Anwendungsklassen, 57 A-Priori-Algorithmus, 181 Erzeugen der Regeln, 185 Generierung der Kandidaten, 183 Join, 183 Pruning, 183 A-Priori-Verfahren, 65 ARFF, 27 ART, 175 Arten des Data Mining, 39 Assoziationsanalyse, 63, 181 A-Priori-Algorithmus, 181 Frequent Pattern Growth, 191 Assoziationsregel, 72, 73 Bewertung, 230 fuzzy, 77 hierarchische, 76, 195 quantitative, 77, 196 temporale, 78, 198 unscharfe, 77 Ausgabefunktion, 50, 279 Ausreißer, 10, 202, 210 Average Linkage, 161 Average Sampling, 214 Backpropagation of Error, 120 Algorithmus, 124
mit Momentum, 125 QuickProp, 126 Resilient Propagation, 126 Backpropagation-Netz, 117 Balkendiagramm, 246 Bayessche Formel, 112 Beispielmenge, 55 Bewertung, 11, 229 Assoziationsregel, 230 Cluster, 57, 242 Klassifikation, 235, 236 F-Maß, 238 Präzision, 237 Recall, 237 Präzision, 237 Recall, 237 Binärcodierung, 42, 218 Binning, 210, 218 Blasendiagramm, 251 Bootstrapping, 242 Bubble chart, 251 Business Intelligence, 3 C 4.5, 107 Centroid, 79, 137, 141 CLARA, 154 CLARANS, 154, 155 Cluster, 57, 79, 137 Bewertung, 242 Cluster-Analyse, siehe Clusterbildung Clusterbildung, 57, 137 agglomerativ, 139, 158 dichtebasiert, 139, 163 divisiv, 139 Erwartungsmaximierung, 156 hierarchisch, 138 mit neuronalen Netzen, 140, 166 partitionierend, 137 Verfahren, 137
314 Complete Linkage, 161 Completeness, 232 CRISP, 6 Data Cleaning, 207 Data Mining, 1, 11, 38 Ablauf, 5 Arten, 39 Grundlagen, 37 Data Warehouse, 5, 13 Daten, 37 semistrukturierte, 38 strukturierte, 38 unstrukturierte, 38 Datenbank, 13 Datenglättung, 223 Datenintegration, 205 Datenkompression, 214 Datenreduktion, 212 numerische, 214 Datensäuberung, 207 Datenselektion, 5, 10, 205 Datentransformation, 5, 11, 204, 216 Datentyp, 39 metrisch, 40 nominal, 40 ordinal, 40 Datenverständnis, 255 Datenvorbereitung, 201, 204, 255, 263 Datenvorverarbeitung, 5, 10, 150, 204, 259 DBScan, 163 DemoGNG, 174, 175 Dendrogramm, 138 Dichtebasierte Clusterbildung, 59, 139, 163 Dimensionsreduktion, 204, 213 Diskretisierung, 219 Distanz, 44, 57 Euklidische, 44 gewichtet, 45 Hamming, 44 Manhattan, 44 Maximum, 44 Minkowski, 45 Tschebyscheff, 44 Divisive Clusterbildung, 139
Index Entropie, 99, 104 Entscheidungsbaum, 61, 71, 92, 96, 107, 109, 272 Auswahl eines Attributs, 94 C 4.5, 107 ID 3, 96 Entscheidungsbaumlernen, siehe Entscheidungsbaum Entscheidungstabelle, 69 Erfolgsrate, 236 Erwartungsmaximierung, 59, 156 Euklidische Distanz, 44 gewichtet, 45 Evaluation, 11 Existenzquantifizierung, 52 Expertensystem, 14 Fehlende Daten, 207 Fehlerkosten, 239 Fehlerrate, 95, 235, 236 F-Maß, 238 FP-Growth, 191 Frequent Itemset, 181 Frequent Pattern Growth, 65, 191 Fuzzy Assoziationsregel, 77 Fuzzy-c-Means, 59, 177 Fuzzy-Logik, 78 Gain, 100 Gain-Funktion, 233 Gaußverteilung, 156 Gewichtete euklidische Distanz, 45 Gewinner-Neuron, 168 Gini-Index, 106 Hamming-Distanz, 44 Hauptachsentransformation, 253 Hierarchische Assoziationsregel, 76, 195 Hierarchische Clusterbildung, 138 Histogramm, 248 Holdout, 240 ID 3, 96 Implizites Wissen, 81 Information, 38 Informationsgehalt, 99, 104 Inkonsistente Daten, 211
Index Instanzenbasierte Darstellung, 79 Instanzenbasiertes Lernen, 83 Instanzenmenge, 55, 62 Interdisziplinarität, 12 Data Warehouse, 13 Datenbank, 13 Expertensystem, 14 Maschinelles Lernen, 14 Statistik, 14 Visualisierung, 14 Interessantheit, 12, 230 Interessantheitsmaß, 74, 230, 231 Interpretation, 11 ISplit, 107 Item, 73 Itemset, 181 JavaNNS, 32, 277 KDD, 6 Klassifikation, 59, 83 Bewertung, 235, 236 Klassifikationsregel, 61, 72, 189 k-Means, 59, 80, 141 Algorithmus, 142, 147 k-Medoid, 59, 151 Algorithmus, 151 CLARANS, 155 PAM, 152 k-Nearest Neighbour, 61, 62, 83, 268 Algorithmus, 85 KNIME, 18 Knowledge Discovery in Databases, 6 Kohonen-Netz, 166 Lernalgorithmus, 169 Konfidenz, 64, 75, 185, 230, 231 Kostenmatrix, 239 Kreisdiagramm, 250 Kreuzvalidierung, 241 Künstliche Intelligenz, 14 Künstliches Neuron, 48, 51 Künstliches Neuronales Netz, 48 Leave one out, 242 Lernen überwacht, 55, 60, 83, 121, 229 unüberwacht, 55, 58, 137, 167
315 Lift, 235 Likelihood, 113 Lineare Regression, 62, 215 Lineare Separierbarkeit, 133 Liniendiagramm, 245 Logik, 52 Logische Formel, 52 Logische Regel, 54 Logistische Funktion, 49, 118 Manhattan-Distanz, 44 Maschinelles Lernen, 14 Maximum-Distanz, 44 Medoid, 79, 137, 151 Metrische Daten, 40 Minimum Description Length, 230 Minkowski-Distanz, 45 Multilayer Perceptron, 117, 275 Naive Bayes, 61, 111, 270 Negation, 52 Neuartigkeit, 12, 229 Neuron, 47, 48, 51 Neuronales Gas, 173 Neuronales Netz, 47, 59, 61, 62, 80, 140, 166, 275 Nominale Daten, 40 Normalisierung, 220 Normierung, 220 Numerische Datenreduktion, 214 Numerische Vorhersage, 61 Nützlichkeit, 12, 229 Occam’s razor, 230 Oder-Verknüpfung, 52 Ordinale Daten, 40 Overfitting, 108, 127, 276 PAM, 152 Partitionierende Clusterbildung, 137 Plastizitäts-Stabilitäts-Dilemma, 175 Präzision, 237 Propagierungsfunktion, 49 Pruning, 109, 183 p-s-Funktion, 234 Punktediagramm, 250 Quantitative Assoziationsregel, 77, 196
316 Recall, 237 Receiver-Operating-Curve, 237 Regel, 54, 71–73, 109 Regression, 210 Regressionsfunktion, 62 Scatter Matrix, 252 Schwellwert, 48, 75, 96, 279 Schwellwertfunktion, 49 Selbstorganisierende Karte, 166 Lernalgorithmus, 169 Sequenzanalyse, 78 Shepard’s method, 89 Silhouetten-Koeffizient, 243 Single Linkage, 160, 243 Skalierung, 204 SOM, 166 Statistik, 14 Stichprobe, 214 Stories of success, 15 Stratifikation, 241 Streudiagramm-Matrix, 252 Stützvektor, 132 Support, 64, 74, 181, 230, 231 Support Vector Machines, 61, 130 Tangens Hyperbolicus, 49, 50, 118 Taxonomie, 76 Temporale Assoziationsregel, 78, 198 Testmenge, 55, 240 Text Mining, 39, 65 Tortendiagramm, 250 Trainingsmenge, 55, 240 Tschebyscheff-Distanz, 44 Überwachtes Lernen, 55, 60, 83, 229 Und-Verknüpfung, 52 Unscharfe Assoziationsregel, 77 Unüberwachtes Lernen, 55, 58, 137 Validierungsmenge, 55 Validität, 12, 229 Verrauschte Daten, 209 Verständlichkeit, 12, 229 Visualisierung, 14, 244 Balkendiagramm, 246 Blasendiagramm, 251
Index Bubble chart, 251 Histogramm, 248 Kreisdiagramm, 250 Liniendiagramm, 245 Punktediagramm, 250 Scatter Matrix, 252 Streudiagramm-Matrix, 252 Tortendiagramm, 250 Vollständigkeit, 232 Vorwärtsgerichtetes Neuronales Netz, 49, 50, 61, 62, 117, 175 Wahrscheinlichkeit, 79, 111, 113, 209 Warenkorbanalyse, 64 Web Mining, 39, 66 Web Content Mining, 66 Web Log Mining, 66 Web Usage Mining, 66 WEKA, 27 Werkzeuge, 17 Wettbewerbslernen, 140, 173, 174 Windowing, 215 Wissen, 38 Wissensrepräsentation, 69 Zielfunktion, 257, 262, 268