Wstęp do sieci bayesowskich — Lista 6 — Wprowadzenie do Tetrada
Transkrypt
Wstęp do sieci bayesowskich — Lista 6 — Wprowadzenie do Tetrada
Wstęp do sieci bayesowskich — Lista 6 — Wprowadzenie do Tetrada Piersa Jarosław 2010-04-19 1 Tetrad IV Pakiet TetradIV można pobrać ze strony http://www.phil.cmu.edu/projects/tetrad. Tamże znajduje się manual w formacie pdf. Oprogramowanie objęte jest licencją GNU/GPL. Tetrad jest zainstalowany na serwerze Aleks na katalogu /opt/tetrad/goTetrad.sh. Można również zainstalować lokalnie. Do uruchomienia wymagane jest środowisko Javy (wskazana wersja Suna, na OpenJDK nie wszystko działa). W przypadku będów w działaniu (dotyczy przede wszystkim przecinków dziesiętnych) należy zmienić ustawienia regionalne na angielskie i zrestatrować aplikację. Na Windowsach: Start → Ustawienia → Panel Sterowania → Ustawienia Regionalne. Na Linuxie: wybór ustawień jęzukowych na poziomie logowania. Można również zmienić na poziomie terminalu env LANG=en US. W wypadku braku Sunowskiej JRE na Linuxie: • pobrać ze strony http://www.java.com/en/download/index.jsp. Zalecane jest archiwum samorozpakowujące. RPM wymaga uprawnień roota. • dodać prawo do uruchomienia pliku chmod +x jre-6u20-linux-i586.bin. • rozpakować ./jre-6u20-linux-i586.bin. • uruchomić Tetrad lokalną wersją jre ./jre1.6.0 20/bin/javaws ./Desktop/tetrad-4.3.10-0.jnlp. Filozofia działania pakietu nieco różni się od Netici czy Hugina. Przypomina budowanie z klocków. W zależności od konfiguracji i połączeń można uzyskać inne efekty. Nie wszystkie połączenia są dopuszczalne, program zazwyczaj informuje o podaniu błędnych połączeń. Rodzaje klocków • Graph — pozwala na wprowadzenie lub wygenerowanie losowe grafu. Sam węzeł jest ogólny i nie jest jeszcze gotową siecią bayesowską ani gaussowską. • Graph Manipulation — operacja na grafie: zamiana grafu na szkielet strukturalny, uzupełnienie szkieletu do pełnej sieci, blanket Markowa; rodzicem jest Graph • Comparasion — porównanie grafów lub szkieletu strukturalnego i grafu (rodzice Graph + Graph, Graph + Search) • Parametric Model — przyjmując jako wejście graf pozwala ustalić jakie będzie przeznaczenie grafu (np. sieć bayesowska pod warunkiem, że graf jest skierowany i acykliczny). W takiej sytuacji dodaje szereg parametrów: ilość i nazwy stanów dla każdego węzła i tabele prawdopodobieństw warunkowych. Uwaga! Wymiary tablic są znane i przechowywane w PM ale wpisy w tablicach już nie! • Instantiated Model — pozwala na przypisanie konkretnych parametrów z PM (np. tabel prawdopodobieństw dla sieci bayesowskich, średnich i wariancji dla sieci gaussowskich). • Data — pozwala wczytać dane z zewnętrznego pliku (bez rodziców) lub wysymulować z sieci (rodzicem będzie IM). 1 • Data Manipulation — przekształca dane (data) — operacje arytmeryczne, dyskretyzowanie i uciąglanie danych, uzupełnianie braków, zmiana liczności etc. • Estimator — estymacja nieznanych parametrów sieci (np. tabel prawdopodobieństw warunkowych, algorytmy uczenia przy znanej architekturze itp), wymaga Data lub Data Manipulation. • Updater — wnioskowanie i możliwość ustalenia wiedzy w sieci, wyświetla rozkłady brzegowe dla węzłów bez wiedzy i po jej wprowadzeniu, Wymaga IM lub Estimator jako rodzica. • Classify — porównanie czy dane odpowiadają danej sieci bayesowskiej (Data + IM). • Knowledge — dodatkowa wiedza o strunkturze grafu jaką możemy wprowadzić przed uruchomieniem algorytmu szukania struktury. • Search — szeroka klasa algorytmów wyszukujących w tym również algorytmy konstrukcyjne dla sieci na podstawie danych (m. in. algorytm PC) 2 Zadania Zadanie 1 Zbuduj dowolną sieć baysowską (można wykorzystać sieci z wcześniejszych list) i wygeneruj wyniki działania (Graph → PM → IM → Data). Dodaj do sieci Updater ← IM. Jak wygląda wnoskowanie w Tetradzie? Zadanie 2 Plik z danymi z zadania 1 (lub z innymi danymi np. od osoby siedzącej obok) wykorzystaj do uczenia sieci przy znanej architekturze. Dane wczytywane z pliku w węźle Data. Struktura grafu i ilość stanów powinny być określone w węzłach Graph i PM. Węzeł Estimator przyjmuje jako rodziców PM i Data i zwraca IM. (Graph → PM → Estimator ← Data) Porównaj uzyskane tabele prawdopodobieństw warunkowych z oryginalnymi. Zadanie 3 Zbuduj sieć bayesowską (Graph + PM + IM) — dowolną, może być losowa. Wygeneruj dane z tej sieci do węzła Data1. Wczytaj dane wygenerowane przez inną sieć bayesowską do innego węzła Data2. Dodaj węzeł porównujący sieć i uzyskane dane (Graph → PM → IM → Classify1 ← Data1) oraz jeszcze jeden porównujący dane pochodzące z innej sieci (Graph → PM → IM → Classify2 ← Data2). Porównaj wyniki. Zadanie 4 Z wyników uzyskanych w zadaniu 1 (lub dowolnym innym) odtwórz sieć algorytmem PC (Data → Search). Porównaj z siecią wejściową oraz z wynikami uzyskanymi z innych pakietów. Zadanie 5 Uruchom algorytm PC dla danych z zadania 1 listy 5. Uwaga: ze względu na stabilność uczenia ilość przykładów należy przemnożyć przez przynajmniej 10. • (ABC) = (ttt) × 3, (tnt) × 3, (ntt), (nnn) × 3, (tnn) × 9, (ttn) × 3, (nnt), (ntn) • (ABC) = (tnt), (ttt), (nnt), (ttt), (nnn), (ttn), (nnn)(ttn) • (ABC) = (tnt) × 9, (ttn) × 2, (tnn) × 1, (nnt) × 2, (ntn) × 4, (nnn) × 2 • (ABC) = (ttt), (ttn), (tnt) × 2, (tnn) × 4, (ntt), (nnt) × 2, (nnn) Zadanie 6 Porównaj zbiory węzłów d-separowalnych dla sieci z listy 5, zadania 3 lub / i własnych sieci. Zadanie 7 (TODO Przenieść to zadanie do listy 5.) Dana niech będzie sieć o węzłach A → B → C. P(A = a1 ) 0.4 war A = a1 A = a2 P(A = a2 ) 0.6 P(B = b1 |war) 0.4 0.2 P(B = b2 |war) 0.3 0.5 P(B = b3 |war) 0.3 0.3 2 war B = b1 B = b2 B = b3 P(C = c1 |war) 0.4 0.4 0.8 P(C = c2 |war) 0.6 0.6 0.2 Zbuduj tę sieć w Tetradzie i wygeneruj zbiór przykładów. Odtwórz sieć algorytmem PC i porównaj wyniki. Z konstrukcji sieci wynika, że A i C są niezależne pod warunkiem B. Pokaż, że A i C są również niezależne (bez warunkowania na B). Zadanie programistyczne Zaimplementuj algorytm określający niezależność lub zależność strukturalną węzłów w sieci bayesowskiej oraz niezależność lub zależność warunkową. Algorytm powinien jako wejście przyjąć sieć bayesowską, węzeł A (opcjonalnie cały zbiór węzłów), węzeł B oraz zbiór węzłów warunkowych C (może być to zbiór pusty) i określić czy A jest d-separowane od B poprzez C (A ⊥ B|C). Opcjonalnie dla określonego A i C określić zależność / niezależność dla wszystkich pozostałych węzłów w sieci. Uwaga: zadanie dotyczy niezależności strukturalnych tj. wynikających z architektury sieci. W zadaniu nie są uwzglęniane niezależności wynikające z wpisów CPT. Punktacja — 2p. Test χ2 Dana jest próbka danych (x, y), pochodząca z rozkładów X i Y . Czy są one niezależne? Przyjmijmy 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 Pr Pc Elj k=1 Eik · l=1 ·N Eij = N N Hipoteza zerowa: nie istnieje zależność między X a Y . Hipoteza alternatywna: X i Y są zależne. Statystyka testowa: r X c X (Eij − Oij )2 T = Eij i=1 j=1 • Statystyka testowa zachowuje się jak rozkład χ2 z (r − 1)(c − 1) punktami swobody. Obliczamy 1 - wartość dystrybuanty rozkładu w tym punkcie (lub zczytujemy z tabeli), ang. p-value. • Poziom istotności — α ∈ (0, 1), zazwyczaj α = 0.05. • Jeżeli zachodzi p − value ≥ α odrzucamy hipotezę zerową i przyjmujemy istnienie zależności między X i Y. • Uwaga! Formalnie p − value < α nie oznacza niezależności, zmienne mogą być zależne w inny sposób, którego jednak test nie wychwycił. Alternatywnie: • Obliczamy obszar krytyczny K = (F1−α ((r − 1)(c − 1)), +∞) gdzie F1−α (k) jest kwantylem rzędu 1 − α rozkładu χ2 z k punktami swobody. • Jeżeli T ∈ K to odrzucamy Hipotezę zerową. • Jeżeli T ∈ / K to nie mamy podstaw do jej odrzucenia. 3