Übung 4 - Web Mining
Multiklassen-Klassifikation mit Naives Bayes und compress
1. Daten besorgen und aufbereiten
- Wählen Sie einen beliebigen multiclass-Datensatz z.B. aus der unten angegebenen Liste aus. Sie können jedoch auch beliebige andere Dokumentsammlungen, selbsterstellt oder bereits existierende Text-Klassifikations-Sammlungen, mit mindestens fünf Klassen verwenden. Reduzieren Sie, falls es Ihnen nötig erscheint, die Anzahl der Klassen durch sinnvolles Zusammenlegen oder Auslassen von Kategorien.
- Teilen Sie wie bei der letzten Übung den Datensatz in einen Trainings- und einen Testdatensatz ein. Teilen Sie die Dokumente möglichst so auf, dass jede Klasse in etwa die gleiche Anzahl Trainings- wie Testbeispiele besitzt.
- Erstellen Sie für jedes Dokument den (nicht
normalisierten) TF-Vektor und speichern Sie diese sowie die
Labeinformation ab.
Definieren Sie die Termmenge als alle Terme, die in der Trainingsmenge vorkommen.
2. Simple Naive Bayes
Implementieren Sie einen einfachen Naive-Bayes-Klassifizierer. Verwenden Sie bei der Schätzung der Termwahrscheinlichkeiten die Laplace-Korrektur und die Logarithmierung zur Vermeidung von numerischen Schwierigkeiten.
Zwar läuft auf den Folien zur Bestimmung von p(D|c) das Produkt (bzw. die Summe) über die Sequenz der Tokens t von D, aber es ist hier sinvoller, es wie bei der Formel zu dem Full Multinomial Model über die Terme w im Vokabular laufen zu lassen, da Sie so die TF-Vektoren direkt anwenden können. Lassen Sie aber den Multinomialkoeffizienten, der beim Full Multinomial Model eingesetzt wird, weg.3. Compress Algorithmus
Implementieren Sie einen einfachen compress Algorithmus.Beachten Sie
dabei, daß der in den Folien angegebene Algorithmus davon ausgeht, daß
es ein Verzeichnis als ganzes komprimiert und nicht etwa, wie z.B. zip,
jede Datei einzeln. Sie können dies etwa durch Verwendung von tar/gzip
erreichen. Viele Programmiersprachen integrieren bereits zip-Funktionalitäten. Sie können aber auch jedes andere Kompressionsverfahren mit progressiver Kompression versuchen. Behalten Sie jedoch die Laufzeit für das Testen im Hinterkopf.
Beachten Sie auch, daß der compress Algorithmus keine Transformation in TF-Vektoren benötigt, aber stellen Sie auch hier sicher, daß in den Dateien keine Metadaten insbesondere Klasseninformationen enthalten sind.
4. Evaluation
- Wenden Sie den Naive Bayes auf die Testdaten an und geben Sie die Multiclass-Konfusionsmatrix an.
Interpretieren Sie die Konfusionmatrix. - Berechnen Sie anhand der Konfusionmatrix die Performance-Maße Accuracy, Precision und Recall unter Verwendung von jeweils Micro- und Macro-Averaging und stellen diese Werte tabellarisch dar.
- Wenden Sie den compress Algorithmus auf den Testdaten an und
berechnen Sie ebenfalls die in der vorherigen Aufgabe aufgezählten Maße,
jedoch ohne die Konfusionsmatrix anzugeben. Bewerten Sie beide
Algorithmen, welche sind ihre Stärken und Schwächen, welcher ist für
welche Anforderung geeigneter. Vergessen Sie dabei nicht die Laufzeit.
Hinweis: Sollte ihr Datensatz zu groß für compress sein, reduzieren Sie zufällig die Beispiele der Testmenge. Eine Laufzeit von bis zu einer Stunde sollte jedoch noch akzeptabel sein. - Wählen Sie aufgrund Ihrer Erfahrungen mit Naive Bayes und
compress einen der beiden Algorithmen aus und wenden Sie den in
Teilaufgabe 1 oder 3 gelernten Klassifizierer auf einen anderen
Datensatz ihrer Wahl an. D.h. trainieren Sie z.B. auf den 20 newsgroup
Datensatz, klassifizieren aber auf den WebKB-Daten.
Geben Sie nun zu jeder Kategorie aus dem Trainingsdatensatz eine passende Kategorie oder Kategorie-Liste aus dem Testdatensatz aus. Denken Sie sich dabei selbst ein Maß für die Übereinstimmung aus.
Wie sinnvoll schätzen Sie eine solche Inter-Domänen-Klassifizierung ein?
Mögliche Datensätze
- (mini) 20 newsgroups Datensatz:
Einige der Posting sind in mehreren Ordner unter verschiedenen
Namen vertreten. Das bedeutet, daß es Dokumente gleichen Inhalts
aber mit verschiedenen Labels gibt. Es bedeuted auch, dass die
Evaluation etwas zu pessimistisch ist, da ein Trainingsdokument
beim Testen erneut auftauchen kann, dann aber zwingend mit einen
anderen Label als im Training.
Die Dokumente enthalten einen Header inklusive der Label-Information. Diesen Header sollte man nicht in den Feature-Vektor einfließen lassen, da er Daten enthält, die man in der Praxis nicht zu Verfügung hätte. - WebKB-Datensatz
- telegraph-Datensatz: Der Datensatz enthält viele leere Datensätze. Bereinigen Sie zunächst die Dokumente. Auch indem Sie Links (Text zwischen eckigen Klammern) und nur den Text mit zur Share Überschrift verwenden. Im Kopf jedes Dokumentes stehen die hierarchischen Kategorien. Schauen Sie sich die Klassenstruktur zunächst an und wählen Sie nach Belieben aus.
- reuters-21578: Dieser Datensatz enthält etwa 100 Klassen, einige von ihnen kommen nur sehr selten vor. Ignorieren Sie Dokumente, die keinen oder mehr als einen =TOPICS=- Eintrag haben.
Hinweise
- Alle notwendigen Definitionen finden Sie im Foliensatz text classification.
- Aufgabe 1: Um die Aufteilung in Test- und Trainingsmenge ein wenig zu vereinfachen, können Sie die Gesamtheit der Dokumente durch eine zufällige Auswahl aufteilen. Zwar weichen dann die Größenverhältnisse von Training- zu Testmenge der einzelnen Klassen etwas von einander ab, aber bei 100 oder mehr Dokumenten pro Klasse sind größere Abweichungen sehr unwahrscheinlich.