Die Probleme fangen an, wenn die Daten lückenhaft
sind,
d.h. wenn
für einzelne Merkmale der Zustand manchmal oder immer
unbeobachtet
geblieben ist. Fehlen nur in wenige Fällen
Beobachtungen kann man
u.U. nur mit dem vollständigen Teil der Daten arbeiten,
wobei man
natürlich die Information verliert die im
unvollständigen
Teil der Daten enthalten ist. Sind aber
einzelne Merkmale immer unbeobachtet oder fehlt in den
meisten
Fällen mind.
die Beobachtung eines Merkmals muss offensichtlich anders
verfahren
werden.
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hierfür hat sich der Expectation-Maximization-Algorithmus (EM), bzw. Baum-Welch-Algorithmus bewährt. Diese allgemein zur Schätzung von Wahrscheinlichkeitsverteilungen gebräuchliche Methode ist in BNs (jedenfalls solchen die über ein Junction-Tree-Verfahren rechnen) relativ leicht anzuwenden. Dazu werden die CPTs zunächst mit zufälligen Werten initialisiert (keine Verteilungen, die eine Unabhängigkeit der Merkmale darstellen - wie z.B. eine Gleichverteilung - benutzen!).
Nun noch kurz ein Absatz der eigentlich an den Anfang
gehört hätte, aber ich will ja niemanden
verschrecken. Es
wird nämlich praktisch immer mit stark vereinfachenden
Annahmen
gearbeitet:
Eine solche vereinfachende Grundannahme ist,
dass das Fehlen einer Beobachtung unabhängig vom
tatsächlichen
Zustand ist. Das ist keineswegs immer der Fall. So
könnte z.B. das
Fehlen des Wertes eines Seismographen daher rühren,
dass ein
besonders starkes Erdbeben das Gerät selbst
beschädigt hat,
somit der fehlende Wert auf ein starkes Beben hindeutet und
keineswegs
unabhängig vom Beobachtungswert (Erdbebenstärke)
ist. Eine
weitere häufige Annahme (in statischen BNs) ist
die der Unabhängigkeit der einzelnen Beobachtungen
(Zeilen im
Datensatz).
Auch dafür kann man schnell ein Gegenbeispiel finden:
z.B. sind in
Zeitreihen, jedenfalls solchen mit kurzen
Aufzeichnungsintervallen,
aufeinanderfolgende Beobachtungen nicht unabhängig (das
ist ja
z.T. gerade der Witz einer Zeitreihe). Daher vereinfachen
solche
Annahmen zwar das Leben, sind aber u.U. zu einfach
gedacht
und müssen ggf. revidiert werden.
P(X1,...,XZ)
kodieren (s.a. Kettenregel). Solche äquivalenten Netzstrukturen sind aber damit anhand von Daten nicht zu unterscheiden. Es geht also bei der Struktur-Suche letztlich "nur" darum die zugrundeliegende Wahrscheinlichkeitsverteilung möglichst gut abzubilden. Eines, wenn nicht das Hauptproblem aller Lernverfahren, die die Modellkomplexität (hier gegeben durch die Struktur) variieren ist die Frage der Vermeidung von Overfitting und Underfitting.
In realen Daten werden diese Bedingungen aber aufgrund zufälliger Schwankungen nie erfüllt; es scheinen alle Merkmale untereinander abhängig zu sein. Würde man also direkt mit dieser Definition arbeiten, um die Netzstruktur zu bestimmen, dann würde dies meist in einem (fast) vollständig verbundenen Graphen resultieren (und damit im extremsten Overfitting).
Dieses muss vermieden werden. Eine Möglichkeit dazu bietet das in [1] gezeigte Verfahren, dass nun dargestellt wird (die recht umfängliche Herleitung im Kasten unten kann zunächst auch übersprungen werden).
Die bedingten Wahrscheinlichkeiten des BN sind
letztlich die Parameter
mit denen die Wahrscheinlichkeitsverteilung abgebildet
wird. Man will diese Parameter so wählen, dass
genau diese Einstellung bei den gegebenen Daten die
wahrscheinlichste ist, d.h. man will P(θ1,...,θM|Data)
maximieren, wobei die θ's
("teta")
die
Parameter und Data die Daten sind. Nach der Bayes'schen
Formel gilt:
P(θ1,...,θM|Data) = |
P(Data) |
Wie sich (gleich) zeigen wird sind unter bestimmten
Annahmen P(θ1,...,θM|Data),
P(θ1,...,θM)
und P(Data|θ1,...,θM) direkt
bestimmbar. Alle Wahrscheinlichkeitsverteilungen
müssten
eigentlich
zusätzlich die Struktur im Gegeben-Teil
aufführen, da
die Netz-Struktur für die zu bestimmenden
Parameter verantwortlich
ist (aus Platzgründen wurde darauf aber
verzichtet). Durch
Umformung
kann P(Data) bzw. eben P(Data|Struktur)
bestimmt
werden. Eigentlich gesucht ist aber ein Maß
für P(Struktur|Data), um
die wahrscheinlichste Struktur bei gegebnen Daten zu
finden.
Wiederum nach Bayes gilt:
P(Struktur|Data) = |
P(Data) |
Da der Datensatz fest gegeben ist handelt es sich bei
1/P(Data)
lediglich um einen Normierungsfaktor, der
vernachlässigt werden
kann,
da die Größer-Kleiner-Beziehung davon
unbeeinträchtigt
bleibt. Die A-Priori-Wahrscheinlichkeit einer Struktur
ist schwierig zu
bestimmen. Es geht letzlich darum Modelle von
geringerer
Komplexität
(weniger Parameter) zu bevorzugen.
Ein Vorschlag lautet:
P(Struktur) = e | -B/2 log N |
mit B=Anzahl freier Parameter und N=Anzahl BeobachtungenEs ist aber häufig so, dass gute Ergebnisse erzielt werden, wenn diese Größe vernachlässigt wird.
P(Data|Struktur)
zu maximieren. Diese Art der Maximierung von P(S|Data) indem eigentlich P(Data|S) maximiert wird nennt man daher auch Maximum-Likelihood-Schätzung (wobei S nicht zwingend eine Struktur sein muss).
Nun aber der Reihe nach zu den einzelnen
Größen...
Für einen Parameter θ,
der die
Wahrscheinlichkeit beschreibt bei einem Münzwurf
"Kopf" zu werfen
gilt z.B.:
P(Data|θ) = θ | kopf | (1-θ) | zahl |
wobei kopf bzw. zahl die Anzahl der Würfe im Datensatz ist bei denen "Kopf" bzw. "Zahl" geworfen wurde.Dieses gilt so nur wenn die einzelnen Würfe (Beobachtungen) unabhängig voneinander sind, was im weiteren vorausgesetzt wird. Der Parameter θ selbst besitzt eine Verteilung. Angenommen man hat verschiedene Datensätze (von Münzwürfen mit derselben Münze) und schätzt das θ aus jedem Datensatz einzeln, dann werden die Schätzungen variieren.
P(θ) = P(θ|αk, αz) = norm θ | αk | (1-θ) | αz |
Wobei αk und αz ("alpha") die Hyperparameter der Beta-Verteilung sind, sie geben eine Art Vorwissen über die Verteilung an (entsprechend den Anzahlen kopf und zahl, die das aus den den Daten gewonnene Wissen darstellen). Die Kurzschreibweise P(θ) vernachlässigt diese Parameter.Der Normierungsfaktor norm ist gegeben durch:
norm = |
Γ(αk) Γ(αz) |
Die Γ(x)-Funktion ("gamma") ist die stetige Fortsetzung von (x-1)! ("x-1 Fakultät"), also auch für nicht ganzzahlige Werte definiert.Unter der Annahme dass es sich um eine konjugierte Verteilung handelt ergibt sich die Verteilung, wenn Daten in der Form neuer Beobachtungen hinzukommen zu:
P(θ|Data) = norm θ | αk+kopf-1 | (1-θ) | αz+zahl-1 |
mit
norm = |
Γ(αk+kopf) Γ(αz+zahl) |
Dabei ist:Eine Verteilung ist konjugiert, wenn die Verteilung nach dem Bekanntwerden neuer Daten weiterhin aus derselben Familie ist - es sich hier also nach wie vor um eine Beta-Verteilung handelt.
- α = αk + αz
- kopf, zahl die Anzahl der hinzugekommenen Beobachtungen in denen "Kopf" bzw. "Zahl" geworfen wurde
- N die Anzahl der hinzugekommenen Beobachtungen (=kopf+zahl)
Ein Maß für die Likelihood der
Struktur ergibt sich
nun, wie oben bereits angedeutet
aus:
|
Der interessante Punkt ist, dass sich alle Teile die
von θ
abhingen weggekürzt haben. Die Beta-Verteilung
gilt jedoch
nur für zweiwertige Merkmale, für Merkmale
mit mehr als zwei
Zuständen wird die Dirichlet-Verteilung
benutzt.
Dirichlet-Verteilung (konjugiert,
Vorwissen
und
Daten):
|
|
|
|
Es sind:Die Herleitung verläuft vollkommen äquivalent zu dem zuvor gezeigten Prinzip, sieht nur komplizierter aus, weswegen dieser Teil hier ausgelassen wird.
- θij = Parameter-Satz des i-ten Knoten Xi (θij = {θij1,...,θijri})
- ri = Anzahl der Ausprägungen von Xi
- Nijk = Beobachtungen in denen Xi im k-ten Zustand ist während sich die pa(Xi) in der j-ten Zustandskonfiguration befinden
- αijk = Vorwissen bezüglich der k-ten Ausprägung
- Nij = Nij1+...+Nijri
- αij = αij1+...+αijri
Es ergibt sich
schließlich
die Likelihood, die als Maß der
Struktur-Güte
benutzt
wird und die es dementsprechend zu maximieren gilt:
|
|
Γ(αij+Nij) |
|
Γ(αijk) |
Dabei geht:Besonders bemerkenswert an dieser Formel ist die Tatsache, dass sie separabel ist, d.h. für jeden Knoten Xi gegeben die Menge der Elternknoten pa(Xi) getrennt - unabhängig voneinander - berechnet werden kann. Verändert sich die Elternmenge eines Knotens, durch eine Änderung der Netzstruktur, so kann das neue P(Data|Struktur') einfach gebildet werden durch:Weiterhin ist:
- i über alle Knoten {X1,...,XZ},
- j über alle Zustandskonfigurationen der Elternknoten von Xi und
- k über die Zustände des Knotens Xi selbst.
- Nijk die Anzahl der Beobachtungen in denen Xi in Zustand k und pa(Xi) in der j-ten Zustandskonfiguration sind.
- αijk die das Vorwissen Beschreibende Größe für den Knoten Xi im Zustand k und pa(Xi) in der j-ten Zustandskonfiguration. Der Wert für αijk gibt praktisch das Gewicht des Vorwissens gemessen in Beobachtungsanzahlen an.
- Nij und αij sind marginale Werte, sie ergeben sich aus Nij = Nij1+...+Nijri bzw. αij = αij1+...+αijri
P(Data|Struktur') = |
P(Di|Struktur) |
P(Di|Struktur') |
Dabei ist:Es müssen also lediglich die einzelnen Faktoren für jeden Knoten aufgehoben werden. Danach kann ausgehend von einer initialen Netzstruktur jeweils die Änderung einer einzelnen Kante vorgenommen werden, die die stärkste Verbesserung bewirkt, bis keine (durch eine einzelne Änderung) Verbesserung mehr zu erreichen ist (Greedy-Search). Dabei ist normalerweise jeweils nur ein Knoten betroffen, ein Sonderfall ist jedoch das Umdrehen einer Kante, welches die Elternmenge von zwei Knoten ändert. Trotzdem sollte dieses in einem Schritt und nicht als zwei getrennte Schritte (Kante löschen, Kante Einfügen) modelliert werden, da kaum Anzunehmen ist, dass das Löschen einer solchen Kante im ersten Schritt eine Verbesserung bewirkt, was aber nötig wäre damit diese Aktion ausgeführt werden kann. Mit einem einem Greedy-Search-Verfahren, dass immer nur einen Schritt voraus plant kann natürlich i.a. nicht sichergestellt werden, dass das globale Optimum - die beste Netzstruktur gefunden wird.
- Struktur die alte und Struktur' die neue geänderte Netzstruktur,
- P(Di|Struktur) bzw. P(Di|Struktur'), der alte bzw. neue Einzelfaktor des Knotens Xi.
Problematisch ist aber insbesondere auch die Wahl des
Vorwissens (αijk's).
Anstatt
jedes αijk
einzeln anzugeben ist es sinnvoller ein Bayes'sches Netz
aufzustellen,
dass das Vorwissen (eines Experten) repräsentiert. Aus
der Home-Clique
eines Knotens Xi
im
Junction-Trees
kann P(Xi,pa(Xi))
gewonnen werden (u.U. durch Marginalisierung über die
übrigen
Merkmale der Clique). Ist die zu bewertende Netzstruktur
nicht dieselbe
wie jene, die das Vorwissen repräsentiert, so
differieren für
mind. einen Knoten die Elternmengen, d.h. im Junction-Tree
zum
"Vorwissen-BN"
existiert nicht unbedingt eine Home-Clique bezüglich
des zu
bewertenden
BN's. Z.B. eine Y-Propagation
liefert dennoch die gesuchte Tafel P(Xi,pa(Xi)).
Nun gilt:
αijk = P(Xi, pa(Xi)) USS
USS (User-Sample_Size) gibt ein Gewicht des Vorwissens in Beobachtungsanzahlen an. USS=1000 würde demnach bedeuten, dass das Vorwissen ein Gewicht hat als sei es aus einem Datensatz mit 1000 Beobachtungen gewonnen worden.Alternativ kann auch ein Vorwissen-Datensatz aus dem Vorwissen-BN mittels Daten-Sampling erzeugt werden.
Passen Vorwissen und Daten relativ gut zueinander liefert
das
Verfahren
recht gute Ergebnisse. Weichen Vorwissen und Daten stark
voneinander ab
liefert das Verfahren dagegen keine guten Ergebnisse. Es
zeigt sich
dementsprechend
auch, dass es keine gute Idee ist mangelndes Vorwissen wie
in der
Bayes'schen
Wahrscheinlichkeitsrechnung sonst üblich mittels Gleichverteilungen
bzw. Nicht-Informativen Verteilungen darzustellen.
Nicht
intuitiv
ist insbesondere die Tatsache, dass mit Vorwissen dass durch
ein kantenloses
Netz repräsentiert wird ein umso stärker
verbundener Graph
gelernt
wird je höher dieses Vorwissen gewichtet wird (USS).
Daraus entstand die Idee auch die αijk
aus den Daten zu bestimmen [5]. Die
Datensatzgröße
darf jedoch nicht überbewertet werden (Beobachtungen
dürfen
nicht
doppelt zählen). Daher wird ein Teilungsfaktor β
("beta") eingeführt:
Nijk = (1-β) Nijk* , αijk = β Nijk* , 0 < β < 1
Die Nijk* sind die ursprünglichen aus den Daten gewonnenen Werte (also das was vorher als Nijk bezeichnet wurde)Zusätzlich soll das Vorwissen aber den "konservativen" Part in der Berechnung übernehmen. Daher werden die αijk nicht (wie oben angedeutet) direkt aus den Nijk* erzeugt, sondern es werden erst die Parameter des noch unveränderten Netzes aus den Daten geschätzt und aus diesem BN, dann wie oben beschrieben die αijk erzeugt. Dabei ist dann USS = β N (N=Anzahl der Beobachtungen im Datensatz). Vorteil der Methode ist die Gewichtung über den Parameter β. Obwohl gegen kleine Veränderungen recht robust gilt i.a.: Je kleiner β desto mehr Kanten werden gefunden, da der "konservative" Part dann verschwindet. Werte um 0.1 bis 0.3 haben sich für die "β-Methode" bewährt.
Ähnlich gut funktioniert eine einfachere Methode, die in der Bewertungsformel alle αijk := 1 setzt (die αij ergeben sich entsprechend). Allerdings kann mit der "α=1-Methode" keine Gewichtung vorgenommen werden, die es erlauben würde die Kantenanzahl zu regulieren.
Beobachtungsumfang
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Es existieren auch noch andere
Bewertungs-Fomeln
wie die Bayesian Quality (BQ), das Bayesian
Information
Criterion
(BIC) oder die MDL-Quality [6]:
|
|
log |
(Nij + ri -1)! |
+ |
|
|
|
|
Nijk log |
Nij |
|
|
|
Nijk log |
Nij |
|
Wiederum geht:f(N) ist eine von der Datensatzgröße N abhängige Funktion. Mit f(N) = 1/2 log N ergibt sich die MDL-Quality als Spezialfall aus dem Bayesian Information Criterion (BIC)
- i über die Knoten {X1,...,XZ}
- j über die qi Elternzustandkombinationen
- k über die ri Zustände von Xi
Für alle Verfahren gilt, dass sie mit den Verfahren zum Umgang mit fehlenden Daten, wie dem EM-Algorithmus kombiniert werden müssen, wenn die Daten unvollständig sind.
Kosten-Matrix:
|
Ein BN liefert eine Vorabschätzung ob der Frostschutz
noch reicht
oder nicht. Diese Schätzung lautet:
P(Frostschutz=reicht|Evidenz)
=
0.99
P(Frostschutz=reicht nicht|Evidenz) = 0.01 |
Daraus ergeben sich die erwarteten
Kosten:
|
Bei gleichen Kosten für beide Fehlerfälle würde man sich aufgrund der BN-Schätzung für nicht nachfüllen entscheiden. So liegen aber trotz der relativ eindeutigen BN-Schätzung die Erwartungskosten für diese Entscheidung mehr als 10 mal höher als dafür (wahrscheinlich überflüssiger weise) neuen Frostschutz nachzufüllen. Man sieht, dass es die Wahrscheinlichkeitsangabe sehr leicht macht solche Kostenfunktionen zu berücksichtigen. Teilweise werden sie in der Form zusätzlicher Knoten direkt in das BN integriert.