Projekt Maschinelles Lernen und Data Mining
Last changed: $Date: 2005-02-10 12:26:30 $ (UTC)
Hier finden Sie eine Zusammenfassung der Resultate des Projekts.
Auf dieser Seite finden Sie die Problemstellungen für den Angewandten Teil der Übungen zur Vorlesung Maschinelles Lernen und Data Mining. Das Ziel dieser Aufgaben ist es, Ihnen zu ermöglichen praktische Erfahrungen mit einem Data Mining Werkzeug zu sammeln, und dabei Kenntnisse zu erwerben, die letztendlich auch für die Klausur relevant sein werden. Das Arbeiten mit Weka ist Prüfungsstoff.
Beachten Sie, daß es oft keine eindeutigen Lösungen der Aufgaben gibt. Was zählt ist die praktische Erprobung der Verfahren, die Antworten können sich abängig von den eingesetzten Verfahren bzw. abhängig von den Datenmengen unterscheiden.
Es wird erwartet, daß Sie die Aufgaben selbständig bzw. in kleinen Gruppen lösen, und die gefundenen Lösungen abgeben. Wir werden die Lösungen in der letzten Übungsstunde kurz durchbesprechen, aber nicht allzu sehr ins Detail gehen (würde die Zeit auch nicht erlauben). Sie können jedoch natürlich Probleme mit der Lösung in den laufenden Übungsstunden ansprechen.
Sie finden die Homepage der Weka Machine Learning Library unter http://www.cs.waikato.ac.nz/ml/weka/. Dort können Sie sich die Java-Software, einige Kurzanleitungen, sowie Beispieldatenbanken herunterladen. Wir empfehlen, daß Sie (wenn nicht anders angegeben) die Experimente mit dem Explorer GUI (weka.gui.explorer.Explorer) durchführen, Sie können sie aber auch von der Command-line oder einem anderen GUI (weka.gui.GUIChooser) durchführen.
Als Lösung einer Aufgabe wird erwartet, daß Sie die wesentlichen Resultate (und die Schritte zu Ihrer Lösung, d.h. z.B. die aufgerufenen Routinen, die verwendeten Parameter, etc.) schriftlich zusammenfassen bzw. ggf. Grafiken zur Illustration verwenden. Ein Aneinanderhängen der Outputs von Weka ist nicht zielführend. Wir werden uns alle erhaltenen Lösungen ansehen, eine direkte Benotung der Abgaben findet jedoch nicht statt.
Abgabe per E-mail bis spätestens 4. Februar 2005 an siegler@rbg.informatik.tu-darmstadt.de.
Wir hoffen, Sie haben Spaß an der Durchführung dieser Aufgaben.
Aufgaben
- Auswahl der Daten
- Evaluierung
- Vergleich von Algorithmen
- Noise & Pruning
- Regel-Lernen
- Entdecken von Assoziationsregeln
- Diskretisierung
- Ensemble-Lernen
Auswahl der Daten
Mit der Installation von Weka kommen einige Beispieldatensätze, auf SourceForge gibt es ein jar-File mit vielen weiteren. Eine kurze Beschreibung der Daten befindet sich oft als Kommentar in den ersten Zeilen des arff-Files. Wählen Sie zur Durchführung der weiteren Aufgaben 5 Datensets aus. Versuchen Sie, eine möglichst bunte Mischung herzustellen, in Bezug auf Anzahl der Beispiele, Anzahl der symbolischen Attribute, Anzahl der numerischen Attribute, Anzahl der Klassenwerte, etc.Evaluierung
Testen Sie den Entscheidungsbaumlerner J48, eine Implementation von C4.5, an Ihren Datensets.
- Benutzen Sie die gesamten Daten als Trainingsmenge und bestimmen Sie die Genauigkeit (Prozentsatz der korrekt klassifizierten Instanzen) auf dem Trainings-Set.
- Schätzen Sie die Genauigkeit mittels 2-fold, 5-fold, 10-fold und 20-fold-Cross-Validation.
- Wiederholen Sie die 10-fache Cross-Validation 5 mal, mit jeweils einem anderen Seed-Parameter (was zu einer anderen Aufteilung der Daten führt). Hier ist nicht der Seed-Parameter von J48, sondern der für die Cross-Validation gemeint.
- Bestimmen Sie den Fehler mittels Leave-one-out Cross-Validation
In der Folge wird, so nicht anders angegeben, mit "Genauigkeit" immer die mit 10-facher Cross-Validation geschätzte Genauigkeit betrachtet.
Vergleich von Algorithmen
Verwenden Sie das Experimenter GUI um eine Testreihe mit (mindestens) fünf verschiedenen Algorithmen auf (mindestens) Ihren fünf Datensets durchzuführen. Gute Kandidaten wären neben den oben erwähnten Algorithmen die Implementationen NaiveBayes, NeuralNetwork und SMO, aber Sie können auch andere wählen. Sie können auch die Parameter der Algorithmen variieren.
Läßt sich sagen, welcher Algorithmus der beste ist? Gibt es signifikante Unterschiede zwischen den Algorithmen?
Noise und Pruning
Verwenden Sie das Datenset, das in Aufgabe 2 die größte Genauigkeit auf dem Trainings-Set erzielt hat.
Stören Sie die Klasseninformation in diesem Datenset durch Hinzufügen von verschiedenen Levels von Noise (z.B., 5%, 10%, 25%, 50%, 75%, 100%; weka.filters.unsupervised.attribute.AddNoise). Beachten Sie: mit 100% Noise sind hier nahezu zufällig verteilte Attributwerte gemeint.
Der Parameter -P (percent) bestimmt die Anzahl der Beispiele, deren Attributwert verändert wird. Eine Angabe von 100% führt dazu, dass jedes Beispiel einen anderen Attributwert erhält. Insbesondere werden bei einem binären Attribut dadurch nur die Bezeichnungen vertauscht, auf das Lernergebnis hat die Transformation jedoch keine Auswirkung.
Bei einem binären Attribut erreichen Sie daher möglichst zufällige Daten durch die Angabe 50% für -P. Bei mehr als zwei Attributwerten tritt dieses Phänomen nicht mehr auf. Hier können Sie -P 100% als maximale Störung annehmen.
Beobachten Sie die Genauigkeit und Größe der gelernten Bäume auf dem Original bzw. den gestörten Datensets für J48
- mit den Default-Parametern
- ohne Pruning (-U (unpruned) und -M (minNumObj) 1)
- Experimentieren Sie ein wenig mit den Parametern -C (confidenceFactor) und -M und versuchen Sie, die Kombination zu finden, die die höchste Genauigkeit liefert. Führen Sie das für 3 Datensets durch: einmal ohne Noise, einmal mit moderatem Noise Level, einmal mit hohem Noise Level.
Regel-Lernen
In Weka finden Sie JRip, eine Nachimplementierung des bekanntesten Regellerners Ripper.
Vergleichen Sie die Genauigkeit und die Größe (Anzahl der Regeln, Anzahl der Bedingungen) der von JRip und J48 gelernten Konzepte auf Ihren fünf Datensets.
Entdecken von Assoziationsregeln
Das Datenset adult enthält Daten von 48842 US Bürgern über Geschlecht, Ausbildung, Familienstand, Beruf, Einkommen (class Variable), etc. Versuchen Sie, mit dem Apriori-Algorithmus aus Weka in diesem Datenset interessante Regeln zu finden. Sie können dabei sowohl die Optionen von Weka ausprobieren (z.B. -T (metricType), das Maß, nach dem die Regeln sortiert werden) als auch das Datenset verändern (z.B. durch Entfernen einzelner Attribute). Beachten Sie, daß in der Version zum Download zwei numerische Attribute enthalten sind, die Sie diskretisieren oder einfach entfernen können. Falls die Laufzeiten zu lange werden (mehrere Minuten), können Sie auch auf einer Teilmenge der Daten arbeiten.
Diskretisierung
Wählen Sie unter Ihren Datensets dasjenige aus, das die meisten numerischen Attribute enthält. Erstellen Sie eine diskretisierte Version (weka.filters.supervised.attribute.Discretize).
Schätzen Sie die Genauigkeit von J48 mittels Cross-validation auf den ursprünglichen Daten und auf den diskretisierten Daten ab.
Der Meta-Classifier FilteredClassifier erlaubt, eine Kombination einer Pre-processing Methode und eines Classifiers zu einem neuen Classifier zu machen. Erzeugen Sie die Kombination Discretize und J48 und schätzen Sie deren Genauigkeit auf den ursprünglichen Daten ab.
Wie interpretieren Sie den Vergleich der Genauigkeiten und der Größe der gelernten Bäume dieser drei Experimente?
Ensemble-Lernen
Vergleichen Sie die Genauigkeit von J48, Bagging mit J48, AdaBoost mit J48 und RandomForest auf ihren fünf Datensets. Erhöhen Sie die Anzahl der Iterationen bei den drei Ensemble-Verfahren und beobachten Sie die Entwicklung der erzielten Genauigkeiten.
Wettbewerb
Auf der Vorlesungshomepage steht ein File bereit. Versuchen Sie, eine möglichst gute Genauigkeit auf diesen Daten zu erzielen. Sie können jedes beliebige Verfahren, bzw. jede Kombination von Verfahren (inkl. Pre-Processing) verwenden.
Geben Sie bei der Abgabe genau an, welche Methode (inkl. aller Vorverarbeitungsschritte bzw. Parameter-Settings) Sie für die beste halten. Geben Sie auch eine Abschätzung der erzielbaren Genauigkeit an.
Wir werden in der letzten Übungsstunde die eingereichten Lösungen vergleichen und den "Sieger" ermitteln.