Übung 5 - Datenbanken

Werbung
Data Mining
Sommersemester 09 - Dr. Alexander Hinneburg
Übung 5: Schätzen mit SQL und Mischmodelle (Abgabe bis 13.5.2008, 8.00 Uhr)
Geben Sie die Lösungen als Text- oder PDF-Datei ab.
Aufgabe 5.1: Eindimensionales Gauß-Mischmodell Betrachten Sie das eindimensionale GaußMischmodell. Hier spielen komplizierte Vektor-Ableitungen keine Rolle, man kann aber
alle wesentliche Schritte wie beim mehrdimensionalen Modelle durchführen. Das eindimensionale Gauß-Mischmodell ist wie folgt definiert
K
x ∈ R, p(x) =
∑ πk N (x|µk , σk )
(1)
k=1
Die eindimensionale Gauß-Verteilung ist
1
1
2
N (x|µ, σ ) =
exp − 2 (x − µ)
2σ
(2πσ2 )1/2
2
(2)
a) Führen Sie wie in der Vorlesung auf den Folien Gauß-Mischmodell 1-2“ versteckte
”
Indikatorvariablen ein und entwickeln Sie die Gleichung für die Posteriorverteilung γ(zk ) für ein gegebenes x analog zu Gleichung (88) aus der Vorlesung.
b) Gegeben seien N = 5 Beobachtungen {x1 = 1, x2 = 3, x3 = 4, x4 = 6, x5 = 8}. Stellen
Sie die log-Likelihood-Gleichung für das eindimensionale Mischmodell auf. Berechnen Sie die log-Likelihood für folgende Parametereinstellungen des Modells
mit K = 2 Komponenten
1. µ1 = 5, σ1 = 1, µ2 = x5 = 8, σ2 = 1
2. µ1 = 5, σ1 = 1, µ2 = x5 = 8, σ2 = 0.1
3. µ1 = 5, σ1 = 1, µ2 = x5 = 8, σ2 = 0.01
Stellen Sie dann die log-Likelihood-Gleichung für eine einzelne eindimensionale Gauß-Verteilung mit µ = x5 = 8 bei den oben gegebenen Beobachtungen auf.
Berechnen Sie die log-Likelihood für
1. σ = 1
2. σ = 0.1
3. σ = 0.01
c) Berechnen Sie für das eindimensionale Gauß-Mischmodell analog wie in der Vorle-
sung1 die Aktualisierungsgleichungen für µk , σk und πk im M-Schritt. Leiten Sie
dafür die log-Likelihood-Gleichung jeweils nach µk , σk und πk ab, setzen Sie die
Ableitung Null und stellen Sie jeweils nach µk , σk und πk um. Beachten Sie, daß Sie
bei πk ebenfalls den in der Vorlesung gezeigten Lagrange-Multiplikator verwenden
müssen.
1 Siehe
Gleichungen (91), (92) und (94).
1
Aufgabe 5.2: Schätzen mit SQL Unter https://dbs.informatik.uni-halle.de/phpMyAdmin/
index.php können Sie mit phpMyAdmin auf eine MySQL-Datenbank zugreifen. Login und Passwort sind student und test. Wählen Sie nach dem Einloggen auf der linken Seite die Datenbank dbworld aus. Die Datenbank besteht aus den drei Tabellen
doc(docid,doc), term(termid,term) und term doc(termid,docid,tf). Das Attribut tf speichert, wie oft ein Wort in einem Dokument vorkommt. Im Hauptfenster können Sie im
Reiter SQL Befehle eingeben.
Die Datenbank enthält alle eMails, die von Januar bis zum 5. Mai 2009 über die dbworldMailing-Liste verschickt wurden. Die Titel und Absender der eMails sind nicht enthalten. Eine Liste der Mails bekommen Sie unter http://www.cs.wisc.edu/dbworld/
browse.html.
a) Geben Sie ein SQL-Statement an, um für das mehrdimensionale Bernoulli-Modell
für alle Terme aus dem Vokabular die entsprechenden Parameter µML nach Gleichung (49) zu schätzen.
Wählen Sie für jeden Term eine Beta-Verteilung als Prior. Alle Beta-Verteilungen
sollen die gleichen Hyperparameter a = 3 und b = 1 haben. Geben Sie ein SQL
Statement an, dass für alle Terme die entsprechenden Vorhersage-Wahrscheinlichkeite
nach Gleichung (57) berechnet.
b) Berechnen Sie die Vorhersage-Wahrscheinlichkeit für das Dokument mit docid=1000.
Diese Berechnung ist genauso wie in Aufgabe 4.1 z.B. für das Dokument d1 . Da
SQL keine Multiplikation als Aggregationsfunktion bietet, berechnen Sie zuerst
die logarithmierte Vorhersage-Wahrscheinlichkeit und exponetieren Sie diese dann
bei der Ergebnisausgabe. Nutzen Sie dabei die Eigenschaft
N
N
∏ xn = exp ∑ ln xn
n=1
(3)
n=1
Sie können SQL-Statements in der FROM-Klausel schachteln, um Zwischenergebnisse zu weiterzuverwenden. Die Syntax zu Joins und Outer-Joins finden Sie
unter http://dev.mysql.com/doc/refman/5.1/en/select.html. Funktionen
sind unter http://dev.mysql.com/doc/refman/5.1/en/functions.html beschrieben.
Aufgabe 5.3: K-Means mit SQL Entwickeln Sie Ideen um K-Means mit SQL zu implementieren. Als Beispiel zum Experimentieren sind die Old-Faithful-Daten in der Tabelle
OF(x,y) gespeichert. Was für Probleme gibt es beim Implementieren mit SQL?
2
Herunterladen