Übung 4 - Web Mining

Mul­ti­k­lassen-Klas­si­fika­tion mit Naives Bayes und compress

1. Daten be­sor­gen und auf­bere­it­en

  1. Wählen Sie einen beliebigen multiclass-Datensatz z.B. aus der unten angegebenen Liste aus. Sie können je­doch auch be­liebige an­dere Doku­mentsamm­lun­gen, selb­ster­stellt oder bere­its ex­istierende Text-Klas­si­fika­tions-Samm­lun­gen, mit min­destens fünf Klassen ver­wen­den. Reduzieren Sie, falls es Ihnen nötig er­scheint, die An­zahl der Klassen durch sin­nvolles Zusam­men­le­gen oder Aus­lassen von Kategorien.
  2. Teilen Sie wie bei der let­zten Übung den Daten­satz in einen Train­ings- und einen Test­daten­satz ein. Teilen Sie die Doku­mente möglichst so auf, dass jede Klasse in etwa die gle­iche An­zahl Train­ings- wie Test­beispiele be­sitzt.
  3. Er­stellen Sie für jedes Doku­ment den (nicht nor­mal­isierten) TF-Vek­tor und spe­ich­ern Sie diese sowie die Labe­in­for­ma­tion ab.
    Definieren Sie die Ter­mmenge als alle Terme, die in der Train­ings­menge vorkom­men.

2. Sim­ple Naive Bayes

Im­ple­men­tieren Sie einen ein­fachen Naive-Bayes-Klassifizierer. Verwen­den Sie bei der Schätzung der Termwahrschein­lichkeit­en die Laplace-Ko­r­rek­tur und die Log­a­rith­mierung zur Ver­mei­dung von nu­merischen Schwierigkeit­en.

Zwar läuft auf den Folien zur Bes­tim­mung von p(D|c) das Pro­dukt (bzw. die Summe) über die Se­quenz der To­kens t von D, aber es ist hier sin­voller, es wie bei der Formel zu dem Full Multi­no­mi­al Model über die Terme w im Vok­ab­u­lar laufen zu lassen, da Sie so die TF-Vek­toren di­rekt an­wen­den können. Lassen Sie aber den Multi­no­mi­alko­ef­fizien­ten, der beim Full Multi­no­mi­al Model einge­set­zt 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. Eval­u­a­tion

  1. Wen­den Sie den Naive Bayes auf die Test­dat­en an und geben Sie die Multiclass-Konfusionsmatrix an.
    In­ter­pretieren Sie die Konfusionmatrix.
  2. Berech­nen Sie an­hand der Kon­fu­sion­ma­trix die Per­for­mance-Maße Ac­curacy, Pre­ci­sion und Re­call unter Ver­wen­dung von jeweils Mi­cro- und Macro-Av­er­ag­ing und stellen diese Werte tabel­lar­isch dar.
  3. 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.
  4. 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 news­groups Datensatz: Einige der Post­ing sind in mehreren Ord­ner unter ver­schiede­nen Namen vertreten. Das be­deutet, daß es Doku­mente gle­ichen In­halts aber mit ver­schiede­nen La­bels gibt. Es be­deut­ed auch, dass die Eval­u­a­tion etwas zu pes­simistisch ist, da ein Train­ings­doku­ment beim Testen erneut auf­tauchen kann, dann aber zwin­gend mit einen an­deren Label als im Train­ing.
    Die Doku­mente en­thal­ten einen Head­er inklu­sive der Label-Information. Diesen Head­er sollte man nicht in den Fea­ture-Vek­tor ein­fließen lassen, da er Daten enthält, die man in der Prax­is nicht zu Verfügung hätte.
  • We­bKB-Daten­satz
  • 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.

 

Hin­weise

  • Alle notwendi­gen Def­i­ni­tio­nen find­en Sie im Folien­satz text clas­si­fi­ca­tion.
  • Auf­gabe 1: Um die Aufteilung in Test- und Train­ings­menge ein wenig zu vere­in­fachen, können Sie die Gesamtheit der Doku­mente durch eine zufällige Auswahl aufteilen. Zwar we­ichen dann die Größen­verhält­nisse von Train­ing- zu Test­menge der einzel­nen Klassen etwas von einan­der ab, aber bei 100 oder mehr Doku­menten pro Klasse sind größere Ab­we­ichun­gen sehr un­wahrschein­lich.
A A A | Drucken | Impressum | Sitemap | Suche | Mobile Version
zum Seitenanfangzum Seitenanfang