Algorytmy stochastyczne
Wykład 13 – 14, Uczenie strukturalne sieci bayesowskich
Jarosław Piersa 2014-05-29
1 Uczenie strukturalne sieci bayesowskich
Problem
• mamy próbkę uczącą pochodzącą z sieci lub procesu, który chcemy modelować siecią,
• wiemy (na podstawie próbki) ile jest węzłów, jakie mają znaczenie i stany,
• nie wiemy jak węzły są połączone, ani tym bardziej nie znamy kształtu tabel,
• chcemy znaleźć kształt sieci, który będzie modelował dane (a następnie uzupełnić tabele).
• problem NP-Trudny (tabele mogą być wielkości wykładniczej), NP-zupełny pomijając wypełnianie tabel Wymagania dotyczące danych uczących:
• przykłady uczące E = [E1, ..., EP],
• i-ty przykład uczący: Ei= [ei1, ..., ein] — opis wszystkich stanów sieci bayesowskiej,
• wiemy, która wartość pochodzi z którego węzła,
• ei1 pochodzi z wierzchołka V1; ei2 pochodzi z V2 i tak dalej,
• kolejność próbek nie ma znaczenia,
• ma znaczenie częstość występowania próbek (niektóre mogą występować wielokrotnie, niektóre kombinacje wcale).
2 Niezależności strukturalne, d-separacja
• struktura połączeń zadaje niezależności pomiędzy zdarzeniami (węzłami) niezależnie od stanu tabel,
• przyp połączenie A → B, oznacza bezpośrednią zależność między A i B,
• zależność nie musi być pośrednia, może się propagować przez pośrednie wierzchołki np. A → C → B,
• zależność może się propagować przez wstecz ścieżki np. B → C → A (niezależność nie odróżnia przyczyny od skutku),
• zależność może się propagować przez wspólnego rodzica np. B ← C → A,
• (najtrudniejszy) zależność może się propagować przez wspólnego syna, jeżeli mamy wiedzę w nim lub innym wspólnym potomku A → C ← B i mamy wiedzę w C (V-struktura).
Szkielet strukturalny sieci bayesowskiej
• graf mieszany — powstaje z sieci poprzez zapomnienie orientacji krawędzi (krawędzie nieskierowane),
• ale nie zapomina orientacji krawędzi w V-strukturze (krawędzie skierowane),
• szkielet strukturalny zachowuje te same niezależności cho sieć, z której powstał.
Przykłady:
• A → B odpowiada A — B,
• B ← A → C odpowiada A — B — C,
• B → A ← C ← D odpowiada A → B ← C — D,
• UWAGA! Sieci:
A B
C odpowiada szkielet
A B
C (to nie jest V-struktura!).
3 Algorytm PC
Dane: Próbka ucząca E
Wynik: Szkielet strukturalny sieci bayesowskiej
1. Zacznij od pełnego grafu nieskierowanego na wszystkich węzłach sieci, 2. Dla i = 0 ... maksymalny rozmiar wykonaj
(a) Dla każdej pary węzłów połączonych krawędzią X — Y : i. Oznacz N (X) — sąsiedzi X, N (Y ) — sąsiedzi Y ,
ii. dla każdego i-elementowego podzbioru S ⊂ N (X) ∪ N (Y ) sprawdź czy X |= Y |S, tzn X jest niezależny od Y pod warunkiem S,
iii. jeżeli i = 0, to sprawdź zwykłą niezależność bez warunków,
iv. jeżeli tak, to przypisz SXY := S, usuń krawędź X—Y i przerwij bieżącą iterację, v. jeżeli nie znajdziesz, to nic nie rób,
3. dla każdej trójki X — Y — Z (i ¬(X — Z))
(a) jeżeli Z /∈ SXY, to zorientuj X → Z oraz Y → Z w V-strukturę (bo z testu powyżej: X i Y są niezależne bez warunkowania po Z),
(b) jeżeli Z ∈ SXY, to nie rób nic.
Uwaga! Nie każde dane uczące dają się modelować siecią bayesowską. Istnieją rozkłady (zestawy danych), które nie dają się modelować siecią bayesowską (bez ukrytych węzłów).
4 Uzupełnianie szkieletu strukturalnego do pełnej sieci
• Dany szkielet strukturalny sieci bayesowskiej,
• chcemy uzyskać strukturę sieci, Uzupełnainie
• Dla każdej V-struktury A → B ← C:
– dla każdej krawędzi wychodzącej z B — D, zorientuj B → D (inaczej powstałaby nowa V-struktura), – wymuś dalszą propagację orientacji D — E, na D → E,
• Cykle:
– Wyszukaj krawędzie nieskierowane dopełniające cykle skierowane, – Zorientuj je przeciwnie, aby nie domknąć cyklu,
• Powtarzaj 1. i 2. dopuki powstają nowe krawędzie,
• Jeżeli pozostały jakiekolwiek niezorientowane, to zorientuj jedną z nich losowo i uruchom 1,
• Jeżeli wszystkie krawędzie są zorientowane, to zakończ.
• UWAGA: Nie każdy szkielet daje się uzupełnić do pełnej sieci. Mając do wyboru stworzenie cyklu lub nowej V − struktury, tworzymy V-strukturę.
5 Testowanie niezależności
Dane: próbka zmiennych X, Y , Z (być może Z jest wielowymiarowa!), oraz poziom istotności 0 < α 1.
Wynik: Czy X i Y są niezależne pod warunkiem Z, tak aby szanse pomyłki nie były większe niż α (np. α = 0.025).
Oznaczenia:
• N — wielkość próbki
• c — liczba wartości (stanów) Y
• r — liczba wartości (stanów) X
• Oij, dla i = 1..r j = 1..c — ilość zaobserwowanych próbek, w których (X = xi, Y = yj)
• Eij, dla i = 1..r j = 1..c — ilość oczekiwanych próbek (wynikających z rozkładów brzegowych)
Eij = Pc
k=1Oik
N ·
Pr l=1Olj
N · N.
• Hipoteza zerowa: nie istnieje zależność między X a Y ,
• Hipoteza alternatywna: X i Y są zależne,
• Statystyka testowa:
T =
r
X
i=1 c
X
j=1
(Eij− Oij)2 Eij
,
• Statystyka testowa T zachowuje się jak rozkład χ2 z (r − 1)(c − 1) punktami swobody,
• Obliczamy obszar krytyczny:
K = (F1−α((r − 1)(c − 1)), +∞),
gdzie F1−α(k) jest kwantylem rzędu 1 − α rozkładu χ2z k punktami swobody (odczytujemy z tabeli),
• Jeżeli T ∈ K, to odrzucamy Hipotezę zerową,
• Jeżeli T /∈ K, to nie mamy podstaw do jej odrzucenia.
Alternatywnie:
• Obliczamy:
p-value := 1 − F(r−1)(c−1)(T ),
wartość dystrybuanty rozkładu w punkcie T (odczytujemy z tabeli), ang. p-value,
• Jeżeli zachodzi p-value ≤ α, to odrzucamy hipotezę zerową i przyjmujemy istnienie zależności między X i Y ,
• Jeżeli zachodzi p-value > α, to nie mamy podstaw do odrzucenia H0,
• Uwaga! Jeżeli p-value > α, to nie oznacza to automatycznie niezależności, zmienne mogą być zależne w inny sposób, którego jednak test nie wychwycił.
Odnośniki:
• Teoriahttp://math.hws.edu/javamath/ryan/ChiSquare.html(uwaga! zawiera applety javowskie)
• Teoriahttp://en.wikipedia.org/wiki/Pearson%27s_chi-square_test
• Tablicehttp://people.richland.edu/james/lecture/m170/tbl-chi.html
• Tablicehttp://www.ma.utexas.edu/users/davis/375/popecol/tables/chisq.html
• Tablicehttp://pl.wikisource.org/wiki/Tablica_rozk%C5%82adu_chi-kwadrat
Przykład
Mamy próbki:
X = 1 X = 2 razem
Y = 1 a b a + b
Y = 2 c d c + d
razem a + c b + d Mamy:
• razem N próbek N := a + b + c + d
• Szacujemy prawdopodobieństwa brzegowe (pojedynczych kategorii):
– ˆP(X = 1) :=a+b+c+da+c , – ˆP(X = 2) :=a+b+c+db+d , – ˆP(Y = 1) := a+b+c+da+b , – ˆP(Y = 2) := a+b+c+dc+d ,
• Jeżeli X i Y miałyby być niezależne, to oczekiwalibyśmy:
– P(X = 1 ∧ Y = 1) = P(X = 1)P(Y = 1) = a+b+c+da+c ·a+b+c+da+b , – (...) podobnie dla pozostałych stanów,
• I oczekiwanej liczby obserwacji:
– E1,1= P(X = 1 ∧ Y = 1) · N = a+b+c+da+c ·a+b+c+da+b · (a + b + c + d) = (a+c)(a+b)a+b+c+d , – (...) powtarzamy dla pozostałych (X = 1, Y = 2), (X = 2, Y = 1), (X = 2, Y = 2),
• Zaobsetwowane przypadki:
– O11= a – O12= c – O21= b – O22= d
• Zatem wartość statystyki testowej :
T := (E11− O11)2 E11
+(E12− O12)2 E12
+(E21− O21)2 E21
+(E22− O22)2 E22
,
• liczba stopni swobody:
df := (r − 1) · (c − 1) = 1
• ustalmy α = 0.05 (na 100 różnych próbek danych z rozkładów faktycznie niezależnych przynajmniej 95% przejdzie test niezależności):
• odczytujemy z tabeli rozkładu
Fdf =1(1 − α) = F(df = 1, p-val = 0.05) ' 3.841,
• jeżeli T > 3.841, to X i Y są zależne, w przeciwnym przypadku nie mamy podstaw do odrzucenia hipotezy o niezależ- ności.
6 Dostosowanie szkieletu do danych, funkcja oceny szkieletu strukturalnego
Pomysł: Chcemy określić funkcję oceny struktury sieci bayesowskiej „Jak dobrze sieć pasuje do danych”:
f : Dane × Grafy → R.
Taką funkcję można wykorzystać w algorytmach optymalizacyjnych: genetycznych, symulowane wyżarzanie, błądzenia loso- wego.
• Ogólna koncepcja:
P(Dane|Graph) =
n
Y
i=1 qi
Y
j=1
(ri− 1)!
(Nij− ri− 1)!
ri
Y
k=1
Nijk!, gdzie:
• n — liczba wierzchołków w sieci,
• ri — ilość stanów węzła Xi, dla i = 1, .., n,
• qi — ilość wszystkich konfiguracji stanów rodziców Xi (znaczy iloczyn po ilości stanów rodziców Xi), dla zgodności oznaczań jeżeli Xi nie ma rodzica przyjmujemy qi= 1,
• Nijk — ilość danych w próbce, gdzie Xi ma stan k-ty, a rodzice Xi mają stan j-ty (są w j-tej kombinacji stanów),
• Nij — ilość danych w próbce, w których rodzice Xi są w j-tej konfiguracji stanów (stan Xi — dowolny),
• Uwaga! Dla stabilności obliczamy logarytm z powyższej funkcji (iloczyny zamieniają się na sumy logarytmów),
• Do funkcji dodajemy karę za wielkość tablic prawdopodobieństw:
penalty(Graph) = c ·
n
X
i=1
qi(ri− 1).
• (dla uproszczenia oznaczeń) zdefiniujmy:
g(i, pii) =
qi
Y
j=1
(ri− 1)!
(Nij− ri− 1)!
ri
Y
k=1
Nijk!
tzn. wartość jw, ale ograniczona tylko do jednego wierzchołka i jego rodziców.
6.1 Algorytm K2
• na wejściu wierzchołki są posortowane, wiemy jaki wierzchołek musi być przed jakim, algorytm nie stworzy strzałki od wierzchołka późniejszego do wcześniejszego,
• limit — ograniczenie na maksymalną liczbę rodziców.
1. for i = 1..n
(a) przypisz wierzchołkowi i-temu brak rodziców: πi:= ∅ (b) pold:= g(i, πi)
(c) f laga := true
(d) while f laga i |πi| < limit
i. Z := węzeł, który jest przed Xi oraz maksymalizuje g(i, πi∪ {Z}) ii. pnew:= g(i, πi∪ {Z})
iii. if (pnew> pold),
• pnew:= pold
• πi:= πi∪ {Z}
else
• f laga = f alse
2. zwróć Xi i odpowiadających rodziców πi, dla i = 1..n
6.2 Inne metody
• poszukiwanie struktury sieci / szkieletu strukturalnego jako problem optymalizacyjny
• algorytmy genetyczne i ewolucyjne,
• symulowane wyżarzanie,
• błądzenia losowe, MCMC,
Zmiany grafu (szkieletu strukturalnego)
• dodaj krawędź A—B do grafu,
• usuń krawędź A—B z grafu,
• zorientuj A—B—C w V strukturę A → B ← C,
• usuń V-strukturę A → B ← C zamień na A—B—C (uwaga A → B może być częścią innej V-struktury A → B ← D),
Literatura
[1] G. Cooper, E. Herskovits, A Bayesian Method for Induction of Probailistic Networks from Data, Machoine Learning, 9, pp. 302–347, 1992.
[2] F. Jensen, T. Nielsen, Bayesian Networks and Decision Graphs, Springer 2007
[3] R. Neapolitan, Learning bayesian networks, Pearspon Prentice Hall, Upper Saddle River, New Jersey 2004.