Übung 4 - Web Mining
Multiklassen-Klassifikation mit Naives Bayes und Rocchio
Abgabe: bis Sonntag, den 17.6.2012
1. Daten besorgen und aufbereiten (1 P)
- 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 TF-Vektor mit
absoluten (für Naive Bayes) und relativen Häufigkeiten (für Rocchio) und
speichern Sie diese sowie die Labelinformation ab.
Definieren Sie die Termmenge als alle Terme, die in der Trainingsmenge vorkommen.
2. Simple Naive Bayes (1,5 P)
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. Rocchio Algorithmus (1,5 P)
Implementieren Sie den einfachen Rocchio Algorithmus. Verwenden Sie dafür die Formel in den Folien mit einer Iteration (i=1..1), alpha=0, beta=1/|R|, gamma=0,1/|I| und die normalisierten Vektoren. Sie finden eine ausführlichere Beschreibung des Algorithmus auch in Abschnitt 6.7 in Machine learning in automated text categorization (hier mit beta=1 und gamma=0,1). Führen Sie den Vergleich einer Test-Instanz zu den Klassenprototypen anhand der Kosinus-Similarität durch.
4. Evaluation (6 P)
- 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 Rocchio-Algorithmus auf den Testdaten an und berechnen Sie ebenfalls die in der vorherigen Aufgabe aufgezählten Maße und die Konfusionsmatrix. 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.
- Wählen Sie aufgrund Ihrer Erfahrungen mit Naive Bayes und
Rocchio einen der beiden Algorithmen aus und wenden Sie den in
Teilaufgabe 1 oder 3 gelernten Klassifizierer auf die in Übung 2
gecrawlten Dokumente an. D.h. trainieren Sie z.B. auf dem 20 newsgroup
Datensatz, klassifizieren aber auf den heruntergeladenen Seiten.
Betrachten Sie die 10 Seiten mit den konfidentesten Vorhersagen, d.h. mit der höchsten Wahrscheinlichkeit bei Naive Bayes bzw. der höchsten Kosinus-Similarität bei Rocchio, und zeigen Sie einige Beispiele auf.
Wie gut passen die Vorhersagen? Wie geeignet schätzen Sie dieses Vorgehen z.B. für Information Retrieval ein? - Angenommen, der gamma-parameter bei Rocchio ist auf 0 gesetzt und sie verwenden Feature-Vektoren mit absoluten Häufigkeiten. Vergleichen Sie das resultierende Modell mit dem von Naive Bayes. Was fällt Ihnen auf?
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 für Naive Bayes 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.
- Aufgabe 4.4: Falls Sie Übung 2 nicht bearbeitet haben, starten sie z.B. einfach wget mit
wget -nd -nc -r -l0 http://startseite.ihrer.wahl
und brechen ab, sobald Sie ausreichend viele HTML-Seiten heruntergeladen haben.